星空网 > 软件开发 > 操作系统

Android系统移植与驱动开发——第六章——使用实例来理解Linux驱动开发及心得

Linux驱动的工作方式就是交互。例如向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件,在使用C语言函数ioctl向该驱动的设备文件发送打印命令。编写Linux驱动最重要的是编写回调函数,否则与设备文件交互的数据无法得到处理。

建立Linux驱动骨架中使用到两个函数:module_init,module_exit。要进行宏定义。

创建和移除设备文件用misc_register,misc_deregister。

回调函数是由自身生成的,一个驱动程序并不一定要指定所有的回调函数。

具体的业务逻辑与驱动的功能有关,可能有多个函数、多个文件甚至多个Linux驱动模块组成。

程序可以直接编译进内核,也可以作为模块单独使用。

使用输出时用的是printk,可定有疑问为什么不用printf,因为Linux系统中分为用户空间和内核空间,而printf只能运行在用户空间。再者,他们之间进行交互使用的设备文件。

要对开源文件、GPL协议、LGPL协议、BSD协议、MIT协议和Apache License2.0协议理解。

在编写和销毁设备文件时,要注意misc_register只能设置此设备号。

使用cat /proc/devices可以获得显示当前系统中有哪些是主设备以及主设备号

通过file_operation.read和file_operation.write成员变量可以分别指定读写设备要调用的回调函数的指针。

驱动程序编写完成,多次编译该驱动程序,读写目录的驱动程序一样,有build.sh和相关脚本文件。

Cat 命令不会将4个字节还原成int类型的值显示

用于Android模拟器的goldfish内核默认不允许动态加载Linux驱动模块,因此需要cd ~/kernel/goldfish,make menuconfig,要在配置框中选择正确的进入子菜单,否则可能加载内核失败。




原标题:Android系统移植与驱动开发——第六章——使用实例来理解Linux驱动开发及心得

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

山东专线:https://www.goluckyvip.com/tag/97885.html
南宁专线:https://www.goluckyvip.com/tag/97886.html
上海济南专线:https://www.goluckyvip.com/tag/97887.html
南京运输专线:https://www.goluckyvip.com/tag/97888.html
南京专线运输:https://www.goluckyvip.com/tag/97889.html
3C产品:https://www.goluckyvip.com/tag/9789.html
从园岭新村到大梅沙海滨总站坐什么车:https://www.vstour.cn/a/363191.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流