【操作系统】实验九 写一个设备驱动程序
🕺作者: 主页
我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!!
文章目录
- 实验九 设备驱动程序设计(一)
- 一、实验目的
- 二、实验内容
- 三、实验过程记录
- 四、实验小结
实验九 设备驱动程序设计(一)
一、实验目的
学习编写设备驱动程序的一般过程
二、实验内容
通过阅读实验指导书上面的步骤和块设备程序源代码写一个设备驱动程序
三、实验过程记录
- 编写设备驱动程序,具体含义见注释,如图1所示。



图1
- 编写Makefile文件,这里需要注意内核的版本,不对会找不到头文件,如图2所示。

图2
- 编译驱动程序,生成.ko文件,如图3所示。

图3
- 安装驱动程序,如图4所示。

图4
- 查看模块信息,如图5所示。

图5
- 生成设备文件,如图6所示。

图6
- 查看设备文件,可以看到设备,如图7所示。

图7
四、实验小结
本次实验的目的是学习设备驱动程序的编写过程,通过实践来掌握编写设备驱动程序的一般步骤。在完成实验的过程中,我深刻体会到了以下几点思路和感悟:
首先,理解设备驱动程序的作用和基本原理是非常重要的。设备驱动程序作为操作系统和硬件之间的桥梁,负责管理和控制硬件设备,提供给用户空间程序进行访问和操作。因此,在编写设备驱动程序之前,我们需要对底层硬件设备和设备驱动框架有一个清晰的认识,以便能够正确地进行编写和调试。
其次,仔细阅读实验指导书和源代码是编写设备驱动程序的关键。实验指导书中提供了详细的步骤和注释,帮助我们理解每个函数的作用和编写方式。同时,源代码也是我们学习和借鉴的宝贵资源,通过仔细阅读和理解源代码,可以更好地掌握设备驱动程序的编写技巧和规范。
另外,对于错误的处理和调试也是非常重要的。在编写设备驱动程序过程中,难免会遇到一些错误和问题,例如编译错误、模块加载失败等。这时候,我们需要仔细分析错误信息,检查代码逻辑,逐步定位和解决问题。同时,使用调试工具和技巧也能帮助我们更快地定位问题所在,提高调试效率。
最后,持续学习和实践是提升设备驱动程序设计能力的关键。设备驱动程序设计是一个复杂而庞大的领域,需要不断学习和积累经验。通过参加实验和项目,我们能够更深入地了解设备驱动程序的原理和应用,掌握更多的编程技巧和调试方法。同时,与同学和老师的交流和讨论也能够拓宽我们的视野,帮助我们更好地理解和应用所学知识。
通过本次实验,我对设备驱动程序的编写过程有了更深入的了解,并且通过实践锻炼了自己的编程能力和解决问题的能力。希望在以后的学习和实践中,能够不断提升自己的设备驱动程序设计能力,为实现更高级、更复杂的设备驱动程序做好准备。
相关文章:
【操作系统】实验九 写一个设备驱动程序
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…...
基于密码技术的身份认证——基于对称密码体制的身份认证
一、符号说明: A→B:表示通信实体A向通信实体B发送消息; Ek(x):表示用认证双方共享的密钥K对x进行加密; Text1,Text2,……,Text n属于可选项; ||:表示比特…...
算法36:单调栈结构、子数组最小乘积的最大值问题(力扣1586)----单调栈
单调栈:就是在栈中实现数据的单调性。即从栈底到栈顶,要么递增,要么递减。 那么,使用单调栈,可以解决什么问题呢? 给定一个可能含有重复值的数组arr,i位置的数一定存在如下两个信息 1&#x…...
django mysql in 有序返回
from django.db.models import * ordering f"FIELD(id, {,.join([str(_) for _ in ids])})" # 默认就按照算法返回的 id 排序p_data_result PeptidesDataResult.objects.using("polypeptide").filter(id__inids).values().extra(select{ordering: orderi…...
c++24.1.26嵌套if语句
嵌套if语句:if语句中的if语句 实践:...
机器学习--基础概念(二)
1.分类算法 分类算法是有监督学习的一个核心问题,他从数据中学习一个分类决策函数或分类模型,对新的输入进行预测,输出变量取有限个离散值。 以下是一些常见的分类算法: 逻辑回归 (Logistic Regression): 用于二分类问题&#x…...
Ubuntu20.04 安装 ROS noetic + MAVROS
本文在 AlphaCatOvO【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程 基础上,根据实际安装经验,稍微进行补充。 一、安装Ubuntu20.04 假设已经正确安装。 二、安装 ROS noetic 2.1 换源 执行 sudo apt update sudo mv /etc/apt/sources.list /etc/apt/…...
【数学笔记】一元n次不等式,分式不等式,绝对值不等式
不等式 基本性质 一元n次不等式一元二次不等式一元高次不等式分式不等式绝对值不等式 基本性质 性质 a > b ⇔ b < a a>b\Leftrightarrow b<a a>b⇔b<a a > b , b > c ⇒ a > c a>b,b>c\Rightarrow a>c a>b,b>c⇒a>c a > b ,…...
转载-android性能优化
android性能优化 Reason: Broadcast of Intent { actandroid.intent.action.TIME_TICK ActivityManager: ANR in com.***.*** PID: 16227 Reason: Broadcast of Intent { actandroid.intent.action.TIME_TICK flg0x50000014 (has extras) }有那么一段时间我被这个ANR折磨到每…...
笔记 | Clickhouse命令行查询
在 ClickHouse 中,可以使用命令行客户端执行查询。默认情况下,ClickHouse 的命令行客户端称为 clickhouse-client。下面是一些基本的步骤和示例,用于使用 clickhouse-client 进行查询。 首先,需要确保已经安装了 ClickHouse 服务…...
Dockerfile-xxxx
1、Dockerfile-server FROM openjdk:8-jdk-alpine WORKDIR /app COPY . . CMD java -Xms1536M -Xmx1536M -XX:UseG1GC -jar -Dlog4j2.formatMsgNoLookupstrue -Dloader.pathresources,lib -Duser.timezoneGMT-05 /app/server-main-1.0.0.jar 2、Dockerfile-bgd #FROM openjdk…...
Vue中的$attrs
今天产品经理要求做保留某组件全部功能,还要在它的基础上增加东西。如果不嫌麻烦的话就笨办法,但是想一下怎么只用少量代码高效的二次封装组件呢 Vue中的$attrs 在 Vue2 中,attr 是指组件接收的 HTML 特性(attribute),通过 prop…...
使用阿里云的oss对象存储服务实现图片上传(前端vue后端java详解)
一:前期准备: 1.1:注册阿里云账号,开启对象存储oss功能,创建一个bucket(百度教程多的是,跟着创建一个就行,创建时注意存储类型是标准存储,读写权限是公共读)…...
python实例100第32例:使用a[::-1]按相反的顺序输出列表的值
题目:按相反的顺序输出列表的值。 程序分析: a[n:-n]作用是去除前n个元素和末n个元素a[-n]作用是取倒数第n个元素a[:-n]的作用是去除后n个元素a[::-1]的作用是将所有元素逆序排列a[n::-1] 的作用是从第n个元素截取后逆序排列 程序…...
python执行脚本的时候获取输入参数
当我们执行脚本的时候,通常都会执行 python test.py -i xxx -o xxx,这里的 -i 和 -o 都是输入参数,这到底是怎么传递的呢? 本文纯粹记录一下 import argparseif __name__ __main__:print("hello")# 创建AugumentParser…...
Halcon指定区域的形状匹配
Halcon指定区域的形状匹配 文章目录 Halcon指定区域的形状匹配1.在参考图像中选择目标2.创建模板3.搜索目标 在这个实例中,会介绍如何根据选定的ROI选择合适的图像金字塔参数,创建包含这个区域的形状模板,并进行精确的基于形状模板的匹配。最…...
Linux——常用命令
1、命令的基本格式 对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干什么ÿ…...
外包干了2个月,技术反而退步了...
先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...
洛谷C++简单题练习day6—P1830 城市轰炸
day6--P1830 城市轰炸--1.26 习题概述 题目背景 一个大小为 nm 的城市遭到了 x 次轰炸,每次都炸了一个每条边都与边界平行的矩形。 题目描述 在轰炸后,有 y 个关键点,指挥官想知道,它们有没有受到过轰炸,如果有&a…...
【linux-interconnect】What NVIDIA MLNX_OFED is?
NVIDIA MLNX_OFED Documentation v23.07 - NVIDIA Docs 文章目录 What NVIDIA MLNX_OFED is?Overview[Software Download](https://docs.nvidia.com/networking/display/mlnxofedv23070512#src-2396583107_NVIDIAMLNX_OFEDDocumentationv23.07-SoftwareDownload) Wh…...
VSCode调试C++项目全攻略:从CMake工程配置到Native Debug实战(含传参技巧)
VSCode调试C项目全攻略:从CMake工程配置到Native Debug实战(含传参技巧) 在当今的C开发环境中,高效调试已成为提升生产力的关键环节。对于使用CMake管理的中大型项目,如何在VSCode中实现无缝调试体验,是许多…...
国产替代之SFT1452-H与VBFB1251K参数对比报告
N沟道功率MOSFET参数对比分析报告一、产品概述SFT1452-H:安森美(onsemi)N沟道功率MOSFET,耐压250V,低导通电阻,ESD门极保护,符合无卤素标准。封装:IPAK (TO-251)。适用于通用开关应用…...
PheroPath:自定义代谢通路构建与可视化工具在组学数据分析中的应用
1. 项目概述与核心价值最近在生物信息学和计算生物学领域,一个名为“PheroPath”的项目引起了我的注意。这个项目由用户starpig1129托管,从名字上就能嗅到一丝“信息素”和“路径”结合的味道。作为一名长期在组学数据分析、特别是代谢通路研究一线摸爬滚…...
观察taotoken用量看板如何清晰呈现各模型token消耗
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察taotoken用量看板如何清晰呈现各模型token消耗 对于使用大模型API的开发者或团队管理者而言,成本的可观测性与可控…...
Python 爬虫数据处理:特殊格式文档爬虫解析处理
前言 在 Python 爬虫规模化采集业务中,除常规 HTML 网页与 JSON 接口数据外,经常会遇到各类非网页型特殊格式文档资源,常见包含 PDF、Word、Excel、CSV、TXT、压缩包内嵌文档、Base64 加密文档、富文本混合格式文档等。这类文档无法通过常规…...
网安信息收集
声明:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全 的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安…...
从被看不起到被追更:《凰标》的逆袭就是行业缩影@凤凰标志
——《凰标》如何一刀劈开文娱偏见无资本即为小众,无热度即为劣质,无流量即为无用。 这条铁律,曾压弯无数民间创作者的笔。一、被看不起的开局:民间创作的“三无原罪”行业默认《凰标》现实顶级 IP 加持零 IP,纯原创豪…...
602 游戏平台 — 做玩家喜爱、信任的游戏平台!
602 游戏是2013 年上线的老牌正规页游平台,十年稳定运营,始终以 “玩家喜爱、信任”为核心,主打传奇类精品页游 ,三端互通✅ 平台核心优势(为什么玩家信任)正规合规,账号安全:文网文…...
冻|结D球 2026
通过网盘分享的文件:冻|结D球 2026 链接: https://pan.baidu.com/s/1-bhxibfD69ahEoufeQFRRQ?pwdhygv 提取码: hygv...
云数据中心能效优化:集成资源管理与学习中心管理的实战指南
1. 项目概述:当云计算撞上“能耗墙”,我们如何破局?干了十几年IT,从自建机房到全面上云,我亲眼见证了云计算如何重塑整个行业。它确实像电力网络和公路一样,成了现代社会不可或缺的基础设施。但这些年&…...
