- 5
- 0
- 约7.1千字
- 约 10页
- 2016-11-29 发布于重庆
- 举报
我所认知的LINUX设备树
设备树(Device tree)是一套用来描述硬件属相的规则.设备树是从软件使用的角度描述硬件的,不是从硬件设计的角度描述的。我们在写设备树时没有必要按照硬件逻辑生搬硬套,也不要指望通过阅读设备树弄清楚硬件是如何设计的。对于软件可以自动识别的硬件,如USB设备,PCI设备,也是没有必要通过设备树描述的。我个人觉得规范内容是可以分为两个层次的。第一层是关于设备树组织形式的,如设备树结构,节点名字的构成等,第一个层次是基础,是理解第二个层次的前提。第二层是关于设备树内容的,如多核CPU怎样描述,一个具体的设备如何描述。第二层可以看成是第一层的具体应用。DTS(Device tree syntax,另一种说法是Device tree source)是设备树源文件,为了方便阅读及修改,采用文本格式。DTC(Device tree compiler)是一个小工具,负责将DTS转换成DTB(Device tree blob)。设备树首先是一个树形结构,并且是一棵树。除了根节点外其他子节点都有唯一的父节点,节点下可以有子节点和属性(子节点可以看成是树枝,属性可以看成是叶子)。属性由名字和值组成(名字是必须的,但是值不是必须的,如果只要根据是否存在这个属性就可以表示我们想要的功能,那么可以不需要有值)。节点(node)的表示首先说节点的表示方法,除了根节点只用一个斜杠“/”表示外,其他节点的表示形式如“node-name@unit-address”。@前边是节点名字,后边是节点地址。节点地址是用来区别同名节点的,不是软件意义上的地址,但是有些情况可以用软件地址作为这个地址。除此之外规范还要求,如果节点有地址,那么节点下边必须有一个叫reg的属性,并且该地址必须和reg的属性的第一个地址相同。如果节点没有reg属性,那么节点地址及前边的@必须都不能有。除了名字和地址外,节点前边还可以有一个标签(label),这个标签不是必须的,一般只有在别个地方需要引用这个节点时才会用标签标示这个节点,因为如果用全路径太繁琐了。如“i2c_1: i2c@12C70000”中的i2c_1就是一个标签。属性(property)属性的值在内存中由0个或多个字节存储。标准定义的基本类型包括:空,u32,u64,字符串,prop-encoded-array,字符数组6种。标准的属性:“compatible”属性是用来匹配驱动的,他的类型是字符串数组,每个字符串表示一种设备的类型,从具体到一般。model属性用来表示设备的型号,用字符串表示,不像compatible用多个字符串,只需一个就够了。device_type属性用来表示设备类型,用字符串表示。#address-cells,#size-cells,reg,ranges,dma-ranges属性都是和地址有关的。不同的平台,不同的总线,地址位长度可能不同,有32位地址#address-cells属性用来表示总线地址需要几个cell表示,该属性本身是u32类型的。#size-cells属性用来表示子总线地址空间的长度需要几个cell表示,属性本身的类型也是u32。,有64位地址,为了适应这个,规范规定一个32位的长度为一个cell。可以这么理解父节点表示总线,总线上每个设备的地址长度以及地址范围是总线的一个特性,用#address-cells,#size-cells属性表示,比如总线是32位,那么#address-cells设置成1就可以了。这两个属性不可以继承,就是说在未定义这两个属性的时候,不会继承更高一级父节点的设置,如果没有设置的话,内核默认认为#address-cells为2,#size-cells为1。reg属性用来表示节点地址资源的,比如常见的就是寄存器的起始地址及大小。要想表示一块连续地址,必须包含起始地址和空间大小两个参数,如果有多块地址,那么就需要多组这样的值表示。还记得前边说过的prop-encoded-array类型的属性吧,就是用来干这个的,他表示一个数组,每个元素的具体格式根据属性而定,对于reg属性,每个元素是一个二元组,包含起始地址和大小。还有另外一个问题,地址和大小用几个u32表示呢?这个就由父节点的#address-cells,#size-cells属性确定。总线上设备在总线地址和总线本身的地址可能不同,ranges属性用来表示如何转换。和reg属性类似,ranges属性也是prop-encoded-array类型的属性,不同的是ranges属性的每个元素是三元组,按照前后顺序分别是(子总线地址,父总线地址,大小)。子总线地址需要几个u32表示由ranges属性所在节点的#address-cells属性决定,父总线地址需要几个u32表示由上一级节点的#address-cells属性决
您可能关注的文档
- 必修3第四单元第八课课后达标检测.doc
- 必修二123分子间作用力.doc
- 必修三专题六训练题.doc
- 必修二化学反应速率.doc
- 必修三第三单元限时训练.docx
- 必修五unit1知识点总结.doc
- 必修一高三复习第四章地表形态的塑造定时训练.docx
- 必修二第六章练习题附答案.doc
- 必修1思维导图.doc
- 必修一地理复习提纲(含答案).doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 慢慢喜欢你(文武贝版)钢琴谱钢琴简谱 数字谱 钢琴双手简谱.pdf VIP
- 2023年高考数学二轮复习复习备考策略讲座.pptx VIP
- 海上大气波导预测方法的探索与实践:模型构建与精度提升.docx VIP
- APEX GC手持拧紧枪使用与维护.pptx VIP
- 农药残留毒检测仪控制系统的硬.pdf VIP
- 现浇路缘石施工方案.doc VIP
- 期权合同(企业员工期权激励协议范本).docx VIP
- 农药残留毒性检测仪控制系统的硬件设计.pdf VIP
- (正式版)H-Y-T 0273-2019 海洋灾害风险评估和区划技术导则 第1部分:风暴潮(正式版).docx VIP
- 电动汽车无线充电系统设计.docx VIP
原创力文档

文档评论(0)