已經有一些相關經驗,再一次的學習鞏固基礎,主要記錄一些難懂或容易忘的知識點
活动地址:CSDN21天学习挑战赛
學習計畫
1,學習目標
1.dts原理
2,學習內容
1.dts 的由來
2.圖解dts的使用
3,學習時間
週一至週五晚上八至十點
4,學習產出
一週三篇
學習筆記
DTS 的由來
1. arm linux 欠缺 platform 之間的協調,造成程式有非常多的重覆
2.大量的 board spec 程式碼不應在kernel 中,這些垃圾程式影響 linux kernel 長期目標
3. 各sub architecture 維護者提交品質不良
解決問題方法
將 arm soc board specific的程式碼移除,由 device tree 機制負責硬體資源訊息,以
bootloader
傳遞一個DB
的形式,傳入的參數應包含如下資料。
- 識別
platform
的訊息 runtime的
配置參數- 設備的拓撲結構以及特性
DTS並非包含所有設備描述,那些可以動態探測到的設備是不需要描述的,例如USB device。不過對於SOC上的usb host controller,它是無法動態識別的,需要在device tree中描述。同樣的道理,在computer system中,PCI device可以被動態探測到,不需要在device tree中描述,但是PCI bridge如果不能被探測,那麼就需要描述之。
DTS 基礎格式
[label:] node-name[@unit-address] {
[properties definitions]
[child nodes]
}
尋址屬性
- #address-cells
- #size-cells
原作者提供一個圖如下,但說明卻是錯的
參考資料來源為 Device Tree Usage - eLinux.org
以下是正確的說明
4.節點狀態
一般使用okay 和 disabled 但還有另外兩種狀態如下:
值 | 描述 |
---|---|
“okay” | 设备可操作(已开启) |
“diable” | 设备不可操作(已关闭) |
“fail” | 设备不可操作,设备检测到了一些错误 |
“fail-sss” | 同 “fail” |