Open Firmware 之Device Tree 淩亂°似流年 2022-01-16 03:46 235阅读 0赞 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 1.DeviceTree简介 DeviceTree 源于 PowerPC 架构下的device配置,后merge到Linux的主分支。DeviceTree 使用Device Tree source(dts)的文本方式对系统设备树进行描述。Device Tree Compiler(dtc)将dts文件转换成二进制文件binary device tree blob(dtb)。Dtb文件在kernelboot时,由解析程序解析成memory数据,然后依据不同ARCH的不同需求,可以根据这些内存中的数据创建相应设备的设备节点(通用类型设备,kernel于of中已提供相应的设备节点创建API)。这样就可以在不改动kernel的情况下,对不同的平台实现无差异的支持,只需更换相应的dts文件,即可满足。 2.Device Tree Source的描述 DTS的描述格式如下: \{//root node An empty property A child node \{ Array-prop = <>; String-prop= “Hello”; \}; Another child node \{ Binary-prop = <>; String-list = “yes”, “no”; \}; \}; Root node 是 device tree的起点。由mode & compatible 属性描述,格式为<mfg>, <board>,两属性共同描述一个具体的平台类型。 Chosen node:此节点并不代表真正的设备节点,而是一些虚拟的由bootloader传递给内核一些参数(??) 3.相关node简介 Cpus node PowerPC,8641[@0][0] \{ device\_type = "cpu"; reg = <0>; d-cache-line-size = <20>; // 32 bytes i-cache-line-size = <20>; // 32 bytes d-cache-size = <8000>; // L1, 32K i-cache-size = <8000>; // L1, 32K timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // From uboot clock-frequency = <0>; // From uboot 32-bit; linux,boot-cpu; \}; PowerPC为节点的alias,8641@0 为节点名。 System memory 描述系统内存节点,为root节点子节点,通常只用一个memory节点描述系统所有的内存,reg属性用来定义当前可用的各个memory范围。 Memory \{ Device\_type = “memory”; Reg = <0x00000000, 0x8000000>; // Range of valid memory \}; 设备节点名:memory Interrupts的表示,还需整理。。。。。 转载于:https://my.oschina.net/u/994235/blog/142540 [2019_Python_]: https://my.oschina.net/u/2663968/blog/3061697 [hot3.png]: /images/20220114/fac5d4eebf06416bb6e8003a954db3f8.png [0]: http://my.oschina.net/chenmarfun
还没有评论,来说两句吧...