Linux驱动之PCI】的更多相关文章

<背景> PCI设备有许多地址配置的寄存器,初始化时这寄存器来配置设备的总线地址,配置好后CPU就可以访问该设备的各项资源了.(提炼:配置总线地址)   <配置寄存器>   (1)256字节的PCI配置空间分为64字节的头标区和192字节的设备相关区两部分.头标区的各个寄存器用来唯一地识别设备:设备相关区则保存一些与设备相关的数据. (2)配置空间的头标区又分为两部分:前16个字节的定义在各种类型的PCI设备中都是一样的:剩余的字节随设备类型不同而有所不同.位于偏移地址0EH处的头…
PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能 力.但是PCI总线的编程技术,也就是对PCI总线设备的操作技术,一直是一件让技术人员感到头疼的事情.PCI总线编程的核心技术是对相应板卡配置空间 的理解和访问.一般软件编程人员基于对硬件设备原理的生疏,很难理解并操作配置空间,希望硬件开发人员直接告诉他们怎样操作:而PCI总线硬件开发人员虽 深刻地理解了其意义,在没有太多编程经验地前提下,也难于轻易地操作…
PCI总线概述  随着通用处理器和嵌入式技术的迅猛发展,越来越多的电子设备需要由处理器控制.目前大多数CPU和外部设备都会提供PCI总线的接口,PCI总线已成为计算机系统中一种应用广泛.通用的总线标准[1].Linux因其开放源代码以及稳定的性能,越来越受到广大用户青睐.同时,基于Linux内核的嵌入式操作系统应用势头强劲,开发基于Linux的设备驱动程序,具有很强的实用性和可移植性.  PCI总线概述 PCI(Peripheral ComponentInterconnect)总线,即外部设备互…
为了被正确注册到内核, 所有的 PCI 驱动必须创建的主结构是 struct pci_driver 结构. 这个结构包含许多函数回调和变量, 来描述 PCI 驱动给 PCI 核心. 这里是这个结构的一 个 PCI 驱动需要知道的成员: const char *name; 驱动的名子. 它必须是唯一的, 在内核中所有 PCI 驱动里面. 通常被设置为和驱 动模块名子相同的名子. 它显示在 sysfs 中在 /sys/bus/pci/drivers/ 下, 当驱 动在内核时. const struc…
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M  (4片K4T1G164Q ) Nand flash: 512M (K9F4G08) 以太网芯片: SMSC LAN9220 工具介绍 仿真器: 暂无 电缆: 串口线,USB线 Windows 操作系统软件环境 ADS编译工具: 暂无 仿真器软件:暂无 调试软件: 终端(ADB).eclipse…
转自:https://blog.csdn.net/h244259402/article/details/83993524 PC:Windows 10 虚拟机:ubuntu 16.04 vivado:2017.04 的的PetaLinux:2017.04 开发板:黑金AX7010 根文件系统:debian8 -------------------------------------------------- --------------------传说中的分割线------------------…
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码.它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel c…
linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化,高端内存概念? 3:linux中中断的实现机制,tasklet与workqueue的区别及底层实现区别?为什么要区分上半部和下半部? 4:linux中断的响应执行流程?中断的申请及何时执行(何时执行中断处理函数)? 5:linux中的同步机制?spinlock与信号量的区别? 6:linux中RCU…
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念.我们将学习内核定时器.同步机制以及内存分配方法.不过,我们还是得从头开始这次探索之旅.因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点. 2.1 启动过程 图2-1显示…
<const 关键字> 在嵌入式系开发中,const关键字就是“只读”的意思   <为什么要ARM需要进行C语言环境的初始化> 在汇编情况下,指令的跳转,保护现场需要保存的数据很少,并且可以直接访问寄存器,但是到了C语言环境中,函数的调用. (1)无时无刻都需要保护现场,(2)并且无法直接访问寄存器,(3)函数需要传递参数,参数的保存地址.所以最好的方式就是指定一个对整个系统而言来说是一个约定固定的地址作为现场数据的保存地方.———堆栈   <bss段> 一个程序编译后…