2014年5月27日 星期二

device tree

Device Tree 是描述系統硬體的樹狀資料結構,讓作業系統知道有哪些週邊裝置。原始檔是 device tree source (*.dts),經過 device tree compiler (dtc) 編譯成二進位的 device tree blob (*.dtb),dtb 檔可由 bootloader 載入記憶體後,透過 ARM 處理器的 r2 暫存器傳給 kernel、或直接放到 kernel 的最後面 (使用 CONFIG_ARM_APPENDED_DTB)。

ARM 的 .dts 擋在 arch/arm/boot/dts,可以包含其它 .dtsi 檔後作 overlay (覆蓋)

Device Tree 由 node 組成,node 有名稱 (必要?作用?),可指定位址,可定一個 label 方便 reference。node 內容由 {} 包起來,裡面是其性質 (property)。每個性質是 name = value; 的格式,value 可以是 "字串",多個字串、<數字>、數字陣列、參考其它 node label 等。

透過性質 compatible 可以 binding 到特定 device driver,其它性質提供必要的驅動程式參數。所有 kernel 認得的 binding 說明都在 Documentation/devicetree/bindings/

root node (/) 通常包含有 cpus, memory 等。

參考來源:
  1. http://elinux.org/images/a/a3/Elce2013-petazzoni-devicetree-for-dummies.pdf
延伸閱讀

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...