除了本篇文档,对于每个BSP我们都有BSP Manual,如 i.MX6UL PD19 BSP Reference Manual,也可以参考阅读其中的Device Tree (DT)

设备树基础

然后根据文件的包含关系(以imx6为例):

可以看出各个文件是按照板级的方式关联在一起的,设备树的优先级规则是按照顺序来决定的,如 imx6dl-phytec-mira-rdk-nand.dts 的开头。

imx6dl-phytec-mira-rdk-nand.dts

/dts-v1/;

#include "imx6dl.dtsi"

#include "imx6qdl-phytec-phycore-som.dtsi"

#include "imx6qdl-phytec-mira.dtsi"

#include "imx6qdl-phytec-mira-peb-eval-01.dtsi"

#include "imx6qdl-phytec-peb-wlbt-01.dtsi"

如果在 imx6qdl-phytec-peb-wlbt-01.dtsi 文件中,修改了 imx6dl.dtsi 中的一个配置,则该配置由  imx6qdl-phytec-peb-wlbt-01.dtsi 中的配置为准。

同样的道理,该文件的后面也是对其他文件中的一些配置进行一些修改。如仅仅是使能:

imx6dl-phytec-mira-rdk-nand.dts

&ethphy {

max-speed = <100>;

};

&fec {

status = "okay";

};

&gpmi {

status = "okay";

};

因此,一般是不需要修改核心板和SOC的配置文件 imx6qdl-phytec-phycore-som.dtsi 和 imx6dl.dtsi 这些。如果要定制自己的dts文件,请参考 imx6qdl-phytec-mira.dtsi 文件和 imx6dl-phytec-mira-rdk-nand.dts 当作模版来修改。关于设备树也可以参考一下nxp的文档 Introduction to Device Trees。

将dtb文件反编译为dts

在kernel中提供了一些工具来调试dts文件,如dtc,dtc可以自由的将dtb文件和dts文件之间转换,该程序位于kernel的 /scripts/dtc/dtc。它会在你编译dtb后自动编译,也可以 make dtc来编译。

由于dtc可以将dtb转换为dts,而这个dts文件是单一的,也就是说,此时你可以看到一个将多个dtsi文件整合后的dts文件,从此你可以检查各个配置是否正确,尤其是通过多个文件配置的选项。

imx6dl-phytec-mira-rdk-nand.dts

% make imx6q-phytec-mira-rdk-nand.dtb

% cp arch/arm/boot/dts/imx6q-phytec-mira-rdk-nand.dtb .

% ./scripts/dtc/dtc -I dtb -O dts -o imx6q-phytec-mira-rdk-nand.dts imx6q-phytec-mira-rdk-nand.dtb

你也可以将两个dtb文件转换为dts文件后,比较他们的区别(手工或者diff),同时,从4.6 kernel版本开始,你还可以用dtx_diff(dtdiff)。在老的kernel上也可以自己寻找dtdiff。

Barebox对设备树的修改

需要注意的是,有部分设备树的配置(如显示部分),还会通过barebox来配置,如在 barebox使用教程 / Introducing barebox 中的 “修改phytec扩展模块的配置”。

它的原理,是在barebox中有如下一系列指令

其中of_fixup_status用于使能一些外设,of_display_timings用于设定显示的timing。代码位于(以imx6为例)

env_add(d, "expansions/imx6qdl-mira-enable-lvds",

"""of_fixup_status /soc/aips-bus@02000000/ldb@020e0008/

of_fixup_status /soc/aips-bus@02000000/ldb@020e0008/lvds-channel@0

of_fixup_status /soc/aips-bus@02000000/pwm@02080000

of_fixup_status /soc/aips-bus@02100000/i2c@021a0000/stmpe@44

of_fixup_status /backlight

可以看到这个script通过of_fixup_status使能了一些显示相关的设备。

这个功能主要是为了开发板支持不同的硬件来使用的,如果不需要这个功能,则只需要按照 barebox使用教程 / Introducing barebox 中的方法将他们都注释掉不执行即可。

此时就会完全按照kernel的设备树来工作。

在linux中的 /sys/firmware/devicetree/base 中可以查到各个接口的路径,然后通过本节介绍的指令,就可以在barebox中进行开关。

在kernel的源码中,各个外设的设备树配置文档

在 imx6qdl-phytec-mira.dtsi 中,各种外设的配置方法请参考linux kernel的文档,这些文档位于 Documentation/devicetree/bindings/ 中。以下列出部分:

linux设备数内核选项,linux内核设备树修改指南 / linux kernel device tree modify guide相关推荐

  1. linux中文件大小设置函数,truncate函数和ftruncate修改文件大小-linux

    相关函数:open, ftruncate 表头文件:#include 定义函数:int truncate(const char *path, off_t length); truncate(" ...

  2. Linux DTS (Device Tree Source)设备树源码

    Linux DTS 设备树源码 1. 简介 1.1 引入DTS的原因 1.2 文件格式 2. DTS语法 2.1 .dtsi头文件 2.2 设备节点 2.2.1 设备树中节点命名格式 2.2.2 设备 ...

  3. linux 目录最大文件数,Linux目录数和文件数限制(目录上最大文件数)

    Linux目录数和文件数限制(目录下最大文件数) Linux目录数和文件数限制(目录下最大文件数) 一.目录数限制: 在同一个路径下,一级子目录的个数限制为 31998 .如果你的应用生成的目录可能会 ...

  4. linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写

    摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF).正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台.分歧硬件,往] ...

  5. Linux arm 内核选项和busybox选项 加载tun模块 -- 创建/dev/tun 字符设备

    Linux arm 内核选项和busybox选项 加载tun/tap模块 – 创建/dev/tun 字符设备 可以参考博客1: linux下TUN/TAP虚拟网卡的使用 可以参考博客2:ubuntu下 ...

  6. linux内核 设备列表,Linux 设备树(Device Tree)(转载)

    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称 "this whole ARM thing is a f*cking ...

  7. Linux设备驱动开发详解 第3版 (即 Linux设备驱动开发详解 基于最新的Linux 4 0内核 )前言

    Linux从未停歇脚步.Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核.做技术,从来没有终南捷径,拼的就是坐冷板凳的 ...

  8. 【Linux】内核驱动篇九--设备模型

    内核驱动篇九--设备模型 一.起源 二.新方案 2.1 sysfs: 一种用内存模拟的文件系统,系统启动时mount到/sys目录 2.2 uevent 三.代码中自动mknod 一.起源 linux ...

  9. linux 内核位置无关,常用的设备无关启动时参数 - Linux操作系统内核启动参数详解_Linux教程_Linux公社-Linux系统门户网站...

    常用的设备无关启动时参数. 1.init=... 设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init, /bin/init,/sbin/init, /bin/sh,如果所 ...

  10. linux内核部件分析之——设备驱动模型之class

    前面看过了设备驱动模型中的bus.device.driver,这三种都是有迹可循的.其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动.但本节要介绍的class ...

最新文章

  1. C++:随笔8---命名空间
  2. perf + 火焰图分析程序性能
  3. C#的加密解密算法,包括Silverlight的MD5算法
  4. ListMapSet的操作和遍历
  5. kaptcha图形验证码组件
  6. Angular应用里使用rxjs提供的观察者和发布者实现事件处理
  7. 【OS学习笔记】十八 保护模式五:保户模式下如何进行内存保护 与 别名段的意义与作用 对应汇编代码
  8. 【数据结构与算法】非森林版并查集V2.1的Java实现
  9. python xlwt 解决报错:ValueError: More than 4094 XFs (styles)
  10. Linux学习总结(51)——25个Linux服务器安全小贴士
  11. 登录状态 token
  12. 把txt作为数据源绑定到GridView中
  13. Axure汉化下载步骤
  14. 计算机哪个专业学linux_5种用于计算机维修的专业Linux发行版
  15. 汇编语言 数据寄存器AX、BX、CX、DX
  16. Workbench中直接调用ICEM CFD进行网格划分
  17. 科学道德与学风-2021雨课堂答案-第3章
  18. 动手学习数据分析——第一部分
  19. F5 微信银行解决方案
  20. 数字图像处理:空间相关与卷积操作

热门文章

  1. 中文版边缘计算白皮书发布,引领行业新趋势
  2. 春节回来,陪你去看星河云!
  3. 【三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】
  4. solr获取同义词 java_如何在使用缩写及其全名搜索时使solr同义词获取相同的结果(相同的数字和顺序)...
  5. ai替代数据可视化_在药物发现中可视化AI初创公司
  6. ubuntu chrome下载地址
  7. word怎么把页面顺序倒过来_Word打印错乱——出现两个第1页
  8. php 打印所有常量,php中输出常量
  9. python:拼接多个csv文件
  10. 编程求一个四位自然数ABCD,它乘以A后变成DCBA