linux设备数内核选项,linux内核设备树修改指南 / linux kernel device tree modify guide
除了本篇文档,对于每个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
ðphy {
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相关推荐
- linux中文件大小设置函数,truncate函数和ftruncate修改文件大小-linux
相关函数:open, ftruncate 表头文件:#include 定义函数:int truncate(const char *path, off_t length); truncate(" ...
- 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 设备 ...
- linux 目录最大文件数,Linux目录数和文件数限制(目录上最大文件数)
Linux目录数和文件数限制(目录下最大文件数) Linux目录数和文件数限制(目录下最大文件数) 一.目录数限制: 在同一个路径下,一级子目录的个数限制为 31998 .如果你的应用生成的目录可能会 ...
- linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写
摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF).正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台.分歧硬件,往] ...
- Linux arm 内核选项和busybox选项 加载tun模块 -- 创建/dev/tun 字符设备
Linux arm 内核选项和busybox选项 加载tun/tap模块 – 创建/dev/tun 字符设备 可以参考博客1: linux下TUN/TAP虚拟网卡的使用 可以参考博客2:ubuntu下 ...
- linux内核 设备列表,Linux 设备树(Device Tree)(转载)
ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称 "this whole ARM thing is a f*cking ...
- Linux设备驱动开发详解 第3版 (即 Linux设备驱动开发详解 基于最新的Linux 4 0内核 )前言
Linux从未停歇脚步.Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核.做技术,从来没有终南捷径,拼的就是坐冷板凳的 ...
- 【Linux】内核驱动篇九--设备模型
内核驱动篇九--设备模型 一.起源 二.新方案 2.1 sysfs: 一种用内存模拟的文件系统,系统启动时mount到/sys目录 2.2 uevent 三.代码中自动mknod 一.起源 linux ...
- linux 内核位置无关,常用的设备无关启动时参数 - Linux操作系统内核启动参数详解_Linux教程_Linux公社-Linux系统门户网站...
常用的设备无关启动时参数. 1.init=... 设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init, /bin/init,/sbin/init, /bin/sh,如果所 ...
- linux内核部件分析之——设备驱动模型之class
前面看过了设备驱动模型中的bus.device.driver,这三种都是有迹可循的.其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动.但本节要介绍的class ...
最新文章
- C++:随笔8---命名空间
- perf + 火焰图分析程序性能
- C#的加密解密算法,包括Silverlight的MD5算法
- ListMapSet的操作和遍历
- kaptcha图形验证码组件
- Angular应用里使用rxjs提供的观察者和发布者实现事件处理
- 【OS学习笔记】十八 保护模式五:保户模式下如何进行内存保护 与 别名段的意义与作用 对应汇编代码
- 【数据结构与算法】非森林版并查集V2.1的Java实现
- python xlwt 解决报错:ValueError: More than 4094 XFs (styles)
- Linux学习总结(51)——25个Linux服务器安全小贴士
- 登录状态 token
- 把txt作为数据源绑定到GridView中
- Axure汉化下载步骤
- 计算机哪个专业学linux_5种用于计算机维修的专业Linux发行版
- 汇编语言 数据寄存器AX、BX、CX、DX
- Workbench中直接调用ICEM CFD进行网格划分
- 科学道德与学风-2021雨课堂答案-第3章
- 动手学习数据分析——第一部分
- F5 微信银行解决方案
- 数字图像处理:空间相关与卷积操作
热门文章
- 中文版边缘计算白皮书发布,引领行业新趋势
- 春节回来,陪你去看星河云!
- 【三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】
- solr获取同义词 java_如何在使用缩写及其全名搜索时使solr同义词获取相同的结果(相同的数字和顺序)...
- ai替代数据可视化_在药物发现中可视化AI初创公司
- ubuntu chrome下载地址
- word怎么把页面顺序倒过来_Word打印错乱——出现两个第1页
- php 打印所有常量,php中输出常量
- python:拼接多个csv文件
- 编程求一个四位自然数ABCD,它乘以A后变成DCBA