一. 简介
前面一篇文章实现了I2C设备驱动的简单驱动框架,文章如下:
I2C驱动实验:向I2C驱动框架中添加字符设备驱动框架代码-CSDN博客
本文对驱动模块进行测试,具体通过应用程序运行测试。
二. 测试驱动模块
1. 将驱动模块与应用程序拷贝到开发板的文件系统下
注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件。
将驱动模块与应用程序拷贝到 开发板的系统目录 /lib/modules/4.1.15/目录下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/17_i2c$ sudo cp ap3216c.ko ap3216c_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
2. 开发板上电,进入系统
开发板上电后,进入 系统 /lib/modules/4.1.15/目录下,查看驱动模块是否拷贝过来:
可以看到,驱动模块ap3216c.ko 与应用程序ap3216c_app 已经存在。
3. 加载驱动模块
注意:如果选择使用 "modprobe" 命令加载驱动模块,则在驱动程序第一次加载时首先运行 "depmod" 命令!
这里ap3216c.ko模块已经加载过一次,所以,不需要运行 "depmod"命令。
加载驱动模块:
可以看出,当加载驱动模块后, probe函数已经运行。
查看 /dev/目录下是否存在 ap3216c这个字符设备:
可以看到,/dev/下存在 ap3216c这样的字符设备,这就是在字符设备框架中创建的字符设备。
4. 运行应用程序进行测试
运行应用程序 ap3216_app测试:
可以看出,当应用程序调用open+ read函数后,字符设备驱动框架中的 open函数,read函数,release函数等都运行了,说明达到了预期的效果。
5. 卸载驱动模块
卸载驱动模块:
可以看出,卸载驱动模块后, 正常运行了 remove函数,没有其他错误的 Log信息。
至此,驱动模块测试到这里,接下来实现 I2C设备读写数据函数的实现。
注意:测试过程中,可以反复多次进行驱动模块的加载与卸载,运行应用程序。确保驱动模块是否稳定,或者存在难以发现的问题。