設備樹(Data Tree Structure, dts)是一種描述硬件信息的數據格式,它以樹形結構的形式,描述了設備的屬性、寄存器、中斷等信息。dtsi文件是設備樹的一個重要組成部分,其作用是提供一些設備節點的基本屬性和引用關係,方便其他dts文件引用和重用這些設備節點。
一、dtsi文件的作用
dtsi文件是設備樹的組成部分之一,它包含了設備樹中所有設備節點的基本屬性和引用關係,在設備樹的編譯過程中會被包含到其他dts文件中,以便於其他dts文件引用和重用其中的節點信息。
以ARM架構的設備樹為例,一個SoC的設備樹一般由三個dts文件組成:SoC的dts文件、板級的dts文件和機器的dts文件。其中,SoC的dts文件包含了SoC內部的各種設備節點;板級的dts文件包含了與硬件相關的信息,如板級支持的硬件設備;機器的dts文件包含了與具體機器相關的信息,如內存大小、Flash大小等。
在這三個dts文件中,SoC的dts文件是一個虛擬的文件,它不會被直接使用,而板級的dts文件和機器的dts文件則會使用相同的SoC的dtsi文件。這種方式可以有效地避免重複定義和管理繁瑣的問題。
二、dtsi文件的寫法
dtsi文件的寫法與普通的dts文件類似,但需要遵循一些規則。
首先,dtsi文件名的後綴必須是「.dtsi」,表示這是一個設備樹源文件的包含文件。
其次,dtsi文件中只負責定義和引用設備節點,不能包含實際的設備節點信息。例如,不能在dtsi文件中定義一個完整的設備節點,而只能定義用於其他dts文件引用的基本節點信息和屬性。
下面是一個簡單的dtsi文件的示例代碼:
/* dtsi文件的示例代碼 */
/ {
model = "Example SoC";
compatible = "example,soc-v1.0";
gpio: gpio@80010000 {
compatible = "example,gpio";
reg = ;
interrupts = ; /* GPIO IRQ */
gpio-controller;
#gpio-cells = ;
interrupt-controller;
#interrupt-cells = ;
};
};
上述代碼中,定義了一個名為gpio的設備節點,並定義了該節點的屬性,包括compatible、reg、interrupts等。該節點也被聲明為一個gpio控制器和中斷控制器,供其他dts文件引用。
三、dtsi文件的引用
在其他dts文件中,通過include語句引用dtsi文件。include語句格式為「#include 」。
在引用dtsi文件時,需要注意文件的相對路徑問題。相對路徑的起點是當前dts文件所在的目錄。
下面是一個包含了上述dtsi文件的示例dts文件的代碼:
/* 示例如何在dts文件中引用dtsi文件 */
/dts-v1/;
/ {
model = "Example Board";
compatible = "example,board-v1.0";
memory@80000000 {
device_type = "memory";
reg = ;
};
gpio-keys {
compatible = "example,gpio-keys";
#address-cells = ;
#size-cells = ;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = ;
gpios = ; /* KEY0 */
debounce-interval = ;
soc_gpio_keys: gpio-keys {
compatible = "example,gpio-keys-pins";
/* GPIO pin number, pin name, pin direction */
gpio-pin0 = ;
gpio-pin1 = ;
gpio-pin2 = ;
gpio-pin3 = ;
gpio-pin4 = ;
gpio-pin5 = ;
};
};
/* 引用gpio節點 */
#include <"example-soc.dtsi">>;
};
上述代碼中,include語句引用了上述示例dtsi文件中定義的gpio節點。include語句中使用的相對路徑是從示例dts文件所在目錄開始計算的。
四、總結
dtsi文件是設備樹中的一個重要組成部分,它定義了設備樹節點的基本屬性和引用關係,可以有效地避免重複定義和管理繁瑣的問題。dtsi文件的寫法需要遵循一些規則,例如不能定義完整的設備節點,只能定義基本節點信息和屬性。在其他dts文件中引用dtsi文件時,需要注意文件的相對路徑問題。
原創文章,作者:LFMLO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/369312.html