linux设备驱动介绍

devtools/2024/10/19 3:24:47/

目录

linux%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8-toc" style="margin-left:0px;">一.裸机设备驱动 vs linux设备驱动

        1.什么是驱动程序

        2.裸机驱动和操作系统驱动有什么区别

linux%E9%A9%B1%E5%8A%A8%E7%9A%84%E6%9C%AC%E8%B4%A8%E6%98%AF%E4%BB%80%E4%B9%88-toc" style="margin-left:40px;">        3.linux驱动的本质是什么

linux%E8%AE%BE%E5%A4%87%E5%88%86%E7%B1%BB-toc" style="margin-left:0px;">二.linux设备分类


一.裸机设备驱动 vs linux设备驱动

1.什么是驱动程序

        一般来说能让硬件工作起来的程序就是驱动程序,驱动程序提供的是硬件设备操作的功能函数接口,具体如何使用这些功能,由使用者自己去决定。直接在单片机上运行的驱动程序称为裸机驱动,在操作系统中运行的驱动程序称为操作系统驱动程序。

2.裸机驱动和操作系统驱动有什么区别   

        裸机驱动(Bare-Metal Driver)是针对特定硬件设备编写的底层驱动程序,可以直接与硬件设备进行交互,实现对设备的控制和管理。裸机驱动通常是在没有操作系统或操作系统内核驱动程序支持的情况下使用的,它们直接与硬件交互,通过读写设备寄存器或执行硬件指令来操作硬件设备。

        操作系统驱动程序(Operating System Driver)是针对特定硬件设备编写的高层驱动程序,用于操作系统内核与硬件设备之间的交互。操作系统驱动程序通常是在操作系统内核中运行的,通过操作系统提供的抽象接口(如系统调用)来实现对硬件设备的控制和管理。

        因此,裸机驱动和操作系统驱动的主要区别在于它们的层次和交互方式。裸机驱动是底层驱动程序,直接与硬件设备进行交互;而操作系统驱动是高层驱动程序,通过操作系统提供的抽象接口与硬件设备进行交互。

3.linux驱动的本质是什么  

        Linux驱动的本质是为应用程序提供硬件操作的函数接口(为上层通过接口),以便应用程序可以方便地使用硬件设备。驱动程序通常是作为操作系统内核的一部分运行的,用于管理和控制硬件设备。​

        Linux驱动程序的主要任务是实现与硬件设备的交互,向上层应用程序提供统一的硬件访问接口。

        驱动程序需要实现设备的初始化、数据传输、中断处理、电源管理等功能,以满足应用程序的需求。

        因此,驱动程序需要深入了解硬件设备的特性和操作方式,并提供相应的API接口,以便应用程序可以直接调用驱动程序提供的函数来控制硬件设备。

        对于应用程序工程师而言,他们通常不需要关心驱动程序的具体实现细节,只需要使用驱动程序提供的API接口来访问硬件设备。这样,应用程序可以集中精力开发应用程序本身,而不用花费大量时间和精力去了解硬件设备的底层实现细节。因此,Linux驱动程序的本质是为应用程序提供简单、可靠、高效的硬件访问接口,使应用程序开发变得更加容易和高效 。

 

二.linux设备分类 

        在Linux系统中的设备主要分为三大类:字符设备、块设备、网络设备。

        字符设备:字符设备以字节为单位进行输入和输出​

        字符设备没有固定的大小,也没有缓存区,数据会立即被传输。比如串口、鼠标、键盘等。字符设备在 /dev目录下存在设备文件。

         块设备 :块设备以块为单位进行输入和输出​

        通常用于存储数据,比如硬盘、USB闪存等。块设备有固定的大小和缓存区,数据会在缓存区中暂存,然后批量传输。块设备可以被分区和格式化为文件系统,以便操作系统和应用程序可以访问和使用。块设备在 /dev 目录下存在设备文件。

        网络设备:网络设备的输入和输出都是通过网络协议来进行的​

        网络设备用于在计算机网络中进行通信,通常包括网卡和调制解调器等。网络设备可以被配置为使用不同的网络协议和参数,以适应不同的网络环境和需求。网络设备可以通过网络接口的名称来识别,比如 eth33。

 


http://www.ppmy.cn/devtools/126903.html

相关文章

如何将 html 渲染后的节点传递给后端?

问题 现在我有一个动态的 html 节点,我想用 vue 渲染后,传递给后端保存 思路 本来想给html的,发现样式是个问题 在一个是打印成pdf,然后上传,这个操作就变多了 最后的思路是通过 html2canvas 转化成 canvas 然后变成…

84 外网用户通过外网地址访问内网服务器

1. 组网需求 某公司内部对外提供Web、FTP和SMTP服务,而且提供两台Web服务器。公司内部网址为10.110.0.0/16。其中,内部FTP服务器地址为10.110.10.3/16,内部Web服务器1的IP地址为10.110.10.1/16,内部Web服务器2的IP地址为10.110.1…

JAVA毕业设计190—基于Java+Springboot+vue的景区旅游推荐管理系统(源代码+数据库+7000字论文)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的景区旅游推荐管理系统(源代码数据库7000字论文)190 一、系统介绍 本项目前后端分离,分为用户、商家、管理员三种角色,带协同过滤算…

SparkSQL介绍及使用

文章目录 1. SparkSQL介绍及使用1.1 SparkSQL介绍1.2 数据结构的形式1.3 Spark SQL 特点1.4 Spark SQL 和 Hive SQL关系 1. SparkSQL介绍及使用 1.1 SparkSQL介绍 Spark SQL是Apache Spark 用于处理结构化数据(DataFrame和Datasets)的模块。 在Spark1.0…

git clone卡在Receiving objects

git clone卡在Receiving objects 一直卡主 $ git clone gitxxx.git Cloning into xxx... remote: Enumerating objects: 75926, done. remote: Counting objects: 100% (18844/18844), done. remote: Compressing objects: 100% (6566/6566), done. Receiving objects: 60% (…

【MYSQL】数据库基本操作----DQL(Data Query Language)---基本查询

1、排序查询 (1)介绍 如果我们需要对读取的数据进行排序,我们就可以使用Mysql的order by字句来设定你想按哪个字段、哪中方式来进行排序,再返回搜索结果。 语法: select 字段名1,字段名2... from …

【C语言】main函数乘积函数

函数是C语言源程序的基本单位 C语言程序包含三种函数:main函数、库函数、用户自定义函数。 每个C程序有且仅有一个main()函数。注意不要遗漏return 0;库函数是编译器中自带的函数,已经写好,加上相应的头文件可直接调用&#xff0…

Redis和Jedis的区别

目录 含义与用途 Jedis案例 总结 含义与用途 Redis: 概念:Redis是一个基于内存的键值存储数据库,支持丰富的数据结构。比如:字符串功能:除了基础的数据存储,Redis还提供了丰富的高级功能。如持久化&…