uboot常用命令


一. 常用簡單命令

  1.1. help命令

    a. 幫助查看其他命令的使用方法,類型linux下man 

    b. 示例: help help

x210 # help help
help [command ...]
    - show help information (for 'command')
'help' prints online help for the monitor commands.

Without arguments, it prints a short usage message for all commands.

To get detailed help information for specific commands you can type
'help' with one or more command names as arguments.

x210 # 
View Code

  1.2. printenv命令

    a. printenv命令可以簡化為print

    b. print命令不用帶參數,作用是打印出系統中所有的環境變量。

x210 # print
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=3
bootcmd=movi read kernel 30008000; bootm 30008000
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3

Environment size: 276/16380 bytes
x210 # 
View Code

  1.3. setenv命令

    1.3.1. setenv可以簡化為set

    1.3.2. 設置(添加/更改)環境變量

      a. 新建一個環境變量,使用set var value

      b. 更改一個環境變量,使用set var value
      c. 刪除一個環境變量,使用set var

    PS:使用set設置時,uboot的有些命令帶的參數非常長,為了告訴uboot這個非常長而且中間有好多個空格的東西是給他的一整個參數,所以用單引號將這個很長且中間有空格隔開的參數引起來

x210 # print
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=3
bootcmd=movi read kernel 30008000; bootm 30008000
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3

Environment size: 276/16380 bytes
x210 # set mytest 0
x210 # print
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=3
bootcmd=movi read kernel 30008000; bootm 30008000
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
mytest=0

Environment size: 285/16380 bytes
x210 # set mytest 1
x210 # print
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=3
bootcmd=movi read kernel 30008000; bootm 30008000
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
mytest=1

Environment size: 285/16380 bytes
x210 # set mytest
x210 # print
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=3
bootcmd=movi read kernel 30008000; bootm 30008000
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3

Environment size: 276/16380 bytes
x210 # 
View Code

  1.4. saveenv命令

    a. saveenv命令可以簡化為save

    b. saveenv/save命令不帶參數,直接執行,作用是將內存中的環境變量的值同步保存到Flash中環境變量的分區

    c. 徹底更改一個環境變量的值,需要2步:第一步set命令來更改內存中的環境變量,第二步用save命令將其同步到Flash中環境變量的分區

二. 與網絡相關命令

  2.1. ping命令

    a. ping是測試開發板和主機之間的網絡鏈接

    b. 命令用法: ping ip地址

  2.2. tftp命令

    a. tftp 命令用於從服務器下載內容到客戶端

    b. 示例:tftp 0x30000000 zImage-qt  :將服務器上名為zImage-qt的文件下載到開發板內存的0x30000000地址處

  2.3. nfs命令

    a. 這個命令在uboot開發中使用很少,如需要請自行百度。

三. SD卡/iNand操作指令movi簇

  3.1. movi指令是一個命令集,有很多子命令,具體用法可以help movi查看。

  3.2. help movi分析

x210 # help movi
movi init - Initialize moviNAND and show card info
movi read  {u-boot | kernel} {addr} - Read data from sd/mmc
movi write {fwbl1 | u-boot | kernel} {addr} - Write data to sd/mmc
movi read  rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size
movi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size
movi read  {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc read"
movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc write"

x210 # 
View Code

    3.2.1. movi write {fwbl1 | u-boot | kernel} {addr}這種通用型的描述說明:

      a. movi 和 read外面沒有任何標記說明每一次使用這個指令都是必選的

      b. 一對大括號{}括起來的部分必選1個,大括號中的豎線表是多選一

      c. 中括號[]表示可選參數(可以有也可以沒有)

  3.3. 示例: movi read u-boot 0x30000000 意思就是把iNand中的u-boot分區讀出到DDR的0x30000000起始的位置處。

  PS:uboot代碼中將iNand分成了很多個分區,每個分區有地址范圍和分區名,uboot程序操作中可以使用直接地址來操作iNand分區,也可以使用分區名來操作分區;注意這里的0x30000000也可以直接寫作30000000,意思是一樣的(uboot的命令行中所有數字都被默認當作十六進制處理,不管你加不加0x都一樣

四. 內存操作指令

  4.1. DDR內存中是沒有分區的(只聽說過對硬盤、Flash進行分區,沒聽說過對內存進行分區····),但是內存使用時要注意,千萬不能越界

  4.2. md(memory display)命令 

    4.2.1. 用來顯示內存中的內容。 

    4.2.2. help md 

x210 # help md
md [.b, .w, .l] address [# of objects]
          - memory display
View Code

      a. .b表示也字節形式查看;.w表示也半字形式查看;.l表示也字形式查看;# of object表示查看長度

      b. 示例: md.b 0x30000000 10

x210 # md.b 0x30000000 10
30000000: ff ef ff ff 7f ff ff ff ff ee ff ff ff fd ff ff    ................
x210 # 
View Code

  4.3. mw(memory write)命令

    4.3.1. 將內容寫到內存中

    4.3.2. help mw 

x210 # help mw
mw [.b, .w, .l] address value [count]
         - write memory

x210 #
View Code

  4.4. mm(memory modify)

    4.4.1. 修改內存中的某一塊,說白了還是寫內存(如果需要批量的逐個單元的修改內存,用mm最合適)

    4.4.2. help mm

x210 # help mm
mm [.b, .w, .l] address
    - memory modify, auto increment address

x210 # 
View Code

五. 啟動內核命令

  5.1. bootm命令

    a. bootm啟動內核同時給內核傳參,bootm專門用於啟動內核的

    b. help bootm分析

x210 # help 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

x210 # 
View Code

  5.2. go命令

    a. 此命令雖然可以啟動內核但並不是專門用於啟動內核

    b. help go分析

x210 # help go
go addr [arg ...]
    - start application at address 'addr'
      passing 'arg' as arguments

x210 # 
View Code

    ps:go命令本來不是專為啟動內核設計的,go命令內部其實就是一個函數指針指向一個內存地址然后直接調用那個函數,go命令的實質就是PC直接跳轉到一個內存地址去運行而已。go命令可以用來在uboot中執行任何的裸機程序(有一種調試裸機程序的方法就是事先啟動uboot,然后在uboot中去下載裸機程序,用go命令去執行裸機程序)

 

參考《朱老師.1.2ARM裸機課件》


免責聲明!

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



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