国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux設備樹到底是啥?一張圖看懂硬件適配的「翻譯官」

jf_44130326 ? 來源:Linux1024 ? 2026-02-09 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

你有沒有想過:同一份Linux內核鏡像,為啥能在不同型號的開發板上跑起來?比如一塊ARM架構的開發板,今天換個顯示屏、明天加個傳感器,內核不用重新編譯就能識別新硬件——這背后,設備樹(Devicetree功不可沒。

很多嵌入式工程師剛接觸設備樹時,總被節點”“屬性”“綁定規范這些術語繞暈。其實設備樹的本質特別簡單:它就是硬件和內核之間的翻譯官,把硬件的長相能力寫成標準化的文件,讓內核不用硬編碼就能讀懂硬件。

今天咱們用人話+流程圖拆解設備樹,從為什么需要它內核怎么用它,一次講透核心邏輯。

一、先搞懂:沒有設備樹時,Linux有多

在設備樹出現前,Linux適配硬件靠的是硬編碼”——把硬件參數(比如串口地址、中斷號)直接寫進內核代碼里。比如要支持一款新開發板,工程師得:

1.在內核中新增一個板級文件,寫死該板子的所有硬件配置;

2.編譯內核時選擇對應板子的配置,生成專屬鏡像;

3.要是換個硬件(比如把串口從UART1換成UART2),就得修改代碼、重新編譯。

這種方式的痛點太明顯了:一款硬件對應一個內核鏡像,嵌入式廠商要維護幾十上百個鏡像,成本極高。

而設備樹的出現,徹底解決了這個問題:它把硬件描述從內核中剝離出來,做成獨立的DTB文件(設備樹二進制文件)。內核啟動時讀取DTB,就能動態識別硬件——從此實現一個內核鏡像適配N種硬件。

二、設備樹的核心:3層結構,像給硬件畫家譜

設備樹的結構特別像一棵硬件家譜,最核心的是3個概念:節點(Node、屬性(Property、路徑(Path。咱們用一個簡單的例子看懂:

/* 設備樹源碼(DTS文件)示例 *// {         //根節點:代表整個硬件系統  compatible ="ti,omap3-beagleboard","ti,omap3"; //屬性:告訴內核這是哪款硬件   chosen {    //子節點:專門存儲運行時配置    bootargs ="console=ttyS0,115200"; //屬性:內核命令行(指定串口控制臺)  };  soc {      //子節點:代表SoC(系統級芯片)    compatible ="simple-bus"; //屬性:說明這是“簡單內存映射總線”       uart0: serial@4806a000{ //子節點:串口設備(@后是基地址)      compatible ="ti,omap3-uart"; //屬性:告訴內核用什么驅動      reg = <0x4806a0000x1000>;  //屬性:地址范圍(基地址+大?。?/span>      interrupts = <72>;      //屬性:中斷號    };  };};

簡單理解:

?節點:對應一個硬件模塊(如根節點=整個系統、uart0 =串口),用節點名@地址命名(地址可選,用于區分同類型設備);

?屬性:描述硬件的具體參數,格式是=(值可以是字符串、數字、二進制),比如compatible設備兼容性標識reg內存/ IO地址;

?路徑:像文件路徑一樣定位節點,比如串口節點的路徑是/soc/uart0。

記住一個關鍵原則:設備樹只描述硬件有什么、參數是多少,不包含任何驅動邏輯——驅動靠匹配設備樹屬性來關聯硬件。

三、內核怎么用設備樹?3步流程+ 1張圖講透

設備樹的生命周期從編譯內核使用,分為3個關鍵階段。咱們結合流程圖,一步步看內核是如何通過設備樹識別并控制硬件的。

第一步:設備樹文件的變身(編譯階段)

工程師寫的是DTS文件(設備樹源碼,人類可讀),但內核只能識別DTB文件(設備樹二進制,機器可讀)。這個轉換靠工具dtcDevice Tree Compiler)完成:

dtc -Idts -O dtb -o my_board.dtbmy_board.dts

最終生成的DTB文件,會和內核鏡像一起放在開發板的啟動分區(比如boot分區)。

第二步:啟動時傳遞DTB(引導階段)

開發板上電后,先運行引導程序(如U-Boot,引導程序做兩件關鍵的事:

1.初始化硬件(比如內存、串口);

2.DTB文件加載到內存的指定地址,然后啟動內核,并告訴內核“DTB在內存的哪里

這一步就像:引導程序把硬件家譜DTB)遞給內核,說這是你要管理的硬件,先看看說明書

第三步:內核解析DTB,創建設備(內核初始化階段)

這是最核心的階段,內核通過3個關鍵步驟,把DTB中的硬件描述變成可操作的設備實例。咱們用流程圖+通俗解釋拆解:

wKgZO2kah4OAC_v2AAXcBkTz8b0911.png

咱們把每個階段掰開揉碎講:

階段1:平臺識別——內核先搞清楚我跑在哪個板子上

內核啟動后,首先要確定自己跑在什么硬件上(比如是BeagleBoard還是樹莓派),這一步靠根節點的compatible屬性。

比如根節點的compatible = "ti,omap3-beagleboard", "ti,omap3",這個屬性是從具體到通用的列表:

?第一個值“ti,omap3-beagleboard”:精確匹配“TIomap3系列BeagleBoard開發板

?第二個值“ti,omap3”:兼容“TIomap3系列所有板子

內核會遍歷自己的平臺描述庫,找到和compatible最匹配的項——比如找到BeagleBoard的初始化邏輯,就執行對應的硬件初始化(如設置時鐘電源)。

階段2:運行時配置——內核獲取啟動參數

設備樹中的/chosen節點是專門給內核傳參數的通道,最常用的是bootargs屬性(內核命令行)。

比如bootargs = "console=ttyS0,115200 loglevel=8",意思是:

?console=ttyS0,115200:把串口0UART0)作為控制臺,波特率115200

?loglevel=8:顯示所有級別的內核日志(方便調試)。

內核會解析這些參數,完成基礎配置——比如初始化串口控制臺,讓開發者能通過串口看到內核啟動日志。

階段3:創建設備——內核把硬件描述變成可操作設備

這是設備樹的最終目的:內核根據DTB中的節點,動態創建設備實例,再讓驅動去匹配這些設備。

關鍵函數是of_platform_populate(),它的邏輯很簡單:

1.從指定節點(默認是根節點)開始,遍歷所有子節點;

2.對每個包含compatible屬性的節點,創建一個平臺設備platform_device);

3.驅動通過of_match_table(設備樹匹配表),根據compatible屬性找到對應的設備,完成驅動-設備綁定。

舉個例子:串口節點uart0compatible = "ti,omap3-uart",內核會:

?創建一個名為serial@4806a000的平臺設備;

?串口驅動的of_match_table中,正好有“ti,omap3-uart”這一項,于是驅動和設備綁定;

?綁定后,驅動就能通過設備樹中的reg(地址)、interrupts(中斷號),控制串口硬件收發數據。

四、記住3個關鍵問題,避免踩坑

1.設備樹能替代驅動嗎?

不能!設備樹只描述硬件參數,驅動才是控制硬件的大腦。比如設備樹告訴內核串口在0x4806a000地址,但怎么發數據、收數據,還得靠串口驅動實現。

2.compatible屬性寫錯了會怎樣?

驅動找不到設備!比如把“ti,omap3-uart”寫成“ti,omap4-uart”,串口驅動的匹配表中沒有這個值,設備就會處于未綁定狀態,無法使用。

3.DTB文件放錯位置會怎樣?

內核啟動失?。∫龑С绦蛉绻麤]加載DTB,或者內核沒找到DTB,會報Cannot find device tree”錯誤,然后卡住——因為內核不知道自己要管理什么硬件。

五、總結:設備樹的本質是硬件標準化描述

其實設備樹的核心價值,就在于標準化

?對硬件廠商:按規范寫DTS,不用改內核代碼;

?對內核開發者:按規范寫驅動,不用適配每款硬件;

?對嵌入式工程師:換硬件只換DTB,不用重新編譯內核。

記住一句話:設備樹是硬件的說明書,驅動是讀懂說明書并操作硬件的人——兩者配合,才能讓Linux在千變萬化的硬件上跑起來。

如果看完還是有點暈,建議找一款簡單的開發板,打開它的DTS文件,對照本文的流程逐行看:根節點的compatible、chosen節點的bootargs、外設節點的reginterrupts——慢慢就會發現,設備樹其實沒那么復雜~

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5198

    文章

    20442

    瀏覽量

    333961
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219001
  • 設備樹
    +關注

    關注

    0

    文章

    45

    瀏覽量

    3572
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    水表界的“翻譯官”:讓CCLinkIE和Modbus TCP“無障礙聊天”!

    ,耐達訊通信技術CCLinkIE轉Modbus TCP網關堪稱“設備和諧大使”。它無需替換舊設備,就能讓新老系統高效協作,為工程師省下大筆改造費用,還帶來靈活的系統升級方案。當你的車間出現“協議吵架”時,不妨請這位“翻譯官”來場
    發表于 07-10 15:43

    一張看懂阿里云網絡產品[二] 專有網絡VPC

    摘要: 一張看懂網絡產品系列文章,讓用戶用最少的時間了解網絡產品,本文章是第二篇 專有網絡VPC一張
    發表于 01-08 12:34

    一張看懂USB充電協議

    一張看懂Battery Charging Specification 1.2(BC1.2)USB充電協議作者:AirCity簡介如果你做過基帶工程師,肯定分析過那些不充電的客退手機。如果你發現
    發表于 09-15 08:45

    一張看懂ERP和MES的區別分析資料下載

    一張看懂ERP和MES的區別
    發表于 01-04 15:44 ?14次下載

    一張看懂STM32芯片型號的命名規則

    一張看懂STM32芯片型號的命名規則
    發表于 12-02 16:51 ?55次下載
    <b class='flag-5'>一張</b><b class='flag-5'>圖</b><b class='flag-5'>看懂</b>STM32芯片型號的命名規則

    一張看懂“PCB設計考慮的因素”

    一張看懂“PCB設計考慮的因素”
    的頭像 發表于 11-23 18:15 ?2033次閱讀
    <b class='flag-5'>一張</b><b class='flag-5'>圖</b><b class='flag-5'>看懂</b>“PCB設計考慮的因素”

    一張看懂睿創微納2023年年報

    一張看懂睿創微納2023年年報
    的頭像 發表于 04-23 10:38 ?1128次閱讀
    <b class='flag-5'>一張</b><b class='flag-5'>圖</b><b class='flag-5'>看懂</b>睿創微納2023年年報

    EtherCAT轉Profinet網關:紡織業設備互聯的“翻譯官

    EtherCAT轉Profinet網關不僅是紡織車間設備互聯的“翻譯官”,更是推動生產模式革新的“加速器”。其價值在于打破協議壁壘的同時,為紡織業的精益化、柔性化生產提供了可落地的技術路徑。對于亟待轉型升級的紡織企業而言,這
    的頭像 發表于 04-28 15:39 ?1771次閱讀
    EtherCAT轉Profinet網關:紡織業<b class='flag-5'>設備</b>互聯的“<b class='flag-5'>翻譯官</b>”

    光模塊科普:1×9與SFP,如何選擇適合你的“信號翻譯官”?

    在光纖通信網絡中,光模塊如同“信號翻譯官”,負責將電信號與光信號相互轉換。
    的頭像 發表于 05-27 15:27 ?654次閱讀

    CAN收發器:總線信號的“翻譯官

    在CAN總線通信中,CAN收發器(Transceiver)扮演著至關重要的角色——它就像位“翻譯官”,負責將微控制器(MCU)的數字信號轉換為總線上的差分信號,同時把總線信號翻譯回MCU能理解
    的頭像 發表于 06-27 11:34 ?2258次閱讀
    CAN收發器:總線信號的“<b class='flag-5'>翻譯官</b>”

    工業網關:連接工業現場與數字世界的“翻譯官

    。這時,工業網關就登場了,它就像個專業的“翻譯官”,不僅能讓這些設備“開口說話”,還能把它們的數據安全、高效地傳送到更遠的地方,甚至云端。那么,工業網關到底能用在哪些場景上呢?今天咱
    的頭像 發表于 09-24 14:45 ?666次閱讀
    工業網關:連接工業現場與數字世界的“<b class='flag-5'>翻譯官</b>”

    逆變器是什么?廣州郵科如何用“電力翻譯官”守護通信命脈

    在移動辦公、應急通信和離網供電場景中,總有個“隱形英雄”在默默工作——它能把12V或24V的直流電“翻譯”成220V交流電,讓手機、服務器甚至基站持續運轉。這個設備就是逆變器,而廣州郵科網絡
    的頭像 發表于 11-06 10:37 ?1222次閱讀
    逆變器是什么?廣州郵科如何用“電力<b class='flag-5'>翻譯官</b>”守護通信命脈

    智能“翻譯官”:MODBUS轉PROFIBUS網關,解鎖攪拌站無人裝載新紀元

    智能“翻譯官”:MODBUS轉PROFIBUS網關,解鎖攪拌站無人裝載新紀元 在工業自動化的浪潮中,數據協議的“語言不通”常常成為系統聯通的絆腳石。在家現代化攪拌站內,就上演了這樣場精彩的“溝通
    的頭像 發表于 11-21 14:38 ?251次閱讀
    智能“<b class='flag-5'>翻譯官</b>”:MODBUS轉PROFIBUS網關,解鎖攪拌站無人裝載新紀元

    數據采集卡:工廠里的“信號翻譯官

    數據采集卡:工廠里的“信號翻譯官
    的頭像 發表于 11-21 16:53 ?620次閱讀
    數據采集卡:工廠里的“信號<b class='flag-5'>翻譯官</b>”

    &quot;網關”成頂流!PROFINET轉CC-LINK,汽車產線的“翻譯官”出圈記

    家的士兵,各自說著“德語”(PROFINET)和“日語”(CC-LINK)。協議轉換網關,正是這場跨品牌協作的“翻譯官”,它讓新舊設備、不同品牌的技術在統的產線中無縫對話,驅動著柔性制造的未來。? 核心方案:網關部署與拓撲設計
    的頭像 發表于 11-26 16:08 ?296次閱讀
    &quot;網關”成頂流!PROFINET轉CC-LINK,汽車產線的“<b class='flag-5'>翻譯官</b>”出圈記