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";
相關文章
相關標籤/搜索