【操作系统】实验十 设备驱动程序设计

简介: 【操作系统】实验十 设备驱动程序设计

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!!

实验十 设备驱动程序设计(二)

一、实验目的

通过分析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命令清理现场。

三、实验过程记录

  1. 编写驱动模块usb.c,如图1所示。

图1

  1. 编写Makefile文件

图2

  1. 编译 make,如图2所示。

图3

  1. 加载驱动模块 insmod usb.ko,,如图3所示。

图7

  1. 命令mount /dev/sdb /mnt将设备挂载到/mnt,df -h查看是否成功挂载到/mnt,使用 ls /mnt命令可以查看挂载点的内容,如图7所示。

图8

  1. 复制 U 盘中的文件到另一个目录/home/chen/文档/hxq中,可以看到成功复制到该目录下,如图8、9所示。

图9

图10

  1. 卸载模块,清理现场,如图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盘驱动程序。通过这个实验,我进一步提升了我的驱动程序设计和开发能力。

相关文章
|
8天前
【操作系统】实验九 写一个设备驱动程序
【操作系统】实验九 写一个设备驱动程序
8 1
|
8天前
【操作系统】实验八 proc文件系统
【操作系统】实验八 proc文件系统
9 1
|
8天前
|
Linux API
【操作系统】实验七 显示进程列表
【操作系统】实验七 显示进程列表
9 1
|
8天前
|
存储 机器学习/深度学习 算法
【操作系统】实验六 分析源代码
【操作系统】实验六 分析源代码
11 1
|
8天前
|
Linux 编译器 API
【操作系统】实验五 添加内核模块
【操作系统】实验五 添加内核模块
7 1
|
8天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
36 0
|
8天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
36 0
|
8天前
|
存储 Linux C语言
Linux:冯·诺依曼结构 & OS管理机制
Linux:冯·诺依曼结构 & OS管理机制
14 0
|
8天前
|
存储 Linux
linux查看系统版本、内核信息、操作系统类型版本
linux查看系统版本、内核信息、操作系统类型版本
64 9
|
1天前
|
存储 缓存 Linux
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解