编写linux驱动程序的步骤
第一步:建立linux驱动骨架(装载和卸载linux驱动)
第二步:注册和注销设备文件
第三步:指定与驱动相关的信息
第四步:指定回掉函数
第五步:编写业务逻辑
第六步:编写makefile文件
第七步:编写linux驱动程序
第八步:安装和卸载linux驱动
Printf函数运行在用户空间,printk函数运行在内核空间。
测试linux驱动步骤
第一步:导入test_count.c文件
第二步:设置include路径
第三步:建立target
第四步:build工程
第五步:运行测试程序
对于一个Linux驱动程序,一开始可以在UbuntuLinux上做前期的开发和测试。对于访问硬件的部分可以在ubuntuLinux用软件进行模拟。当基本开发完以后,就需要在开发板或者工程样机上使用真实的硬件进行测试。我们可以使用多种方式测试Linux驱动,主要有ubuntuLinux测试、在Android模拟器上通过原生(native)C程序测试Linux驱动、使用AndroidNDK测试Linux驱动、使用Java源代码直接操作设备文件来测试Linux驱动、使用S3C6410开发板测试Linux驱动,还可以将驱动编译进Linux内核进行测试。
一个完整的linux驱动主要由内部处理和与硬件交互两部分组成。其中内部处理主要是指linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互主要是指通过ioweite、ioread32等函数与硬件中的寄存器进行数据的交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同Linux内核版本之间的移植,主要是移植第1部分,如果在不同硬件平台的移植,主要是移植第二部分。
编写Led灯驱动的步骤如下:
1、 创建LED驱动设备文件:
(1) 使用cdev-init函数初始化cdev;
(2) 指定设备号;
(3) 使用cdev_add函数将字符设备添加到内核中的字符设备数组中;
(4) 使用class_creat宏创建struct class;
(5) 使用device_create函数创建设备文件;
2、 卸载Led驱动的设备文件
3、 设置寄存器和初始化led驱动
4、 控制led灯:
(1) 通过字符串控制LED
(2) 通过I/O命令控制
5、 LED驱动的模块参数
6、 测试LED驱动
(1) 编写测试I/O控制命令的通用程序;
(2) 使用NDK测试LED驱动;
(3) 使用Java测试LED驱动;
7、Led驱动移植