ZYNQ LINUX裝置樹學習筆記

2021-09-29 19:24:36 字數 3367 閱讀 3540

這個是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-controller(中斷控制器)

此屬性為空,通過此屬性以表明此裝置具有中斷相關功能。

④ 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 字串,節點的命名應該根據它所體現的...