一. 简介
前面一篇文章在设备树中创建 ap3216c设备节点信息。
第二篇文章编写了简单的 I2C设备驱动框架,包括 构造 i2c_driver结构体,i2c_driver的注册与注销等。文章如下:
I2C驱动实验:向设备树添加 I2C设备的设备节点信息-CSDN博客
I2C驱动实验:驱动框架搭建一-CSDN博客
本文对驱动框架代码进行测试,确定驱动是否与设备匹配成功。
二. I2C驱动实验:测试I2C驱动是否与设备匹配
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 /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
[sudo] wangtian 的密码:
2. 开发板上电
开发板上电后,进入 系统 /lib/modules/4.1.15/目录下,查看驱动模块是否拷贝过来:
可以看到,ap3216c驱动模块已经存在。
3. 加载模块与卸载模块
注意:如果选择使用 "modprobe" 命令加载驱动模块,则在驱动程序第一次加载时首先运行 "depmod" 命令!
这里ap3216c.ko模块是第一次加载。
首先,执行 "depmod"命令:
加载驱动模块:
可以看到, i2c_driver结构体中 probe函数运行了,说明驱动与设备已经匹配成功。
4. 进入 /sys/bus/i2c/drivers/目录下查看驱动模块
进入/sys/bus/i2c/drivers/目录下查看是否存在 ap3216c驱动模块:
可以看出,已经存在 ap3216c驱动模块,这个名字是 在构建 i2c_driver结构体时的名字。
运行 "ls -l ap3216c"命令查看驱动模块:
可以看出,驱动魔模块 ap3216c指向了一个链接,即 设备 0-001e,而这个 0-001e这个设备就是在设备树中添加的 ap3216c设备。
至此,说明驱动已经与设备树的ap3216c设备匹配成功。