一. 简介
前面文章实现了 SPI设备驱动框架,并在此基础上添加了字符设备驱动框架,实现了读 / 写SPI设备中数据的函数,文章如下:
Linux下SPI设备驱动实验:向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客
Linux下SPI设备驱动实验:实现SPI发送/接收数据的函数-CSDN博客
本文对驱动模块进行加载测试,确定SPI读取函数是否正常。
二. Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能
1. 测试依据
ICM20608设备初始化的函数中,添加了读取 ICM20608寄存器的ID号,也有向某个寄存器写值后,再读取该寄存器的值。
所以,开发板可以通过加载驱动模块,确定寄存器中数据是否为代码中设置的数据,即可判断读、写SPI设备功能是否正常。
2. 驱动测试
(1) 将驱动模块与应用程序拷贝到开发板的文件系统下
注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件。
将驱动模块与应用程序拷贝到 开发板的系统目录 /lib/modules/4.1.15/目录下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/18_spi$ sudo cp spi_icm20608.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
(2) 开发板上电,进入系统
开发板上电后,进入 系统 /lib/modules/4.1.15/目录下,加载驱动模块。
注意:如果选择使用 "modprobe" 命令加载驱动模块,则在驱动程序第一次加载时首先运行 "depmod" 命令!
这里ap3216c.ko模块前面已经加载过,所以,不需要运行 "depmod"命令。
加载驱动模块:
可以看出,当加载驱动模块后, probe函数已经运行。
ICM20608设备的ID号为 0xAF,寄存器 ICM20_WHO_AM_I最后一次写入的值就是 0x01。
至此,说明读写SPI设备中数据函数的功能正常。
运行 "rmmod spi_icm20608.ko" 命令卸载驱动模块:
注意:可以进行反复的加载与卸载驱动模块的测试,以确定驱动模块的稳定性。