1. 程式人生 > 其它 >linux dts 裝置樹的理解與使用

linux dts 裝置樹的理解與使用

文件:Documentation/devicetree/bindings目錄下

以前是platform的C語言使用,現在改為用dts的命令互動式的檔案指定方式。

採用dts的方式進行替換platfrom,避免程式碼的冗餘處理,硬體的表現是採用主晶片-匯流排-控制器的這種方式,dts描述也是這樣描述方法

1、dts的分類及具體命令使用

a、 根節點相容性

根節點是採用compatible="",

相容屬性一般包括兩個或兩個以上的相容性字串,首個相容性字串是板子級別,後面一個相容性字串是晶片級別。

譬如板子arch/arm/boot/dts/vexpress-v2p-ca9.dts,

.compatible="arm, vexpress, v2p-ca9","arm,vexpress"。

b、裝置節點相容性

用於驅動和裝置的繫結,相容屬性是一個字串列表,列表中的第一個字串表徵了節點裝置的確切裝置,形式為:<manufacturer>,<model>,其後的字串的表徵可以相容其它裝置

c、裝置節點及label命名

裝置節點:遵循的組織形式為<name>[@<unit-address>],也可以為一個裝置節點新增label,之後可以通過&label的形式進行訪問,這種引用是通過phandle進行。例:

gpio:gpio@48000000 {

}

d、地址編碼

address-cells,size-cells,這個暫時不太清楚使用,後面進行優化處理,size-cells理解為地址長度, address-cells為地址,比如 address-cells=1, 表示只用一個地址表示開始地址, address-cells,需要兩個reg<0,0,12>,這兩個0作為才能做起始地址

e、中斷連線

f、GPIO、時鐘、pinmux連線

2、常用的函式

a、尋找節點

of_find_compatible_node();

b、讀取屬性

c、記憶體對映

d、解析中斷 irq_of_parse_and_map();

3、dts從uboot到傳遞及編譯方式

a、.