😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!!
实验十 设备驱动程序设计(二)
一、实验目的
通过分析Linux的USB驱动框架程序(usb-skeleton.c)和USB大规模存储设备驱动程序(usb-storage)的源代码,结合前面的RAMDISK驱动程序,设计开发一个U盘驱动程序。
二、实验内容
(1) 用lsmod命令查询系统中是否已经加载usb-storage的模块,这是Linux系统自带的U盘驱动程序。如果已经加载,则用rmmod命令卸载这个模块。
(2) 编译改装后的radimo程序,要求能编译通过,允许出现编译警告。
(3) 用insmod命令加载改装后的radimo程序。
(4) 插入U盘。要求在用dmesg查看log文件时,能够看到改装的radimo程序发现了U盘。允许你的程序只认识一种或者有限的几种U盘,不要求能够认出市面上所有U盘。
(5) 能够在log文件中显示出U盘的容量。
(6) 用mknod命令建立设备文件,并用mount命令挂接这个U盘的文件系统到/mnt。你的U盘可以预先用Windows格式化好。
(7) 用df命令应该能够看到已经挂接好的U盘。
(8) 用ls /mnt命令应该能够看到U盘中的内容。用cp命令能够将U盘中的任意文件复制到硬盘上。
(9) 用umount命令和rmmod命令清理现场。
三、实验过程记录
- 编写驱动模块usb.c,如图1所示。
图1
- 编写Makefile文件
图2
- 编译 make,如图2所示。
图3
- 加载驱动模块 insmod usb.ko,,如图3所示。
图7
- 命令mount /dev/sdb /mnt将设备挂载到/mnt,df -h查看是否成功挂载到/mnt,使用 ls /mnt命令可以查看挂载点的内容,如图7所示。
图8
- 复制 U 盘中的文件到另一个目录/home/chen/文档/hxq中,可以看到成功复制到该目录下,如图8、9所示。
图9
图10
- 卸载模块,清理现场,如图10所示。
图11
四、实验小结
本次实验的目的是通过分析Linux的USB驱动框架程序和USB大规模存储设备驱动程序的源代码,设计开发一个U盘驱动程序。
在实验过程中,首先使用lsmod命令查询系统是否已加载usb-storage模块,如果已加载,则使用rmmod命令卸载该模块。然后编译改装后的radimo程序,要求能够编译通过,允许出现编译警告。接着使用insmod命令加载改装后的radimo程序。
在插入U盘后,使用dmesg命令查看log文件,可以看到改装的radimo程序已经发现了U盘。程序可以只认识一种或有限几种U盘,不要求能够识别所有U盘。同时,在log文件中能够显示出U盘的容量。
接下来,使用mknod命令建立设备文件,并使用mount命令挂载U盘的文件系统到/mnt目录下。U盘可以预先用Windows格式化好。使用df命令可以查看已经挂载好的U盘。
使用ls /mnt命令可以查看U盘中的内容,并使用cp命令将U盘中的任意文件复制到硬盘上。
最后,使用umount命令和rmmod命令清理现场,卸载模块。
通过本次实验,我对Linux的USB驱动程序和设备驱动程序的设计有了更深入的了解,并成功开发出了一个U盘驱动程序。通过这个实验,我进一步提升了我的驱动程序设计和开发能力。