上一页 1 ··· 143 144 145 146 147 148 149 150 151 ··· 280 下一页
摘要: 在驱动已探测到设备后, 它常常需要读或写 3 个地址空间: 内存, 端口, 和配置. 特别 地, 存取配置空间对驱动是至关重要的, 因为这是唯一的找到设备被映射到内存和 I/O 空间的位置的方法. 因为微处理器无法直接存取配置空间, 计算机供应商不得不提供一个方法来完成它. 为存 取配置空间, CP 阅读全文
posted @ 2019-07-07 18:04 樊伟胜 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: 在老的内核版本中, 函数 pci_register_driver, 不是一直被 PCI 驱动使用. 相反, 它 们要么手工浏览系统中的 PCI 设备列表, 要么它们将调用一个能够搜索一个特定 PCI 设 备的函数. 驱动的浏览系统中 PCI 设备列表的能力已被从 2.6 内核中去除, 为了阻止驱 动 阅读全文
posted @ 2019-07-07 17:35 樊伟胜 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 为了被正确注册到内核, 所有的 PCI 驱动必须创建的主结构是 struct pci_driver 结构. 这个结构包含许多函数回调和变量, 来描述 PCI 驱动给 PCI 核心. 这里是这个结构的一 个 PCI 驱动需要知道的成员: const char *name; 驱动的名子. 它必须是唯一的 阅读全文
posted @ 2019-07-07 17:34 樊伟胜 阅读(958) 评论(0) 推荐(0) 编辑
摘要: 这个 pci_device_id 结构需要被输出到用户空间, 来允许热插拔和模块加载系统知道什 么模块使用什么硬件设备. 宏 MODULE_DEVICE_TABLE 完成这个. 例如: MODULE_DEVICE_TABLE(pci, i810_ids); 这个语句创建一个局部变量称为 mod_pc 阅读全文
posted @ 2019-07-07 17:29 樊伟胜 阅读(1242) 评论(0) 推荐(0) 编辑
摘要: 一些 PCI 配置寄存器是要求的, 一些是可选的. 每个 PCI 设备必须包含有意 义的值在被要求的寄存器中, 而可选寄存器的内容依赖外设的实际功能. 可选的字段不被 使用, 除非被要求的字段的内容指出它们是有效的. 因此, 被要求的字段声称板的功能, 包括其他的字段是否可用. 注意 PCI 寄存器 阅读全文
posted @ 2019-07-07 17:27 樊伟胜 阅读(879) 评论(0) 推荐(0) 编辑
摘要: 为见到 PCI 如何工作的, 我们从系统启动开始, 因为那是设备被配置的时候. 当一个 PCI 设备上电时, 硬件保持非激活. 换句话说, 设备只响应配置交易. 在上电时, 设备没有内存并且没有 I/O 端口被映射在计算机的地址空间; 每个其他的设备特定的特 性, 例如中断报告, 也被关闭. 幸运的 阅读全文
posted @ 2019-07-07 17:26 樊伟胜 阅读(730) 评论(0) 推荐(0) 编辑
摘要: 每个 PCI 外设有一个总线号, 一个设备号, 一个功能号标识. PCI 规范允许单个系统占 用多达 256 个总线, 但是因为 256 个总线对许多大系统是不够的, Linux 现在支持 PCI 域. 每个 PCI 域可以占用多达 256 个总线. 每个总线占用 32 个设备, 每个设备可以是 一 阅读全文
posted @ 2019-07-07 17:25 樊伟胜 阅读(1324) 评论(0) 推荐(0) 编辑
摘要: 尽管许多计算机用户认为 PCI 是一种电路布线方法, 实际上它是一套完整的规格, 定义 了一个计算机的不同部分应当如何交互. PCI 规范涉及和计算机接口相关的大部分问题. 我们不会在这里涵盖全部; 在本节, 我们 主要关注一个 PCI 驱动如何能找到它的硬件并获得对它的存取. 在第 2 章的"模块 阅读全文
posted @ 2019-07-07 17:24 樊伟胜 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 链表头必须在使用前用 INIT_LIST_HEAD 宏来初始化. 一个"要做的事情"的链表头可能声 明并且初始化用: struct list_head todo_list; INIT_LIST_HEAD(&todo_list); <para>可选地, 链表可在编译时初始化:</para> LIST_ 阅读全文
posted @ 2019-07-07 17:14 樊伟胜 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 操作系统内核, 如同其他程序, 常常需要维护数据结构的列表. 有时, Linux 内核已经同 时有几个列表实现. 为减少复制代码的数量, 内核开发者已经创建了一个标准环形的, 双 链表; 鼓励需要操作列表的人使用这个设施. 当使用链表接口时, 你应当一直记住列表函数不做加锁. 如果你的驱动可能试图对 阅读全文
posted @ 2019-07-07 13:48 樊伟胜 阅读(537) 评论(0) 推荐(0) 编辑
上一页 1 ··· 143 144 145 146 147 148 149 150 151 ··· 280 下一页