栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

杂货铺笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

杂货铺笔记

字符设备和块设备的区别:

两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。

所有芯片的引脚顺序都是逆时针排列的。

运算符优先级++大于*。

sys/bus/plantform/drivers:该路径下的文件节点,是在对应的驱动代码里创建实现。
sys/bus/plantform/devices:该路径下的文件节点,是在对应的设备树里创建实现。

MTD(memory technology device 存储 技术设备 ) 是用于访问 memory 设备( ROM 、 flash )的 Linux 的子系统。

存储器分区即可以实现对不同的分区使用不同的文件系统。这就是分区与文件系统的关系。

 

BUS、Driver、Device

总线中既定义了设备,也定义了驱动;设备中既有总线,也有驱动;驱动中既有总线也有设备相关的信息。那这三个的关系到底是什么呢?
三者的关系是:
内核要求每次出现一个设备,就要向总线汇报,会着说注册;每次出现一个驱动,也要向总线汇报,或者叫注册。比如系统初始化时,会扫描连接了哪些设备,并为每一个设备建立一个struct device变量,并为每一个驱动程序准备一个struct device_driver结构的变量。把这些量变量加入相应的链表,形成一条设备链表和一条驱动量表。这样,总线就能通过总线找到每一个设备和每一个驱动程序。
当一个struct device诞生,总线就会去driver链表找设备对应的驱动程序。如果找到就执行设备的驱动程序,否则就等待。反之亦然。

platform总线提供了设备和驱动的mach函数,当设备和驱动匹配完成后,就会执行驱动的probe函数。

linux内核中分别用struct bus_type,struct device和struct device_driver来描述总线、设备和驱动。

 __pci_register_driver函数中,调用driver_register,在总线上注册驱动;
driver_register中调用bus_add_driver,将设备驱动添加到总线上。
将驱动程序追加到总线上之后,现在开始将设备与驱动进行匹配。
driver_match_device函数就是用来为driver匹配device的,调用device_driver中注册的match函数来进行匹配。

match函数,它的两个参数一个是驱动,另一个则是设备。这个函数就是用来进行判断,总线上的驱动程序能不能处理设备的。

probe函数在设备驱动注册最后收尾工作,当设备的device 和其对应的driver 在总线上完成配对之后,系统就调用 platform设备的probe函数完成驱动注册最后工作。资源、 中断调用函数以及其他相关工作。

在linux内核中,所有设备的驱动的定义,都是以struct device_driver为基类,进行继承与扩展的。内核当中使用了很多OO的思想。        

基本上,在ARM Linux在,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录。

中断:

interrupts = <中断类型 中断号 中断方式>。

中断控制器的功能是:把外设的中断信号,转换成CPU能够明白的vector,并完成中断执行控制,确保在合适的时机把中断提交给CPU执行。

硬件封装层->中断流控层->中断通用逻辑层->驱动程序API层。

/proc/interrupts:文件

/proc/irq:子目录

读取interrupts会依次显示irq编号,每个cpu对该irq的处理次数,中断控制器的名字,对应的gpio号,中断触发方式,以及驱动程序注册该irq时使用的名字。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/894573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号