位置: IT常识 - 正文

Linux系统的硬件设备驱动的底层结构讲解(linux硬件设备分为)

编辑:rootadmin
这篇文章主要介绍了Linux系统的硬件设备驱动的底层结构讲解,从硬件的工作流程和内核方面进行了解析,需要的朋友可以参考下... 16-04-18

推荐整理分享Linux系统的硬件设备驱动的底层结构讲解(linux硬件设备分为),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux的硬件设备有哪些类型,linux系统的硬件要求,linux系统对硬件的要求,linux系统硬件配置查询,linux系统的硬件信息挂载在哪里,linux系统硬件配置查询,linux系统硬件配置查询,linux系统的硬件信息挂载在哪里,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是驱动?最通俗的解释就是“驱使硬件设备行动”

作用?设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件号数据

计算机系统的硬件主要有cpu、存储器、外设组成。但是随着IC制造工艺的发展,目前,芯片的集成度越来越高,往往cpu内部就集成了存储器和外设适配器。ARM处理器集成了UART、I2C控制器(2==平方)、USB控制器、SDRAM控制器等

驱动针对的对象是存储器和外设(包括cpu内部集成的存储器和外设),而不是针对cpu核。Linux将存储器和外设分为3个基础大类:字符设备、块设备、网络设备

字符设备之那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。可设备可以按照任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和块设备并没有明显的界限,如flash设备符合块设备的特点,但是我们仍然可以把它作为一个字符设备来访问

在Linux系统中,网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。内核与网络设备的通信和内核与字符设备、块设备的通信方式完全不同。

如上图所示,除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录,通过文件系统的系统调用接口open()、write()、read()、close()等函数即可访问字符设备和块设备。块设备比字符设备复杂,在它上面会首先建立一个磁盘/Flash文件系统,如FAT、Ext3、YAFFS、JFFS等FAT、Ext3、YAFFS、JFFS规范了文件和目录在存储介质上的组织

应用程序可以使用Linux的系统调用接口编程,也可由使用c库函数,出于可移植性的考虑,后者更值得推荐。c库函数本身也是通过系统调用接口而实现的

在嵌入式系统的设计中,LED一般直接由cpu的GPIO控制。GPIO一般有两组寄存器控制,即一组控制寄存器和一组数据寄存器。控制寄存器可设置GPIO口的工作方式为输入或输出。当引脚设置为输出时,向数据寄存器的对应位写入1和0会分别在引脚上产生高电平和低电平;当引脚设置为输入时,读取数据寄存器的对应位可获得引脚上相应的电平信号。

Linux系统的硬件设备驱动的底层结构讲解(linux硬件设备分为)

驱动设计的硬件基础处理器的分类,如下图所示:

存储器可分为只读存储器(ROM)、闪存(Flash)、随机存取存储器(RAM)、光介质存储器和磁介质存储器

Nor Flash和cpu的接口属于典型的类SRAM接口,不需要增加额外的控制电路。Nor Flash的特点是可芯片内执行,程序可以直接在Nor内运行。而Nand Fash和cpu的接口必须由相应的控制电路进行转换,当然也可以通过地址线或GPIO产生Nand Flash接口的信号。Nand Flash以块方式进行访问,不支持芯片内执行。

Flash的编程原理都是只能将1写为0,而不能将0写完1.所以在Flash编程之前必须将对应的块擦除,而擦除的过程就是把所有的位都写为1的过程,块内的所有字节变为1xFF

存储器的分类,如下图所示:

原理图分析:通过阅读电路板的原理图获得各种存储器、外设所使用的硬件资源,主要包括存储器和外设控制芯片所使用的片选、中断、DMA资源。通过分析片选得出芯片的内存、I/O基地址,通过分析中断、DMA信号获得芯片使用的中断号和DMA通道,归纳出类似下表:

时序分析:对驱动工程师或硬件工程师而言,时序分析的意思是让芯片之间的访问满足芯片手册中时序图信号有效的先后顺序、采样建立时间和保持时间的要求,在电路板工作不正常的时候,准确的定位时序方面的问题

内核及内核编程在设备驱动方面,Linux2.6相对于Linux2.4有较大的改动,这主要表现在内核API中增加了不少新功能(如内存池)、sysfs文件系统、内核模块从.o变为.ko、驱动模块编译方式、模块使用计数、模块加载和卸载函数的定义等方面

Linux内核主要有进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等5个子系统组成,如下图:

在设备驱动编程中,当请求的资源不能满足时,驱动一般会调度其他线程执行,并使驱动对应的进程进入睡眠状态,直到它请求的资源被释放,才会被唤醒而纪念日就绪状态

在设备驱动编程中,如果需要几个并发执行的任务,可以启动内核线程,启动内核线程的函数为:int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);

Linux内存管理完成为每个进程进行虚拟内存到物理内存的转换。一般而言,Linux的每个进程享有4GB的内存空间,0-3GB属于用户空间,3-4GB属于内核空间,内核空间对常规内存、I/O设备内存以及高端内存存在不同的处理方式

虚拟文件系统隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口。而且,它独立于各个具体的文件系统,是对各种文件系统的一个抽象,它使用super block存放文件系统相关信息,使用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息

Linux系统只能通过系统调用和硬件中断完成从用户空间到内核空间的控制转移。

本文链接地址:https://www.jiuchutong.com/zhishi/276990.html 转载请保留说明!

上一篇:正版win2008和R2序列号的申请方法(windows server 2008和r2)

下一篇:在XP中,为什么"网络连接"图标消失?

  • iphone13防水吗(iphone13防水吗可以放进水里吗)

    iphone13防水吗(iphone13防水吗可以放进水里吗)

  • 怎样恢复华为自带的浏览器(怎样恢复华为自带的备忘录软件)

    怎样恢复华为自带的浏览器(怎样恢复华为自带的备忘录软件)

  • 3dtouch还支持iphone11吗(支持3dtouch的苹果设备)

    3dtouch还支持iphone11吗(支持3dtouch的苹果设备)

  • 拼多多答题卡怎么回事(拼多多上答题能赚钱是真的吗)

    拼多多答题卡怎么回事(拼多多上答题能赚钱是真的吗)

  • 笔记本灰屏(笔记本灰屏但是还运作,电源键亮着)

    笔记本灰屏(笔记本灰屏但是还运作,电源键亮着)

  • 苹果手机虚拟专用网络什么意思(苹果手机虚拟手机软件)

    苹果手机虚拟专用网络什么意思(苹果手机虚拟手机软件)

  • 华为手机怎样取消畅连通话(华为手机怎样取卡)

    华为手机怎样取消畅连通话(华为手机怎样取卡)

  • 钉钉昵称已经修改怎么还是没有变化(钉钉昵称修改了为什么视频会议不显示)

    钉钉昵称已经修改怎么还是没有变化(钉钉昵称修改了为什么视频会议不显示)

  • telecomm已停止运行是什么意思(telegram停止加载 继续等待)

    telecomm已停止运行是什么意思(telegram停止加载 继续等待)

  • 本地连接黄三角感叹号怎么回事(连不上网出现黄三角叹号)

    本地连接黄三角感叹号怎么回事(连不上网出现黄三角叹号)

  • 充电宝发热是怎么回事(充电宝发烫)

    充电宝发热是怎么回事(充电宝发烫)

  • 淘气值下降后对淘宝号有什么影响吗(淘气值 下降)

    淘气值下降后对淘宝号有什么影响吗(淘气值 下降)

  • 视频文件扩展名有哪些(视频文件扩展名与文件格式不匹配)

    视频文件扩展名有哪些(视频文件扩展名与文件格式不匹配)

  • 支付宝怎么解绑身份证(支付宝怎么解绑亲情号支付功能)

    支付宝怎么解绑身份证(支付宝怎么解绑亲情号支付功能)

  • 网络协议的三个核心要素(网络协议的三个要素是:语义、语法与( ))

    网络协议的三个核心要素(网络协议的三个要素是:语义、语法与( ))

  • 如何让自家的网不被蹭(如何让自家的网络变快)

    如何让自家的网不被蹭(如何让自家的网络变快)

  • 怎么计算总线宽带(总线宽度的单位是)

    怎么计算总线宽带(总线宽度的单位是)

  • 打字框皮肤怎么设置(电脑打字框皮肤怎么设置)

    打字框皮肤怎么设置(电脑打字框皮肤怎么设置)

  • 怎么打开华为手机的开发者选项(怎么打开华为手机的隐藏应用界面)

    怎么打开华为手机的开发者选项(怎么打开华为手机的隐藏应用界面)

  • 手机流量1兆是多少(流量1兆是1g吗)

    手机流量1兆是多少(流量1兆是1g吗)

  • reno录屏声音怎么打开(reno录屏没有声音)

    reno录屏声音怎么打开(reno录屏没有声音)

  • 手机qq怎么改群名片(手机QQ怎么改群聊头像)

    手机qq怎么改群名片(手机QQ怎么改群聊头像)

  • 手机屏上圆圈怎么去掉(手机屏上圆圈怎么取消)

    手机屏上圆圈怎么去掉(手机屏上圆圈怎么取消)

  • coaxial接口干嘛用的(coax接口)

    coaxial接口干嘛用的(coax接口)

  • airpods轻点哪里(airpods轻触哪里)

    airpods轻点哪里(airpods轻触哪里)

  • 三星s10有呼吸灯吗(三星s10呼吸灯提醒)

    三星s10有呼吸灯吗(三星s10呼吸灯提醒)

  • 小米8无法快充的原因(小米无法快充 知乎)

    小米8无法快充的原因(小米无法快充 知乎)

  • 稳岗返还资金最新账务处理
  • 印花税什么时候开始计入税金及附加
  • 增值税额的计算公式写销售额除以1.13*0.13对吗
  • 什么叫做增值税进项税额
  • 工会经费支付福利方案
  • 个人发票需要身份证信息吗?
  • 常见的税收优惠
  • 个人兼职取得的收入和退休人员再任职取得的收入
  • 营改增后预存话费可以报销吗?
  • 跨月未抵扣的专用发票开红字发票
  • 企业所得税计算器2023
  • 负利润需要交所得税吗
  • 跨季度的发票怎么冲销
  • 资产处置税务风险有哪些
  • 建筑分包项目有哪些内容
  • 固定资产2020
  • 分配利润怎么做科目
  • 其他应付款和其他应交款区别
  • 应收票据借贷方核算什么内容
  • php一个页面多个分页
  • PHP:stream_filter_remove()的用法_Stream函数
  • 特许权使用费属于销售收入吗
  • 收到员工罚款分录怎么记账
  • 工程款包工包料怎么开票
  • 出口退税转内销的话如何算发票金额
  • 智能路由器五个灯一直闪
  • 一只棕色
  • php删除数组中指定元素
  • php重定向伪造referer
  • element-ui tree
  • 凭证怎么记账
  • 【Zabbix实战之部署篇】Zabbix客户端的安装部署方法
  • mongodb4.4安装
  • Python人脸识别智能考勤系统 (供源码,附报告)(可答疑,可调试)
  • date=date
  • 企业资产损失税前扣除管理办法最新
  • 新企业所得税实施细则
  • 增值税发票2年了还能开吗
  • 畜牧业科技公司
  • 已抵扣发票在什么地方查
  • 未使用的固定资产
  • 销项负数发票能作废吗
  • mysql修改密码的命令
  • 制造费用是费用吗?
  • 出售转让固定资产的账务处理
  • 共管账户取钱需要多久到账
  • 银行利息收入怎么计算
  • 损益类科目没有结平是什么意思
  • 公司突然改变工资结构
  • 出差期间招待费用怎样报销
  • 免征的增值税账务处理
  • 减免所得税额a201030怎么填
  • 红字发票信息表在哪里查询
  • 残保金零申报必须大于0
  • 旧账整理方案
  • 新税法和新准则的关系
  • redhat server
  • win8系统连接网络
  • 微软宣布9月30日停止在俄罗斯服务
  • xp系统删除文件反应很慢
  • linux pptp客户端
  • launcheflc.exe什么意思
  • 微软推送Win11226x1.2050
  • win7能用多屏协同吗
  • win10mobile最新版本
  • android app 源码
  • cocos2d动画
  • nodejs阿里云
  • node 获取当前时间
  • Unity3D游戏开发基础
  • 批处理怎么学
  • javascript主要学什么
  • python迭代器iter
  • 树形菜单html
  • 河南电子税务局开票流程
  • 国际税务局邮箱是多少
  • 江苏电子税务局网站官网下载
  • 电子税务网上申报平台
  • 鄞江在哪里
  • 资源税是对在我国
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设