先谈谈如何写linux驱动:
- 在驱动模块初始化函数中调用register_chrdev(),将驱动向系统注册为一个字符设备,伪装成一个文件,上层的应用可以通过访问这个文件(字符设备),来操作驱动模块。
- 驱动模块注册为字符设备后,还需要用户在命令行中敲mknod命令来创建一个对应的字符文件,上层应用就是用open, close, read, write该文件这样的方式来访问驱动模块。
- 装了udev的系统,可以让系统自动为您创建该字符文件:调用device_create()在/dev/目录下创建对应的字符文件,
具体方法可以参考LinuxKernelSdioMx53代码的用法。
以LinuxKernelSdioMx28 / LinuxKernelSdioMx53项目代码为例:
- module_init(DibBridgeTargetModuleInit)
驱动模块初始化入口
- DibBridgeTargetModuleInit():模块初始化函数。
1.调用sdio_register_driver()注册sdio接口驱动,
2.调用register_chrdev()注册驱动模块为字符设备。
- sdio_register_driver():向系统注册sdio接口驱动,调用以后,系统会触发sdio设备id检测,如果设备id和接口驱动里.id_table里定义的id一致,则系统调用probe函数。
1. 可以在DibBridgeTargetModuleInit()里调用,这样insmod之后,驱动接口即被注册(设备id被注册&#
- 在驱动模块初始化函数中调用register_chrdev(),将驱动向系统注册为一个字符设备,伪装成一个文件,上层的应用可以通过访问这个文件(字符设备),来操作驱动模块。
- 驱动模块注册为字符设备后,还需要用户在命令行中敲mknod命令来创建一个对应的字符文件,上层应用就是用open, close, read, write该文件这样的方式来访问驱动模块。
- 装了udev的系统,可以让系统自动为您创建该字符文件:调用device_create()在/dev/目录下创建对应的字符文件,
具体方法可以参考LinuxKernelSdioMx53代码的用法。
以LinuxKernelSdioMx28 / LinuxKernelSdioMx53项目代码为例:
- module_init(DibBridgeTargetModuleInit)
驱动模块初始化入口
- DibBridgeTargetModuleInit():模块初始化函数。
1.调用sdio_register_driver()注册sdio接口驱动,
2.调用register_chrdev()注册驱动模块为字符设备。
- sdio_register_driver():向系统注册sdio接口驱动,调用以后,系统会触发sdio设备id检测,如果设备id和接口驱动里.id_table里定义的id一致,则系统调用probe函数。
1. 可以在DibBridgeTargetModuleInit()里调用,这样insmod之后,驱动接口即被注册(设备id被注册&#