U-boot開發學習筆記
U-Boot 的原始碼頂層目錄說明
目錄 | 特性 | 解 釋 說 明 |
---|---|---|
board | 平臺依賴 | 存放電路板相關的目錄檔案,例如:RPXlite(mpc8xx)、smdk2410(arm920t)、sc520_cdp(x86) 等目錄 |
cpu | 平臺依賴 | 存放 CPU 相關的目錄檔案, 例如: mpc8xx、 ppc4xx、 arm720t、 arm920t、 xscale、i386 等目錄 |
lib_ppc | 平臺依賴 | 存放對 PowerPC 體系結構通用的檔案, 主要用於實現 PowerPC 平臺通用的函式 |
lib_arm | 平臺依賴 | 存放對 ARM 體系結構通用的檔案,主要用於實現 ARM 平臺通用的函式 |
lib_i386 | 平臺依賴 | 存放對 X86 體系結構通用的檔案,主要用於實現 X86 平臺通用的函式 |
include | 通用 | 標頭檔案和開發板配置檔案,所有開發板的配置檔案都在 configs 目錄下 |
common | 通用 | 通用的多功能函式實現 |
lib_generic | 通用 | 通用庫函式的實現 |
Net | 通用 | 存放網路的程式 |
Fs | 通用 | 存放檔案系統的程式 |
Post | 通用 | 存放上電自檢程式 |
drivers | 通用 | 通用的裝置驅動程式,主要有乙太網介面的驅動 |
Disk | 通用 | 硬碟介面程式 |
Rtc | 通用 | RTC 的驅動程式 |
Dtt | 通用 | 數字溫度測量器或者感測器的驅動 |
examples | 應用例程 | 一些獨立執行的應用程式的例子,例如 helloworld |
tools | 工具 | 存放製作 S-Record 或者 U-Boot 格式的映像等工具,例如 mkimage Doc 文件 開發使用文件 |
嵌入式學院—《嵌入式 Linux 系統開發標準教程》——第 6 章、Bootloader
U-Boot 的編譯
U-Boot 的原始碼是通過 GCC 和 Makefile 組織編譯的。 頂層目錄下的 Makefile 首先可以設定開發板的定義,然後遞迴地呼叫各級子目錄下的 Makefile,最後把編譯過的程式連結成 U-Boot 映像。
1.頂層目錄下的 Makefile
它負責 U-Boot 整體配置編譯。按照配置的順序閱讀其中關鍵的幾行。
每一種開發板在 Makefile 都需要有板子配置的定義。
例如 smdk2410 開發板的定義如下
smdk2410_config :unconfig
@./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
執行配置 U-Boot 的命令 make smdk2410_config,通過./mkconfig 指令碼生成
include/config.mk 的配置檔案。檔案內容正是根據 Makefile 對開發板的配置生成的。
ARCH = arm
CPU = arm920t
BOARD = smdk2410
SOC = s3c24x0
2.開發板配置標頭檔案
除了編譯過程 Makefile 以外,還要在程式中為開發板定義配置選項或者引數。這個標頭檔案是 include/configs/<board_name>.h。 <board_name>用相應的 BOARD 定義代替。
這個標頭檔案中主要定義了兩類變數。
一類是選項,字首是 CONFIG_,用來選擇處理器、裝置介面、命令、屬性等。
例如:
#define CONFIG_ARM920T 1
#define CONFIG_DRIVER_CS8900 1
另一類是引數,字首是 CFG_,用來定義匯流排頻率、串列埠波特率、Flash 地址等引數。
例如:
#define CFG_FLASH_BASE 0x00000000
#define CFG_PROMPT "=>"
3.編譯結果
根據對 Makefile 的分析,
編譯分為 2 步。
第 1 步配置,
例如: make smdk2410_config
第 2 步編譯,執行 make 就可以了。
編譯完成後,可以得到 U-Boot 各種格式的映像檔案和符號表
文 件 名 稱 | 說明 |
---|---|
System.map | U-Boot 映像的符號表 |
u-boot.bin | U-Boot 映像原始的二進位制格式 |
u-boot | U-Boot 映像的 ELF 格式 |
u-boot.srec | U-Boot 映像的 S-Record 格式 |
一般 u-boot.bin 最為常用,直接按照二進位制格式下載,並且按照絕對地址燒寫到Flash 中就可以了。
U-Boot移植
(1)在頂層 Makefile 中為開發板新增新的配置選項
(2)建立一個新目錄存放開發板相關的程式碼,並且新增檔案
(3)為開發板新增新的配置檔案
(4)配置開發板
(5)編譯 U-Boot
(6)新增驅動或者功能選項
(7)除錯 U-Boot 原始碼,直到 U-Boot 在開發板上能夠正常啟動
相關文章
- Rest API 開發 學習筆記RESTAPI筆記
- Android 開發學習筆記Android筆記
- NDK學習筆記-NDK開發流程筆記
- JS開發步驟學習筆記JS筆記
- Web開發學習筆記——HTTP 概述Web筆記HTTP
- Kinect開發學習筆記之(二)Kinect開發學習資源整理筆記
- 微信小程式開發學習筆記[4]微信小程式筆記
- 微信小程式開發學習筆記[2]微信小程式筆記
- 微信小程式開發學習筆記[3]微信小程式筆記
- dubbo學習筆記---dubbo開發實戰筆記
- iOS-Socket開發學習筆記-1iOS筆記
- perl學習筆記--搭建開發環境筆記開發環境
- [Erlang 學習筆記] Erlang開發建議筆記
- R/3 ABAP開發學習筆記(轉)筆記
- springboot 開發學習筆記1Spring Boot筆記
- laravel學習筆記之開發環境搭建Laravel筆記開發環境
- substrate學習筆記9:開發智慧合約筆記
- Django之“學習筆記”網站開發1Django筆記網站
- Open CV 學習開發筆記之概述(一)筆記
- 觸發器學習筆記觸發器筆記
- Kinect開發學習筆記之(三)Kinect開發環境配置筆記開發環境
- Java_EE企業級開發學習筆記——spring學習筆記第二章Java筆記Spring
- Python Web 開發學習 - 學習筆記(2)- 啟動PythonPythonWeb筆記
- Python 開發簡單爬蟲 (學習筆記)Python爬蟲筆記
- Web 開發學習筆記(4) — 重定向與HSTSWeb筆記
- Web 開發學習筆記(5) — 抽象出 Page 類Web筆記抽象
- Dubbo 學習筆記(五) 開發環境常用技巧筆記開發環境
- Java_EE企業級開發學習筆記——spring學習筆記第一章Java筆記Spring
- Java_EE企業級開發學習筆記——spring學習筆記第四章Java筆記Spring
- numpy的學習筆記\pandas學習筆記筆記
- 學習《PLSQL開發指南》筆記—— SQLPLUS建立過程前的學習SQL筆記
- 《筆記》之學習高併發筆記
- repuest轉發學習筆記一筆記
- JAVA 學習併發筆記(一)Java筆記
- (一)Java併發學習筆記Java筆記
- PHP - 《高效能php應用開發》學習筆記PHP筆記
- php 學習筆記之搭建開發環境(mac版)PHP筆記開發環境Mac
- tensorflow學習筆記1——mac開發環境配置筆記Mac開發環境