P CIE 开发流程 前言:对于USB、PCIE 设备这种挂接在总线上的设备而言,USB、PCI 只是它们的”工作单位”,它们需要向”工作单位”注册(使用 usb_driver,pci_driver),并接收 ”工作 单位 ”的管 理 ( 被调 入 probe()、 调 出 disconnect/remove() 、 放 假suspend()/shutdown()、继续上班 resume()等),但设备本身可能是一个工程师、一个前台或者一个经理,因此做好工程师,前台或者经理是其主题工作,这部分对应于字符设备驱动,tty 设备驱动,网络设备驱动等
第一节 整体构成 整个驱动程序的开发应该包括三个大的部分 1
1 驱动模块的加载与卸载 xxx_init_module()注册 pci_driver 设备
xxx_cleanup_module()注销 pci_driver 设备
2 pci_driv er 成员函数的初始化 xxx_probe()完成 PCI 设备初始化,注册字符设备 xxx_remove()完成 PCI 设备释放,注销字符设备 1
3 字符设备 file_operations 成员函数 用于实现上层应用程序对下层驱动程序调用时的调用函数
xxx_open() xxx_release() xxx_ioctl() xxx_read() xxx_write() 第二节 P CIE 设备实现细节 由于PCIE 设备的驱动的开发都是按照一个统一规范的框架进行的
因此以一个字符设备为例说明这个框架的实现机制
在所有PCIE 驱动开发的过程中 2
1 驱动程序的初始化和注销 涉及的函数为 module_init(xxx_init_module),并在 init 中完成的功能为注册PCIE 设备,具体函数内容如下所示: 注销涉及的函数为module_exit(xxx_