设备树下Led驱动实验-Led驱动加载测试

发布时间:2024年01月18日

?一. 简介

本文对前面两篇文章实现的 Led驱动程序进行测试。

通过应用程序调用驱动程序,从而进行 Led灯的打开与关闭。

二.? Led驱动加载测试

1.? 准备测试程序

将 前面实验中 3_newchrled工程中应用程序拷贝到 5_dtsled工程目录下。

进入 5_dtsled工程目录下进行拷贝:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/5_dtsled.c$ cp ../3_newchrled/led_app.c ./ -f

编译测试程序,即应用程序。操作如下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/5_dtsled.c$ arm-linux-gnueabihf-gcc led_app.c -o led_app

可以看出,应用程序也已经编译好。

2.? 驱动测试

(1) 首先,拷贝程序。

将驱动程序与应用程序都拷贝到开发板的系统上。

注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统存放在 ubuntu系统所设置的 nfs目录下!

将驱动文件 dtsled.ko,拷贝到 开发板系统 /lib/modules/4.1.15/目录下,这里系统存放在 /home/wangtian/linux/nfs_File/ 目录下,命名是 rootfs:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/5_dtsled.c$ sudo cp dtsled.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
[sudo] wangtian 的密码: 
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/5_dtsled.c$ 

拷贝应用程序到开发板的系统上:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/5_dtsled.c$ sudo cp led_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

(2) 其次,加载驱动模块

开发板上电后,进入系统 /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             7872 Jan 18  2024 dtsled.ko
-rwxr-xr-x    1 0        0            10588 Jan 18  2024 led_app
-rw-r--r--    1 0        0                0 Jan 17  2024 modules.alias
-rw-r--r--    1 0        0               21 Jan 17  2024 modules.dep
-rw-r--r--    1 0        0                0 Jan 17  2024 modules.symbols
/lib/modules/4.1.15 # 

上面可以看出,驱动与测试程序都已经拷贝到开发板上。

加载驱动模块

注意:这里因为该驱动程序测试过一次,所以,使用 modprobe 命令加载驱动模块时不需要运行 depmod命令。

输入 "modprobe dtsled.ko" 命令加载驱动程序:

确认驱动模块是否加载成功。

有两种方法:运行 "lsmod" 命令或运行 "cat /proc/devices" 命令进行查看。

执行 "lsmod" 命令确认驱动模块是否已加载:

确认是否自动创建Led相关的设备节点,进入 "/dev"目录下:

可以看出,在 /dev 目录下已经自动创建了设备节点 alpha_led。

(3) 最后,进行驱动程序的测试

进入开发板系统 /lib/modules/4.1.15/目录下,运行应用程序进行测试。

在 驱动模块入口函数中,继 Led灯的IO 初始化工作之后,是关闭了 Led灯,所以,默认情况下 Led灯是灭的。

运行应用程序,打开 Led灯,操作如下:

这时可以看开发板上 Led灯是否打开:

可以看出, 红色Led灯已经点亮。

现在运行应用程序,关闭Led灯:

这时可以查看开发板上的 Led灯是否关闭:

可以看出,红色的 Led灯已经灭。

测试完成,卸载驱动模块:

/lib/modules/4.1.15 # rmmod dtsled.ko 

注意:测试驱动模块时,可以进行多次的加载与卸载驱动模块的操作,这样可以防止程序可能存在问题。

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