rk3328设备树学习

1、用到的rk3328好像使用了设备树

设备树我知道的有三种文件类型,dtbs是经过指令make dtbs编译的二进制文件,供内核使用。node

基于一样的软件分层设计的思想,因为一个SoC可能对应多个machine,若是每一个machine的设备树都写成一个彻底独立的.dts文件布局

那么势必至关一些.dts文件有重复的部分,为了解决这个问题,Linux设备树目录把一个SoC公用的部分或者多个machine共同的部分提炼为相应的.dtsi文件spa

这样每一个.dts就只有本身差别的部分,公有的部分只须要"include"相应的.dtsi文件, 这样就是整个设备树的管理更加有序。设计

 

2、韦山东的设备树教程

若是知道设备树须要填写哪些内容呢:code

1.看文档,在内核Documentation/devicetree/bindings/目录下有各类厂家的资料,源码和文档有些都是对应的:orm

使用指令,竟然找出来好多rockchip的文档:blog

find Documentation/devicetree/bindings/ -name "*rockchip*"

2.参考同类型单板的设备树文件教程

3.网上搜索ip

4.研究源码文档

 

2.1 设备树的规范DTS格式

(1)语法:

DTS文件布局(layout):
/dts-v1/;
[memory reservations]     // 格式为: /memreserve/ <address> <lenght>;
/ {              // 根节点
    [property definitions]
    [child nodes]
};
红色部分,以下:
Property格式1:
[label:] property-name = value;
这个value有三种取值类型:<32位数据>  "字符串" [16进制表示的1个/多个byte,一个byte必须用2位表示,byte之间的空格可省略] 
第四种是多种组合,之间用逗号分开
Property格式2(没有值): [label:] property-name; Devicetree node格式: [label:] node-name[@unit-address]
{ [properties definitions] [child nodes] };

示例:

a. Arrays of cells : cell就是一个32位的数据
interrupts = <17 0xc>;

b. 64bit数据使用2个cell来表示:
clock-frequency = <0x00000001 0x00000000>;

c. A null-terminated string (有结束的字符串):
compatible = "simple-bus";

d. A bytestring(字节序列):
local-mac-address = [00 00 12 34 56 78];     // 每一个byte使用2个16进制数来表示
local-mac-address = [000012345678];          //每一个byte使用2个16进制数来表示

e.能够是各类值的组合,用逗号隔开:
compatible = "ns16550", "ns8250";
example = <0xf00f0000 19> "a strange property format";
相关文章
相关标签/搜索