当前位置: 首页 > article >正文

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

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

        linux体系架构:

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

:

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

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

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

         linux模块化设计:

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

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

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

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

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

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

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

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

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

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

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

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


http://www.kler.cn/news/367784.html

相关文章:

  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • Java进阶篇设计模式之二 ----- 工厂模式
  • centos安装指定版本的jenkins
  • FastAPI、langchain搭建chatbot,langgraph实现历史记录
  • 虚拟现实在制造业中的应用
  • C++基础:三个字符串也能搞大小?
  • 第五十二章 安全元素的详细信息 - EncryptedData 详情
  • 【含开题报告+文档+PPT+源码】基于SpringBoot爱之屋摄影预约管理系统的设计与实现
  • Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具
  • 安全知识见闻-通信协议安全
  • uniapp 报错Invalid Host header
  • 求个数不确定的整数的最大公约数(java)
  • WSL(Ubuntu20.04)编译和安装DPDK
  • PHP const 和 define主要区别
  • 关闭钉钉AI助理
  • 【WiFi7】 支持wifi7的手机
  • 机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用
  • 5550 取数(max)
  • Qt:窗口风格设置
  • SQL实战训练之,力扣:1532最近的三笔订单
  • Python | Leetcode Python题解之第503题下一个更大元素II
  • console.log(“res.data = “ + JSON.stringify(res.data));
  • 【WSL2】Ubuntu20.04从零开搭PX4MavrosGazebo环境并测试
  • Ubuntu 安装 npm
  • 太速科技-212-RCP-601 CPCI刀片计算机
  • Rust 问号(?)操作符简化错误处理