日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

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

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

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

簡單理解:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

wKgZO2kah4OAC_v2AAXcBkTz8b0911.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

這是設備樹的最終目的:內核根據(jù)DTB中的節(jié)點,動態(tài)創(chuàng)建設備實例,再讓驅動去匹配這些設備。

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

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

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

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

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

?創(chuàng)建一個名為serial@4806a000的平臺設備;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關注

    5209

    文章

    20679

    瀏覽量

    337317
  • Linux
    +關注

    關注

    88

    文章

    11821

    瀏覽量

    219598
  • 設備樹
    +關注

    關注

    0

    文章

    45

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    一張看懂阿里云網(wǎng)絡產(chǎn)品[二] 專有網(wǎng)絡VPC

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

    一張看懂USB充電協(xié)議

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

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

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

    一張看懂STM32芯片型號的命名規(guī)則

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

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

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

    一張看懂睿創(chuàng)微納2023年年報

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

    EtherCAT轉Profinet網(wǎng)關:紡織業(yè)設備互聯(lián)的“翻譯官

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

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

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

    CAN收發(fā)器:總線信號的“翻譯官

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

    工業(yè)網(wǎng)關:連接工業(yè)現(xiàn)場與數(shù)字世界的“翻譯官

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

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

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

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

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

    數(shù)據(jù)采集卡:工廠里的“信號翻譯官

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

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

    家的士兵,各自說著“德語”(PROFINET)和“日語”(CC-LINK)。協(xié)議轉換網(wǎng)關,正是這場跨品牌協(xié)作的“翻譯官”,它讓新舊設備、不同品牌的技術在統(tǒng)的產(chǎn)線中無縫對話,驅動著柔性制造的未來。? 核心方案:網(wǎng)關部署與拓撲設計
    的頭像 發(fā)表于 11-26 16:08 ?631次閱讀
    &quot;網(wǎng)關”成頂流!PROFINET轉CC-LINK,汽車產(chǎn)線的“<b class='flag-5'>翻譯官</b>”出圈記
    奉节县| 金山区| 淮北市| 焉耆| 准格尔旗| 重庆市| 呈贡县| 七台河市| 儋州市| 巴彦淖尔市| 东辽县| 军事| 双柏县| 宿松县| 西安市| 华容县| 普陀区| 利津县| 南乐县| 环江| 修武县| 万山特区| 马龙县| 徐闻县| 米泉市| 江山市| 广德县| 南丹县| 阳谷县| 晋州市| 孟村| 顺义区| 徐闻县| 沧州市| 理塘县| 双江| 连山| 鲁甸县| 思茅市| 拉孜县| 南川市|