嵌入式Linux driver开发实操(二十一):linux device driver basic设备驱动程序基础

news2024/12/28 2:49:16

 linux的架构框图:

内核空间是内核(即操作系统的核心)执行(即运行)并提供其服务的地方。 用户空间是执行用户应用程序的地方。
内核模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能,而无需重新启动系统。自定义代码可以通过两种方法添加到Linux内核中。

->基本方法是将代码添加到内核源代码树并重新编译内核。

->一种更有效的方法是在内核运行时将代码添加到内核中。这个过程称为加载模块,其中模块指的是要添加到内核中的代码。

由于在运行时加载这些代码,并且它们不是官方Linux内核的一部分,因此这些代码被称为可加载内核模块(LKM),与“基本内核”不同。基本内核位于/boot目录中,并且总是在引导机器时加载,而LKM是在基本内核已经加载之后加载的。尽管如此,这个LKM在很大程度上是内核的一部分,它们与基本内核通信以完成它们的功能。可加载内核模块有多种用途,但最常见的应用程序是-

->设备驱动程序

->文件系统驱动程序

->系统调用

设备驱动程序是为特定的硬件设计的。内核使用它与硬件进行通信,而不必知道硬件如何工作的任何细节。

文件系统驱动程序将文件系统的内容(通常是磁盘驱动器的内容)解释为文件和目录等。在磁盘驱动器、网络服务器和其他方式上存储文件和目录有很多不同的方式。对于每种方式,都需要一个文件系统驱动程序。例如,有一个ext2文件系统类型的文件系统驱动程序,几乎在Linux磁盘驱动器上普遍使用。还有一个用于

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC基础篇(一)

文章目录 1.基本介绍1.特点2.SpringMVC跟SpringBoot的关系 2.快速入门1.需求分析2.图解3.环境搭建1.创建普通java工程2.添加web框架支持3.配置lib文件夹1.导入jar包2.Add as Library3.以后自动添加 4.配置tomcat1.配置上下文路径2.配置热加载 5.src下创建Spring配置文件applica…

BUUCTF-MISC-09文件中的秘密1

9.文件中的秘密1 题目:flag包含在图片的属性中

三款数据可视化工具深度解析:Tableau、ECharts与山海鲸可视化

在数字化时代,数据可视化工具成为了企业和个人进行数据分析和决策的重要助手。市面上众多数据可视化工具各具特色,本文将为您介绍三款热门的数据可视化工具,帮助您更好地理解和利用数据。 首先,让我们来认识Tableau。Tableau是一款…

基于python+django+mysql农业生产可视化系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

网络安全攻击溯源的重要性及挑战

网络安全攻击溯源是一个复杂且至关重要的过程,它涉及对网络攻击事件的来源进行追踪和分析,以便确定攻击者的身份、动机和攻击路径。在IP技术背景下,网络安全攻击溯源更是显得尤为重要,因为IP地址作为网络设备的唯一标识&#xff0…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中,已经讲解过了MQTT的通讯原理和组包过程,现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互,实际上这篇文章已经拖更接近两年了,非常…

python学习:pyqt5

1、安装所需库 pip install pyqt5 pip install pyqt5 -tools 2、导入所需库 # 导入所需库 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget from PyQt5.QtCore import QThread, pyqtSignal 3、多线程举例 # 定义一个继承…

coreldraw2024精简版绿色版安装包免费下载

CorelDRAW 2024是一款矢量图形设计软件,于2024年3月5日正式在全球范围内发布。这款软件在多个方面进行了更新和改进,为用户提供了更多高效、灵活和便捷的设计工具。 首先,CorelDRAW 2024新增了绘画笔刷功能,这些笔刷不仅模拟了传…

Python爬虫入门指南--爬虫技术的由来、发展与未来--实战课程大赠送

爬虫,也称为网络爬虫或网络蜘蛛,是一种自动化程序,专门用于遍历互联网并收集数据。这种技术的起源、发展和未来都与互联网紧密相连,并在信息检索、数据挖掘等多个领域发挥着不可或缺的作用。 "免费IP池大放送!助…

dial tcp 192.168.0.190:443: connect: connection refused

1、场景 用nerdctl登录镜像仓库192.168.0.190(Harbor),报错 ERRO[0006] failed to call tryLoginWithRegHost error"failed to call rh.Client.Do: Get \"https://192.168.0.190/v2/\": dial tcp 192.168.0.190:…

JavaScript系列------2

1. JS 数据类型: 基本数据类型:number数字型,string字符串型,boolean布尔型,undefined未定义型,null空类型 引用数据类型:object对象 js 是弱数据类型的语言,只有当我们赋值了才知道是什么数据类型。 声明一个变量未赋值就是 un…

【FFmpeg】音视频录制 ② ( 使用 Screen Capturer Recorder 软件生成 ffmpeg 可录制的音视频设备 )

文章目录 一、使用 Screen Capturer Recorder 软件生成音视频设备1、设备查找问题 - 引入 Screen Capturer Recorder 软件2、下载安装 Screen Capturer Recorder 软件3、验证 Screen Capturer Recorder 生成的设备 一、使用 Screen Capturer Recorder 软件生成音视频设备 1、设…

对浅拷贝的理解

问题背景 我之前一直以为浅拷贝出来的新对象和旧对象的引用地址是相同的,但是通过Object和发现浅拷贝的新对象和旧对象的引用地址不同!! const obj1 { name: "Alice", test: { age: 12 } };const obj4 Object.assign({}, obj1);…

Kafka源码分析(四) - Server端-请求处理框架

系列文章目录 Kafka源码分析-目录 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块,提供了服务端NIO通信能力基础。 有4个核心类:…

spring的bean创建流程源码解析

文章目录 IOC 和 DIBeanFactoryApplicationContext实现的接口1、BeanFactory接口2、MessageSource 国际化接口3、ResourcePatternResolver,资源解析接口4、EnvironmentCapable接口,用于获取环境变量,配置信息5、ApplicationEventPublisher 事…

GAN详解,公式推导解读,详细到每一步的理论推导

在看这一篇文章之前,希望熟悉掌握熵的知识,可看我写的跟熵相关的一篇博客https://blog.csdn.net/m0_59156726/article/details/138128622 1. GAN 原始论文:https://arxiv.org/pdf/1406.2661.pdf 放一张GAN的结构,如下&#xff1…

索引超详细解析

目录 索引概述 无索引时: 索引: 索引结构 介绍: 二叉树: B-Tree(多路平衡查找树): 经典BTree MySQL中B树 Hash索引 hash索引的特点: 存储引擎支持: 为什么InnoDB存储选择使用BTree…

升级 jQuery:努力打造健康的 Web 生态

jQuery 对 Web 的影响始终是显而易见的。当 jQuery 在 2006 年首次推出时,几乎立即成为 Web 开发人员的基本工具。它简化了 JavaScript 编程,使操作 HTML 文档、处理事件、执行动画等变得更加容易。从那时起,它在 Web 标准和浏览器功能的演变…

深度学习基础:循环神经网络中的Dropout

深度学习基础:循环神经网络中的Dropout 在深度学习中,过拟合是一个常见的问题,特别是在循环神经网络(RNN)等复杂模型中。为了应对过拟合问题,研究者们提出了许多方法,其中一种被广泛应用的方法…

CSS渐变色理论与分类、文字渐变色方案、炸裂渐变色方案以及主流专业渐变色工具网站推荐

渐变色彩可以增加视觉层次感和动态效果,使网页界面更加生动有趣,吸引用户注意力。另外,相较于静态背景图片,CSS渐变无需额外的HTTP请求,减轻服务器负载,加快页面加载速度;同时CSS渐变能够根据容…