1. 程式人生 > 其它 >uboot使用教程及命令引數說明

uboot使用教程及命令引數說明

uboot是bootloader的一種,主要是用於引導核心啟動.

uboot除此功能外, 還帶有很多其它功能. 功能是通過命令來呼叫.

uboot的命令:

help //列出當前uboot所有支援的命令

help 命令 //檢視指定命令的幫助

reset //重啟uboot

bootm //用於啟動核心

用法: bootm 0x42000000 //從記憶體地址0x42000000啟動核心, 啟動前需把核心映象uImage存放到指定的記憶體地址

printenv //列印所有環境變數的值

printenv 環境變數名 //檢視指定的環境變數值

常用環境變數:

bootdelay // uboot啟動後, 倒計時多少秒後自動執行環境變數bootcmd的語句

bootcmd // 倒計時到0後,自動執行裡面的語句

bootargs // 是用於提供給核心的啟動引數語句

setenv //設定/修改/刪除環境變數的值

用法:

setenv 環境變數名 //刪除指定的環境變數

setenv myargs "hello" //設定環境變數myargs=hello, 如果環境變數沒有會創建出來,如果已存則會修改它的值

saveenv //儲存環境變數,環境變數修改過後必須執行此命令才可以儲存起來,否則重啟後環境變數就恢復了.

loady //用於從uart線下載檔案到板上記憶體裡(loadb, loads, loadx基本一樣)

用法:

loady 0x40008000 //把下載的檔案從記憶體地址0x40008000開始存放

執行"loady 0x40008000"後, uboot就會進入等待狀態,等著接收資料

minicom具有通過uart傳輸檔案的功能.

按"ctrl+a", 鬆手後再按"s", 選擇"ymodem", 在彈出的介面裡按空格鍵選中要傳的檔案.

md 記憶體地址 //用於檢視記憶體地址上的值

用法:

md.b0x40008000 100 //從記憶體地址0x40008000開始,檢視0x100個位元組並輸出值

md.w 0x40008000 100 //從記憶體地址0x40008000開始,檢視0x100個16位值並輸出值

md.l 0x40008000 100 //從記憶體地址0x40008000開始,檢視0x100個32位值並輸出值

mw //用於修改記憶體地址上的值

用法:

mw.b0x40008000 0xab 100 //從記憶體地址0x40008000開始的0x100位元組空間,設值為0xab

mw.w 0x40008000 0xabcd 100 //從記憶體地址0x40008000開始的0x200位元組空間,每16位值設為0xabcd

mw.l 0x40008000 0xabcdef88 100 //從記憶體地址0x40008000開始的0x400位元組空間,每32位值設為0xabcdef88

go //執行指定記憶體地址上的指令

用法:

go 0x40008000

mmc // sd/mmc介面裝置(sd卡, emmc)操作命令, 按扇區操作(每扇區512位元組)

用法:

mmc read addr blk cnt //從mmc裝置上的第blk個扇區開始,共讀出cnt個扇區到記憶體地址addr上

mmc write addr blk cnt //把記憶體地址addr上的資料寫入mmc裝置的第blk個扇區,共cnt個扇區大小

mmc dev //用於當看當前的mmc裝置是第幾個

mmc erase blk cnt //把mmc裝置的第blk個扇區開始清零,共清除cnt個扇區大小

mmc part //列出當前mmc裝置的分割槽資訊

mmc list //列出所有的mmc裝置資訊

ext4ls //檢視儲存裝置的ext2/3/4分割槽裡的內容

用法:

ext4ls mmc 0:2 //檢視第0個儲存裝置的第二個分割槽

ext4load //從ext2/3/4分割槽裡讀出檔案到指定的記憶體地址

用法:

ext4load mmc 0:2 0x40008000 /uImage //從第0個儲存裝置的第2個分割槽的根目錄讀出uImage檔案到記憶體地址0x40008000

fatls //檢視儲存裝置的fat分割槽裡的內容

用法:

fatls mmc 0:1 //檢視第0個儲存裝置的第1個分割槽(fat分割槽)

fatload //從fat分割槽裡讀出檔案到指定的記憶體地址

用法:

fatload mmc 0:1 0x40008000 /uImage //從第0個儲存裝置的第1個分割槽的根目錄讀出uImage檔案到記憶體地址0x40008000

fatwrite //把記憶體上的資料儲存到fat分割槽的一個檔案裡

用法:

fatwrite mmc 0:1 0x40008000 /my.txt 0x35 //把記憶體地址0x40008000開始的0x35個位元組資料寫入到第0個裝置的第1個分割槽裡,檔名為my.txt

run //執行指定的環境變數裡的語句

用法:

run bootcmd //執行環境變數bootcmd裡的語句

//如uboot上已驅動好網路裝置並環境變設好IP及PC端IP,還可以使用以下命令:

tftpboot 0x40008000 檔名 // 通過網路下載檔案到記憶體地址0x40008000, PC端需配置好tftp伺服器

nfs 0x40008000 pc端IP:/帶路徑的檔名 //pc端需配置好nfs伺服器

ping ip //檢測網路是否通

指令: bootm

bootm 用於將核心映象載入到記憶體的指定地址處

例:

bootm 0x82000000

檢視和修改環境變數指令

常用環境變數列表

bootdelay執行自動啟動(bootcmd中的命令)的等候秒數

baudrate串列埠控制檯的波特率

bootfile預設的下載檔名

bootargs傳遞給Linux核心的啟動引數

bootcmd自動啟動時執行命令

stdin標準輸入裝置, 一般是串列埠

stdout標準輸出, 一般是串列埠,也可是LCD(VGA)

stderr 標準出錯,一般是串列埠,也可是LCD(VGA)

serveripTFTP伺服器端的IP地址

ipaddr本地的IP地址

ethaddr乙太網的MAC地址

netmask乙太網的網路掩碼

gatewayip 乙太網的閘道器

指令: setenvname value

第1個引數是環境變數的名稱。

第2個引數是要設定的值,如果沒有第2個引數,表示刪除這個環境變數

例:

setenvserverip 192.168.1.12//新增環境變數serverip 其值為 192.168.1.12

setenvserverip 192.168.1.20//在上一行的基礎上把環境變數serverip 值重新賦為 192.168.1.20

setenv serverip //把 serverip 變數刪除

指令: saveenv儲存環境變數

指令: printenv 檢視環境變數

使用該命令返回:

bootdelay=1

baudrate=115200

bootfile="uImage"

filesize=6600EC

fileaddr=82000000

bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)

bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000

stdin=serial

stdout=serial

stderr=serial

verify=n

ver=U-Boot 2010.06 (Jan 20 2015 - 15:46:38)

serverip=192.168.1.12

ipaddr=192.168.1.129

ethaddr=00:01:02:11:88:91

netmask=255.255.255.0

gatewayip=192.168.1.1

檢視和修改記憶體值指令

檢視記憶體命令 md

修改記憶體命令 mm

填充記憶體命令 mw

複製記憶體命令 cp

這些命令都可以帶上字尾 “.b”(位元組 byte), ”.w”(字 word), ”.l”(4位元組 long) 為單位進行操作

指令: mw填充記憶體命令

mw[.b,.w,.l] address value [count]

表示以[.b,.w,.l]為單位往開始地址為address的記憶體填充count 個值為 value 的資料

例:

mw.b 82000000 ff 100000從地址0x82000000地址開始填充0x100000(1M位元組)個值為0xff的資料

指令: md檢視記憶體命令

md[.b,.w,.l] address [count]

表示以[.b,.w,.l]為單位顯示從地址address開始的記憶體資料,顯示的資料個數為count

例:

md.b 82000000 10顯示從地址0x82000000地址開始的0x10個位元組的資料

返回資訊:

82000000: d3 2c b4 4b 2c d3 4b b4 d3 d3 b4 b4 d3 2c b4 4b .,.K,.K......,.K

指令: mm修改記憶體命令

mm[.b,.w,.l] address

表示以[.b,.w,.l]為單位從地址address開始修改記憶體資料,執行mm命令後,輸入新資料後回車,地址會自動增加,按“CTRL + c”退出;

例: 把第一個位元組資料0xd3修改為0xd4

mm.b 82000000

返回:

82000000: d3 ? d4

82000001: 2c ?

指令: cp複製記憶體命令

cp[.b,.w,.l] source target [count]

表示以[.b,.w,.l]為單位從源地址source的記憶體複製count個數據到 目的地址 target的記憶體中去;

下載的指令

指令: tftp通過網口下載檔案到裝置

tftp address filename 把檔案filename下載到地址address

例:

下載

tftp 0x82000000 u-boot-hi3520d.bin 把TFTP目錄下名為u-boot-hi3520d.bin的檔案拷貝到SDRAM的 82000000 地址

上傳

tftp 0x82000000 flash 2000000 把SDRAM的 82000000 地址開始的 0x2000000(32M)位元組的拷貝到把TFTP目錄下命名為flash(flash名字是否可變)

Flash操作的指令(不同的Flash不同)

指令: eraseFlash擦除命令

erase start end 擦除的範圍為 start – end

erase start+len 擦除的範圍為 start – (start+len-1)

erase all 擦除所有

例:

對於SPI NOR FLASH

sf erase 0 100000 擦除flash 0 - 0x100000 的資料

指令: writeFlash燒寫命令

writeaddr off size將SDRAM的 addr 地址處的 size 位元組的資料燒寫到 flash 的 off 偏移地址

例:

對於SPI NOR FLASH

sf write 82000000 0 100000 把SDRAM地址 0x82000000 處 0x100000(1M位元組)的資料燒寫到 flash 的 0 偏移地址

指令: readFlash讀取命令

readaddr off size從 Flash 的 off 偏移地址處讀取 size 位元組的資料到SDRAM的 addr地址

例:

對於SPI NOR FLASH

sf read 82000000 0 2000000 從 flash 的 0 偏移地址出讀取 0x2000000(32M)位元組的資料到 SDRAM的 82000000 地址



作者:Nothing_655f
連結:https://www.jianshu.com/p/df1d7db37c9f
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。