目录
1 引言
由于在参与的某个项目中涉及到修改dts的相关参数,所以对dts进行整体的学习了解。Linux内核从3.x版本之后开始支持使用设备树,这样做的意义重大,可以实现驱动代码与设备的硬件信息相互的隔离,减少了代码中的耦合性DTS。
2 dts加载
如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些适合人类阅读的Device Tree source file变成适合机器处理的Device Tree binary file(有一个更好听的名字,DTB,device tree blob)。在系统启动的时候,u-boot可以将保存在flash中的DTB copy到内存,并把DTB的起始地址传递给kernel。

2.1 dts中相关符号的含义
- / - 根节点
- @ - 如果设备有地址,则由此符号指定
- & - 引用节点
- : - 冒号前的label是为了方便引用给节点起的别名,此label一般使用为&label
- , - 属性名称中可以包含逗号。如compatible属性的名字 组成方式为”[manufacturer], [model]”,加入厂商名是为了避免重名。自定义属性名中通常也要有厂商名,并以逗号分隔。
- # - #并不表示注释。如 #address-cells ,#size-cells 用来决定reg属性的格式。
- - 空属性并不一定表示没有赋值。如 interrupt-controller 一个空属性用来声明这个node接收中断信号数据类型
- ”” - 引号中的为字符串,字符串数组:”strint1”,”string2”,”string3”
- < > - 尖括号中的为32位整形数字,整形数组<12 3 4>
- [ ] - 方括号中的为32位十六进制数,十六机制数据[0x11 0x12 0x13] 其中0x可省略

本文详细解析了Linux内核中设备树(Device Tree)的概念,包括DTS文件的符号含义、描述信息、结构和reg属性的理解。介绍了如何通过DTC编译DTS源文件生成DTB,并解释了DTS在系统启动过程中的作用。
最低0.47元/天 解锁文章
1979

被折叠的 条评论
为什么被折叠?



