首页 > 编程语言 >【操作系统】实验九 设备驱动程序设计

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

时间:2024-06-19 12:31:49浏览次数:24  
标签:文件 驱动程序 radimo 命令 实验 操作系统 U盘

一、实验目的

分析一个典型的块设备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.本实验的内容是非常深入的。需要对操作系统的设备驱动机制十分熟悉。尽管现在我并没有完美地完成实验,但本次实验也让我对操作系统设备驱动有了初步的了解,对后续的学习有显著帮助。

标签:文件,驱动程序,radimo,命令,实验,操作系统,U盘
From: https://blog.csdn.net/qq_37293468/article/details/139711239

相关文章

  • 【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验一 Packet Tracer的简单
    一、实验目的1.掌握PacketTracer的简单使用方式;2.加深对网络体系结构的理解。二、实验要求1.搭建CiscoPacketTracer仿真平台使用环境;2.观看B站湖科大教书匠仿真实验视频,完成对应实验。三、实验内容第一部分:PacketTracer的简单使用1.下载CiscoPacketTracer并......
  • 动物实验~No.1 行为学之水迷宫
    Morris水迷宫实验作为评价动物学习记忆水平的金标准,为动物实验的科学性及准确性提供了重要保障。实验指标的确立及选择以及选取恰当的统计学方法也为动物实验的结果提供了科学依据。今天浅浅记录下Morris水迷宫相关实验指标的选取及意义以及对于数据处理的统计方法选择。1.Mor......
  • 【操作系统】pipe&mkfifo|管道详解
     ......
  • 实验7
    Task1//将图书信息写入文本文件data1.txt//再从文件中读取图书信息,打印输出到屏幕上,并显示行号#include<stdio.h>#defineN80#defineM100typedefstruct{charname[N];//书名charauthor[N];//作者}Book;//函数声明voidfunc1();void......
  • 实验七
    /将图书信息写入文本文件data1.txt//再从文件中读取图书信息,打印输出到屏幕上,并显示行号#include<stdio.h>#defineN80#defineM100typedefstruct{charname[N];//书名charauthor[N];//作者}Book;//函数声明voidfunc1();voidfunc2()......
  • 计算机网络实验(9):路由器的基本配置和单臂路由配置
    一、实验名称路由器的基本配置和单臂路由配置二、实验目的: (1)路由器的基本配置:掌握路由器几种常用配置方法;掌握采用Console线缆配置路由器的方法;掌握采用Telnet方式配置路由器的方法;熟悉路由器不同的命令行操作模式以及各种模式之间的切换;掌握路由器的基本配置命令;路......
  • 实验:交换机的基本原理与配置
    1.实验目的掌握交换机的基本原理。2.实验拓扑交换机基本原理的实验拓扑图3.实验步骤(1)PC1的配置如下图所示(2)PC2的配置如下图所示(3)PC3的配置如下图所示(4)PC4的配置如下图所示4.实验调试(1)查看交换机的MAC地址表,命令如下:<Huawei>system-view //进入系统视图[Huaw......
  • JAVA实验九
    一 算术测试Classonepackageaaa;importjava.util.Random;importjava.awt.event.*;importjavax.swing.*;publicclassOneimplementsActionListener{ intnumberOne,numberTwo; Stringoperator=""; booleanisRight; Randomrandom; intmaxInteger;......
  • 基于SpringBoot+Vue+uniapp的高校实验室信息化综合管理平台建设的详细设计和实现(源码
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 实验7
    点击查看代码#include<stdio.h>intmain(){intcount=0;intch;FILE*fp;fp=fopen("data4.txt","r");if(fp==NULL){printf("failtoopenfile\n");return1;}while((......