設備樹的引入減少了內核為支持新硬件而需要的改變,提高代碼重用,加速了Linux支持包的開發,使得單個內核鏡像能支持多個系統。作為U-Boot 和Linux 內核之間的動態接口,本文闡述了設備樹的數據存儲格式以及源碼描述語法,進而分析了U-Boot 對扁平設備樹的支持設置,Linux 內核對設備樹的解析流程。
IBM、Sun 等廠家的服務器最初都采用了Firmware(一種嵌入到硬件設備中的程序,用于提供軟件和硬件之間的接口),用于初始化系統配置,提供操作系統軟件和硬件之間的接口,啟動和運行系統。后來為了標準化和兼容性,IBM、Sun 等聯合推出了固件接口IEEE 1275標準,讓他們的服務器如IBM PowerPC pSeries,Apple PowerPC,Sun SPARC 等均采用OpenFirmware,在運行時構建系統硬件的設備樹信息傳遞給內核,進行系統的啟動運行[1]。這樣做的好處有,減少內核對系統硬件的嚴重依賴,利于加速支持包的開發,降低硬件帶來的變化需求和成本,降低對內核設計和編譯的要求。
隨著 Linux/ppc64 內核的發展,內核代碼從原來的arch/ppc32 和arch/ppc64 逐漸遷移到統一的arch/powerpc 目錄,并在內核代碼引入Open Firmware API 以使用標準固件接口[2]。Linux 內核在運行時,需要知道硬件的一些相關信息。對于使用ARCH=powerpc 參數編譯的內核鏡像,這個信息需要基于Open Firmware 規范,以設備樹的形式存在[3]。這樣內核在啟動時讀取掃描Open Firmware 提供的設備樹,從而獲得平臺的硬件設備信息,搜索匹配的設備驅動程序并將該驅動程序綁定到設備。
在嵌入式 PowerPC 中,一般使用U-Boot 之類的系統引導代碼,而不采用Open Firmware。早期的U-Boot 使用include/asm-ppc/u-boot.h 中的靜態數據結構struct bd_t 將板子基本信息傳遞給內核,其余的由內核處理。這樣的接口不夠靈活,硬件發生變化就需要重新定制編譯燒寫引導代碼和內核,而且也不再適應于現在的內核。為了適應內核的發展及嵌入式PowerPC平臺的千變萬化,吸收標準Open Firmware 的優點,U-Boot 引入了扁平設備樹FDT 這樣的動態接口,使用一個單獨的FDT blob(二進制大對象,是一個可以存儲二進制文件的容器)存儲傳遞給內核的參數[3]。一些確定信息,例如cache 大小、中斷路由等直接由設備樹提供,而其他的信息,例如eTSEC 的MAC 地址、頻率、PCI 總線數目等由U-Boot 在運行時修改。U-Boot 使用扁平設備樹取代了bd_t,而且也不再保證對bd_t 的后向兼容。
2 設備樹概念
簡單的說,設備樹是一種描述硬件配置的樹形數據結構,有且僅有一個根節點[4]。它包含了有關CPU、物理內存、總線、串口、PHY 以及其他外圍設備信息等。該樹繼承了OpenFirmware IEEE 1275 設備樹的定義。操作系統能夠在啟動時對此結構進行語法分析,以此配置內核,加載相應的驅動。
3 設備樹存儲格式
U-Boot 需要將設備樹在內存中的存儲地址傳給內核。該樹主要由三大部分組成:頭(Header)、結構塊(Structure block)、字符串塊(Strings block)。設備樹在內存中的存儲布局圖1 如下:
圖1 設備樹存儲格式圖
Fig1 The layout of a DT block
3.1 頭(header)
頭主要描述設備樹的基本信息,如設備樹魔數標志、設備樹塊大小、結構塊的偏移地址等,其具體結構boot_param_header 如下。這個結構中的值都是以大端模式表示,并且偏移地址是相對于設備樹頭的起始地址計算的。
3.2 結構塊(structure block)
扁平設備樹結構塊是線性化的樹形結構,和字符串塊一起組成了設備樹的主體,以節點形式保存目標板的設備信息。在結構塊中,節點起始標志為常值宏OF_DT_BEGIN_NODE,節點結束標志為宏OF_DT_END_NODE;子節點定義在節點結束標志前。一個節點可以概括為以OF_DT_BEGIN_NODE 開始,包括節點路徑、屬性列表、子節點列表,最后以OF_DT_END_NODE 結束的序列,每一個子節點自身也是類似的結構。
3.3 字符串塊(Strings block)
為了節省空間,將一些屬性名,尤其是那些重復冗余出現的屬性名,提取出來單獨存放到字符串塊。這個塊中包含了很多有結束標志的屬性名字符串。在設備樹的結構塊中存儲了這些字符串的偏移地址,這樣可以很容易地查找到屬性名字符串。字符串塊的引入節省了嵌入式系統較為緊張的存儲空間。
4 設備樹源碼DTS 表示
設備樹源碼文件(.dts)以可讀可編輯的文本形式描述系統硬件配置設備樹,支持C/C++方式的注釋,該結構有一個唯一的根節點“/”,每個節點都有自己的名字并可以包含多個子節點。設備樹的數據格式遵循了Open Firmware IEEE standard 1275。本文只簡述設備樹數據布局及語法,Linux 板級支持包開發者應該詳細參考IEEE 1275 標準[5]及其他文獻[2] [4]。為了說明,首先給出基于PowerPC MPC8349E 處理器的最小系統的設備樹源碼示例。
可以看到,這個設備樹中有很多節點,每個節點都指定了節點單元名稱。每一個屬性后面都給出相應的值。以雙引號引出的內容為ASCII 字符串,以尖括號給出的是32 位的16 進制值。這個樹結構是啟動Linux 內核所需節點和屬性簡化后的集合,包括了根節點的基本模式信息、CPU 和物理內存布局,它還包括通過/chosen 節點傳遞給內核的命令行參數信息。
/ {
model = "MPC8349EMITX";
compatible = "MPC8349EMITX", "MPC834xMITX", "MPC83xxMITX";
#address-cells = <1>; /* 32bit address */
#size-cells = <1>; /* 4GB size */
cpus {
#address-cells = <1>;
#size-cells = <0>;
PowerPC,8349@0 {
device_type = "cpu";
reg = <0>;
d-cache-line-size = <20>; /* 32 Bytes */
i-cache-line-size = <20>;
d-cache-size = <8000>; /* L1 dcache, 32K */
i-cache-size = <8000>;
timebase-frequency = <0>; /* from bootloader */
bus-frequency = <0>;
clock-frequency = <0>;
};
};
memory {
device_type = "memory";
reg = <00000000 10000000>; /* 256MB */
};
chosen {
name = "chosen";
bootargs = "root=/dev/ram rw console=ttyS0,115200";
linux,stdout-path = "/soc8349@e0000000/serial@4500";
};
};
4.1 根節點
設備樹的起始點稱之為根節點"/"。屬性model 指明了目標板平臺或模塊的名稱,屬性compatible 值指明和目標板為同一系列的兼容的開發板名稱。對于大多數32 位平臺,屬性
#address-cells 和#size-cells 的值一般為1。
4.2 CPU 節點
/cpus 節點是根節點的子節點,對于系統中的每一個CPU,都有相應的節點。/cpus 節點沒有必須指明的屬性,但指明#address-cells = <1>和 #size-cells = <0>是個好習慣,這同時指明了每個CPU 節點的reg 屬性格式,方便為物理CPU 編號。
此節點應包含板上每個CPU 的屬性。CPU 名稱一般寫作PowerPC,,例如Freescale 會使用PowerPC,8349 來描述本文的MPC8349E 處理器。CPU 節點的單元名應該是cpu@0 的格式,此節點一般要指定device_type(固定為"cpu"),一級數據/指令緩存的表項
大小,一級數據/指令緩存的大小,核心、總線時鐘頻率等。在上面的示例中通過系統引導代碼動態填寫時鐘頻率相關項。
4.3 系統內存節點
此節點用于描述目標板上物理內存范圍,一般稱作/memory 節點,可以有一個或多個。當有多個節點時,需要后跟單元地址予以區分;只有一個單元地址時,可以不寫單元地址,默認為0。
此節點包含板上物理內存的屬性,一般要指定device_type(固定為"memory")和reg屬性。其中reg 的屬性值以<起始地址空間大小>的形式給出,如上示例中目標板內存起始地址為0,大小為256M 字節。
4.4 /chosen 節點
這個節點有一點特殊。通常,這里由Open Firmware 存放可變的環境信息,例如參數,默認輸入輸出設備。
這個節點中一般指定bootargs 及linux,stdout-path 屬性值。bootargs 屬性設置為傳遞給內核命令行的參數字符串。linux,stdout-path 常常為標準終端設備的節點路徑名,內核會以此作為默認終端。
U-Boot 在1.3.0 版本后添加了對扁平設備樹FDT 的支持,U-Boot 加載Linux 內核、Ramdisk 文件系統(如果使用的話)和設備樹二進制鏡像到物理內存之后,在啟動執行Linux內核之前,它會修改設備樹二進制文件。它會填充必要的信息到設備樹中,例如MAC 地址、PCI 總線數目等。U-Boot 也會填寫設備樹文件中的“/chosen”節點,包含了諸如串口、根設備(Ramdisk、硬盤或NFS 啟動)等相關信息。
4.5 片上系統SOC 節點
此節點用來描述片上系統SOC,如果處理器是SOC,則此節點必須存在。頂級SOC 節點包含的信息對此SOC 上的所有設備可見。節點名應該包含此SOC 的單元地址,即此SOC內存映射寄存器的基址。SOC 節點名以/soc的形式命名,例如MPC8349 的SOC
節點是"soc8349"。
在屬性中應該指定device_type(固定為"soc")、ranges、bus-frequency 等屬性。ranges屬性值以的形式指定。SOC 節點還包含目標板使用的每個SOC 設備子節點,應該在設備樹中盡可能詳細地描述此SOC 上的外圍設備。如下給出帶有看門狗設備的SOC 節點DTS 示例。
soc8349@e0000000 {
#address-cells = <1>;
#size-cells = <1>;
device_type = "soc";
compatible = "simple-bus";
ranges = <0 e0000000 100000>; /* size 1MB */
reg = ;
bus-frequency = <0>; /* from bootloader */
{
device_type = "watchdog";
compatible = "mpc83xx_wdt";
reg = <200 100>; /* offset: 0x200 */
};
};
4.6 其他設備節點
分級節點用來描述系統上的總線和設備,類似物理總線拓撲,能很方便的描述設備間的關系。對于系統上的每個總線和設備,在設備樹中都有其節點。對于這些設備屬性的描述和定義請詳細參考IEEE 1275 標準及本文參考文獻[2]。
設備樹的中斷系統稍顯復雜,設備節點利用interrupt-parent 和interrupts 屬性描述到中斷控制器的中斷連接。其中interrupt-parent 屬性值為中斷控制器節點的指針,#interrupts 屬性值描述可觸發的中斷信號,其值格式與中斷控制器的interrupt-cells 屬性值有關。一般
#interrupt-cells 屬性值為2,interrupts 屬性就對應為一對描述硬件中斷號和中斷觸發方式的十六進制值。
5 扁平設備樹編譯
根據嵌入式板的設備信息寫設備樹源碼文件(.dts)通常比較簡單,但是手寫二進制的扁平設備樹(.dtb)就顯得比較復雜了。設備樹編譯器dtc 就是用來根據設備樹源碼的文本文件生成設備樹二進制鏡像的。dtc 編譯器會對輸入文件進行語法和語義檢查,并根據Linux內核的要求檢查各節點及屬性,將設備樹源碼文件(.dts)編譯二進制文件(.dtb),以保證內核能正常啟動。dtc 編譯器的使用方法如下所示[6]:dtc [ -I dts ] [ -O dtb ] [ -o opt_file ] [ -V opt_version ] ipt_file2.6.25 版本之后的內核源碼已經包含了dtc 編譯器。在配置編譯內核時選中CONFIG_DTC,會自動生成設備樹編譯器dtc。將編寫的目標板設備樹文件mpc8349emitx.dts放到內核源碼的arch/powerpc/boot/dts/目錄下,利用內核Makefile 生成blob 的簡單規則,使
用以下命令亦可完成設備樹的dtc 編譯:
$ make mpc8349emitx.dtb
6 U-Boot 相關設置說明
為使 U-Boot 支持設備樹,需要在板子配置頭文件中設置一系列宏變量。如本文在
MPC8349E 處理器目標板中移植的U-Boot 配置如下:
/* pass open firmware flat tree */
#define CONFIG_OF_LIBFDT 1
#undef CONFIG_OF_FLAT_TREE
#define CONFIG_OF_BOARD_SETUP 1
#define CONFIG_OF_HAS_BD_T 1
#define CONFIG_OF_HAS_UBOOT_ENV 1
啟動引導代碼U-Boot 在完成自己的工作之后,會加載Linux 內核,并將扁平設備樹的
地址傳遞給內核,其代碼形式如下:
#if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
if (of_flat_tree) { /* device tree; boot new style */
/*
* Linux Kernel Parameters (passing device tree):
* r3: pointer to the fdt, followed by the board info data
* r4: physical pointer to the kernel itself
* r5: NULL
* r6: NULL
* r7: NULL
*/
(*kernel) ((bd_t *)of_flat_tree, (ulong)kernel, 0, 0, 0);
/* does not return */
}
#endif
arch/powerpc 內核的入口有且只有一個,入口點為內核鏡像的起始。此入口支持兩種調用方式,一種是支持Open Firmware 啟動,另一種對于沒有OF 的引導代碼,需要使用扁平設備樹塊,如上示例代碼。寄存器r3 保存指向設備樹的物理地址指針,寄存器r4 保存為內
核在物理內存中的地址,r5 為NULL。其中的隱含意思為:假設開啟了mmu,那么這個mmu的映射關系是1:1 的映射,即虛擬地址和物理地址是相同的。
7 Linux 內核對設備樹的解析
扁平設備樹描述了目標板平臺中的設備樹信息。每個設備都有一個節點來描述其信息,每個節點又可以有子節點及其相應的屬性。內核源碼中include/linux/of.h 及drivers/of/base.c等文件中提供了一些Open Firmware API,通過這些API,內核及設備驅動可以查找到相應
的設備節點,讀取其屬性值,利用這些信息正確地初始化和驅動硬件。
圖2 內核及驅動對扁平設備樹的解析
Fig2 Interaction from kernel and drivers with the FDT blob
8 結論
本文介紹了設備樹的起源及其優點,進而闡述了設備樹的數據存儲格式以及源碼描述語法,給出了設備樹的編譯方法,最后引出了移植過程中的U-Boot 相關設置說明及內核的解析過程分析。設備樹為嵌入式系統向Linux 內核傳遞參數的動態接口,本文以MPC8349E
處理器目標板上的DTS 移植經歷作總結,希望對嵌入式PowerPC Linux 開發者具有一定的參考價值,可以加快嵌入式PowerPC Linux 開發中的設備樹DTS 移植過程。
?
學會Linux設備樹dts移植
- Linux(206513)
- DTS(15990)
- 設備樹(3038)
相關推薦
Linux驅動入門-設備樹DTS概念介紹
硬件的相應信息都會寫在.dts為后綴的文件中,每一款硬件可以單獨寫一份xxxx.dts,一般在Linux源碼中存在大量的dts文件,對于 arm 架構可以在arch/arm/boot/dts找到相應
2023-08-20 11:02:31649
Linux 設備樹詳解
問題。推而廣之,系統的軟硬件信息都可以使用設備樹來描述。這樣的話,ARM Linux社區就不會因為支持板子和驅動越來越多造成內核源碼中出現很多冗余代碼(主要是板級文件),僅僅需要移植者,把系統的軟硬件信息通過設備
2016-11-29 17:58:57
Linux 設備樹詳解
問題。推而廣之,系統的軟硬件信息都可以使用設備樹來描述。這樣的話,ARM Linux社區就不會因為支持板子和驅動越來越多造成內核源碼中出現很多冗余代碼(主要是板級文件),僅僅需要移植者,把系統的軟硬件信息通過設備
2016-10-19 15:53:29
Linux 設備樹詳解
問題。推而廣之,系統的軟硬件信息都可以使用設備樹來描述。這樣的話,ARM Linux社區就不會因為支持板子和驅動越來越多造成內核源碼中出現很多冗余代碼(主要是板級文件),僅僅需要移植者,把系統的軟硬件信息通過設備
2016-11-02 13:46:14
Linux內核的設備樹DTS使用方法詳解
1、設備樹的簡介Linux 內核3.X之后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板級細節的代碼(比如platform_device
2022-05-06 16:14:31
Linux系統移植篇10:Linux內核網卡驅動移植
/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi添加網卡設備樹配置。修改arch/arm/boot/dts/stm32mp15xx-fsmp1x.dtsi文件在文件末尾添加如下內容:eernet0 {status
2021-09-14 09:19:51
Linux系統移植篇3:STM32MP1微處理器之設備樹簡介
(全文見附件)設備樹詳解簡介在傳統Linux內核中,ARM架構的板極硬件細節過多地被硬編碼在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform設備
2021-08-26 11:08:21
Linux系統移植篇8:STM32MP1微處理器之Linux內核配置及編譯
出一個相對簡單的設備樹文件,確保內核可以正常啟動。后續各個外設移植時會陸續增加文件的相關內容。在arch/arm/boot/dts/ 目錄下新建stm32mp15xx-fsmp1x.dtsi:將編譯好
2021-09-10 09:19:55
Linux系統移植篇9:Linux內核eMMC驅動移植
總線,當前所使用的設備樹文件中沒有sdmmc2的支持,所以需要增加相關內容才能正常驅動eMMC。由于在使STM32MP1芯片很多管腳為多功能復用管腳,且很多管腳具備同樣的功能,所以移植eMMC時需要
2021-09-13 10:30:25
dts文件應該修改uboot或linux中的imx8mp-evk.dts嗎?
我可以知道 dts 文件 (imx8mp-evk.dts) 我應該在 uboot (arch/arm/dts/) 或 linux (arch/arm64/boot/dts/freescale/) 中修改它嗎?為什么在不同的部分有 2 個 dts 文件?(能簡單介紹一下嗎?)謝謝。
2023-03-17 08:18:59
移植5.4內核到迅為I.MX6ULL開發板
下生成“zImage”鏡像文件,如下圖所示: 編譯生成了鏡像文件以后,接下來我們需要編譯設備樹文件。首先我們進到“arch/arm/boot/dts”目錄,這里面保存著imx6ull的默認設備樹配置文件。然后我們輸入
2020-06-29 10:13:38
移植linux4.14內核到四核Exynos4412開發板
官方網站是https://www.kernel.org/ 如下圖所示我們進入linux官網,為了和之前的設備樹教程統一,這里我們選擇4.14.2的內核版本。下載完成后,我們放在ubuntu里面備用,如下
2019-11-19 11:36:25
設備樹開發的相關資料下載
tree source(dts)設備樹代碼device tree source, includeDTB(dtsi)????更通用的設備樹代碼,也就是相同芯片但不同平臺都可以使用的代碼device tree
2021-12-24 06:40:31
設備樹的相關資料分享
設備樹詳解簡介在傳統Linux內核中,ARM架構的板極硬件細節過多地被硬編碼在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform設備、resource
2021-12-01 07:46:13
設備樹錯誤
你好我正在嘗試在xilinx 12.4 EDK和SDK中生成DTS文件。我從xilinx git服務器https://github.com/xilinx下載了設備樹生成,通過添加它們作為
2020-04-10 10:14:49
設備樹(Device Tree)
設備樹介紹:設備樹是一個描述設備硬件資源的文件,該文件是由節點組成的樹形結構。如下:/ {node1 {a-string-property = "A string"
2017-03-14 14:36:24
ARM Linux設備樹的組成和結構
編譯后的設備樹傳遞給 Linux 內核。DTS 、 DTC 和 DTB 等1.DTS文件 .dts 是一種 ASCII 文本格式的設備樹描述,此文本格式非常人性化,適合人類的閱讀習慣?;旧?在
2022-05-11 16:28:03
MCP251X can驅動移植nuc980采樣用設備樹配置時,中斷如何配置設備樹?
MCP251X can驅動移植nuc980 采樣用設備樹配置時,中斷如何配置設備樹?
spi0: spi@b0061000 {
status = \"okay\"
2024-01-17 06:43:27
OKMX6UL-C的uboot默認是加載那個DTB的,修改設備樹應該是修改那個dts文件?
您好:OKMX6UL-C的uboot默認是加載那個DTB的,修改設備樹應該是修改那個dts文件?
2022-11-30 07:33:46
QCVS設備樹編輯器不工作怎么解決?
我將 Code Warrior 用于 PA 10.5.1 和 QCVS 4.5。
我正在嘗試使用硬件設備樹功能,但它給我帶來了麻煩。
聯機幫助說 GUI 編輯器提供了用于添加、編輯和刪除節點的插入
2023-05-06 08:45:19
RK3288 dts和dtsi介紹
基本上就是畫一棵電路板上(CPU、總線、設備組成)的樹,Bootloader 會將這棵樹傳遞給內核,然后內核可以識別這棵樹,并根據它展開出 Linux 內核中的 platform_device
2020-02-11 11:43:37
RK3288設備樹適配LVDS屛的資料推薦
1、RK3288適配LVDS屛記錄 在設備樹增加LVDS相關節點:源碼/kernel/arch/arm/boot/das/rk3288.dts添加背光節點添加LVDS節點RK3288 有2個視覺輸出處理器yopbvoplvopb 支持4K高清輸出vopl支持2K視頻輸出原作者:wylwws
2022-05-13 15:01:25
STM32MP157 Linux系統移植開發篇11:Linux HDMI驅動移植
/devicetree/bindings/i2c/i2c-stm32.txt內核中ST對STM32MP15x系列芯片的設備樹資源了做了定義,可參見:arch/arm/boot/dts
2021-09-15 11:55:04
STM32MP157 Linux系統移植開發篇12:Linux內核MIPI LCD驅動移植
/devicetree/bindings/pwm/pwm-stm32.txt內核中ST對STM32MP15x系列芯片的設備樹資源了做了定義,可參見:arch/arm/boot/dts
2021-09-16 16:53:52
STM32MP157 Linux系統移植開發篇13:Linux內核5寸觸摸屏驅動移植
/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi修改設備樹修改arch/arm/boot/dts
2021-09-18 11:50:40
STM32MP157 Linux系統移植開發篇14:Linux內核RGB LCD驅動移植
= ;brightness-levels = ;default-brightness-level = ;status = "okay";};2.實驗目的熟悉基于Linux操作系統下的攝像頭設備驅動移植
2021-09-28 11:22:13
STM32MP157 Linux系統移植開發篇15:Linux內核7寸觸摸屏驅動移植
/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi過程與5寸觸摸屏移植過程相同,如果步驟重復請跳過。修改設備樹修改arch/arm/boot/dts
2021-09-29 08:45:20
TI AM335x_linux-3.14.43內核移植筆記
Device Tree牽涉面比較廣,即增加了新的用于描述設備硬件信息的文本格式(即.dts文件),又增加了編譯這一文本的工具,同時Bootloader也需要支持將編譯后的Device Tree傳遞給Linux
2018-06-04 15:49:15
am437x基于linux4.1.18平臺移植按鍵驅動失敗
您好,我在am437x平臺上使用的是linux4.1.18內核,添加按鍵驅動總是失敗。我所做的步驟是:
1,修改設備樹xxx.dts,紅色為新增的
2,在設備樹中配置對應的pin_mux
3,將
2018-06-01 08:24:04
arm linux設備樹都包括哪些基本信息呢
設備樹)設備樹文件一般放置在arch/arm/boot/dts目錄中DTS文件一個dts文件對應一個ARM的設備為了簡化把SoC公用的部分或多個設備共用的部分一般提煉為.dtsi。類似于C頭文件。其他
2022-05-24 16:04:28
imx8qxp:mux_mode可以通過linux dts設置嗎?
imx8qxp可以僅通過 linux dts 設置 mux_mode,還是必須先通過 u-boot 或 scfw 設置?在 linux 設備樹 pinctrl 中設置位 29-27(多路復用模式
2023-04-06 07:04:23
「正點原子Linux連載」第三十七章Linux內核移植
imx6ull-alientek-emmc.dts.dts是設備樹源碼文件,編譯Linux的時候會將其編譯為.dtb文件。imx6ull-alientek-emmc.dts創建好以后我們還需要修改文件
2020-03-17 15:40:28
「正點原子Linux連載」第四十三章Linux設備樹(一)
,但是我們在前面移植Linux的時候卻一直在使用.dtb文件,那么DTS和DTB這兩個文件是什么關系呢?DTS是設備樹源碼文件,DTB是將DTS編譯以后得到的二進制文件。將.c文件編譯為.o需要用到gcc
2020-03-19 10:18:28
「正點原子Linux連載」第四十三章Linux設備樹(二)
1)實驗平臺:正點原子Linux開發板2)摘自《正點原子I.MX6U嵌入式Linux驅動開發指南》關注官方微信號公眾號,獲取更多資料:正點原子第四十三章Linux設備樹43.3.5 向節點追加或修改
2020-03-19 10:19:40
【Z-turn Board試用體驗】+ 設備樹的創建
設備樹用于硬件和軟件之間的信息交互,也就是將Zynq開發板的硬件信息傳遞給linux內核,避免在linux內核中硬編碼而影響在其他平臺上的可移植性。設備樹一般以兩種文件格式存在,一個是dts文件
2015-07-01 15:24:46
【正點原子FPGA連載】第二十四章Linux設備樹-領航者ZYNQ之linux開發指南
多說了,前面講解Uboot移植、Linux內核移植的時候已經無數次的提到如何使用.dtb文件了(uboot中使用bootz或bootm命令向Linux內核傳遞二進制設備樹文件(.dtb))。24.3dts
2020-09-16 15:31:31
【正點原子FPGA連載】第十八章Linux內核移植-領航者ZYNQ之linux開發指南
Linux支持設備樹,每個開發板都有一個對應的設備樹文件。Xilinx的ZYNQ系列芯片的所有設備樹文件夾都存放在arch/arm/boot/dts目錄下,在這個目錄下有個名為
2020-09-14 15:42:54
【米爾-TIAM62開發板-接替335x-試用評測】+(三)手把手創建Uboot設備樹與內核設備樹實戰
││└─ MYD-YM62X板的設備樹文件
││├─ myb-am62x-dev.dts
││├─ myb-am62x-r5-dev.dts
││└─ myb-am62x-dev-u-boot.dtsi
│└─ Linux
2023-11-28 09:54:17
從imx8mp-evk.dts捕獲的設備樹問題求解
下面是從 imx8mp-evk.dts 捕獲的設備樹。我想知道如果我的定制板沒有 HDMI,下面紅色突出顯示的設備樹是否仍然需要?&iomuxc { pinctrl-names
2023-03-15 06:42:18
使用Developer Package和Distribution Package編譯的設備樹的區別是什么?
我想知道使用 Developer Package 和 Distribution Package 編譯的設備樹的區別。的我知道當我創建自己的機器時,我可以通過以下兩種方法創建設備樹。 方法 1
2023-01-10 07:18:43
使用官方sdk,內核下設備樹執行不正確,Linux下外設沒有任何變化,請問是哪個環節出了問題?
設計,有部分修改。移植過程中發現無論怎么改../dts文件夾下的設備樹文件,Linux下外設沒有任何變化,懷疑uboot階段雖然加載了.dtb文件但是內核并沒有按加載的設備樹執行。做了個實驗,驗證
2018-06-04 02:17:00
關于ARM Linux系統的設備樹Device Tre資料介紹
的Device Tree傳遞給Linux內核。DTS (device tree source).dts文件是一種ASCII 文本格式的Device Tree描述,此文本格式非常人性化,適合人類的閱讀習慣
2022-05-06 16:42:24
內核設備樹的相關資料分享
1 硬件基礎在我們的開發板上集成了一顆RGB燈組,引腳連接著主控的三路PWM輸出,因此我們可以通過三路PWM輸出進行調色的功能,硬件原理圖如下:2 內核設備樹我們把設備樹補丁文件放在目錄
2021-12-24 07:00:48
在設備樹中iomux中添加復用gpio引腳
IMX6ULRM.pdf 手冊中對應寄存器。3.在設備樹中 iomux 中添加復用 gpio 引腳如下:同時修改設備樹文件中,出廠的源碼中將 csi 引腳用作攝像頭。將復用功能去掉或者 disabled。如下圖:其中 csi 引腳也可復用為 sim2.也將其改為 disa...
2022-01-12 08:30:09
在uboot移植ili9881c設備的屏幕,無圖片顯示,屏幕為一直灰色是怎么回事?
嘗試在uboot移植ili9881c設備的屏幕,屏幕接口為mipi,參考stm32mp157c-ev1.dts的
compatible = \"raydium,rm68200\"
2024-03-08 06:29:20
在哪里可以找到s32g399aevb平臺的u-boot設備樹?
大家好,我已經為 s32g399aevb 平臺構建了 auto_yocto_bsp release/bsp33.0。構建成功,但是 u-boot 設備樹文件是空的。 我檢查了
2023-03-28 08:21:05
在工作區中找不到我的內核設備樹如何解決?
linux內核設備樹。運行“devtool 修改虛擬/內核”命令。工作區目錄創建成功。但我在下面的路徑中找不到我的設備樹。./workspace/sources/linux-stm32mp/arch/arm
2022-12-07 07:13:34
基于Android7.1 高通8953 平臺下零死角玩轉設備樹DTS【2018更新】【申精】
設備樹DTS】更新內容:【創科之龍_安卓開發】第01課_為什么引用linux設備樹和對比優勢【創科之龍_安卓開發】第02課_如何在Linux-3.x內核編譯設備樹【創科之龍_安卓開發】第03課
2018-07-09 20:20:05
外設地址差異Linux DTS vs NXP UG是什么意思?
請有人解釋一下……我正在為我的 NXP SoC 和 COM/板查看 DTS,試圖找到一些外圍設備并檢查地址。我無法理解的是我在 DTS/Linux 地址中看到的與它們在 SoC 用戶指南中看到的內容
2023-03-29 06:28:12
如何使用yocto連接cubeMX生成的dts文件?
大家好,我正在使用帶有 openSTLinux-5.4-dunfell-eglf 發行版的 stm32mp157f-dk2。我想使用 cubeMX 配置我的設備樹。生成的 dts 文件對我來說似乎沒問題。但是,我怎樣才能告訴 yocto 使用我新生成的設備樹呢?
2022-12-13 07:25:50
如何修改內核設備樹
本文檔介紹了內核設備樹的位置和包含關系
1.內核設備樹位置
文件
備注
dts
longan/device/config/chips/t507/configs/evb/board.dts
2023-12-14 13:42:56
如何在設備樹中創建UART接口?
我想在具有 openstlinux-20-02-19 生態系統的 STM32MP157C-DK2 上使用帶 A7 的 UART7。因此,我嘗試在設備樹中包含/啟用 UART 接口,但它無法正常工作
2023-01-30 07:12:12
如何將mma8452驅動程序添加到Linux設備樹?
我目前正在嘗試通過將 mma8452 驅動程序添加到 Linux 設備樹來為我的 mma8451Q 加速度計實現它。 目前我正在創建一個設備樹覆蓋文件 (dtbo),其中包含添加到描述加速度計的設備
2023-03-21 06:17:12
如何將uboot-2020和Linux5.4.1移植到OK210?
大學期間買了OK210開發板一直吃灰,最近拿出來玩玩。網上的移植的資料都比較老,uboot和linux內核的變化比較大,尤其是官方給的內核都沒有設備樹的支持。移植成功了uboot的網卡驅動并從
2022-01-13 07:31:31
如何將zImage和設備樹文件放在rootfs的/boot目錄中?
我正在研究 QP saber 板。
我真的很想將 zImage 和設備樹文件放在我的 rootfs 的 /boot 目錄中。
我已經有了自己的層和 linux-imx_*.bbappend 文件并
2023-04-28 07:34:24
如何編譯設備樹和Linux內核鏡像文件
實驗任務:編譯設備樹和Linux內核鏡像文件,拷貝到sd卡中,再從sd卡中拷貝到nand閃存對應的分區中,最后nand啟動,進入linux系統本篇博客內容:1.實驗流程2.注意事項1.實驗流程1.
2021-12-20 07:11:34
如何解決zephyr添加驅動到設備樹及遇到的一些問題
基礎架構支持a. 添加特定于體系結構的DTS目錄(如果尚未存在)。示例:ARM的 dts/arm/soc系列(已存在)b. 為基礎SoC添加目標特定設備樹文件。這些應該是.dtsi文件,以包含在特定
2021-12-10 06:26:57
如何解決擴展CAN芯片MCP2515的驅動移植問題?
擴展芯片,能否提供一下MCP2515驅動設備樹文件,或者移植方案。下面是我們的硬件設計,用的是SPI2,中斷管腳是G20_SPI2_CS1BR.以下為例子,設備樹linux-3.10/arch/arm
2022-01-04 07:02:58
安卓(android)6.0高通平臺下設備樹專題視頻講解【全國獨家+設備樹視頻教程+絕頂視頻】
哪些神秘的東西?3.【創科之龍_安卓開發】第02節_如何在Linux-3.x內核編譯設備樹4.【創科之龍_安卓開發】第03節_如何對設備樹(DTB)進行反匯編設備樹源碼(DTS)5.【創科之龍_安卓
2016-10-06 22:55:27
我應該將dts文件放在哪里以使用yocto構建linux映像呢?
的“Pin Reserved”中添加并設置(作為數字輸出)引腳 PF2(名為“Test”)為“Cortex-A7 non secure”。然后我生成了代碼,但是 dts 文件沒有改變,我在 A7 的設備樹中
2022-12-23 09:48:58
極度詳細之Linux官方最新版本5.4移植教程
”目錄下生成“zImage”鏡像文件,如下圖所示: 編譯生成了鏡像文件以后,接下來我們需要編譯設備樹文件。首先我們進到“arch/arm/boot/dts”目錄,這里面保存著imx6ull的默認設備樹
2020-06-29 11:15:12
淺析嵌入式linux中ARM板設備樹路徑設備樹的信息
嵌入式linux中ARM板設備樹路徑設備樹的信息——根節點cd /sys/firmware/devicetree/base/。platform_device 的信息在設備樹的dts文件里,帶有
2021-12-14 06:19:10
深入研究徹底掌握設備樹
這節主要講只想使用設備樹但是不想深入研究怎么辦,簡單記錄一下,因為我們還是要深入研究徹底掌握設備樹的。如果沒有深入研究設備樹,那么只能希望寫驅動程序的人:提供了文檔,程序,并且驅動程序寫得好適配性強
2022-02-17 07:05:45
請問rt設備框架與linux設備樹的優劣區別有哪些?
使用 rt 半年了,印象里網上的資料都說 rt 是類似于 linux 的,感覺也像,但是又感覺有點不一樣,就是 linux 的設備樹里換個設備好像就改一點點數據就行了,rt 這里好像不怎么容易。
2022-05-23 09:37:09
請問關于u***轉串口的設備樹文件是哪個
需求是修改源碼把原來的一個USB擴展4串口卡改為 4個USB擴展16個串口卡,具體步驟是不是修改設備樹以及重寫u***驅動?驅動文件 linux4.1.15/drivers/tty/serial
2022-01-07 06:05:15
請問在rockchip中如何單獨編譯生成新的設備樹
/arm64/Makefile:127: recipe for target ‘dtbs’ failed make: *** [dtbs] Error 2 在rockchip中無法找到px30-ad-d6-anx6345.dtb的文件,請問如何單獨編譯生成新的設備樹?
2022-04-02 14:16:07
迅為-IMX6開發板設備樹-Linux內核配置兩路can
1、修改Android6 源碼的設備樹文件imx6qdl-sabresd.dtsi,添加如下圖所示的can2節點,藍色字體是添加的內容。2、修改完后,保存退出。然后重新編譯 Linux 內核,參考第
2021-06-24 10:00:42
迅為4412開發板Linux設備樹的鏡像燒寫和源碼簡單優化教程
1 燒寫:燒寫和4412默認鏡像的燒寫類似,使用fastboot。先更新uboot,用4412默認uboot更新支持設備樹的uboot用支持設備樹的uboot燒寫。進入支持設備樹的uboot控制臺
2019-05-09 16:36:29
迅為iMX6開發板- 設備樹內核-設備樹相關文件簡要分析
”和“imx6q-topeet_9.7inch.dts”這三個。上圖中,這三個設備樹文件的名稱來看,應該是為了支持不同分辨率的屏幕的配置,除了屏幕部分的,其它部分應該是相同的,所以這里只需要分析其中一個即可(實際情況就是這樣的,感興趣可以自己對比
2020-10-21 10:51:51
迅為iMX6開發板-設備樹內核-注冊設備例程
本文檔主要講解在 iMX6Q/D/PLUS 開發板的設備樹內核(4.1.15)源碼中,注冊設備需要在設備樹文件“arch/arm/boot/dts/imx6qdl-sabresd.dtsi”中添加設備
2020-11-18 11:25:32
Linux-2.6.25移植
Linux-2.6.25移植
4月17號linux-2.6.25穩定版發布,我們(偉研科技)http://www.gzweiyan.com 將該內核移植到S3C2440平臺上,下面是我們移植的第一步:
編譯內核:1) 解壓
2009-09-20 18:15:0848
嵌入式Linux在s3c2440上的移植研究
針對嵌入式Linux在s3c2440上的移植目的,通過將嵌入式Linux 內核移植到 S3C2440 處理器的目標板上, 提出了嵌入式Linux 移植的方法與具體實現過程。編譯生成的內核在嵌入式系統中運行穩定
2011-08-15 11:30:1267
移植Linux到晶心平臺
鑒于越來越多使用者將Linux移植到晶心平臺(Andes Embedded)上(AndesCore N12或N10),本文的目的在協助使用者快速、有效率的將Linux 移植到自建的FPGA板子上(CPU是AndesCore 的 N12或N10)。筆者曾協助
2012-04-11 10:10:24841
ZedBoard移植嵌入式Linux教程(4)
設備樹用于硬件和軟件之間的信息交互,也就是將ZedBoard的硬件信息傳遞給linux內核,避免在linux內核中硬編碼而影響在其他平臺上的可移植性。設備樹一般以兩種文件格式存在,一個是dts文件
2017-02-09 03:06:11495
[深度理解嵌入式linux系統移植]深度理解嵌入式linux系統移植
-linux內核工程與編譯系統第七章-linux內核啟動流程分析第八章-linux移植準備及最小系統構建第九章-linux網卡驅動移植第十章-linux混雜設備驅動第十一章-linuxI2C驅動移植第十二章-linuxSPI驅動移植第十三章-Nand Flash 驅動移植第十四章-SD.
2021-11-02 13:21:2116
Linux內核移植教程
半導體廠商會從 Linux內核官網下載某個版本,將其移植到自己的 CPU上,測試成功后就會將其開放給該半導體廠商的 CPU開發者。開發者下載其提供的 Linux內核,然后將其移植到自己的產品上。
2023-04-19 11:20:32701
Linux驅動移植 Linux系統架構優點
系統移植 linux 驅動移植 移植是說同樣的一個 linux 操作系統,我們可以跑到不同的硬件上面,我們把操作系統移植到不同的硬件上面,這個過程叫做移植。設備驅動移植步驟,如下圖所示: 應用軟件
2023-07-27 17:06:06516
評論
查看更多