Android深度探索(卷1)HAL与驱动开发阅读心得6
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android深度探索(卷1)HAL与驱动开发阅读心得6相关的知识,希望对你有一定的参考价值。
第一个Linux驱动程序:统计单词个数
一.编写Linux驱动程序的步骤
1.建立Linux驱动骨架(装载和卸载Linux驱动)
Linux驱动程序需要提供两个函数来分别处理驱动初始化和退出的工作,用module_init和module_exit宏指定。
驱动程序的头文件一般会包括 linux/module.h,linux/init.h,linux/kernel.h,linux/fs.h,linux/miscdevice.h和asm/uaccess.h。
printf与printk的区别:printf运行在用户空间,printk运行在内核空间
2.注册和销毁设备文件
使用misc_register创建设备文件,使用misc_deregister移除设备文件。
3.指定与驱动相关的信息
驱动程序是自描述的,需要在驱动源代码中指定。
MODULE_AUTHOR指定作者姓名
MODULE_LICENSE指定所使用的开源协议
MODULE_ALIAS指定驱动程序的别名
MODULE_DESCRIPTION指定驱动的描述
查看.ko文件信息:modinfo .ko文件
4.指定回调函数
一个驱动程序并不一定要指定所有的回调函数;回调函数会通过相关机制进行注册
5.编写业务逻辑
业务逻辑可能由多个函数,多个文件甚至多个linux驱动模块组成
6.编写Makefile文件
7.安装和卸载Linux驱动
linux驱动程序以模块单独存在,需要使用insmod或modprobe命令装载linux驱动模块,使用rmmod命令卸载linux驱动程序
安装驱动:insmod .ko文件
卸载驱动:rmmod 模块名
查看驱动输出的日志信息:dmesg | grep 模块名| tail -n 2
二.开源协议
1.GPL协议
2.LGPL协议
3.BSD协议
4.Apache Licence2.0协议
5.MIT协议
具体内容参考: http://www.oschina.net/question/54100_9455
以上是关于Android深度探索(卷1)HAL与驱动开发阅读心得6的主要内容,如果未能解决你的问题,请参考以下文章