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

一、实验目的

分析一个典型的块设备RAM-DISK的驱动程序,学习编写设备驱动程序的一般过程。将这个RAM-DISK的程序改造成为U盘的驱动程序,并通过它来使用你的U盘。

二、实验内容

仔细阅读上一节中radimo的源代码,将radimo驱动程序改写成为一个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命令清理现场。
(10) 在以上各步骤中,随时回答老师提出的问题。不要求回答完全准确,但基本原理必须能够阐述清楚,可以当场查资料。

三、实验过程记录

下载实验代码并解压

查看radimo.c文件

查看radimo.h文件

查看makefile文件

此处发现因版本问题编译失败,多方查询后选择使用旧版本镜像。用lsmod命令查询系统中是否已经加载usb-storage的模块。

输入mount -t vfat /dev/sdbl /mnt装载u盘。输入cd /mnt/进入U盘并查询U盘的目录内容

输入gcc -c -I/usr/src/linux-2.4/include radimo.c -mcmodel=kernel调用gcc编译这个radimo.c文件,得到一个radimo.o的文件,输入ls查看文件

输入mknod /dev/disk b 42 0<回车>,建立一个叫disk的设备文件

查看文件

装载内核模块

输入lsmod查看内核模块

输入mke2fs /dev/disk创建文件系统

输入mount /dev/my_mod /mnt,把这个磁盘挂载

输入df查看当前挂载的磁盘

用umount命令清理现场

用rmmod命令清理现场

四、实验小结

1.在本实验中,我们分析了一个典型的块设备RAM-DISK的驱动程序,学习编写设备驱动程序的一般过程。将这个RAM-DISK的程序改造成为U盘的驱动程序,并通过它来使用U盘。这个实验中我遇到的最大问题是因为实验所需要的版本过低、新版本不支持导致的反复编译失败问题。多方查询资料后无果,选择使用旧版内核进行本实验。
2.本实验的内容是非常深入的。需要对操作系统的设备驱动机制十分熟悉。尽管现在我并没有完美地完成实验,但本次实验也让我对操作系统设备驱动有了初步的了解,对后续的学习有显著帮助。

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robbi_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值