亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1277
2022-05-29
1.何為uboot
1.1.linux系統的啟動過程
用一個動畫來說明開發板如何引導Linux啟動的,以三星Exynos4412開發板為例:
首先是三星公司在SOC內部有一部分固件BL0,通電自啟,啟動后會讀取撥碼開關,用來判斷啟動來源,SD卡還是EMMC?
然后通過目標位置讀取我們準備好的一段bootloader程序,并啟動bootloader。
再往后,BL0工作結束,任務交接給bootloader。bootloader來往內存中搬運,Linux運行需要的核心內容,Linux內核、dtb、rootfs.
內存搬運完成后,啟動Linux來工作,自己停止工作。
Linux內部被啟動后,然后加載運行環境和rootfs等
1.1.1. Bootloader
在操作系統運行之前運行的一小段代碼,用于將軟硬件環境初始化到
一個合適的狀態,為操作系統的加載和運行做準備(其本身不是操作系統)
1.2.Bootloader基本功能
-> 初始化軟硬件環境 -> 引導加載linux內核 -> 給linux內核傳參 -> 執行用戶命令
注:bootloader是啟動引導程序的統稱,嵌入式linux常用的bootloader是uboot
1.3.常見的Bootloader
2.uboot啟動盤的制作
2.1.資料準備
u-boot 鏡像(鏡像的制作,后續發出)
Ubuntu操作系統環境,可以上虛擬機
ImageWriter 工具,寫入SD
2.2。SD卡存儲結構
SD卡的存儲以扇區為單位,每個扇區的大小為512Byte, 其中零扇區存儲分區表(即分區信息),后續的扇區可自行分區和格式化;
若選擇SD卡啟動,處理器上電后從第一個扇區開始將其中的內容搬移到內存,所以我們把uboot放到從第一個扇區開始之后的空間, 之后的空間根據個人需求可進行分區和格式化
2.3.操作步驟
燒寫工具默認從0扇區開始燒寫,這里我們自己在uboot之前放一個512字節的空鏡像,因為BL0是從1扇區開始讀取,三星告訴我們的。
1、u-boot鏡像”中的u-boot-fs4412.bin拷貝到ubuntu的家目錄下
2、在終端輸入如下命令,制作一個512字節的空鏡像
$sudoddif=/dev/zeroof=zero.bincount=1
3、執行如下命令,將uboot追加到zero.bin之后生成win-u-boot-fs4412.bin
$catzero.binu-boot-fs4412.bin>win-u-boot-fs4412.bin
4、再執行如下命令,制作一個1M的空鏡像(用于擦除SD卡中原有的數據)
$sudoddif=/dev/zeroof=clear.bincount=2048
5、把生成的win-u-boot-fs4412.bin和clear.bin拷貝到windows下
6、將SD卡插入到電腦上(卡槽/USB讀卡器均可),使其在windows下識別
7、ImageWriter”下的“Win32DiskImager”,把2個鏡像文件分兩次寫入SD,之所以要clear.bin這個空文件,是防止SD卡有內容造成鏡像不正確
8、通過一下幾個圖來寫
9、SD卡插入開發板的卡槽,調整撥碼開關為SD卡啟動,查看uboot是否能正常啟動
注:uboot正常啟動后LED2燈會點亮且終端上也會打印uboot相關的信息
3.uboot的使用
3.1.uboot模式
自啟動模式
uboot啟動后若沒有用戶介入,倒計時結束后會自動執行自啟動
環境變量(bootcmd)中設置的命令(一般作加載和啟動內核)
交互模式
倒計時結束之前按下任意按鍵uboot會進入交互模式,交互模式下
用戶可輸入uboot命令
3.2.uboot幫助命令
help
查看uboot支持的所有命令
help 命令
查看當前命令的使用方法
3.3.uboot環境變量命令
printenv
打印uboot中所有的環境變量
setenv
設置指定的環境變量(保存在RAM中)
setenv 環境變量 環境變量的值
ssaveenv
保存所有環境變量到EMMC中
3.4.uboot常用環境變量
ipaddr
uboot的IP地址
serverip
服務器的IP地址(即ubuntu的IP)
bootdelay
進入自啟動模式之前倒計時的秒數
3.5.uboot網絡傳輸命令
loadb
通過Kermit協議下載文件到指定的內存地址
loadb 地址
tftp
通過tftp協議下載文件到指定的內存地址
tftp 地址 文件名
注:使用tftp之前要配置好網絡及tftp服務器
3.5.uboot存儲器訪問命令
mmc read
將EMMC中指定扇區中的內容讀取到內存中指定的地址
mmc read
addr: 內存地址
blk#: EMMC中的扇區編號
cnt: 讀取的扇區的個數
mmc write
將內存中指定地址中的內容寫入到EMMC中指定的扇區
mmc write
3.6.uboot自啟動環境變量
bootcmd
自啟動的環境變量
該環境變量可以設置成一到多個uboot命令的集合(若有多個使用;分割)
自啟動模式下uboot就會按照bootcmd中命令的順序逐條執行
eg:
setenv bootcmd tftp 40008000 interface.bin;go 40008000
saveenv
下一結,實戰
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。