uboot的常用命令詳解

?U-Boot還提供了更加詳細的命令幫助,通過help命令還可以查看每個命令的參數說明。由于開發過程的需要,有必要先把U-Boot命令的用法弄清楚。接下來,根據每一條命令的幫助信息,解釋一下這些命令的功能和參數。


進入uboot的命令行提示后,通過help指令,可以得知當前的uboot支持的所有命令

help 指令名稱,可以得知對應指令的相關幫助, 如help setenv?


u-boot的環境變量用來存儲一些經常使用的參數變量,uboot希望將環境變量存儲在靜態存儲器中(如nand?nor?eeprom?mmc)。

其中有一些也是大家經常使用,有一些是使用人員自己定義的,更改這些名字會出現錯誤,下面的表中我們列出了一些常用的環境變量:

?????bootdelay????執行自動啟動的等候秒數
?????baudrate?????串口控制臺的波特率
?????netmask?????以太網接口的掩碼
?????ethaddr???????以太網卡的網卡物理地址
?????bootfile????????缺省的下載文件
?????bootargs?????傳遞給內核的啟動參數
?????bootcmd?????自動啟動時執行的命令
?????serverip???????服務器端的ip地址
?????ipaddr?????????本地ip?地址
?????stdin???????????標準輸入設備
?????stdout????????標準輸出設備
?????stderr?????????標準出錯設備

上面這些是uboot默認存在的環境變量,uboot本身會使用這些環境變量來進行配置。我們可以自己定義一些環境變量來供我們自己uboot驅動來使用。

Uboot環境變量的設計邏輯是在啟動過程中將env從靜態存儲器中讀出放到RAM中,之后在uboot下對env的操作(如printenv?editenv?setenv)都是對RAMenv的操作,只有在執行saveenv時才會將RAM中的env重新寫入靜態存儲器中。

這種設計邏輯可以加快對env的讀寫速度。


1、bootm
bootm [addr [arg ...]]

- boot application image stored in memory

passing arguments 'arg ...'; when booting a Linux kernel,

'arg' can be the address of an initrd image

bootm命令可以引導啟動存儲在內存中的程序映像。這些內存包括RAM和可以永久保存的Flash。

第1個參數addr是程序映像的地址,這個程序映像必須轉換成U-Boot的格式。

第2個參數對于引導Linux內核有用,通常作為U-Boot格式的RAMDISK映像存儲地址;也可以是傳遞給Linux內核的參數(缺省情況下傳遞bootargs環境變量給內核)。

?

2、bootp

bootp [loadAddress] [bootfilename]

bootp命令通過bootp請求,要求DHCP服務器分配IP地址,然后通過TFTP協議下載指定的文件到內存。

第1個參數是下載文件存放的內存地址。

第2個參數是要下載的文件名稱,這個文件應該在開發主機上準備好。

?

3、cmp

cmp [.b, .w, .l] addr1 addr2 count

- compare memory

cmp命令可以比較2塊內存中的內容。.b以字節為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續敲入命令。

第1個參數addr1是第一塊內存的起始地址。

第2個參數addr2是第二塊內存的起始地址。

第3個參數count是要比較的數目,單位按照字節、字或者長字。

?

4、cp

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

- copy memory

cp命令可以在內存中復制數據塊,包括對Flash的讀寫操作。

第1個參數source是要復制的數據塊起始地址。

第2個參數target是數據塊要復制到的地址。這個地址如果在Flash中,那么會直接調用寫Flash的函數操作。所以U-Boot寫Flash就使用這個命令,當然需要先把對應Flash區域擦干凈。

第3個參數count是要復制的數目,根據cp.b cp.w cp.l分別以字節、字、長字為單位。

?

5、crc32

crc32 address count [addr]

- compute CRC32 checksum [save at addr]

crc32命令可以計算存儲數據的校驗和。

第1個參數address是需要校驗的數據起始地址。

第2個參數count是要校驗的數據字節數。

第3個參數addr用來指定保存結果的地址。

?

6、echo

echo [args..]

- echo args to console; c suppresses newline

echo命令回顯參數。

?

7、erase

erase start end

- erase FLASH from addr 'start' to addr 'end'

erase N:SF[-SL]

- erase sectors SF-SL in FLASH bank # N

erase bank N

- erase FLASH bank # N

erase all

- erase all FLASH banks

?

erase命令可以擦Flash。

參數必須指定Flash擦除的范圍。

按照起始地址和結束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結束地址。這種方式最常用。舉例說明:擦除0x20000 – 0x3ffff區域命令為erase 20000 3ffff。

按照組和扇區,N表示Flash的組號,SF表示擦除起始扇區號,SL表示擦除結束扇區號。另外,還可以擦除整個組,擦除組號為N的整個Flash組。擦除全部Flash只要給出一個all的參數即可。

?

8、flinfo

flinfo

- print information for all FLASH memory banks

flinfo N

- print information for FLASH memory bank # N

?

flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。一般嵌入式系統的Flash只有一個組。

?

9、go

go addr [arg ...]

- start application at address 'addr'

passing 'arg' as arguments

?

go命令可以執行應用程序。

第1個參數是要執行程序的入口地址。

第2個可選參數是傳遞給程序的參數,可以不用。

?

10、minfo

iminfo addr [addr ...]

- print header information for application image starting at

address 'addr' in memory; this includes verification of the

image contents (magic number, header and payload checksums)

?

iminfo可以打印程序映像的開頭信息,包含了映像內容的校驗(序列號、頭和校驗和)。

第1個參數指定映像的起始地址。

可選的參數是指定更多的映像地址。

?

11、loadb

loadb [ off ] [ baud ]

- load binary file over serial line with offset 'off' and baudrate 'baud'


loadb命令可以通過串口線下載二進制格式文件。

?

12、loads

loads [ off ]

- load S-Record file over serial line with offset 'off'

?

loads命令可以通過串口線下載S-Record格式文件。

?

13、mw

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

- write memory


mw命令可以按照字節、字、長字寫內存,.b .w .l的用法與cp命令相同。

第1個參數address是要寫的內存地址。

第2個參數value是要寫的值。

第3個可選參數count是要寫單位值的數目。

?

14、nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs命令可以使用NFS網絡協議通過網絡啟動映像。

?

15、nm

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

- memory modify, read and keep address

?

nm命令可以修改內存,可以按照字節、字、長字操作。

參數address是要讀出并且修改的內存地址。

?

16、printenv

printenv

- print values of all environment variables

printenv name ...

- print value of environment variable 'name'

?

printenv命令打印環境變量。

可以打印全部環境變量,也可以只打印參數中列出的環境變量。

?

17、protect

protect on start end

- protect Flash from addr 'start' to addr 'end'

protect on N:SF[-SL]

- protect sectors SF-SL in Flash bank # N

protect on bank N

- protect Flash bank # N

protect on all

- protect all Flash banks

protect off start end

- make Flash from addr 'start' to addr 'end' writable

protect off N:SF[-SL]

- make sectors SF-SL writable in Flash bank # N

protect off bank N

- make Flash bank # N writable

protect off all

- make all Flash banks writable

?

protect命令是對Flash寫保護的操作,可以使能和解除寫保護。

第1個參數on代表使能寫保護;off代表解除寫保護。

第2、3參數是指定Flash寫保護操作范圍,跟擦除的方式相同。

?

18、rarpboot

rarpboot [loadAddress] [bootfilename]

?

rarboot命令可以使用TFTP協議通過網絡啟動映像。也就是把指定的文件下載到指定地址,然后執行。

第1個參數是映像文件下載到的內存地址。

第2個參數是要下載執行的映像文件。

?

19、run

run var [...]

- run the commands in the environment variable(s) 'var'

run命令可以執行環境變量中的命令,后面參數可以跟幾個環境變量名。

?

20、setenv

setenv name value ...

- set environment variable 'name' to 'value ...'

setenv name

- delete environment variable 'name'

?

setenv命令可以設置環境變量。

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

第2個參數是要設置的值,如果沒有第2個參數,表示刪除這個環境變量。

?

21、sleep

sleep N

- delay execution for N seconds (N is _decimal_ !!!)

sleep命令可以延遲N秒鐘執行,N為十進制數。

?

22、tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot命令可以使用TFTP協議通過網絡下載文件。按照二進制文件格式下載。另外使用這個命令,必須配置好相關的環境變量。例如serverip和ipaddr。

第1個參數loadAddress是下載到的內存地址。

第2個參數是要下載的文件名稱,必須放在TFTP服務器相應的目錄下。

這些U-Boot命令為嵌入式系統提供了豐富的開發和調試功能。在Linux內核啟動和調試過程中,都可以用到U-Boot的命令。但是一般情況下,不需要使用全部命令。比如已經支持以太網接口,可以通過tftpboot命令來下載文件,那么還有必要使用串口下載的loadb嗎?反過來,如果開發板需要特殊的調試功能,也可以添加新的命令。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383453.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

minicom 串口信息過長分行顯示

有時串口輸出一行信息比較多,一行顯示不下,這個時候,我們可以用minicom的本身組合鍵設置,超過一行時自動卷起。 minicom 組合鍵的用法是:先按CtrlA組合鍵,然后松開這兩個鍵,再按Z鍵。另外還有一…

uboot 的 bootcmd 和bootargs參數詳解

U-boot的環境變量值得注意的有兩個: bootcmd 和bootargs。 bootargsconsolettyS1,115200n8 mem32M0x0 ispmem8M0x2000000 rmem24M0x2800000 init/linuxrc rootfstypesquashfs root/dev/mtdblock2 rw mtdpartsjz_sfc:256k(boot),2560k(kernel),2048k(root),-(appfs) …

MTD和 uboot中的bootargs 下屬 mtdparts

MTD 設備是象閃存芯片、小型閃存卡、記憶棒等之類的設備,它們在嵌入式設備中的使用正在不斷增長。 MTD 驅動程序是在 Linux 下專門為嵌入式環境開發的新的一類驅動程序。相對于常規塊設備驅動程序,使用 MTD 驅動程序的主要優點在于 MTD 驅動程序是專門為…

Linux應用程序在內存中的地址布局

棧:局部變量(初始化的和未初始化的,但不包含局部靜態變量)、局部只讀變量(const)堆:動態分配的區域(如使用malloc函數申請的區域)BSS段:存儲未初始化的全局變…

比較zImage和uImage的區別

一、vmlinuz vmlinuz是可引導的、壓縮的內核。“vm”代表“Virtual Memory”。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制。Linux能夠使用硬盤空間作為虛擬內存,因此得名“vm”。 vmlinuz的建立有兩種方式。一是編譯內核時通過“make…

編譯faac錯誤分析

編譯faac時遇到了以下的編譯錯誤: /home/xuxuequan/Ingenicwork/toolchain/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/usr/include/string.h:365:26: error:ambiguates old declaration const char* strcasestr(const char*, const char*) 解決方案&#x…

gcc與g++的區別

一:gcc與g比較 編譯c/c代碼的時候,有人用gcc,有人用g,于是各種說法都來了,譬如c代碼用gcc,而 c代碼用g,或者說編譯用gcc,鏈接用g,一時也不知哪個說法正確,如果…

交叉編譯openssl不修改Makefile的方法

網上流傳的方法都是要修改Makefile的cc值&#xff0c;我來說個不用修改的方法作者&#xff1a;帥得不敢出門 C哈哈堂<31843264>openssl 下載http://www.openssl.org/source/tar -xvf openssl-1.0.1c.tar.gzcd openssl-1.0.1c/CCarm-linux-gcc ./config no-asm shared -…

編譯boa過程記錄

boa是比較老的HTTP的本地Server&#xff0c;本文是針對0.94.13版本的編譯過程做出記錄 1.下載boa的程序包&#xff0c;本文的編譯是針對misp平臺的交叉編譯 2.在編譯之前&#xff0c;需要針對產品的文件系統和修改編譯時可能遇到的錯誤&#xff0c;修改相關的文件。 &#xff…

/dev/null 21 的作用

shell中可能經常能看到&#xff1a;>/dev/null 2>&1命令的結果可以通過%>的形式來定義輸出/dev/null 代表空設備文件> 代表重定向到哪里&#xff0c;例如&#xff1a;echo "123" > /home/123.txt1 表示stdout標準輸出&#xff0c;系統默認值是1&a…

移植wpa_supplicant 2.2問題

1.編譯libnl1.1問題 In file included from addr.c:28:0: ../include/netlink-local.h: In function __str2type: ../include/netlink-local.h:218:11: error: ULONG_MAX undeclared (first use in this function) ../include/netlink-local.h:218:11: note: each undeclared …

wpa_supplicant與wpa_cli之間通信過程

wpa_supplicant編譯&#xff1a; 1. wpa_supplicant/Android.mk : -- wpa_cli -- wpa_supplicant -- libwpa_client.so 2. hostapd/Android.mk : -- hostapd_cli -- hostapd 從通信層次上劃分&#xff0c;wpa_supplicant提供向上的控制接口 control interface&#xff0c;用于與…

Linux內核驅動之GPIO子系統(一)GPIO的使用

一 概述 Linux內核中gpio是最簡單&#xff0c;最常用的資源(和 interrupt ,dma,timer一樣)驅動程序&#xff0c;應用程序都能夠通過相應的接口使用gpio&#xff0c;gpio使用0&#xff5e;MAX_INT之間的整數標識&#xff0c;不能使用負數,gpio與硬件體系密切相關的,不過linux有一…

gpio_direction_output 與 gpio_set_value

gpio_set_value&#xff08;port_num,0/1&#xff09; 一般只是在這個GPIO口的寄存器上寫上某個值&#xff0c;至于這個端口是否設置為輸出&#xff0c;它就管不了&#xff01; 而gpio_direction_output &#xff08;port_num,0/1)&#xff0c;在某個GPIO口寫上某個值之后&…

內核ko模塊strip使用

編譯一個內核時&#xff0c;習慣性的在install目標下加了命令&#xff1a; $(STRIP) --strip-all --remove-section.note --remove-section.comment test.ko 結果在insmod test.ko時出現錯誤&#xff1a; test: module has no symbols (stripped?) .................. 上…

ubuntu下修復U盤只讀問題

1.通過mount指令查看u盤掛載的實際設備 /dev/sdb1 on /media/xuxuequan/0BEB-331A type vfat (rw,nosuid,nodev,uid1000,gid1000,shortnamemixed,dmask0077,utf81,showexec,flush,uhelperudisks2) 2.umount掛載點 umount /media/xuxuequan/0BEB-331A 3.fsck修復u盤設備 s…

mkfs.jffs2參數詳解

實例&#xff1a;mkfs.jffs2 -r rootfs -o rootfs.jffs2 -e 0x4000 --pad0x1000000 -s 0x200 -n mkfs.jffs2: Usage: mkfs.jffs2 [OPTIONS] Make a JFFS2 file system image from an existing directory tree Options: -p, --pad[SIZE] 用16進制來表示所要輸出檔案的大小&…

關于c語言字符串函數和一些內存函數的的簡介

關于c語言字符串函數和一些內存函數的的簡介 求字符串長度的函數 strlen函數介紹![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190301142458376.jpg)注模擬實現 . [1 ]計數器方式 因為strlen 是求字符串長度的函數&#xff0c;所以不能改變字符串本身&#xff0c;所…

君正T20平臺生成jffs2格式rootfs

基于系統升級的考慮&#xff0c;這兩天在君正T20平臺上折騰如何生成jffs2 格式的rootfs。詳細的過程如下&#xff1a; 1.修改uboot中的分區參數&#xff1a; 修改為rootfs格式為jffs2的&#xff0c;且適當擴大rootfs分區大小。&#xff08;因jffs2的壓縮比不如只讀的squashfs…

用結構體寫一個簡單的通訊錄

一個簡單的通訊錄 通訊錄應該具備簡單的一些功能 1 增添聯系人 2 刪除聯系人 3 查找聯系人 4 修改聯系人 5 按名字給聯系人排序 6 查看通訊錄 除此之外&#xff0c;應該在實現上還應該具備一些其他的功能函數 比如 初始化通訊錄 這些都是功能函數&#xff0c;而整個函數入口應…