笔记整理—linux驱动开发部分(1)驱动梗概

驱动可以分为广义上的和狭义上的驱动。广义上的驱动是用于操作硬件的代码,而狭义上的驱动为基于内核系统之上让硬件去被操作的逻辑方法。

linux体系架构:

1.分层思想 :在OS中间还会有许多层。

:

2.驱动的上面是系统调用(API)。

3.驱动的下面是硬件,是寄存器。

4.驱动自己也分层次(有谁去调用设的分层)。

linux模块化设计:

宏内核:单内核,将内核作为一个大的个体,独立运行在一个单独的运行空间中(地址空间),相互之间可以相互调用函数------紧耦合+高集成,简单高效但谁也别出事,一旦出问题就完啦~。

微内核:内核功能被分为独立的过程,过程中IPC(进程间通信)通信,高度内核化,一个服务失效不会影响别的功能,但效率低,如Windows。

linux是非典型宏内核,又在微内核上做了吸收,有松耦合性。

静态模块化,编译时可裁剪,但想升级就要重新编译。

动态模块化,不用重新烧录,不用挂机重启,就能实现安装与卸载。

驱动设备分类,字符设备、块设备、网络设备。以本身读写操作的特征进行区分。

字符设备,读写以字节为单位,如LCD、串口、LED、蜂鸣器、touch。

块设备,相对于字符设备定义,操作以块为设备(多字节组成),读多少块不是由软件决定的(Nandflash)以块为单位寻址。如硬盘、Nandflash、iNand、SD设备等。

网络设备,准专为网卡设计的驱动模型,因为网络通信有专用接口。linux中网络设备主要就是为了去支持API中的socket相关函数工作。

驱动是内核的一部分,且成为了内核中最大的一部分。

内核以直接函数调用方法调用驱动,所以驱动的位置很重要,驱动的动态安装与卸载都会改变内核。驱动崩溃,可能会使内核崩溃;驱动效率会影响内核效率;驱动漏洞会成为内核漏洞。

常见的驱动安全问题,野指针、恶意用户程序、缓冲区溢出、竞争专状态。

相关推荐
小龙报21 分钟前
《彻底理解C语言指针全攻略(6)-- qsort、sizeof和strlen》
c语言·开发语言·职场和发展·创业创新·学习方法·业界资讯·visual studio
文火冰糖的硅基工坊1 小时前
[创业之路-702]:“第三次”与“第四次工业革命”的范式跃迁
大数据·人工智能·科技·嵌入式硬件·架构·嵌入式·gpu
wydaicls1 小时前
Linux 内核伙伴系统在快速路径分配内存时,对一个内存区域(Zone)进行水位线检查和内存压力评估的关键逻辑
linux·服务器
清风6666661 小时前
基于单片机的智能水瓶温度控制系统
单片机·嵌入式硬件·毕业设计·课程设计
今天只学一颗糖2 小时前
Linux学习笔记--GPIO子系统和PinCtrl子系统
linux·笔记·学习
黄昏晓x2 小时前
Linux----权限
linux·运维·服务器
沐欣工作室_lvyiyi2 小时前
基于单片机的智能洗衣机的设计与实现(论文+源码)
单片机·嵌入式硬件·毕业设计·洗衣机控制器
小白不想白a2 小时前
【shell】每日shell练习(系统服务状态监控/系统性能瓶颈分析)
linux·运维·服务器
无限进步_2 小时前
C语言文件操作全面解析:从基础概念到高级应用
c语言·开发语言·c++·后端·visual studio
一匹电信狗2 小时前
【MySQL】数据库的相关操作
linux·运维·服务器·数据库·mysql·ubuntu·小程序