Led驱动模块加载与测试

2023-12-26 12:51:05

一.? 简介

上一篇文章完善了 Led灯驱动代码,编写了测试程序即应用程序。文章地址如下:

Led驱动代码完善与应用程序编写-CSDN博客

本文继上一篇文章的学习。对 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$ 

三.? 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 # 

加载 Led驱动模块

这里使用 "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设备已经加载成功。

创建设备节点

驱动加载成功以后创建 “ /dev/led ” 设备节点,操作如下:
/lib/modules/4.1.15 # mknod /dev/led c 200 0

查看是否创建好 Led设备节点:

可以看出,设备节点已经创建成功。

驱动测试

驱动节点创建成功以后,就可以使用 ledApp 软件来测试驱动是否工作正常。

因为 驱动代码加载函数 led_init()中,默认 Led灯是打开的。开发板上 Led灯(红色灯)如下:

关闭 Led灯测试

因为默认 Led灯是亮的,所以,这里首先测试关闭 Led灯。操作如下:

/lib/modules/4.1.15 # ./led_app /dev/led 0

可以查看开发板上的 Led灯状态:

可以看出,Led灯 (红色灯)已经灭了。

打开 Led灯测试

测试打开 led灯,操作如下:

/lib/modules/4.1.15 # ./led_app /dev/led 1

开发板上的 led灯状态如下:

至此,? Led灯字符设备驱动实验已经完成。

文章来源:https://blog.csdn.net/wojiaxiaohuang2014/article/details/135217772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。