五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

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的評論 (共 條)

分享到微博請遵守國家法律
行唐县| 玉山县| 凌云县| 隆林| 屏东市| 大名县| 太仆寺旗| 贵溪市| 枣强县| 靖宇县| 隆德县| 红安县| 抚远县| 宜川县| 桃园市| 竹北市| 道孚县| 应城市| 辛集市| 即墨市| 海晏县| 十堰市| 新平| 万源市| 拉萨市| 榆中县| 盐城市| 小金县| 元江| 永寿县| 杭锦后旗| 崇义县| 四川省| 洛川县| 天镇县| 东阳市| 即墨市| 太仆寺旗| 关岭| 合江县| 潼南县|