最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Linux之設備樹解耦架構解讀-V1.0

2023-07-18 17:11 作者:補給站Linux內核  | 我要投稿

術語和縮略語


本文檔使用了以下術語和縮略語

Dts:DTS即Device Tree Source,是一個文本形式的文件,用于描述硬件信息。一般都是固定信息,無法變更,無法overlay。

Dtsi:可以理解為dts的公共部分,添加、變更非常靈活。Dtsi包含在dts中。

Dtb:Dtb編譯出來的二進制

Dtbo:Overlay編譯出來的二進制

dtbo-base:指定overlay是已哪個dtb為base來覆蓋的。

Node:樹的節(jié)點

Property:屬性



一、設備樹(Device Tree)簡介

1. 設備樹由來

linux內核源碼中,之前充斥著大量的平臺相關(platform Device)配置,而這些代碼大多是雜亂且重復的,這使得ARM體系結構的代碼維護者和內核維護者在發(fā)布一個新的版本的時候有大量的工作要做,以至于LinusTorvalds 在2011年3月17日的ARM Linux郵件列表中宣稱“Gaah.Guys,this whole ARM thing is a f*cking pain in the ass”這使得整個ARM社區(qū)不得不重新慎重考慮平臺配置,于是設備樹(Device Tree,DT)被ARM社區(qū)采用。需要說明的是,設備樹最初是由開發(fā)固件(Open Firmware)使用的用來向客戶程序(通常是一個操作系統(tǒng))傳遞數(shù)據(jù)的通信方法中的一部分內容。在運行時,客戶程序通過設備樹發(fā)現(xiàn)設備的拓撲結構,這樣就不需要把硬件信息硬編碼到程序中。


2. 設備樹的作用

設備樹是一個描述硬件的數(shù)據(jù)結構,甚至你可以將其看成一個大結構體(這個結構體就是平臺,成員就是具體的設備),需要注意的是設備樹并不能解決所有的硬件配置問題(例如:機器識別),它只是提供一種語言,將硬件的配置從linux內核的源碼中提取出來。


Linux使用設備樹的主要原因如下

A:平臺識別

B:實時配置

C:設備植入


二、設備樹解耦目標


目標一 vendor相關修改,完全獨立出來,禁止在soc原生的dtsi中修改,只允許以dtbo的方式存在;


目標二 同基線項目dtbo要共二進制


三、設備樹解耦框架設計


設備樹識別原理及設備樹共二進制原理

項目號(Project No)與 PCB ID兩個變量同時與dtbo中的兩個屬性“dtsi_No”“pcb_No”完全匹配,就可以找到對應的dtbo文件。而dtbo可以通過Makefile的控制打包到dtbo.img中,這樣就實現(xiàn)了共二進制。


四、設備樹代碼架構




【文章福利】小編推薦自己的Linux內核技術交流群:【749907784】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!?。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ?




五、設備樹overlay規(guī)則


該節(jié)內容為overlay機制原生規(guī)則,羅列出來幫助驅動工程師解決各種異常問題。

規(guī)則1:對于同一個節(jié)點的設置情況,dts中的配置會覆蓋dtsi中的配置;

規(guī)則2:對于節(jié)點的修改,先引用后修改;例如原生節(jié)點定義如下:



需要在reserved-memory節(jié)點中添加一個新的節(jié)點或者直接修改reserved-memory節(jié)點的屬性,都需要先引用reserved_memory節(jié)點(注意節(jié)點的引用名與節(jié)點名可以不一致)



如上案例中,引用reserved-memory節(jié)點,并刪除了ranges屬性,刪除了hyp_mem節(jié)點,新增了kboot_uboot_logmem節(jié)點;


規(guī)則3:只有引用申明的節(jié)點,在dtsi中“&節(jié)點名”才會生效,否則引用點將不生效;例如:firmware節(jié)點下fstab 節(jié)點的定義如下



firmware:firmware中“:”之前的內容為引用申明。只有申明后才可以在其他地方引用。Firmware下的fstab 節(jié)點沒有引用聲明,在其他位置就不可以引用。如果要修改fstab節(jié)點里的屬性,引用firmware節(jié)點然后修改其中屬性,案例如下:



對于同一個節(jié)點的設置情況,dts文件中的內容會覆蓋dtsi中的。



六、調試手段


在調試的過程中,沒有達到預期時,需要先確定修改有沒有編譯到對應的dtbo.img中,就需要反編譯dtbo.img


1. 反編譯工具

反編譯工具代碼中自帶,只需要初始化一下環(huán)境變量就可以使用。初始化指令如下:



2. 反編譯dtb.img

3.?反編譯dtbo.img


原文作者:內核工匠


Linux之設備樹解耦架構解讀-V1.0的評論 (共 條)

分享到微博請遵守國家法律
锡林郭勒盟| 南皮县| 全南县| 磐石市| 青阳县| 汽车| 剑川县| 兴义市| 天门市| 余江县| 永年县| 聂荣县| 凤山市| 安顺市| 砀山县| 荃湾区| 桃江县| 广灵县| 封开县| 临安市| 楚雄市| 分宜县| 南郑县| 即墨市| 略阳县| 渭南市| 公主岭市| 从江县| 汾西县| 渝中区| 和林格尔县| 巴塘县| 大同市| 宜春市| 淮北市| 上蔡县| 奎屯市| 武强县| 穆棱市| 虹口区| 武义县|