Linux 設備樹的解釋 - DTB文件格式【轉】

来源:https://www.cnblogs.com/linhaostudy/archive/2018/03/31/8682589.html
-Advertisement-
Play Games

https://blog.csdn.net/cc289123557/article/details/51782449 1、dtb文件格式 dtb文件的格式如下圖 : NOTE:不同部分順序可能不一樣 2、文件頭boot_param_header 3、保留記憶體memory reserve map 這段 ...


https://blog.csdn.net/cc289123557/article/details/51782449

1、dtb文件格式

 dtb文件的格式如下圖 :

NOTE:不同部分順序可能不一樣

 

2、文件頭boot_param_header

 1 struct boot_param_header {
 2         u32     magic;----------------用於標dtb文件頭,等於OF_DT_HEADER=“0xd00dfeed 3         u32     totalsize;------------dtb文件大小
 4         u32     off_dt_struct;--------DT structure偏移
 5         u32     off_dt_strings;-------DT strings偏移
 6         u32     off_mem_rsvmap;-------memory reserve map偏移
 7         u32     version;--------------版本號
 8         u32     last_comp_version;----相容最早版本號
 9 
10         /* version 2 fields below */
11         u32     boot_cpuid_phys;------physical CPU id
12 
13         /* version 3 fields below */
14         u32     size_dt_strings;------size of the strings block
15 
16         /* version 17 fields below */
17         u32 size_dt_struct;-----------size of the DT structure block
18 };

 

 

3、保留記憶體memory reserve map

這段保存的是一個保留記憶體映射列表,每個表由一對64位的物理地址和大小組成

 

4、device-tree structure&strings

由於某些屬性(比如compatible)在大多數節點下都會存在,為了減少dtb文件大小,就需要把這些屬性字元串只指定一個存儲位置即可,這樣每個節點的屬性只需要按照位置找到屬性字元串的位置就可以得到是哪個屬性,所以dtb把device-tree strings單獨列出來存儲,下圖是device-tree structure的格式,節點嵌套節點 

 

上面的巨集定義如下

 1 #define FDT_MAGIC   0xd00dfeed  /* 4: version, 4: total size */
 2 #define FDT_TAGSIZE sizeof(uint32_t)
 3 
 4 #define FDT_BEGIN_NODE  0x1     /* Start node: full name */
 5 #define FDT_END_NODE    0x2     /* End node */
 6 #define FDT_PROP    0x3     /* Property: name off,
 7                        size, content */
 8 #define FDT_NOP     0x4     /* nop */
 9 #define FDT_END     0x9
10 
11 #define FDT_V1_SIZE (7*sizeof(uint32_t))
12 #define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(uint32_t))
13 #define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(uint32_t))
14 #define FDT_V16_SIZE    FDT_V3_SIZE
15 #define FDT_V17_SIZE    (FDT_V16_SIZE + sizeof(uint32_t))

 

 

總圖 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 支持linux正則表達式的工具有:grep:實現查找,sed,awk:都是流式編輯器,可以實現查找和替換,並且把替換的文本輸出到屏幕上。 grep工具 grep [-cinvABC] 'word' -c:列印符合要求的行數 -i:忽略大小寫 -n:輸出符合要求的行及行號。 -v:列印不符合要求的行 ...
  • REDHAT7學習筆記 1. 安裝vmware10 安裝過程略,下載地址:鏈接: https://pan.baidu.com/s/16odKKkRYBxGWDVo1cz_wxA 註意,10以上版本不在支持32位,只有10這個版本支持32位同時支持redhat7 64位 2.下載Redhat7 64位 ...
  • 本文目錄:1.drbd配置文件2.狀態 2.1 連接狀態(connect state,cs)和複製狀態 2.2 角色狀態(roles,ro) 2.3 磁碟狀態(disk state,ds) 2.4 IO狀態標記 2.5 性能指標 1.幾種獲取狀態信息的方法 drbd有很多獲取信息的方式。在drbd8 ...
  • 約束1 非空約束not null 新增或修改記錄時該列的值不允許為空2 check約束check(sal>0) 新增或修改記錄時該列的值需要滿足check設定的條件3 主鍵約束primary key 新增或修改記錄時該列的值不能與其他記錄的該列值重覆4 唯一鍵約束unique 新增或修改記錄時該列的 ...
  • 無線通信(Wireless communication)是利用電磁波信號可以在自由空間中傳播的特性進行信息交換的一種通信方式。與有線通信相比,無線通信具有許多優點,其中最重要的優點是擺脫了電纜的約束使得設備更靈活。 ...
  • DNS伺服器 DNS伺服器用來負責將ip地址和功能變數名稱進行互相解析。 DNS伺服器的作用 簡單來說,DNS伺服器的作用就是幫助用戶使用簡單好記的功能變數名稱來訪問網路上的主機和網路服務。 DNS伺服器中的記錄類型 1.安裝DNS伺服器 (1) 打開“添加角色”,安裝DNS服務。 點擊下一步,點擊下一步,安裝,開 ...
  • systemctl 命令: systemctl 是管制服務的主要工具, 它整合了chkconfig 與 service功能於一體。示例:systemctl is-enabled iptables.service #查詢服務是否開機啟動systemctl enable *.service #開機運行服 ...
  • 其實幾篇文章都是摘自freebuf安全的文章: 高通(Qualcomm)LK源碼深度分析 高通(Qualcomm)LK源碼深度分析(二) 高通(Qualcomm)LK源碼深度分析(三) 將其整理為比較容易看的章節,方便自己以後修改lk代碼;(來自有道筆記) http://note.youdao.co ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...