linux 比较新的设备树 详解 device tree
首先,設(shè)備樹是一種數(shù)據(jù)結(jié)構(gòu),他用來描述一個系統(tǒng)的硬件組織,比如說一個BBB開發(fā)板是由哪些模塊組成的。既然如此,如何描述一個組織呢?分為兩部分。
這是通過常理就能推斷出來的。
然后根據(jù)這兩條常識,結(jié)合設(shè)備樹知識可以知道,dts文件中的每個節(jié)點代表一個組件,整個設(shè)備樹的層級關(guān)系也就是各個組件的層次關(guān)系。
二、各個組件的描述每個組件的信息通過屬性property來描述,每個屬性都有對應(yīng)的值value。
2.1 屬性枚舉- compatible?
兼容性描述,驅(qū)動根據(jù)這個匹配設(shè)備。
2.1.1 地址相關(guān)屬性
reg?
設(shè)備寄存器地址描述,形式為???address1 length1 [address2 length2] …???,可以看到每個元組代表一個寄存器范圍。這也是我們希望看到的。#address-cells?
表示用幾個32bit單元來表示地址。如果是2,則第一個表示片選,第二個表示相對于片選基址的偏移。#size-cells?
為0或1。0表示沒有地址范圍,即只有一個地址;1表示用一個32bit數(shù)值表示range。ranges?
explicitly show 總線設(shè)備的地址映射,比如說bus掛了一個i2c控制器,bus節(jié)點通過range屬性告訴cpu訪問i2c控制器的地址。
2.1.2 中斷相關(guān)屬性
interrupt-controller?
一個空屬性,用來表示該設(shè)備接受中斷信號。#interrupt-cells?
中斷控制器的屬性,表示每個interrupt specifier中有多少個單元interrupt-parent?
表示連接的中斷控制器interrupts?
表示各個interrupt specifier,每個中斷輸出信號對應(yīng)一個interrupt specifier。中斷線編號,中斷觸發(fā)信號是高有效or低有效or邊沿觸發(fā)or電平觸發(fā)的信息都編碼在interrupt specifier中。
2.1.3 設(shè)備特有屬性
比如某些廠商自己定義的兼容屬性等,除了不能和已有的名字沖突外,還都要給出相應(yīng)的binding文檔,指出特定的兼容屬性是什么意思,需要定義哪些屬性,可能需要哪些子節(jié)點,代表什么設(shè)備。
三、特殊節(jié)點 ? 3.1 aliases節(jié)點給節(jié)點添加別名,相當于加了一個string屬性,保存對應(yīng)節(jié)點的路徑。操作系統(tǒng)就可以通過這個屬性來訪問對應(yīng)設(shè)備。
3.2 chosen節(jié)點不代表實際的設(shè)備,用于firmware和OS之間傳遞數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的linux 比较新的设备树 详解 device tree的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux cpuidle framew
- 下一篇: Linux 设备树device tree