上一篇《Linux驱动程序开发环境的快速搭建》已经完成了开发环境搭建,接下来就需要验证开发环境以及实现一个驱动程序的编写及测试。
在正点原子的资料库里找到以下linux内核源码文件:
\01、例程源码\10、开发板教程对应的uboot和linux源码\02.linux\
linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2
用FTP传送到ubuntu主机的/linux/IMX6ULL/linux/temp/目录下并解压:
tar -jxvf linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2
编写字符驱动程序,参考正点原子的新字符设备驱动实验里的代码,完成后修改Makefile,要确保以下目录与你的Linux内核存放的文件目录一致。
KERNELDIR := /home/bobluo/linux/IMX6ULL/linux/temp/linux-imx-rel _imx_4.1.15_2.1.0_ga_alientek
make以后编译ledApp,这些过程与教程一致,这里不再重复。
编译生成的的newchrled.ko 和 ledApp 这两个文件拷贝到 rootfs/lib/modules/4.1.15 目录里面,重启开发板。
在MobaXterm中进入到目录 lib/modules/4.1.15 中,输入如下命令加载 newchrled.ko 驱动模块:
depmod
加载驱动:
modprobe newchrled.ko
加载成功后可以看到新设备的主设备号,次设备号,
输入如下命令查看/dev/newchrdev 这个设备 节点文件是否存在:
ls /dev/newchrled -l
至此,/dev/newchrled 这个设备文件存在,而且主设备号为 249,此设 备号为 0,说明设备节点文件创建成功。
下面就可以输入命令测试驱动程序是否正常工作了,打开led命令:
./ledApp /dev/newchrled 1
关闭led命令
./ledApp /dev/newchrled 0
从测试板的led亮灭就可以看到驱动程序已经实现了led开关的控制功能。
要卸载驱 动的话输入如下命令:
rmmod newchrled.ko
这时再用ls /dev/newchrled -l命令查看,可以发现被告知已没有这个设备了。
总结一下:选择正确的linux内核文件编译驱动才不会编译失败。从SD卡的uboot启动,然后网络tftp方式加载linux内核,设备树,nfs方式加载根文件系统,可以方便的开发调试linux驱动程序 。
参考资料:
1. I.MX6U 嵌入式 Linux 驱动开发指南 V2.0.1 正点原子