2019-2020-1 20175307 20175308 20175319 实验四 外设驱动程序设计
小组成员
20175307高士淳
20175308杨元
20175319江野
实验步骤
1
- 实验要求
学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
提交康奈尔笔记的照片(可以多张) - 康奈尔笔记
2
- 实验要求
在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息) - 实验代码
- 驱动程序test_drv.c
- makefile
- 加载脚本test_drv_load
- 卸载脚本test_drv_unload
- 测试代码test.c
- 实验步骤
- 编译并加载驱动模块
make clean;make ./test_drv_load
- 编译并运行测试程序
gcc –o test test.c ./test
- 卸载驱动程序
./test_drv_unload
- 通过
dmesg
命令可以查看内核打印的信息
dmesg|tail –n 10 …… The major of the test device is 250 This is open operation This is release operation Test device uninstalled
- 通过
grep
命令确认驱动程序已经被卸载
- 实验结果截图
3
- 实验要求
在实验箱中通过交叉编译完成test实验
提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息) - 实验步骤
- 将实验箱与电脑相连,参照实验一 开发环境的熟悉的步骤操作,确保目标机(超级终端)和宿主机(虚拟机Ubuntu)能互相ping通(实验箱IP为192.168.0.232,Ubantu的IP为192.168.0.230)
- 参照实验一 开发环境的熟悉,用交叉编译器
arm-none-linux-gnuenbi-gcc
编译程序,挂载共享目录,通过NFS把宿主机中的程序运行目录映射到目标机中,运行程序
- 将实验箱与电脑相连,参照实验一 开发环境的熟悉的步骤操作,确保目标机(超级终端)和宿主机(虚拟机Ubuntu)能互相ping通(实验箱IP为192.168.0.232,Ubantu的IP为192.168.0.230)
实验过程中遇到的问题及解决方案
- 加载模块时提示
insmod: error inserting '***.ko': -1 File exists
解决方案:使用lsmod |grep test_dev
查看是否已存在此模块,如果存在,则卸载rmmod test_dev
或者直接重启虚拟机即可解决