這個是system-top.dts內容:
/*
* caution: this file is automatically generated by xilinx.
* version:
* today is: fri dec 27 11:18:21 2019
*//dts-v1/
;/include/
"zynq-7000.dtsi"
/include/
"pcw.dtsi"/;
aliases
; memory ;}
;#include
"system-user.dtsi"
這個是system-user.dtsi 內容:
/include/
"system-conf.dtsi"/;
};amba ;}
; remoteproc0: remoteproc@0;}
;
這個是system-conf.dtsi內容:
/*
* caution: this file is automatically generated by petalinux sdk.
* do not modify this file
*//;}
;&gem0
;&qspi
; partition@0x00500000
; partition@0x00520000
; partition@0x00fa0000;}
;};
① 「/」為root節點。在乙個.dts檔案中,有且僅有乙個root節點;在root節點下有「node1」,「node2」子節點,稱root為「node1」和「node2」的parent節點,除了root節點外,每個節點有且僅有乙個parent;其中子節點node1下還存在子節點「child-nodel1」和「child-node2」。
② 上面三個dts檔案裡都包含了乙個根節點,編譯器dtc在對dts進行編譯時,會對節點進行合併操作,最終生成的dtb只有乙個根節點。
③ 在節點的{}裡面是描述該節點的屬性(property),即裝置的特性。
④ 對於相同名稱的節點,dtc會根據定義的先後順序進行合併,其相同屬性,取後定義的那個。
⑤ /dts-v1/: 第一行的/dts-v1/表示裝置樹檔案的版本沒有實際的意義,裝置樹中的檔案每條語句結束時,都會加上";",表示一條語句的完成,和c語言類似。
⑥ "memory"是板級記憶體的資訊。
⑦ 」chosen「是板級啟動引數。
⑧ aliases node用來定義別名,類似c++中引用。
⑨ #include 「***.dtsi」 和 /include/ 「***.dtsi」 功能相同。
執行下面命令,使用dtc反編譯dtb得到dts。
dtc -i dtb -o dts -o test.dts system.dtb
得到的dts如下:
/dts-v1/;/
; cpu@1;}
; fpga-full
; pmu@f8891000
; fixedregulator
; amba
; can@e0008000
; can@e0009000
; gpio@e000a000
; i2c@e0004000
; i2c@e0005000
; interrupt-controller@f8f01000
; cache-controller@f8f02000
; memory-controller@f8006000
; ocmc@f800c000
; serial@e0000000
; serial@e0001000
; spi@e0006000
; spi@e0007000
; spi@e000d000
; partition@0x00500000
; partition@0x00520000
; partition@0x00fa0000;}
;}; memory-controller@e000e000
; flash@e2000000 ;}
; ethernet@e000b000
; ethernet@e000c000
; sdhci@e0100000
; sdhci@e0101000
; slcr@f8000000
; rstc@200
; pinctrl@700;}
; dmac@f8003000
; devcfg@f8007000
; efuse@f800d000
; timer@f8f00200
; timer@f8001000
; timer@f8002000
; timer@f8f00600
; usb@e0002000
; usb@e0003000
; watchdog@f8005000
; ddr@0;}
; chosen
; aliases
; memory
; reserved-memory ;}
; remoteproc@0;}
;
注:
① compatible 的內容為字串陣列,如:
compatible = "xlnx,zynq-7000";
compatible = "arm,cortex-a9";
表示裝置型號等,linux核心根據此節點屬性匹配具體的驅動程式。
② reg 的內容為16進製制,如:
reg = <0x18000000 0x1000000>;
可以與下面兩個搭配使用。
#address-cells = <0x1>;
#size-cells = <0x1>;
表示此裝置可操作的位址範圍。
③interrupt-controlle
r(中斷控制器)
此屬性為空,通過此屬性以表明此裝置具有中斷相關功能。
④ amba 是arm公司提出的乙個匯流排協議規範。
或只有名稱的形式,如:cpus
。
裝置樹學習(二)(裝置樹的規範)
dts v1 memory reservations 格式為 memreserve 從上面檔案布局我們能看到大概分為以下幾部分,我們依次介紹 1 dts v1 表示dts檔案的版本 2 memory reservations 格式為 memreserve 表示留給自己使用的記憶體。即核心不能使用這部...
LCT(Link Cut Tree)動態樹學習筆記
動態樹lct就是支援link,cut操作的樹形資料結構 整體思想和樹鏈剖分有些類似,每個點有一條實邊 重邊 與其兒子相連,剩下的都是虛邊 輕邊 然後用許多個splay來維護每條重鏈,記錄splay中每個點的父親節點,那麼這個splay的根節點指向的是另一條鏈 對應的是虛邊 下面是lct的幾種基本操作...
裝置樹學習總結
標籤 label 可以為節點建立標籤,別的地方引用時可以用標籤。標籤為可選項。節點 node 每個節點必須有乙個 名稱 裝置位址 形式的名字,為可選項,unit address一般是記憶體位址。名稱 name 乙個位元組大小 就是乙個不超過31位的簡單 ascii 字串,節點的命名應該根據它所體現的...