字符设备驱动代码运行的测试

2023-12-22 18:52:46

一. 简介

前面一篇文章对字符设备驱动代码进行了完善,文章地址如下:

字符设备驱动代码的完善-CSDN博客

本文对继上一篇文章,对上一篇文章编写的驱动代码的测试。

二.? 字符设备驱动代码的运行测试

1.? 编译驱动程序与应用程序

这里对上一篇文章中已经实现的驱动程序,测试程序进行编译。进入 ubuntu系统,进入 1_chrdevbase工程的根目录下,编译字符驱动代码:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ make

编译完成后,会生成 驱动模块文件 chrdevbase.ko。

继续编译测试应用程序,这里测试程序文件为 chrdevbase_app.c文件:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ arm-linux-gnueabihf-gcc chrdevbase_app.c -o chrdevbase_app

编译完成后,会生成 测试程序文件 chrdevbase_app。

查看是否生成驱动文件,测试程序:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ ls
chrdevbase_app    chrdevbase.code-workspace  chrdevbase.mod.o  Makefile
chrdevbase_app.c  chrdevbase.ko              chrdevbase.o      modules.order
chrdevbase.c      chrdevbase.mod.c           core              Module.symvers

可以看出,编译后生成了字符驱动模块文件 chrdevbase.ko与测试程序文件 chrdevbase_app。

2. 运行测试

(1)? 首先,将驱动模块与测试程序拷贝开发板。

将编译生成的 字符驱动模块文件 chrdevbase.ko与测试程序文件 chrdevbase_app 拷贝到开发板根文件系统下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ sudo cp chrdevbase.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ sudo cp chrdevbase_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

开发板上电后,进入根文件系统下。进入 /lib/modules/4.1.15目录下,查看是否已存字符驱动模块文件 chrdevbase.ko与测试程序文件 chrdevbase_app:

/ # cd /lib/modules/4.1.15/
/lib/modules/4.1.15 # ls -l
total 24
-rw-r--r--    1 0        0             5309 Dec 22  2023 chrdevbase.ko
-rwxr-xr-x    1 0        0            11143 Dec 22  2023 chrdevbase_app
-rw-r--r--    1 0        0                0 Dec 19  2023 modules.alias
-rw-r--r--    1 0        0               15 Dec 19  2023 modules.dep
-rw-r--r--    1 0        0                0 Dec 19  2023 modules.symbols
/lib/modules/4.1.15 # 

可以看出, 字符驱动模块程序与 测试程序已经存在。

(2)? 其次,加载字符驱动模块 chrdevbase.ko。

/lib/modules/4.1.15 # modprobe chrdevbase.ko 

确定驱动模块是否加载成功,可以运行 "lsmod" 命令查看所挂载的模块。

也可以通过 "cat /proc/devices" 命令查看是否存在字符驱动模块。

(3)? 其次,手动创建字符设备驱动节点。

/lib/modules/4.1.15 # mknod /dev/chrdevbase c 200 0

确定是否成功创建好设备驱动节点,输入 "ls -l /dev" 命令:

可以看出,在 "/dev/" 目录下存在了 chrdevbase设备文件。说明设备驱动节点已经创建成功。

(4) 最后,运行测试字符设备驱动。

运行测试程序以及驱动程序,测试驱动程序是否运行正常:

测试从设备驱动中读数据:

/lib/modules/4.1.15 # ./chrdevbase_app /dev/chrdevbase 1
read kernel_data: kernel data!
/lib/modules/4.1.15 # 

测试向驱动设备中写入数据:

/lib/modules/4.1.15 # ./chrdevbase_app /dev/chrdevbase 2
chrdevbase_write: user data!
/lib/modules/4.1.15 # 

可以看出,应用程序从驱动设备读数据正常,应用程序向驱动设备中写入数据也正常。

至此,模拟的字符设备驱动代码已实现。

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