标签:
第六章:
1、什么是驱动程序:
a、编写Linux驱动最重要的一步就是编写回调函数,否则与设备文件交互的数据将无法得到处理;
2、编写Linux驱动程序的步骤:
a、建立linux驱动骨架(装载和卸载Linux驱动);
module_init和 module_exit;
b、注册和注销设备文件:
在初始化工作的函数中完成建立设备文件misc_register;
c、指定与驱动相关的信息;
d、指定回调函数;
e、编写业务逻辑;
f、编写makefile文件(Linux内核源代码的编辑规则通过makefile文件定义的);
g、编写Linux驱动程序:Linux驱动程序可以直接编译内核,也可以作为摸板单独编译;
h、安装和卸载linux驱动;
3、第一个linux驱动:
a、编写linux驱动程序前的准备工作;
b、编写linux驱动程序的骨架(初始化和退出驱动):
linux系统将内存分为了用户空间和内核空间,这两个空间的程序不能直接访问,printf函数运行在用户空间,printk函数运行在内核空间。如果用户空间的程序要访问内核空间的驱动程序,用户空间的程序通过设备文件与驱动程序进行交互即可。
安装linux驱动:#insmod word_count.ko
查看word_count是否安装成功:#lsmod | grep word_count
卸载linux驱动:#rmmod word_count
查看由linux驱动输出的日志信息:#dmesg | grep word_count /tail -n 2;
c、指定与驱动相关的信息:
执行#modinfo word_count.ko来查看word_count.ko的信息。depends表当前驱动的依赖、vermagic表示当前linux驱动模板在哪个linux内核版本下编译。
d、注册和注销设备文件;
e、指定回调函数
file_operations.read file_operations.write成员变量可以指定读写设备文件要调用的回调函数指针。
f、实现统计单词的算法;
g、编译、安装、卸载linux驱动的程序。
4、使用多种方法测试linux驱动程序:
a、使用Ubuntu linux测试linux驱动;
b、在android模拟器中通过原生的c程序测试linux驱动;
android模拟器在直接运行普通的linux程序的两个条件:android模拟器,开发板或手机需要root权限;可执行文件需要交叉编译器进行编译,使支持arm处理器。
c、使用android NDK 测试linux驱动;
d、使用Java代码直接测试设备文件来测linux驱动;
e、使用eclipse开发和测试linux驱动程序。
标签:
原文地址:http://www.cnblogs.com/qiekaifanqie/p/5559243.html