DeviceTree简介.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DeviceTree简介.doc

简介 主要功能是不在代码中硬编码设备信息,而是用专门的文件来描述。整个系统的设备节点会形成一个树,设备节点里可以设置属性。官网在?。入门指南请参考/Device_Tree_Usage?。Linux上一些状况请参考kernel/Document/devicetree/,其中bindings子目录描述各种设备的devicetree的描述方法,各厂商的各类设备的描述方法都可能不同。 ?MSM8974 上DeviceTree简介? 设备描述源文件放在kernel/arch/arm/boot/dts/下后缀是.dts或.dtsi,一般.dtsi是被其它文件包含的,只用dtc编译.dts文件。Build时会用dtc命令把需要的设备描述文件编译成.dtb文件,并放到到bootimage的某个地方。对设备描述的解析处理实现主要在kernel/drivers/of/目录中,需要配置CONFIG_OF。启动过程中,bootloader(默认是bootable/bootloader/lk)会根据机器硬件信息选择合适的devicetree装入内存,把地址等相关信息传给kernel。kernel中,会根据传入的信息创建设备。 版本声明和包含其它文件 一般.dts文件会先进行版本申明,如下面的第一行。.dts或.dtsi文件也可能包含其它.dtsi文件,如下面的3/4行。 /dts-v1/; /include/ msm8974-v2.2.dtsi /include/ msm8974-mtp.dtsi 关于取地址符号的使用 如经常碰到类似下面的写法。没找到相关文档说明(看源码来理解也很费劲)。作用应该是对之前定义过的设备(例子中是soc)进行补充描述。 soc { android_usb@fe8050c8 { compatible = qcom,android-usb; reg = 0xfe8050c8 0xc8; qcom,android-usb-swfi-latency = 1; }; ...... }; 哪些文件被编入二进制映像 有两种方式使用DT。第一种可包含多个dtb,编入dt.img,放入boot.img。第二种只包含一个dtb,直接追加到kernelimage后面,放入boot.img。 dtc编译在kernel/AndroidKernel.mk中定义。先用定义DTS_NAMES变量,它的每个entry(记为DTS_NAME变量,下面的$$arch)中可能有arch和rev两部分,和.config中相关配置有关,用下面方法找出。 while () { $$a = $$1 if /CONFIG_ARCH_((?:MSM|QSD|MPQ)[a-zA-Z0-9]+)=y/; $$r = $$1 if /CONFIG_MSM_SOC_REV_(?!NONE)(\w+)=y/; $$arch = $$arch.lc($$a$$r ) if /CONFIG_ARCH_((?:MSM|QSD|MPQ)[a-zA-Z0-9]+)=y/ } print $$arch; 得到上述DTS_NAMES变量,用$(DTS_NAME)*.dts方式去kernel/arch/arm/boot/dts/下匹配。见下面的定义,其中cat命令就是生成带DT的kernelimage。 define append-dtb mkdir -p $(KERNEL_OUT)/arch/arm/boot;\ $(foreach DTS_NAME, $(DTS_NAMES), \ $(foreach d, $(DTS_FILES), \ $(DTC) -p 1024 -O dtb -o $(call DTB_FILE,$(d)) $(d); \ cat $(KERNEL_ZIMG) $(call DTB_FILE,$(d)) $(call ZIMG_FILE,$(d));)) endef 如,msm8974的MR2的ES1版中,DTS_NAMES变量的值为msm8974 msmsamarium,会编入的文件有。 msm8974pro-ab-cdp.dts msm8974pro-ac-mtp.dts msm8974-v1-mtp.dts msm8974-v2.0-1-fluid.dts msm8974-v2.2-fluid.dts msmsamarium-sim.dts msm8974pro-ab-fluid.dts msm8974-v1-cdp.dts msm8974-v1-rumi.dts msm8974-v2.0-1-liquid.dts msm8974-v2.2-liquid.dts msm

文档评论(0)

suijiazhuang1 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档