一. 简介
前面几篇文章学习了在设备树文件中创建设备节点信息(基于gpio子系统与pinctrl子系统),驱动代码的实现。文章地址如下:
pinctrl子系统与gpio子系统实验-向设备树文件添加Led设备节点-CSDN博客
pinctrl子系统与gpio子系统实验-Led驱动代码完善-CSDN博客
本文对以上实现的驱动代码进行测试,即在开发板上加载驱动程序。确认驱动代码是否可正常运行。
二. pinctrl子系统与gpio子系统实验-对驱动进行测试
1. 将驱动程序拷贝到开发板
注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件。
将 6_gpioled工程下编译生成的驱动文件 gpioled.ko,拷贝到 开发板系统 /lib/modules/4.1.15/目录下,这里系统存放在 /home/wangtian/linux/nfs_File/ 目录下,命名是 rootfs:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/6_gpioled$ sudo cp gpioled.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
[sudo] wangtian 的密码:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/6_gpioled$
2. 加载驱动模块
注意:这里运行 "modprobe gpioled.ko" 命令加载驱动之前,不需要先运行 "depmod"命令。因为之前已经进行过测试,这个驱动程序不是第一次进行测试。
运行 "modprobe gpioled.ko" 命令,加载驱动模块:
从以上信息可以看出,"gpio_request failed!" 错误提示,说明加载驱动程序时,申请 GPIO失败。
说明驱动程序无法正常运行。
申请IO的时候失败大部分原因是,这个IO被其他外设占用了。
检查设备树,查找有哪些使用同一IO的设备。
1. 检查复用,也就是 pinctl 设置。
2. gpio使用
下一篇文章检查设备树文件中其他设备是否使用了 Led的 IO。