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