[架构之路-36]:目标系统-系统软件-linuxos硬件驱动程序架构中隐藏的六大“分离”的思想与主要的驱动程序框架案例分析

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2022-10-23     633

关键词:

目录

第1章 “分离”的思想的来源

1.1 Linux一体化字符设备驱动程序的缺陷

1.2 懒人改进的思考

1.3 Linux硬件驱动程序期望的需要与目标

1.4 “分离”思想的来源

1.5  隐藏在Linux设备驱动程序中的“分离”的思想

1.6 “分离”遵循的原则

1.7 “分离”的好处

第2章 Linux设备驱动程序的六大“分离”

2.1 应用程序与驱动程序的分离

2.2 设备信息与驱动程序的分离

2.3 硬件无关代码和硬件相关代码的分离

2.4 主机控制器设备与外部Client设备分离

2.5 配置数据与源代码的分离

2.6 策略与规则的分离

第3章 “分离”思想对驱动工程师启发

3.1 Linux驱动工程师的基本指导思想

3.2 Linux的辩证哲学

3.3 爱与分离


第1章 “分离”的思想的来源

1.1 Linux一体化字符设备驱动程序的缺陷

备注:字符设备驱动程序是挂接在虚拟虚拟文件系统中的。贯彻了Linux中的一切皆文件的思想。

 

备注:定义了通过“文件”操作硬件设备的标准接口。

 

备注:定义了如何把设备驱动程序挂接到文件系统中的标准接口。

 

 

 

 

1.2 懒人改进的思考

 

1.3 Linux硬件驱动程序期望的需要与目标

如何达成上述的需求和目标呢?

1.4 “分离”思想的来源

(1)每一次的分离,都是事物发展的内生需求,并非主动的规划。

(2)每一次的分类,都会促进新生事物的发展。

(3)每一次的分离,都会促进整个系统效率的提升。

1.5  隐藏在Linux设备驱动程序中的“分离”的思想

1.6 “分离”遵循的原则

1.7 “分离”的好处

第2章 Linux设备驱动程序的六大“分离”

2.1 应用程序与驱动程序的分离

备注:用户空间与内核空间的分离

 

备注:用户空间到内核空间的数据传送有内核代码完成。

备注:应用程序通过标准的POSIX接口访问硬件设备。

2.2 设备信息与驱动程序的分离

备注:

设备:描述硬件设备信息的软件实体。

驱动:提供给应用程序,通过文件系统接口,对硬件设备进行数据读写操作的软件实体。

 

备注:

硬件设备通过内部定义的标准接口,把自己注册到硬件总线软件实体上。

 

备注:

硬件驱动程序也通过内部定义的标准接口,把自己注册到硬件总线软件实体上。

 

 备注:

由总线的软件实体负责把硬件设备的软件实体与硬件驱动程序的实体进行映射。

这样就完成了硬件设备与硬件驱动的分离和关联。

2.3 硬件无关代码和硬件相关代码的分离

备注:

RTC核心层:完成所有RTC设备标准公共接口和公共的代码实现。这部分代码有Linux内核提供。 

RTC驱动层:完成特定的RTC硬件设备的硬件操作的代码实现。这部分代码由特定硬件电路板的驱动程序员提供。

备注:

Misc核心层:完成所有Misc 设备标准公共接口和公共的代码实现。这部分代码有Linux内核提供。 

Misc驱动层:完成特定的Misc硬件设备的硬件操作的代码实现。这部分代码由特定硬件电路板的驱动程序员提供。

 

备注:

串口核心层:完成所有串口设备标准公共接口和公共的代码实现。这部分代码有Linux内核提供。 

窗口驱动层:完成特定的串口硬件设备的硬件操作的代码实现。这部分代码由特定硬件电路板的驱动程序员提供。

2.4 主机控制器设备与外部Client设备分离

SPI控制器驱动程序:负责通过SPI控制器完成SPI总线协议。

  • SPI总线核心层
  • SPI硬件控制设备
  • SPI控制器驱动程序

SPI外设驱动程序:完成特定SPI外设寄存器的访问。

 备注:把SPI驱动注册到SPI总线上。

备注:把SPI外设注册到SPI总线上。

 

备注:SPI驱动内部的消息队列机制。

2.5 配置数据与源代码的分离

备注:

设备树就是一种硬件配置数据,Linxu内核驱动就是一种源代码。

 

 详解:

https://blog.csdn.net/HiWangWenBing/article/details/127103201

2.6 策略与规则的分离

第3章 “分离”思想对驱动工程师启发

3.1 Linux驱动工程师的基本指导思想

3.2 Linux的辩证哲学

3.3 爱与分离

[架构之路-11]:目标系统-架构-嵌入式系统软件+硬件的基本通用架构

目录前言:第1章计算机系统的通用架构第2章嵌入式系统的通用架构第3章嵌入式系统的开发模型第4章嵌入式系统的运行模型第5章SOC/FPGA芯片内部系统通用架构第6章嵌入式系统的演进历程第7章Linux嵌入式系统启动流程第8章 ... 查看详情

[架构之路-28]:目标系统-系统软件-linuxos内核功能架构图解内核构建内核启动流程(代码片段)

目录第1章Linux概述1.1嵌入式系统简介1.2嵌入式系统的架构1.3什么是操作系统OS与主流操作系统1.4 什么是嵌入式操作系统1.5Linux操作系统1.6Linux操作系统的特点与好处1.7 Linux系统工具链完整1.8Linux内核第2章Linux内核为应用程序提供... 查看详情

[架构之路-28]:目标系统-系统软件-linuxos内核功能架构图解内核构建内核启动流程(代码片段)

目录第1章Linux概述1.1嵌入式系统简介1.2嵌入式系统的架构1.3什么是操作系统OS与主流操作系统1.4 什么是嵌入式操作系统1.5Linux操作系统1.6Linux操作系统的特点与好处1.7 Linux系统工具链完整1.8Linux内核第2章Linux内核为应用程序提供... 查看详情

[架构之路-48]:目标系统-系统软件-linux下的网络通信-4-快速数据平面开发套件dpdk-工作原理

...包的处理流程2.2 传统Linux内核Socket通信的问题第3章DPDK的架构与原理3.1 DPDK的基本思想 3.2 DPDK替代Linux网络协议栈3.3  DPDK总体架构与主要组件3.2 用查询替代中断第1章DPDK概述1.1什么是D 查看详情

[架构之路-35]:目标系统-系统软件-linuxos内核模块与内核设备驱动程序,一切皆文件,linux虚拟文件系统与统一设备模型(代码片段)

...1章嵌入式系统概述1.1什么是嵌入式系统1.2嵌入式系统的架构第2章内核驱动程序架构 2.1什么驱动程序2.2驱动程序的作用2.3Linux下的内核硬件设备驱动程序第3章Linux驱动工程师学习路径3.1成长之路与必备的知识3.2C语言基础3.3自底... 查看详情

[架构之路-44]:目标系统-系统软件-linux下的网络通信-4-linux内核网络协议栈网络配置命令网络服务启动(代码片段)

目录前言:第1章Linux网络概述1.1TCP/IP网络协议栈架构1.2Linux网络协议栈1.3 Linux网络收发流程1.4Linux网络用户空间应用程序与Linux内核网络协议栈第2章如何通过用户空间命令来配置Linux网络2.1IP层命令2.2TCP/UDP层相关命令2.3应用层... 查看详情

[架构之路-34]:目标系统-系统软件-linuxos硬件电路的文本描述:设备树的构成属性解析使用(代码片段)

目录第1章什么是树1.1树形结构1.2无处不在的树形结构1.3树形结构的好处第2章硬件系统设备树2.1什么是硬件设备树2.2Linux引入设备树的好处2.3Linux什么时候引入设备树与设备2.4Linux设备树的外观第3章Linux设备树的工作原理3.1Linux内... 查看详情

[架构之路-45]:目标系统-系统软件-linuxos硬件设备驱动-网络驱动程序模型网络数据包的收发流程

目录第1章网络驱动程序模型概述1.1Linux目标系统架构1.2Linux网络设备驱动的总体框架第2章网络设备驱动架构2.1网络设备和网络驱动的注册2.2 网络设备的标准数据结构2.3网络驱动的标准接口2.4网络设备的初始化函数2.5网络接口的... 查看详情

[架构之路-49]:目标系统-系统软件-linux下的网络通信-5-快速数据平面开发套件dpdk-快速部署软件入门指南(代码片段)

目录前言:第1章概述1.1本文的英文参考1.2概述1.3DPDK常见的文档第2章系统需求2.1.x86上的BIOS设置前提条件2.2.编译DPDK的要求2.3运行DPDK应用程序的要求第3章 从源代码编译DPDK目标文件3.1.解压缩DPDK源代码3.2 编译和安装DPDK第4章... 查看详情

[架构之路-31]:目标系统-系统软件-linuxos什么是linux1号进程?init进程与systemd的比较?(代码片段)

目录第1章Linux内核启动应用程序的方式1.1什么是Linux0号进程:idle进程1.2什么是Linux1号进程:init进程1.3Linux1号进程的作用1.4Linux1号进程启动应用程序的两种机制第2章init进程机制与systemD机制的比较2.1出现的时间不同2.2串行... 查看详情

[架构之路-60]:目标系统-平台软件-基础中间件-linux进程间通信的主要方式(代码片段)

目录前言:第1章进程1.1进程概述1.2线程1.3 进程的资源类型1.4Linux进程的特点第2章进程间通信2.1 概述2.2 进程通信的应用场景2.3进程间通信要共享的对象2.4进程间通信必须解决问题2.5进程间通信的方式概述第3章  进程间通... 查看详情

[架构之路-56]:目标系统-平台软件-总体架构概述

目录 前言:第1章嵌入式硬件架构案例1.1通用的嵌入式硬件架构1.2基站设备通用硬件架构1.3嵌入式SOC通用架构1.4SOC芯片案例第2章嵌入式软件总体架构2.1嵌入式软件的开发框架2.2嵌入式软件的通用架构之硬件抽象层2.3 嵌入式... 查看详情

[架构之路-39]:目标系统-系统软件-linuxos内核进程/线程调度的基本原理

目录第1章Linux进程概述1.1什么是进程1.2进程简单的状态迁移1.3进程复杂状态迁移1.4引起进程状态转换的具体原因如下:1.5进程的地址空间1.6用户空间如何创建进程第2章调度器的基本工作原理2.1什么是进程调度器?2.2 为... 查看详情

[架构之路-41]:目标系统-系统软件-linux下的网络通信-1-计算机网络拓扑架构iso协议栈以太网协议栈与工作原理

目录前言:第1章计算机网络1.1什么是计算机网络1.2互联网1.3什么是移动互联网1.4移动网络1.2什么是协议(protocol)1.3ISO七层协议1.4常见的网络拓扑结构第2章以太网协议栈2.1以太网在TCP/IP协议栈中的位置2.2以太网协议... 查看详情

[架构之路-33]:目标系统-系统软件-linuxos用户空间程序的启动关闭监管--systemd进程与作用架构(cloud进程管理工具)(代码片段)

目录第1章SystemD概述1.1SystemD在Linux系统中的位置1.2概述1.3 SystemD的特点第2章 SystemD进程自身的架构第3章 SystemD主要的分层组件3.1LinuxKernel3.2systemdlibraries3.3systemdcore3.4systemdDaemons3.5systemdTargets3.6systemdutilities第4章常见的Sys 查看详情

[架构之路-32]:目标系统-系统软件-linuxos用户空间程序的启动关闭监管--init进程(代码片段)

目录第1章Init进程的初始化总体流程1.1Linux根文件系统1.2Init机制systemD的区别1.3.Init进程的初始化总体流程第1步骤:init进程的位置的位置第2步骤:利用/etc/inittab进行初始2.1格式2.2案例第3步骤:利用/etc/rd.d/rc.sysinit进行... 查看详情

[架构之路-43]:目标系统-系统软件-linux下的网络通信-3-tcp/ip协议族:iptcp/udp/sctpsocket应用层协议

目录第1章TCP/IP协议简介1.1简介1.2协议栈1.3IP网络第2章IP协议2.1简介2.2IP功能2.4IPV4地址2.5IPV6地址2.6IPV4地址与IPV6地址比较2.5路由器2.6路由协议2.7IPV4与IPV6双栈第3章TCP、UDP、SCTP协议3.1用户数据包协议(UDP)3.3 传输控制协议&#... 查看详情

[架构之路-29]:目标系统-系统软件-linuxos内核以及内核驱动的调试技术

目录第1章内核驱动的调试方式汇总第2章直接在内核中进行打印的技术第3章利用内核提供给用户空间的接口调试内核 3.1 通过内核提供的shell命令调试内核3.2通过跟踪POSIX系统调用测试内核(strace)3.3 通过内核export的proc... 查看详情