|     U-Boot上電啟(qi)動后,按任意鍵可以退(tui)出自(zi)動啟(qi)動狀態,進(jin)入命令行。     U-Boot 2010.03 (Sep 25 2011 - 16:18:50)DRAM:  64 MB
 Flash:  2 MB
 NAND:  64 MiB
 In:    serial
 Out:   serial
 Err:   serial
 Net:   CS8900-0
  Hit any key to stop autoboot:  1
     在命(ming)令(ling)(ling)行(xing)提示符(fu)下,輸入(ru)(ru)U-Boot的命(ming)令(ling)(ling)并執行(xing)。U-Boot可支持幾十個常用命(ming)令(ling)(ling),通過這(zhe)(zhe)些(xie)命(ming)令(ling)(ling),可以對開(kai)發板(ban)進行(xing)調試,引導Linux內核,還可以擦寫(xie)Flash完成系統部(bu)署等(deng)功(gong)能。掌握這(zhe)(zhe)些(xie)命(ming)令(ling)(ling)的使用,才能夠順利地進行(xing)嵌入(ru)(ru)式系統的開(kai)發。     輸入help命(ming)令(ling),可以得到當(dang)前U-Boot的(de)所有命(ming)令(ling)列表(biao)。每(mei)一條命(ming)令(ling)后(hou)面是簡單的(de)命(ming)令(ling)說(shuo)明。     U-Boot還提供(gong)了更加詳細(xi)的(de)(de)命(ming)令幫(bang)助(zhu),通(tong)過help命(ming)令還可以查看每個命(ming)令的(de)(de)參(can)數說(shuo)明。由于開發過程的(de)(de)需要,有必(bi)要先把U-Boot命(ming)令的(de)(de)用(yong)法(fa)弄(nong)清楚。接下來(lai),根據每一條命(ming)令的(de)(de)幫(bang)助(zhu)信息,解釋一下這(zhe)些命(ming)令的(de)(de)功能(neng)和參(can)數。     1)bootm命令     bootm命令可(ke)以引導啟動存(cun)儲(chu)在(zai)內存(cun)中的程序映像(xiang),這些內存(cun)包(bao)括(kuo)RAM和可(ke)以永(yong)久保存(cun)的Flash。     # help bootmbootm - boot application image from memory
 Usage:
 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
 Sub-commands to do part of the bootm sequence.  The sub-commands must beissued in
 the order below (it's ok to not issue all sub-commands):
 start [addr [arg ...]]
 loados   - load OS image
 cmdline  - OS specific command line processing/setup
 bdt       - OS specific bd_t processing
 prep      - OS specific prep before relocation or go
 go        - start OS
     ● 第1個參數addr是程序映像的地址,這個程序映像必須轉換成U-Boot的格式。● 第(di)2個參數對(dui)于(yu)引(yin)導Linux內核有用,通(tong)常(chang)作為U-Boot格式的RAMDISK映像(xiang)存儲地址;也可以是傳遞(di)給Linux內核的參數(默認情(qing)況下傳遞(di)bootargs環境變量給內核)。
     2)bootp命令     bootp命令要求DHCP服務器分配IP地址,然(ran)后(hou)通(tong)過(guo)TFTP協(xie)議下載指定的(de)文件(jian)到內存。     # help bootpbootp - boot image via network using BOOTP/TFTP protocol
 
 Usage:
 bootp [loadAddress] [[hostIPaddr:]bootfilename]
     ● 第1個參數是load Address下載文件存放的內存地址。    ● 第2個參數是bootfilename要下載(zai)的文(wen)件名稱,這(zhe)個文(wen)件應該在開(kai)發主機(ji)上準備(bei)好。
     3)cmp命令     cmp命(ming)令可以(yi)比(bi)較(jiao)兩塊內(nei)存中的內(nei)容。.b以(yi)字節為單位(wei);.w以(yi)字為單位(wei);.l以(yi)長字為單位(wei)。注意(yi):cmp.b中間不能(neng)保留空格,需(xu)要連(lian)續(xu)輸(shu)入命(ming)令。     # help cmpcmp - memory compare
 
 Usage:
    cmp [.b, .w, .l] addr1 addr2 count
     ● 第1個參數addr1是第一塊內存的起始地址。● 第2個參數addr2是第二塊內存的起始地址。
 ● 第3個參數count是要比較的數目,單位是字節、字或者(zhe)長字。
     4)cp命令(ling)     cp命(ming)令可以在內存中(zhong)復制數據塊,包括(kuo)對Flash的讀寫(xie)操作。     # help cpcp - memory copy
 
 Usage:
 cp [.b, .w, .l] source target count
 
     ● 第1個參數source是要復制的數據塊起始地址。● 第2個參數target是數據塊要復制到的地址。這個地址如果在Flash中,那么會直接調用寫Flash的函數操作。所以U-Boot寫Flash就使用這個命令,當然需要先把對應Flash區域擦干凈。
     ● 第(di)3個參數(shu)count是要(yao)復制的數(shu)目,根據cp.b、cp.w、cp.l分別以字節(jie)、字、長字為(wei)單位。
     5)crc32命令     crc32命令可(ke)以計算存儲(chu)數據的校驗和。     # help crc32crc32 - checksum calculation
 
 Usage:
 crc32 address count [addr]
 - compute CRC32 checksum [save at addr]
 
     ● 第1個參數address是需要校驗的數據起始地址。● 第2個參數count是要校驗的數據字節數。
 ● 第3個參(can)數addr用來指定保存結(jie)果的(de)地址(zhi)。
     6)echo命令     echo命令回(hui)顯參數(shu)。     # help echoecho - echo args to console
 
 Usage:
 echo [args..]
 - echo args to console; \c suppresses newline
 
     7)erase命(ming)令     erase命(ming)令可以(yi)擦除Flash。參(can)數必須指定(ding)Flash擦除的范圍。     # help eraseerase - erase FLASH memory
 
 Usage:
 erase start end
 - erase FLASH from addr 'start' to addr 'end'
 erase start +len
 - erase FLASH from addr 'start' to the end of sect w/addr 'start'+'len'-1
 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
 
     按照起(qi)始(shi)地(di)址和(he)結束(shu)地(di)址,start必須是(shi)擦除塊的起(qi)始(shi)地(di)址;end必須是(shi)擦除末尾塊的結束(shu)地(di)址,這(zhe)種(zhong)方式常用。舉例說(shuo)明(ming):擦除0x20000~0x3ffff區(qu)域命令為erase 20000 3ffff。     按照組(zu)(zu)和扇區,N表示Flash的(de)組(zu)(zu)號(hao),SF表示擦(ca)除起始扇區號(hao),SL表示擦(ca)除結束(shu)扇區號(hao)。另外(wai),還(huan)可以擦(ca)除整個(ge)組(zu)(zu),擦(ca)除組(zu)(zu)號(hao)為N的(de)整個(ge)Flash組(zu)(zu)。擦(ca)除全(quan)部Flash只要給(gei)出一個(ge)all的(de)參(can)數即可。     8)nand命令     nand命令可以通過不同的(de)(de)參數實現對Nand Flash的(de)(de)擦除、讀、寫(xie)操作。     常見(jian)的幾種命令的含義(yi)如(ru)下(具體(ti)格式(shi)見(jian)help nand)。     # help nandnand - NAND sub-system
 
 Usage:
 nand info - show available NAND devices
 nand device [dev] - show or set current device
 nand read - addr off|partition size
 nand write - addr off|partition size
 read/write 'size' bytes starting at offset 'off'
 to/from memory address 'addr', skipping bad blocks.
 nand erase [clean] [off size] - erase 'size' bytes from
 offset 'off' (entire device if not specified)
 nand bad - show bad blocks
 nand dump[.oob] off - dump page
 nand scrub - really clean NAND erasing bad blocks (UNSAFE)
 nand markbad off [...] - mark bad block(s) at offset (UNSAFE)
 nand biterr off - make a bit error at offset (UNSAFE)
     ● nand erase:擦除Nand Flash。● nand read:讀取Nand Flash,遇到flash壞塊時會出錯。
 ● nand write:寫Nand Flash,nand write命令遇(yu)到flash壞塊時會出錯。
     9)flinfo命(ming)令(ling)     flinfo命(ming)令打(da)印全部Flash組的(de)信息,也(ye)可以只打(da)印其中(zhong)某個組。一般嵌入式系統(tong)的(de)Flash只有一個組。     # help flinfoflinfo - print FLASH memory information
 
 Usage:
 flinfo
 - print information for all FLASH memory banks
 flinfo N
 - print information for FLASH memory bank # N
 
     10)go命令     go命令可以執行應用程序。     # help gogo - start application at address 'addr'
 
 Usage:
 go addr [arg ...]
 - start application at address 'addr'
 passing 'arg' as arguments
 
     ● 第1個參數addr是要執行程序的入口地址。● 第2個可選參(can)數(shu)是傳遞給程序的參(can)數(shu),可以不(bu)用。
     11)iminfo命令     iminfo命令可以打印程序映(ying)像的開頭信息(xi),包含了映(ying)像內容的校驗(序列號(hao)、頭和(he)校驗和(he))。     # help iminfoiminfo - print header information for application image
 
 Usage:
 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)
 
     第1個參數addr指定映(ying)像的起始地址(zhi)。可選的參數是(shi)指定更(geng)多(duo)的映(ying)像地址(zhi)。     12)loadb命(ming)令     loadb命令可以通過串口線下載二進制格式文件。     # help loadbloadb - load binary file over serial line (kermit mode)
 
 Usage:
 loadb [ off ] [ baud ]
 - load binary file over serial line with offset 'off' and baudrate 'baud'
 
     13)loads命令     loads命令(ling)可以通過串口(kou)線下載(zai)S-Record格式文件。     # help loadsloads - load S-Record file over serial line
 
 Usage:
 loads [ off ]
 - load S-Record file over serial line with offset 'off'
 
     14)mw命令     mw命令可(ke)以按(an)照(zhao)字節、字、長(chang)字寫內存,.b、.w、.l的(de)用法與(yu)cp命令相同。     # help mwmw - memory write (fill)
 
 Usage:
 mw [.b, .w, .l] address value [count]
 
     ● 第1個參數address是要寫的內存地址。● 第2個參數value是要寫的值。
 ● 第3個(ge)可(ke)選參(can)數count是要(yao)寫單位值的(de)數目。
     15)nfs命(ming)令     nfs命令可(ke)以使用NFS網絡(luo)協議(yi)通(tong)過(guo)網絡(luo)啟動映像。     # help nfsnfs - boot image via network using NFS protocol
 
 Usage:
 nfs [loadAddress] [[hostIPaddr:]bootfilename]
 
     16)printenv命(ming)令(ling)     printenv命令(ling)打(da)(da)印(yin)(yin)環(huan)境(jing)變量(liang)。可(ke)(ke)以(yi)打(da)(da)印(yin)(yin)全部環(huan)境(jing)變量(liang),也可(ke)(ke)以(yi)只打(da)(da)印(yin)(yin)參數中列出的環(huan)境(jing)變量(liang)。     # help printenvprintenv - print environment variables
 
 Usage:
 printenv
 - print values of all environment variables
 printenv name ...
 - print value of environment variable 'name'
 
     17)protect命令     protect命令是對(dui)Flash寫(xie)保(bao)護(hu)的操作,可以使能和解除寫(xie)保(bao)護(hu)。     help protectprotect - enable or disable FLASH write protection
 
 Usage:
 protect on  start end
 - protect FLASH from addr 'start' to addr 'end'
 protect on start +len
 - protect FLASH from addr 'start' to end of sect w/addr 'start'+'len'-1
 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 start +len
 - make FLASH from addr 'start' to end of sect w/addr 'start'+'len'-1 wrtable
 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
     ● 第1個參數on代表使能寫保護;off代表解除寫保護。● 第2和3個參數(shu)是指定Flash寫保護操(cao)作范圍,與擦除的方式相(xiang)同。
     18)rarpboot命(ming)令     rarpboot命令(ling)可以(yi)使用TFTP協(xie)議通過(guo)網絡(luo)啟動映像,也就是把指(zhi)定的(de)文(wen)件下載到指(zhi)定地址,然后執行(xing)。     # help  rarpbootrarpboot - boot image via network using RARP/TFTP protocol
 
 Usage:
 rarpboot [loadAddress] [[hostIPaddr:]bootfilename]
 
     ● 第1個參數是loadAddress映像文件下載到的內存地址。● 第(di)2個參數是bootfilename要下載(zai)執行的(de)鏡像(xiang)文件。
     19)run命令     run命(ming)令可以執行環(huan)(huan)境變(bian)量中(zhong)的命(ming)令,后面參(can)數可以跟(gen)幾個環(huan)(huan)境變(bian)量名。     # help runrun - run commands in an environment variable
 
 Usage:
 run var [...]
 - run the commands in the environment variable(s) 'var'
 
     20)setenv命令(ling)     setenv命令可以設置環境變量。     # help setenvsetenv - set environment variables
 
 Usage:
 setenv name value ...
 - set environment variable 'name' to 'value ...'
 setenv name
 - delete environment variable 'name'
 
     ● 第1個參數是name環境變量的名稱。● 第2個(ge)參(can)數是value要設置的值,如果(guo)沒有第2個(ge)參(can)數,表示刪除這個(ge)環境變量(liang)。
     21)sleep命(ming)令     sleep命(ming)令可以使用TFTP協議通過網(wang)絡下載(zai)文件,按照二(er)進制文件格式下載(zai)。另外,使用這(zhe)個命(ming)令,必須配置好相關(guan)的環(huan)境變量,例如(ru)serverip和ipaddr。     help sleepsleep - delay execution for some time
 
 Usage:
 sleep N
   - delay execution for N seconds (N is _decimal_ !!!)
     sleep命令可以延遲(chi)N秒執(zhi)行(xing),N為(wei)十(shi)進制數。     22)nm命(ming)令     nm命令可以修改內存,可以按照字(zi)節、字(zi)、長字(zi)操作。     # help nmnm - memory modify (constant address)
 
 Usage:
  nm [.b, .w, .l] address
     參數address是(shi)要讀出并且修改的內存(cun)地址。     23)tftpboot命令     tftpboot命令可(ke)以通過使用(yong)TFTP協議在(zai)網絡上下載二進(jin)制格式文(wen)件(jian)。     tftpboot - boot image via network using TFTP protocol
 Usage:
 tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
     24)saveenv 命令     saveenv命令可以保存環境變量到(dao)存儲設備(bei)。     # help saveenvsaveenv - save environment variables to persistent storage
 
 Usage:
 saveenv
     這(zhe)些U-Boot命令(ling)為(wei)嵌(qian)入式系統提供(gong)了豐富(fu)的(de)開發和調試功能。在Linux內核啟動和調試過(guo)程中,都可(ke)以用到(dao)U-Boot的(de)命令(ling)。但是(shi)一般情況下(xia),不(bu)需(xu)要(yao)使(shi)用全部命令(ling)。比如(ru)已經支持以太網接口,可(ke)以通(tong)過(guo)tftpboot命令(ling)來(lai)(lai)下(xia)載(zai)文件,那么就沒有必(bi)要(yao)使(shi)用串口下(xia)載(zai)的(de)loadb。反過(guo)來(lai)(lai),如(ru)果開發板需(xu)要(yao)特殊的(de)調試功能,也可(ke)以添加新的(de)命令(ling)。     本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》    熱點鏈接:           
         1、U-Boot編譯過程解析2、U-Boot源代碼下載地址
 3、Bootloader的種類
 4、配置主機交叉開發環境
 5、搭建嵌入式交叉編譯環境
 
 更多新聞>>  |