01.2总线驱动设备设计思想

news2024/11/20 9:18:41

sysfs文件系统

sysfs文件系统是Linux2.6版本引入的虚拟文件系统。sysfs把连接在系统上的设备模型组织_
成为一个分级的层次视图。并且可以向用户空间导出内核数据结构以及属性。
比如下面的图可以看出来当前支持的总线和相关的数据
在这里插入图片描述
在sys文件系统中每一个目录都对应着一个kobj结构体 所以kobj结构体也是驱动的基础
在这里插入图片描述
当目录下面的文件有关系的时候(比如iic总线目录下的多个设备)我们使用key_set把这些目录进行链接
在代码中也就是一个链表
在这里插入图片描述
上面的设计好处在于 让用户空间的文件分布或者引用包含关系非常明了同时解耦让用户空间的应用方便调用
在这里插入图片描述

设备总线设计思想

如果是单片机的驱动
#i fdef NXP
#define addr_ base
0x10
#define addr_ offset 0x10
#elif RK
#define addr_ base 0x20
#define addr_ offset 0x20
#endif
void eth_ sed() {
write (addr_ base+addr_ offset, 0x1) ;
write (addr_ base+addr_ offset, 0x2) ;
|}
这样写尽管也可以做的驱动对不同设备的兼容,但是耦合度比较高。但是不太符合Linux 的需求。那Linux是怎么做的呢?
Linux支持世界上几乎所有的,不同功能的硬件。所以Linux驱动-定要跨平台。而且现在支持的硬件数量在一直增 加,代码的复杂程度也在.上升。为了做好设备驱动的管理,并降低驱动开发难度。兼容设备的热拔插和电源管理。
Linux 对硬件设备进行了分类和归纳,并抽象出来了一套标准的数据结构和接口。这个就是设备模型。
设备模型包含总线,设备,驱动和类四个概念。
总线:总线是CPU和设备进行信息交互的通道,所有的设备都要连接到总线上。总线包含
虛拟总线和外设总线。
设备:将系统中所有硬件设备的共同属性,比如名字,属性,从属关系,类等信息抽象出来,
就是设备
类:具有相似功能或者属性的设备。
驱动:硬件设备对应的驱动程序。
这边把控制器也抽象出来 设计一条虚拟总线 整体都符设备匹配驱动的感觉

在这里插入图片描述
每个bus下面都有dev和drv两个目录里面的链表把和这个bus相关的 设备与驱动都链接起来 使用bus.match每当有新的drv注册的时候主动调用 当两个名称匹配的时候 bus也提供了probe函数 一般这个函数后面直接指向dev的probe函数
在这里插入图片描述

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

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

相关文章

电商项目10:商品管理、仓库管理

电商项目10:商品管理、仓库管理 1、商品管理1.1、spu检索1.1.1、后端1.1.2、前端 1.2、sku检索1.2.1、后端 2、库存管理2.1、启动ware后端微服务2.2、仓库维护查询2.3、查询商品库存2.4、查询采购需求 1、商品管理 1.1、spu检索 1.1.1、后端 spu检索接口文档 S…

用了这么久IDEA其中中的Modules、Libraries、Facets、Artificats他们的作用到底是什么?

Modules Modules通常是说我们该项目当前拥有的模块。拿微服务来说,通常需要将功能分离出来,形成一个个模块,因此每个功能就需要一个模块Modules,即一个小项目。 里面有Sources、Paths、Dependencies。像Sources我们可以将我们想…

如何安装 kubernetes dashboard 让 k8s 的操作可视化

kubernetes dashboard 是 k8s 自带的 k8s 图形化管理工具。使用这个工具可以帮助用户通过图形化页面配置 k8s 资源,掌握 k8s 系统的整体使用情况,把用户的双手从敲 kubectl 命令中解放出来。 下面我们就介绍安装 kubernetes dashboard 的详细步骤。 下载…

d2l_notes_ch1-ch2

1. 引言 1)机器学习 > 表示学习 > 深度学习 表示学习是机器学习子集,其研究重点是如何⾃动找到合适的数据表示方式。深度学习是通过学习多层次的转换来进⾏的多层次的表示学习。 深度学习是机器学习的一个子集,但相比传统的机器学习方…

DevOps系列文章之Docker部署web ssh工具sshwifty

一、介绍 1.sshwifty简介 sshwifty是一款Web SSH & Telnet(WebSSH & WebTelnet 客户端工具。 2.shwifty 特点 shwifty 是为 Web 设计的 SSH 和 Telnet 连接器。它可以部署在您的计算机或服务器上,为任何兼容(标准)的网络…

自定义Spring Boot Starter

Spring Boot starter 我们知道Spring Boot大大简化了项目初始搭建以及开发过程,而这些都是通过Spring Boot提供的starter来完成的。在实际项目中一些基础模块其本质就是starter,所以我们需要对Spring Boot的starter有一个全面深入的了解,这是…

Codesys单轴控制实现多段速控制功能

b一、序言 在设备加工行业,很多工艺要用到多段速控制,比如切割,打孔,攻丝等,刀具未碰到工件时可以快速行走,刀具碰到工件时需要慢速加工,而有些工艺在加工时随着刀具越走越深,其进刀…

掌握Python的X篇_4_开发工具ipython与vscode的安装使用,作业

本篇将会介绍两个工具的安装及使用来提高Python的编程效率。 ipython:比python更好用的交互式开发环境vscode:本身是文本编辑器,通过安装相关的插件vscode可以作为python集中开发环境使用 掌握Python的X篇_4_开发工具ipython与vscode的安装使…

GIT保存记录原理之commit对象

GIT 中提交对象非常的重要,我们通过它记录代码提交过程、进行文件保存、回退等操作,那么它是怎样帮助我们记录这些信息的呢?其实就是都保存在项目根目录的 .git 文件夹中。 新建空项目 gitDemo使用 git init初始化,在文件夹根目录…

57 KVM工具使用指南-制作 LibcarePlus 热补丁

文章目录 57 KVM工具使用指南-制作 LibcarePlus 热补丁57.1 概述57.2 手动制作57.3 通过脚本制作 57 KVM工具使用指南-制作 LibcarePlus 热补丁 57.1 概述 LibcarePlus 支持如下方式制作热补丁: 手动制作通过脚本制作 手动制作热补丁的过程繁琐,对于…

java——反射与注解

文章目录 Java反射基础1. 概念详解2. 示例代码 Java反射进阶1. 框架设计2. 动态代理3. 模板方法 Java注解基础1. 概念2. 基本语法3. 自定义注解4. 反射获取注解信息 Java注解进阶1. 应用场景2. 内置注解3. 第三方注解库4. 总结 Java反射与注解实战1. 实战场景2. 代码实现 Java反…

AutoSAR系列讲解(入门篇)2.3-Ports的类型

Ports的类型 一、接口的类型 二、S/R接口 三、C/S接口 一、接口的类型 Ports是SWC和SWC做接口(Interface)通信使用,或者SWC通过RTE和BSW做接口(Interface)通信使用。 Ports主要分为5种类型,列在下面的图…

【UEFI实战】UEFI图形显示(显示驱动)

显示驱动 OVMF BIOS使用了这个作为显卡驱动,具体图形显示的底层实现不是重点,所以这里只是简单介绍。 QemuVideoDxe是一个UEFI Driver Model,对应的EFI_DRIVER_BINDING_PROTOCOL: EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriv…

【数据库】事务、事务并发问题、并发事务隔离级别、及sql演示

文章目录 一、事务1.1 事务简介 及 sql 操作1.2 事务的特性 二、事务并发问题三、事务隔离级别四、sql 演示4.1 脏读4.2 不可重复读4.3 幻读 五、演示代码 一、事务 1.1 事务简介 及 sql 操作 事务:数据库执行的一系列操作,这些操作要么全部执行&#x…

【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南(内存模型技术专题)

深入探索Java特性中并发编程体系的原理和实战开发指南( 线程进阶技术专题) 前言介绍JVM内存模型运行时数据区域堆内存栈内存 内存访问规则原子性对象类型基本类型 可见性有序性(Happen Before法则)系统内存(MESI协议&a…

【OS】【期末选择题】【2023春】【仅供参考】

文章目录 题型一、选择第一章(10)第二章(19)第三章(23)第四章(32)第五章(15)第六章(15) 二、填空题三、简答题1.信号量2.调度算法3.页面置换4.虚拟地址到物理地址的映射 Reference 题型 题型题量分值选择10%填空25%10%10%解答题210’大题215’ 一、选择 第一章(10) 操作系统…

HuggingFace-RL-Unit2-Part1——Q-learning算法介绍

Q-learning算法介绍 文章目录 Q-learning算法介绍回顾: 什么是RL? 两种基于价值的方法状态价值函数动作价值函数 贝尔曼方程:简化价值计算蒙特卡罗 VS 时序差分学习蒙特卡洛:在一个回合结束后进行学习时序差分算法:在每一步进行学习 学习进展…

定时器的实现原理

文章目录 1.定时器的作用?2.数据结构要求3.时间轮4.分级时间轮5.业界实现方案参考文献 1.定时器的作用? 定时器的主要用途是执行定时任务。 定时任务在很多场景都需要用到,比如游戏的 Buff 实现,Redis 中的过期任务,Linux 中的定时任务&a…