uboot目錄結構

来源:http://www.cnblogs.com/80scd/archive/2016/09/13/5868980.html
-Advertisement-
Play Games

本來是開始分析uboot代碼的,但是無論是教材還是網上資料都對於我最新下的 uboot原碼結構不同,對於還是小白的我不容易找到相應的文件,下麵是uboot版本中文件組織結構的改變,,,,, u-boot版本情況 網站:http://ftp.denx.de/pub/u-boot/ 1、版本號變化: 2 ...


本來是開始分析uboot代碼的,但是無論是教材還是網上資料都對於我最新下的 uboot原碼結構不同,對於還是小白的我不容易找到相應的文件,下麵是uboot版本中文件組織結構的改變,,,,,

u-boot版本情況

網站:http://ftp.denx.de/pub/u-boot/

1、版本號變化:

2008年8月及以前

按版本號命名:u-boot-1.3.4.tar.bz2(2008年8月更新)

2008年8月以後均按日期命名。

目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新)

2、目錄結構變化:

u-boot目錄結構主要經歷過2次變化,u-boot版本第一次從u-boot-1.3.2開始發生變化,主要增加了api的內容;變化最大的是第二次,從2010.6版本開始。

u-boot-2010.03及以前版本
├── api                存放uboot提供的介面函數
├── board              根據不同開發板定製的代碼,代碼也不少
├── common             通用的代碼,涵蓋各個方面,已命令行處理為主
├── cpu                與體繫結構相關的代碼,uboot的重頭戲
├── disk                磁碟分區相關代碼
├── doc                文檔,一堆README開頭的文件
├── drivers            驅動,很豐富,每種類型的設備驅動占用一個子目錄
├── examples           示常式序
├── fs                 文件系統,支持嵌入式開發板常見的文件系統
├── include            頭文件,已通用的頭文件為主
├── lib_【arch】        與體繫結構相關的通用庫文件
├── nand_spl           NAND存儲器相關代碼
├── net                網路相關代碼,小型的協議棧
├── onenand_ipl
├── post               加電自檢程式
└── tools              輔助程式,用於編譯和檢查uboot目標文件

從u-boot-2010.06版本開始把體繫結構相關的內容合併,原先的cpu與lib_arch內容全部納入arch中,並且其中增加inlcude文件夾;分離出通用庫文件lib。

u-boot-2010.06及以後版本
├── api                存放uboot提供的介面函數
├── arch               與體繫結構相關的代碼,uboot的重頭戲
├── board              根據不同開發板定製的代碼,代碼也不少
├── common             通用的代碼,涵蓋各個方面,已命令行處理為主
├── disk                磁碟分區相關代碼
├── doc                文檔,一堆README開頭的文件
├── drivers            驅動,很豐富,每種類型的設備驅動占用一個子目錄
├── examples           示常式序
├── fs                 文件系統,支持嵌入式開發板常見的文件系統
├── include            頭文件,已通用的頭文件為主
├── lib                通用庫文件
├── nand_spl           NAND存儲器相關代碼
├── net                網路相關代碼,小型的協議棧
├── onenand_ipl
├── post               加電自檢程式
└── tools              輔助程式,用於編譯和檢查uboot目標文件

3、移植工作涉及的目錄情況

從uboot代碼根目錄,可以看出其已經非常龐大,功能也很豐富。
移植工作最主要的是看對應的處理器和開發板代碼,2010.06版本以後處理器相關的代碼集中在arch、board目錄。(以前版本主要在cpu和board目錄)
先看一下arch目錄:
arch
├── arm
├── avr32
├── blackfin
├── i386
├── m68k
├── microblaze
├── mips
├── nios2
├── powerpc
├── sh
└── sparc

arch目錄內容比以前的版本乾凈,每個子目錄代表一個處理器類型,子目錄名稱就是處理器的類型名稱。
我們移植的是arm的處理器,所以參考一下arch/arm目錄:

arch/arm
├── cpu
├── include
└── lib

arch/arm目錄下有三個目錄,其他的處理器目錄下也是這個結構:
cpu子目錄對應一種處理器的不同產品型號或者系列;
include子目錄是處理器用到的頭文件;
lib目錄對應用到處理器公用的代碼;

下麵看看cpu下的內容,arch/arm/cpu目錄下的內容:

arch/arm/cpu
├── arm720t
├── arm920t          我們CPU的類型
├── arm925t
├── arm926ejs
├── arm946es
├── arm1136
├── arm1176
├── arm_cortexa8
├── arm_intcm
├── ixp
├── lh7a40x
├── pxa
├── s3c44b0
└── sa1100          

arch/arm/arm/cpu
├── a320
├── at91
├── at91rm9200
├── ep93xx
├── imx
├── ks8659
├── s3c24x0
├── config.mk
├── cpu.c
├── Makefile
├── start.S          整個uboot代碼入口點
└── u-boot.lds

u-boot.lds是ld程式也就是連接器的腳本文件,這個文件描述瞭如何連接目標文件,ld程式會根據這個文件的指示按照需求把不同的目標文件連接在一起生成供燒寫到開發板的程式。
該文件放在board對應的目錄中。

4、移植u-boot的版本選擇情況

由於u-boot的各版本沒有重大變化,各版本移植起來基本相同,也正因為如此,大多數版本均有人移植過,主要是arm體繫結構的。
如cortex A8使用 u-boot-1.3.4;cortex M3 上u-boot-1.1.6、u-boot-1.2.0等均有人移植過。


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

-Advertisement-
Play Games
更多相關文章
  • 查找阻塞進程: SELECT blocking_session_id '阻塞進程的ID', wait_duration_ms '等待時間(毫秒)', session_id '(會話ID)' FROM sys.dm_os_waiting_tasks 殺死阻塞進程: KILL 57 ...
  • 接上篇:捲積神經網路對圖片分類-中 9 ReLU(Rectified Linear Units) Layers 在每個捲積層之後,會馬上進入一個激勵層,調用一種激勵函數來加入非線性因素,決絕線性不可分的問題。這裡我們選擇的激勵函數方式叫做ReLU, 他的方程是這樣f(x) = max(0, x),就 ...
  • 要得到一組數據的中位數(例如某個地區或某家公司的收入中位數),我們首先要將這一任務細分為3個小任務: 舉例說明: 建表語句: 小任務1的查詢語句: 小任務2的查詢語句: 小任務3的查詢語句: 至此,我們就找到瞭如何從一組數據中獲得中位數的方法。 下麵,來介紹另外一種優化排名語句的方法。 我們都知道如 ...
  • 今天在macOS 系統下搭建 Java開發環境,需要配置MySQL,按照Windows的習慣,使用Navicat for MySQL 操作比較習慣。然後找不到比較好的破解版,這裡介紹一個老版的,還是英文版的工具安裝破解說明。 1. 官網下載地址: http://download3.navicat.c ...
  • 前言 有些時候,我們可能會需要定時執行一下批處理來達到一定的目的,比如Oracle資料庫的定時備份,當然Oracle也可以通過Rman實現定時備份。我們大多數的時候是通過操作系統的計劃任務實現定時執行批處理。 但是當我們想要獲取相關執行細節,MSSQL的作業是一個很好的選擇。 具體方案 首先我們需要... ...
  • I/O: 系統設定 預設輸入設備:標準輸入,STDIN,0 預設輸出設備:標準輸出,STDOUT,1 標準錯誤輸出:STDERR,2 屬於不同的數據流 標準輸入:鍵盤 標準輸出和錯誤輸出:顯示器 I/O重定向: 輸出重定向: > :覆蓋輸出 >> :追加輸出 2>:錯誤輸出 2>>:追加錯誤輸出 正 ...
  • Nginx("engine x")是一款輕量級的HTTP和反向代理伺服器。相比於Apache、lighttpd等,它具有占有記憶體少、併發能力強、穩定性高等優勢。它最常見的用途就是提供反向代理服務。 在Linux下我們需要下載Nginx的源代碼包並且手動編譯,而不是用包管理工具,例如Yum、Aptit ...
  • 一、在伺服器上打開 22、80、9011埠: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp --sport 9011 -j ACCEPT iptables -A INPUT -p tcp --dp ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...