上一篇文章完善了 Led灯驱动代码,编写了测试程序即应用程序。文章地址如下:
本文继上一篇文章的学习。对 Led驱动与测试程序进行编译,最后加载驱动模块,进行Led的测试。
打开 ubuntu系统,进入 2_led工程代码的根目录下,编译 Led驱动代码:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ make
编译完成后,确认是否生成 led.ko驱动文件:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ ls -l
总用量 56
-rwxrwxr-x 1 wangtian wangtian 10588 12月 26 00:02 led_app
-rw-rw-r-- 1 wangtian wangtian 868 12月 26 00:02 led_app.c
-rw-rw-r-- 1 wangtian wangtian 3720 12月 26 00:00 led.c
-rw-rw-r-- 1 wangtian wangtian 139 12月 23 22:36 led.code-workspace
-rw-rw-r-- 1 wangtian wangtian 5909 12月 26 11:36 led.ko
-rw-rw-r-- 1 wangtian wangtian 1160 12月 26 11:36 led.mod.c
-rw-rw-r-- 1 wangtian wangtian 2404 12月 26 11:36 led.mod.o
-rw-rw-r-- 1 wangtian wangtian 4216 12月 26 11:36 led.o
-rw-rw-r-- 1 wangtian wangtian 282 12月 24 00:26 Makefile
-rw-rw-r-- 1 wangtian wangtian 65 12月 26 11:36 modules.order
-rw-rw-r-- 1 wangtian wangtian 0 12月 25 23:33 Module.symvers
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$
编译测试程序:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ arm-linux-gnueabihf-gcc led_app.c -o led_app
同样可以通过 "ls -l" 命令查看是否生成 led_app程序。
将 Led驱动程序与 测试程序拷贝到 开发板根文件系统rootfs根目录 /lib/modules/4.1.15/目录下:
注意:
1.? 这里我的开发板的根文件系统,是通过 nfs服务挂载的方式从 ubuntu系统加载的。
2. 这里拷贝必须要使用 管理员权限,即命令中加入 "sudo"? 权限。
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ sudo cp led.ko led_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
[sudo] wangtian 的密码:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$
打开 串口调试助手 Xshell,打开 开发板调试串口。开发板上电启动后进入根文件系统下。进入 /lib/modules/4.1.15/ 目录下,查看是否已存在 驱动模块与测试程序:
/ # cd /lib/modules/4.1.15/
/lib/modules/4.1.15 # ls -l
total 24
-rw-r--r-- 1 0 0 5909 Dec 26 2023 led.ko
-rwxr-xr-x 1 0 0 10588 Dec 26 2023 led_app
-rw-r--r-- 1 0 0 0 Dec 24 2023 modules.alias
-rw-r--r-- 1 0 0 8 Dec 24 2023 modules.dep
-rw-r--r-- 1 0 0 0 Dec 24 2023 modules.symbols
/lib/modules/4.1.15 #
这里使用 "modprobe led.ko" 命令来加载模块:
/lib/modules/4.1.15 # modprobe led.ko
查看设备是否加载成功,这里有两种方法:使用 "lsmod" 命令或 使用 "cat /proc/devices" 命令
使用 "lsmod" 命令
/lib/modules/4.1.15 # lsmod
Module Size Used by Tainted: G
led 1579 0
可以看出, led模块已经加载成功。
使用 "cat /proc/devices" 命令:
同样可以看出,led设备已经加载成功。
/lib/modules/4.1.15 # mknod /dev/led c 200 0
查看是否创建好 Led设备节点:
可以看出,设备节点已经创建成功。
因为默认 Led灯是亮的,所以,这里首先测试关闭 Led灯。操作如下:
/lib/modules/4.1.15 # ./led_app /dev/led 0
可以查看开发板上的 Led灯状态:
可以看出,Led灯 (红色灯)已经灭了。
测试打开 led灯,操作如下:
/lib/modules/4.1.15 # ./led_app /dev/led 1
开发板上的 led灯状态如下:
至此,? Led灯字符设备驱动实验已经完成。