Linux系统将每一个驱动都映射成一个文件。这些文件成为设备驱动文件,都保存在/dev目录中。这种设计理念使得与linux驱动进行交互就像鱼普通文件交互一样容易。与linux驱动交换数据就变成了与设备文件交换数据。
应用软件通过open、write、read等函数访问设备文件,设备文件通过主设备号与驱动关联,驱动直接与硬件进行读写操作。
编写linux驱动程序的步骤:
1.建立linux驱动骨架(装载和卸载linux驱动)
装载函数:module_init(); 装载过程中进行初始化操作:建立设备文件,分配内存地址等。
卸载函数:module_exit(); 下载过程中需要释放linux驱动占用的资源:删除设备文件,释放内存地址空间等。
2.注册和注销设备文件
Misc_register();创建设备文件misc_deregister();移除设备文件
3. 指定与驱动相关的信息
4. 指定回调函数
5. 编写业务逻辑 完成业务功能
6. 编写makefile文件
makefile文件定义内核源代码的编译规则
7. 编译Linux驱动程序
8. 安装和卸载linux驱动
统计单词个数驱动:
1.准备工作
建立存放Linux驱动程序的目录
#mkdir –p /root/drivers/ch06/word_count
#cd /root/drivers/ch06/ word_count
建立驱动源代码文件
#echo ‘’ > word_count.c
编写一个makefile文件
2. 编写linux驱动程序的骨架(初始化和退出驱动)
static int word_count_init(void)
static void word_count_exit(void)
安装linux驱动
#insmod word_count.ko
查看word_count是否成功安装
#insmod | grep word_count
卸载linux驱动
# rmmod word_count
查看由驱动输出的日志信息
# dmesg | grep word_count | tail –n 2
3. 指定与驱动相关的信息
模块作者,模块描述,模块别称,开源协议
4. 注册和注销设备文件
Misc_register建立设备文件misc_deregister注销设备文件
5.指定回调函数
6.实现统计单词数的算法
7.编译、安装、卸载linux驱动程序
测试linux驱动
使用ubuntu linux测试
在android模拟器上通过原声(native)C程序测试
使用android NDK测试
使用java代码直接操作设备文件测试
使用S3C6410开发板测试
将驱动编译进linux内核进行测试
使用eclipse卡发和测试linux驱动
1.建立c工程
2.建立c源代码文件连接
3.设置include路径
4.编译linux驱动
在eclipse中测试linux驱动
1.导入test_word_count.c文件
2.设置include路径
3.建立targe
4.build工程
5.运行测试程序
用不同的方法测试linux驱动主要以平台来区分