1.u-boot 可以支持多種架構
可以啟動多種作業系統
user bootcode是從SD卡等外部設備
上加載的,這樣iROM就會先找到能夠啟動的外部設備
SD卡,并從核心板上的EMMC上搬運user bootcode,而
搬運的這段代碼就是我們常說的Bootloader,
ubootpak.bin主要就是一個包含了2ndboot和
uboot.bin的完整Bootloader,
u-boot 的目錄結構
arch 體系結構相關,按架構進行分類
board 開發辦相關,按廠商分類
conmmon 各種命令的實作
include 各種頭檔案和開發板組態檔
api 用于演示測驗用的代碼,通常不參與工程編譯
disk 硬碟介面程式
doc 開發使用檔案
drivers 設備驅動
examples 一些獨立運行的實體,通常不參與工程編譯
fs 能支持的檔案系統 fat 、ubifs,用于訪問帶檔案系統的存盤設備
lib用于存放庫和其他主要支持檔案程式,中斷處理、啟動相關等
net 獨立于網卡驅動的網路協議
tools 工具軟體 mkimage用于制作內核鏡像,scripts用于生成指定的config,mk,還有支持GDB的除錯工具等
post 商店自檢程式
prototype
scripts 用于生成指定的config.mk組態檔,以及一些檢查程式
環境變數設定命令
? u-boot中采用環境變數來協調各命令作業時所需的
引數及資料
? 環境變數可以存盤Bootloader在運行程序中需要用
到的可配置引數串列,以及需要傳遞給內核的引數
? 用戶可以通過printenv、setenv、saveenv進行查看、
設定、保存這些引數
? 如:
#printenv //列印環境變數
#setenv bootdelay 3 //3秒內核啟動等待
#saveenv //保存環境變數
#reset //軟重新啟動
下載鏡像:
通過串口下載到記憶體中
loady 0x48000000 loadb 0x48000000
USB命令下載
fastboot
網路命令下載(t同一局域網)
ping 10.30.10.xxx
系統啟動方式:
1.boot (外存啟動)
2.bootm 0x48000000 (記憶體啟動)
3.fastboot flash app uImage(PC)
bootm 0x48000000(開發板u-boot命令列)
commond
board_init_r()->main_loop()沒有鍵按下時直
接啟動內核:
? autoboot_command()->
run_command_list()->
parse_string_outer()->setup_string_in_str()->
parse_stream_outer()->
parse_stream()->
run_list()->
run_list_real()->
run_pipe_real()->cmd_process()->
find_cmd()
? board_init_r()->main_loop()有鍵按下時從命令
行接收命令并處理:
? cli_loop()->
parse_file_outer()->setup_file_in_str()->
parse_stream_outer()->
parse_stream()->
run_list()->
run_list_real()->
run_pipe_real()->cmd_process()->find_cmd()
三步完成U-boot命令的添加:
1.在include/configs/x6818.h中增加一項宏定義:
#define CONFIG_CMD_HELLOWORLD 1
2 、并在common/檔案夾下建立cmd_helloworld.c
3 、在common/Makefile中增加一項

make
重新下載ubootpak,bin
在命令列輸入help 和hello 查看結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131781.html
標籤:其他
上一篇:2020-09-25
