關於linux 裝置樹##0. dts、dtc和dtb
① dts,位於arch/arm/boot/dts/
;
② dtc,將.dts
編譯為.dtb
的工具,原始碼位於scripts/dtc/
;
③ dtb (device tree big large object),.dts
的被dtc編譯後得二進位制檔案。
##1. 相容屬性
/* 具體 --> 抽象 */
compatible = "manufacturer, model", "manufacturer2,model2"... ;
##2. 裝置節點命名
/*裝置型別@記憶體基位址或匯流排位址
| | */
[@] ;
##3. label命名
《裝置型別》:
##4. 位址編碼
reg = ;
/* | |_______________
| |
父節點#address-cells=和 #size-cells=決定其單元數 */
child_addr1 parent_addr1 map_len1
... >;
##5. 中斷連線
① 中斷控制器:
interrupt-controller; /* 表明身份 */
#interrupt-cells = ; /* 指示連線此中斷控制器之裝置的中斷屬性cells個數 */
② 開啟中斷的裝置:
interrupt-parent = <&int_ctrl_label>; /* 指示所依附的中斷控制器 */
interrupt = < x ... >, ; /* 中斷控制器#interrupt-cells決定cell個數,逗號隔開多個中斷號 */
interrupt-name = "x_name","y_name", ... ; /* 給特定中斷號起名 */
##6. gpio、時鐘、pinmux的連線
###6.1 gpio
① gpio控制器:
gpio-controller; /* 表明身份 */
#gpio-cells = ; /* 連線此gpio控制器之裝置的***-gpios屬性cells個數 */
② 使用gpio的裝置:
***-gpios = <&ctrl_label n ...>; /* 所依附的gpio控制器之#gpio-cells決定cells個數 */
###6.2 時鐘
① 外部時鐘
clock-frequency = ; /* 表明外部時鐘之頻率 */
clock-output-names = "***"; /* 外部時鐘匯出名字到裝置驅動 */
#clock-cells = <0>; /* 規定引用此節點之裝置的clocks屬性的cells個數 */
② 時鐘控制器
clocks: clock-controller@n ;
③ 使用時鐘的裝置
/* 長度為時鐘控制器#clock-cells
+--^--+ */
clocks = <&clocks n1 ...>, <&clocks n2 ...>, ...; /* 引用時鐘控制器節點來定義屬性clocks */
clock-names = "iii", "jjj", ...; /* 定義屬性clocks中時鐘之名 */
###6.3 pinmux
① pinmux引腳群
***: yyy ;
② 裝置使用引腳群
pinctrl-names = "default";
pinctrl-0 = <&***>; /* 引用引腳群*** */
##參考文獻
[1] 宋寶華. linux裝置驅動開發詳解[m].北京:機械工業出版社,2015
裝置樹基本知識
裝置樹是用於描述硬體的資料結構 在系統啟動時將這些描述硬體的資料傳遞給作業系統解析 the devicetree is used byopenfirmware,openpower abstraction layer opal power architecture platform requireme...
樹 基本知識
自由樹 自由樹是乙個連通,無迴路的無向圖.顯然樹是圖的一種.如果乙個無向圖雖然無迴路,但是可能非聯通,那麼這個圖成為森林.森林可以調整為一顆二叉樹 左兒子,右兄弟 森林是m m 0 棵互不相交的樹的集合。令g v,e 為乙個無向圖.則以下6點是等價的.1 g是自由樹 2 g中任意兩個頂點由唯一一條簡...
樹的基本知識
表示法 1.樹形 2.文氏圖 3.凹入 4.括號 結點的度與樹的度 m次樹 結點子樹的個數 非終端節點,分支結點,葉節點 路徑與路徑長度 ki,ki1,ki2,kj,結點數目減1 分支數目 孩子結點,雙親結點,兄弟結點 結點的層次和樹的高度 根節點為第一層,樹的高度。森林 n n 0 個互不相交的樹...