dts入门解读.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dts入门解读

一、dts产生原因 2 二、dts基本知识 2 2.1 dts加载过程 2 2.2 dts描述信息 3 2.3 dts组成结构示例 3 2.4 dts语法 4 2.4.1 compatible? 6 2.4.2 name@unit-address 6 2.4.3 reg address-cells size-cells 6 2.4.5 interrupt 9 三、dts与驱动 10 四、具体案例 11 4.1 gpio 12 4.2 interrupt 12 4.3 pinctl 12 4.4 clk 13 dts入门 本文目标是了解dts基本语法,可以尝试去看内核dts中的文件,follow去配置。 一、dts产生原因 DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。 它替代arch/arm/plat-xxx和arch/arm/mach-xxx中的板级spec代码,便于code管理。 ARM平台的相关code相关规范调整: 1、ARM的核心代码仍然保存在arch/arm目录下 2、ARM SOC core architecture code保存在arch/arm目录下 3、ARM SOC的周边外设模块的驱动保存在drivers目录下 4、ARM SOC的特定代码在arch/arm/mach-xxx目录下 5、ARM SOC board specific的代码被移除,由Device Tree机制来负责传递硬件拓扑和硬件资源信息。 本质上,Device Tree改变了原来用hardcode方式将HW配置信息嵌入到内核代码的方法,改用bootloader传递一些参数。 如果我们认为kernel是一个black box,那么其输入参数应该包括: a.识别platform的信息 b. runtime的配置参数 c.设备的拓扑结构以及特性 对于嵌入式系统,在系统启动阶段,bootloader会加载内核并将控制权转交给内核,此外,还需要把上述的三个参数信息传递给kernel,以便kernel可以有较大的灵活性。在linux kernel中,Device Tree的设计目标就 是如此。 二、dts基本知识 2.1 dts加载过程 如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些适合人类阅读的Device Tree source file变成适合机器处理的Device Tree binary file(有一个更好听的名字,DTB,device tree blob)。在系统启动的时候,boot program(例如:firmware、bootloader)可以将保存在flash中的DTB copy到内存(当然也可以通过其他方式,例如可以通过bootloader的交互式命令加载DTB,或者firmware可以探测到device的信息,组织成DTB保存在内存中),并把DTB的起始地址传递给client program(例如OS kernel,bootloader或者其他特殊功能的程序)。对于计算机系统(computer system),一般是firmware-bootloader-OS,对于嵌入式系统,一般是bootloader-OS。 在高通msm8992平台: sbl将烧写在emmc中的cdt.bin进行读取和处理,获得nPlatform和nSubtype,如果没有CDT分区,那么就使用代码里配置的cdt,存入共享内存; lk将从共享内存中获得nPlatform和nSubtype进行相应处理,确定dtb entry,然后选择一个对应的dtb(所有dtb保存在boot.img中)从emmc中读进内存地址hdr-tags_addr,这个参数会传递给kernel; kernel通过传入的dtb地址进行设备的创建。 2.2 dts描述信息 Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括(原先这些信息大多被hard code到kernel中): CPU的数量和类别 内存基地址和大小 总线和桥 外设连接 中断控制器和中断使用情况 GPIO控制器和GPIO使用情况 Clock控制器和Clock使用情况 它基本上就是画一棵电路板上CPU、总线、设备组成的树,Bootloader会将这棵树传递给内核,然后内核可以识别这

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档