zoukankan      html  css  js  c++  java
  • uboot常用命令及其使用

    1.帮助信息

    ? 或者 help

    第一次使用uboot,通过?查看所有帮助信息

    ?cmd 或者 help cmd

    ? bootz #查看bootz命令的帮助信息
    

    通过该命令查看某个cmd的帮助信息

    2.版本信息查看

    version

    uboot启动后,查看uboot版本信息

    bdinfo

    uboot启动后,查看board信息

    3.环境变量相关

    setenv

    设置一个环境变量

    # 格式:setenv key vlaue
    setenv bootdelay 5  # 设置uboot启动延时5s
    

    删除一个环境变量
    uboot对于一个没有值的环境变量,默认不再维护,做删除处理

    # 格式:setenv key
    setenv ipaddr   # 删除ipaddr,让ipaddr不复存在
    

    修改一个环境变量

    # 格式:setenv key vlaue
    setenv bootdelay 5  # 原来的bootdleay值被覆盖,采用新值5
    

    saveenv

    uboot启动时,从非易失性存储器中读取环境变量的值,在内存中维护一份拷贝,当采用setenv命令创建、修改、或者删除后,内存中被相应地创建、修改或者删除,非易失存储器中的那一份并没有改变。直到执行saveenv,写入非易失性存储器。

    print

    打印所有环境变量及其值。

    print # 打印所有
    

    打印某一个。如果要查看某个你知道名字的环境变量,可以使用该命令。例如,打印bootcmd命令:

    print bootcmd # 只打印bootcmd
    

    4.内存相关

    需要注意的是,所有参数需要十六进制数字输入。例如12345678默认为0x12345678,当然也可直接显式指定为0x12345678。

    mm

    修改ddr中内存单元的值,可以连续修改。

    # mm [.b,.w,.l] addr
    =>mm.l 80800000  #回车进入修改视图,地址自动递增
    80800000:<xxxxxxxx> ? 12345678  # 回车
    80800004:<xxxxxxxx> ? q         # 退出
    =>
    

    nm

    修改ddr中内存单元的值,地址不自增。

    # nm [.b,.w,.l] addr
    =>mm.l 80800000  #回车进入修改视图,地址自动递增
    80800000:<xxxxxxxx> ? 12345678  # 回车
    80800000:<xxxxxxxx> ? q         # 退出
    =>
    

    md

    显示ddr从addr处开始的内存数据,of object为数量,每个object的字节数量取决于参数.b,.w,.l。

    # md [.b,.w,.l] addr [#of objects]
    md.b 80800000 100  # 80800000 100均为为十六进制数字,100h=256
    

    mw

    cp

    mtest

    5.mmc相关

    需要注意的是,对于emmc,存在多个物理分区,每个物理分区独立编址。进行mmc操作前,需要先切换到对应的物理分区,然后对该物理分区进行操作。
    笔者所用的开发板emmc包含硬件分区:

    1. UDA, User Data Area:容量最大的硬件分区,一般UDA上继续进行软件分区,采用GPT或MBR方式。
    2. boot area partition1:4MB
    3. boot area partition2:4MB

    mmc info

    mmc rescan

    mmc list

    列出当前扫描到的所有mmc设备。

    mmc dev

    切换硬件分区

    # 格式:emmc dev [dev_no] [part_no]
    mmc dev 1  #切换到1号设备的硬件分区0
    

    mmc part

    列出当前硬件分区上的软件分区。前提是当前硬件分区上存在分区表

    mmc read

    mmc读写,以块为单位,1个块为512Bytes。

    mmc dev  1  1
    mmc read 80800000 600 10 #从600块号开始,读取0x10=16个块到ddr
    

    mmc write

    mmc读写,以块为单位,1个块为512Bytes。

    mmc dev  1  1
    mmc write 80800000 600 10 #将80800000开始的数据写入到emmc的600块地址处,写入0x10=16个块
    

    mmc erase

    6.fat文件系统相关

    fatinfo

    查看分区的fat文件系统信息

    # 格式: fatinfo <interface> [<dev>[:part]]
    fatinfo mmc 1:1
    

    fatls

    列出fat文件系统所在分区上的所有文件

    # 格式: fatls <interface> [<dev>[:part]] [dir]
    fatls mmc 1:1
    

    fstype

    查看分区文件系统类型

    # 格式: fstype <interface> [<dev>[:part]]
    fstype mmc 1:0
    fstype mmc 1:1
    fstype mmc 1:2
    

    fatload

    从fat分区加载文件到内存

    fatload mmc 1:1 80800000 zImage # 从fat分区加载zImage到DDR的80800000
    

    fatwrite

    将文件写入fat分区中

    fatload mmc 1:1 80800000 zImage 6788f8 #从内存80800000处读取0x6788f8个数据写入fat分区,替换zImage文件
    

    7.ext文件系统相关

    8.nand相关

    nand info

    nand device

    nand erase

    nand read

    nand write

    9.网络相关相关

    ping

    测试uboot和远程主机的连通性。但是远程主机无法ping通uboot,即使网络实际上连通。

    dhcp

    从dhcp获取ip地址。

    tftp

    从tftp server下载文件到ddr。

    tftp 80800000 zImage #从tftpserver下载zImage到80800000处
    

    nfs

    从nfs服务器共享目录下载文件到ddr。和tftp不同的是,需要指定远程主机的ip地址和共享文件的全路径。

    # nfs [loadaddr] [[host_ip_addr]:filepath]
    nfs 80800000 192.168.1.128:/home/book/nfs_rootfs/zImage#从nfserver下载zImage到80800000处
    

    10.系统启动相关

    bootz

    bootz命令根据给定的kernel、dtb在ddr中的地址,去启动内核。可以通过多种方式(tftp命令、fatload命令等方式将zImage、dtb加载到ddr指定位置)
    输入参数1:zImage_addr
    输入参数2:dtb_addr

    # if zimage_addr=80800000 dtb_addr=83000000
    tftp 80800000 zImage
    tftp 83000000 xxxx.dtb
    bootz 80800000 - 83000000
    

    bootm

    bootm用于启动uImage

    boot

    boot命令执行uboot环境变量bootcmd中定义好的一组命令来启动系统。这一组命令一般包含
    1)将kerneldtb拷贝到ddr指定位置的命令
    2)bootz或者bootm命令

    # 执行boot命令则执行环境变量bootcmd中定义好的命令
    # 测试该命令,可以自定定义bootcmd命令,如下所示:
    # 下面使用双引号包含多个命令,命令之间用分号隔开,单引号也可以
    setenv bootcmd "tftp 80800000 zImage;tftp 83000000 xxxx.dtb;bootz 80800000 - 83000000"
    saveenv   # 做测试可以不保存,如果保存了,聚会写入环境变量区
    boot
    

    run

    run命令可以执行一个自定义命令,这个自定义命令的名字以一个环境变量形式出现,环境变量的内容就是用户要执行的一系列命令集合。

    setenv usercmd "tftp 80800000 zImage;tftp 83000000 xxxx.dtb;bootz 80800000 - 83000000"
    run usercmd
    

    run命令和boot命令很相似,知识boot命令默认会执行bootcmd中定义好的一系列操作,不需要制定这个环境变量,但是run命令需要明确指定这个变量的名字。

    reset

    复位系统。这里值得注意,uboot的复位不是reboot,reboot一般指操作系统重启。

    go

    让cpu到ddr指定地址执行程序。可以用于调试裸机程序。
    如果一个裸机程序app.bin,链接地址设置为87800000,并烧写到了87800000,则可以通过go直接运行该程序

    tftp 87800000 app.bin
    go 87800000  # 跳转到87800000执行代码
    

    这里要区分go和bootz命令的区别。bootz命令有两个地址输入作为参数,启动内核前,还会做一些其他的操作。不要指望简单的使用go 80800000这条命令去启动内核。

  • 相关阅读:
    Win10 企业版ltsc 无法访问samba网络共享问题及解决!(转)
    内核发送uevent的API,用户空间解析uevent(转)
    修改kile工程名字(转)
    gdb调试
    当usbnet打印 kevent * may have been dropped(转)
    收藏一份devmem源码
    Linux Performance
    控制 input框只输入数字
    springboot环境中,可能会出现使用font-Awesome结果图标不显示的问题,在webService的pom文件中添加如下配置代码
    js防止页面抖动(按钮,请求等重复提交)
  • 原文地址:https://www.cnblogs.com/uil2liu/p/15244714.html
Copyright © 2011-2022 走看看