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的主要内容,如果未能解决你的问题,请参考以下文章

Android深度探索(卷1)HAL与驱动开发阅读心得6

Android深度探索(卷1)HAL与驱动开发阅读心得10

Android深度探索(卷1)HAL与驱动开发阅读心得5

Android深度探索(卷1)HAL与驱动开发阅读心得8

Android深度探索(卷1)HAL与驱动开发学习笔记

Android深度探索(卷1)HAL与驱动开发学习笔记