linux下的PCI驱动编程
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-16
PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间.CPU可以 访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而 配置空间则由Linux内核中的PCI初始化代码使用.内核在启动时负责对所有PCI设备进行 初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所 有找到的PCI设备,以及这些设备的参数和属性. Linux驱动程序通常使用结构(struct)来表示一种设备,而结构体中的变量则代表某一 具体设备,该变量存放了与该设备相关的所有信息.好的驱动程序都应该能驱动多个同 种设备,每个设备之间用次设备号进行区分,如果采用结构数据来代表所有能由该驱动 程序驱动的设备,那么就可以简单地使用数组下标来表示次设备号. 在PCI驱动程序中,下面几个关键数据结构起着非常核心的作用: 1)pci_driver: 拥有帝国一切,皆有可能。欢迎访问phome.net1) 这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI 设备驱动程序所添加的,其中最主要的是用于识别设备的 拥有帝国一切,皆有可能。欢迎访问phome.netid_table结构,以及用于检测 设备的函数probe()和卸载设备的函数remove() : struct pci_driver { struct list_head node; char *name; const struct pci_device_id *id_table; int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); void (*remove) (struct pci_dev *dev); int (*save_state) (struct pci_dev *dev, u32 state); 拥有帝国一切,皆有可能。欢迎访问phome.net int (*suspend)(struct pci_dev *dev, u32 state); int (*resume) (struct pci_dev *dev); int (*enable_wake) (struct pci_dev *dev, u32 state, int enable); };<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 同时,禁用相关的一些资源. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于linux下的PCI驱动编程的所有评论