1.dtsi標頭檔案
一般.dtsi 檔案用於描述 soc 的內部外設資訊,比如 cpu 架構、主頻、外設暫存器位址範
圍,比如 uart、iic 等等。一般都是使用 soc 廠商提供好的.dts 檔案,我們只需要在上面根據自己的實際情況做相應的修改即可。
2.dtc dts dtb
dts 是裝置樹原始碼檔案,dtb 是將dts 編譯以後得到的二進位制檔案,dtc將.dts 編譯為.dtb。
3.裝置節點
每個裝置都是乙個節點,叫做裝置節點,每個節點都通過一些屬性資訊來描述節點資訊。
「/」是根節點,每個裝置樹檔案只有乙個根節點。根節點下子節點命名格式為
「label: node-name@unit-address」,其中「node-name」是節點名字,為 ascii 字串,節點名字應該能夠清晰的描述出節點的功能,比如「uart1」就表示這個節點是 uart1 外設。「unit-address」一般表示裝置的位址或暫存器首位址,如果某個節點沒有位址或者暫存器的話「unit-address」可以不要,label為節點標籤,為了方便訪問節點,可以直接通過&label 來訪問這個節點,比如通過&cpu0 就可以訪問「cpu@0」這個節點,而不需要輸入完整的節點名字。
3.標準屬性
(1)compatible屬性
也叫做「相容性」屬性。compatible 屬性的值是乙個字串列表,compatible 屬性用於將裝置和驅動繫結起來。字串列表用於選擇裝置所要使用的驅動程式,compatible 屬性的值格式如下所示:
"manufacturer,model"其中 manufacturer 表示廠商,model 一般是模組對應的驅動名字。裝置首先使用第乙個相容值在 linux 核心裡面查詢,看看能不能找到與之匹配的驅動檔案。一般驅動程式檔案都會有乙個 of 匹配表,此 of 匹配表儲存著一些 compatible 值,如果設
備節點的 compatible 屬性值和 of 匹配表中的任何乙個值相等,那麼就表示裝置可以使用這個
驅動。(2)model 屬性
model 屬性值也是乙個字串,一般 model 屬性描述裝置模組資訊,比如名字什麼的。
(3)status 屬性
和裝置狀態有關的,status 屬性值也是字串,字串是裝置的狀態資訊,例如「okey」,「disabled」。
(4)#address-cells 和#size-cells 屬性
值都是無符號 32 位整形,用於描述子節點的位址資訊。#address-cells 屬性值決定了子節點 reg 屬性中位址資訊所占用的字長(32 位),#size-cells 屬性值決定了子節點 reg 屬性中長度資訊所佔的字長(32 位)。#address-cells 和#size-cells 表明了子節點應該如何編寫 reg 屬性值,一般 reg 屬性
都是和位址有關的內容,和位址相關的資訊有兩種:起始位址和位址長度,reg 屬性的格式一為:
reg =
每個「address length」組合表示乙個位址範圍,其中 address 是起始位址,length 是位址長度,#address-cells 表明 address 這個資料所占用的字長,#size-cells 表明 length 這個資料所占用
的字長。
(5)reg 屬性
eg 屬性的值一般是(address,length)對。reg 屬性一般用於描述裝置位址空間資源資訊,一般都是某個外設的暫存器位址範圍資訊。
(6)根節點 compatible 屬性
compatible 有兩個值:「fsl,imx6ull-14x14-evk」和「fsl,imx6ull」。裝置節點的 compatible 屬性值是為了匹配 linux 核心中的驅動程式,那麼根節點中的 compatible屬性是為了做什麼工作的? 通過根節點的 compatible 屬性可以知道我們所使用的裝置,一般第乙個值描述了所使用的硬體裝置名字,比如這裡使用的是「imx6ull-14x14-evk」這個裝置,第二個值描述了裝置所使用的 soc,比如這裡使用的是「imx6ull」這顆 soc。linux 核心會通過根節點的 compoatible 屬性檢視是否支援此裝置,如果支援的話裝置就會啟動 linux 核心。
4.向節點追加或修改內容
在自己開發板的.dts檔案中追加內容,例如向i2c1追加:
&i2c1
;
&i2c1 表示要訪問 i2c1 這個 label 所對應的節點。 linux裝置樹學習筆記備忘 裝置樹格式
1 裝置樹格式 label node name unit address 例子 1150 fusb0 fusb30x 22 格式一 label property name value 格式二 label property name property取值方式只有3種 arrays of cells 1...
linux裝置樹(裝置驅動)
一 裝置樹的簡單概念 裝置樹 由一系列的節點,屬性組成,節點本身包含子節點 屬性 成對出現的名稱和值 裝置樹可描述的資訊 原先大多數被編碼在核心中 它是電路板上cpu,匯流排,裝置組成的樹,bootloader會將這棵樹傳遞給核心,並根據它展開linux核心中的platform device等裝置。...
linux裝置樹及裝置新增
要點 裝置樹概念 傳統方式新增裝置 方式 arm mach mach s3c2410 mach s3c2440.c 在 裡面新增裝置描述符並有machine init時呼叫新增 新方式新增裝置 方式 增加獨有的檔案 dts 專門來描述硬體資訊,由系統最終解析出裝置樹,並一一新增入核心 有點 完全分離...