首先推荐elinux.org上一篇关于Device Tree的文章:

http://elinux.org/Device_Tree_Usage

这是一篇关于Device Tree的入门文章。对英文犯怵的童鞋也不要紧,我在csdn上找到了翻译稿:

http://blog.csdn.net/21cnbao/article/details/8457546

译文重新组织了部分语言,开头还写了一段关于DT的轶事,不过基本上还是忠于英文原文的。但还是要提个醒,这篇翻译稿比较早了,而英文版在后来又经过几次更新,所以中文翻译版的内容不及英文原稿详尽。

上面的文章对于Device Tree入门足够了,所以我不打算再重复已有的内容,仅写一些开发过程中可能会用到的杂七杂八的东西。这些东西有的来自对厂商SDK所含DT的研究,有的来自Linux源代码树下Documentation目录下关于Device Tree的内容。

1. compatible条目

compatible尽量采用精确名称。比如am33xx系列处理器,compatible要写成"TI,am3352",而不要写成“TI,am33xx”。这主要是为了防止芯片厂家什么时候脑袋抽抽了,比如弄出一个am3362处理器,和am3352还不兼容,那你原来写的“TI,am33xx”就可能造成曲解。

2.  binding

在开始写你自己的DT之前,先看下内核源代码树下Documentation/devicetree目录,以及其下的binding子目录。binding子目录记录了内核所支持的所有处理器系列的DT文件规则,好好利用可以降低不少工作量。还是以am33xx系列处理器作例子,我手头有一块BBB,在它的GPMC口上连接了一个小东西,网上能找到的GPMC配置方法都是在自己的驱动里面对conf_pin_mux和gpmc_conf这两组寄存器作ioremap,也有部分文章会把conf_pin_mux放在DT里面,但gpmc还是在自己的驱动里面配置。而实际上pinmux和gpmc时序都是可以在DT里面配好的,ioremap和写寄存器工作由内核自带的GPMC驱动代为完成。配置方法在Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt。

3. Device Tree反编译

有时候你想看看编译完成的DT和你编写的源文件是不是一致,可以用如下命令对dtb进行反编译:

dtc -I dtb -O dts -o you_dt.dts your_dt.dtb

4. node的status属性

可以通过给外设节点加上如下属性以禁用该node:

status=disabled

这个属性应该厂家SDK用得比较多。因为厂家SDK理应提供所有外设的DT配置,但从使用者角度考虑,某个外设应能自由选择打开或关闭,所以芯片厂家SDK默认情况下应关闭所有可关闭的外设,由板级开发人员打开需要的部分。但要注意了,启用外设的值是okay而不是enabled。嗯,为什么要把这个拿出来说,因为我一开始弄DT的时候理所当然的把disabled覆写为enabled,死活不起作用,被坑惨了。

5. 值覆盖

如果在dtsi文件里,某个node已经对某个property赋值了,你可以用新值覆写旧值。就说上面的status属性,TI SDK的DT文件默认是关闭几乎所有外设的,然而你现在想用i2c0了,这个时候你就可以在你自己的DTS文件里包含TI SDK提供的dtsi文件(这个文件里对i2c0节点的status属性赋值为disabled),然后用你自己的值覆盖:

/* '&'符号表示引用已有的node */

&i2c0 {

status="okay";                   /* 用新值覆写旧值 */

};

6. 节点引用(节点关联)

在配置外设节点时几乎总会用到节点关联,因为几乎所有外设都需要配置pinmux。仍然以GPMC作为例子,我们先要配置好GPMC的PINMUX:

gpmc_pinmux_default: gpmc_pinmux_default {

...

};

然后在GPMC节点里告诉kernel使用gpmc_pinmux_default这个引脚配置:

gpmc@50000000 {

...

pinctl-name=<default>;

pinctl-0 = <&gpmc_pinmux_default>;    /* 注意'&'符号 */

};

Device Tree碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. Device Tree(二):基本概念

    转自:http://www.wowotech.net/linux_kenrel/dt_basic_concept.html 一.前言 一些背景知识(例如:为何要引入Device Tree,这个机制是用 ...

随机推荐

  1. Project篇:项目1

    项目: 步骤: (1)布置项目 (2)独立完成项目设计 (3)项目框架讲解 (4)独立完成项目功能编写 (5)项目讲解 项目内容介绍: 项目开发流程: 需求分析------>概要设计------ ...

  2. Windows 10下使用WMware 12 安装Ubuntu16.04,安装过程(附全过程图)

    序言:菜鸡的我又开始瞎搞Ubuntu了 首先在网下下载VMware 12 正常安装即可 关于产品密匙问题:5A02H-AU243-TZJ49-GTC7K-3C61N (这是我在网上找的密匙,反正自己是 ...

  3. SQL-数据库操作-002

    数据库的创建:create database data_name on primary ( name=data_1, filename='D\Data\data_name.mdf', size=50m ...

  4. Python下载与安装配置

    最近想学习Python那就开始吧 首先就是下载安装了 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网:https://www.python.org/ 你 ...

  5. MySQL系列-优化之like关键字 创建索引

    原文: https://blog.csdn.net/ufo___/article/details/81164996 MySQL系列-优化之覆盖索引:  https://blog.csdn.net/UF ...

  6. NDK: GCC 4.6 crashes

    used version: NDK r9b, arm-linux-androideabi-4.6 GCC,  with "-O2 -finline-limit=24". got t ...

  7. zsh:no matches found 问题解决

    解决方法: ~/.zshrc 文件加入: setopt no_nomatch 之后,更新配置 source ~/.zshrc        

  8. powerdesigner16.5 破解

    powerdesigner16.5 破解 方法: 破解方法 1.将下载下来的PowerDesigner165_破解文件.rar进行解压,之后找到pdflm16.dll破解文件,并将pdflm16.dl ...

  9. 数据库连接出错 expected key exchange group packet form server

    数据库连接出错 expected key exchange group packet form server SSH: expected key exchange group packet form ...

  10. shiro学习笔记

    一.概念: shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证.权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. (一)shiro的功能 ...