Linux裝置樹筆記

2021-10-05 16:54:53 字數 2171 閱讀 7983

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 專門來描述硬體資訊,由系統最終解析出裝置樹,並一一新增入核心 有點 完全分離...