uboot的常用命令及用法


轉自:https://blog.csdn.net/jklinux/article/details/72638830

https://blog.csdn.net/dagefeijiqumeiguo/article/details/51314856

 

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.b    0x40008000 100  //從內存地址0x40008000開始,查看0x100個字節並輸出值 md.w 0x40008000 100  //從內存地址0x40008000開始,查看0x100個16位值並輸出值 md.l 0x40008000 100  //從內存地址0x40008000開始,查看0x100個32位值並輸出值 mw  //用於修改內存地址上的值 用法: mw.b    0x40008000 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)
serverip TFTP服務器端的IP地址 
ipaddr 本地的IP地址  
ethaddr 以太網的MAC地址 
netmask 以太網的網絡掩碼 

gatewayip 以太網的網關

 

指令: setenvname value
第1個參數是環境變量的名稱。  
第2個參數是要設置的值,如果沒有第2個參數,表示刪除這個環境變量
例:
setenv serverip 192.168.1.12//添加環境變量serverip 其值為 192.168.1.12
setenv serverip 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燒寫命令
write addr off size將SDRAM的 addr 地址處的 size 字節的數據燒寫到 flash 的 off 偏移地址
例:
對於SPI NOR FLASH
sf write 82000000 0 100000 把SDRAM地址 0x82000000 處 0x100000(1M字節)的數據燒寫到 flash 的 0 偏移地址

指令: readFlash讀取命令
read addr off size從 Flash 的 off 偏移地址處讀取 size 字節的數據到SDRAM的 addr地址
例:
對於SPI NOR FLASH
sf read 82000000 0 2000000 從 flash 的 0 偏移地址出讀取 0x2000000(32M)字節的數據到 SDRAM的 82000000 地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM