• 嵌入式开发环境之uboot命令


    1.命令

    help #显示uboot支持所有的命令

    ? 命令 #查看命令的内容

    1.1.信息查询命令

    bdinfo #查看板子信息

    printenv #输出环境变量信息

     version  #用于查看 uboot 的版本号

    1.2.环境变量操作命令

     setenv  #用于设置或者修改环境变量的值。

     saveenv #用于保存修改后的环境变量

    原理:

     一般环境变量是存放在外部 flash( EMMC 这种掉电数据不丢失的介质) 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。

    #通过 setenv 给 author 赋空值,也就是什么都不写来删除环境变量 author。重启
    uboot 就会发现环境变量 author 没有了 这样达到删除效果

    setenv author
    saveenv

    1.3.内存操作命令

    内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、nm、
    mm、mw、cp 和 cmp。我们依次来看一下这些命令都是做什么的。

    1.3.1md 命令

    md 命令用于显示内存值,格式如下:

    md[.b, .w, .l] address [# of objects]


    命令中的[.b .w .l]对应 byte、word 和 long,也就是分别以 1 个字节、2 个字节、4 个字节
    来显示内存值。address 就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度为
    20(十六进制为 0x14),如果显示格式为.b 的话那就表示 20 个字节;如果显示格式为.w 的话就
    表示 20 个 word,也就是 20*2=40 个字节;如果显示格式为.l 的话就表示 20 个 long,也就是
    20*4=80 个字节。另外要注意:
    uboot 命令中的数字都是十六进制的!不是十进制的!

     1.3.2 .nm 命令

    nm 命令用于修改指定地址的内存值,命令格式如下:
    nm [.b, .w, .l] address
    nm 命令同样可以以.b、.w 和.l 来指定操作格式,比如现在以.l 格式修改 0x80000000 地址
    的数据为 0x12345678。输入命令:
    nm.l 80000000 回车
    输入上述命令以后如图 30.4.3.2 所示

     80000000 表示现在要修改的内存地址,0500e031 表示地址 0x80000000 现
    在的数据,?后面就可以输入要修改后的数据 0x12345678,输入完成以后按下回车,然后再输
    入‘q’即可退出

     修改成功与否,可以通过 md查看。

    1.3.3 、mm 命令

            mm 命令也是修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命
    令 nm 的话地址不会自增。

     1.3.4. 、mw 命令

    命令 mw 用于使用一个指定的数据填充一段内存,命令格式如下:
    mw [.b, .w, .l] address value [count]
    mw 命令同样可以以.b、.w 和.l 来指定操作格式,address 表示要填充的内存起始地址,value
    为要填充的数据,count 是填充的长度
    。比如使用.l 格式将以 0X80000000 为起始地址的 0x10 个
    内存块(0x10 * 4=64 字节)填充为 0X0A0A0A0A,命令如下:
    mw.l 80000000 0A0A0A0A 10

    1.3.5.cp命令

    cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 Nor
    Flash 中的数据拷贝到 DRAM 中。命令格式如下:
    cp [.b, .w, .l] source target count
    cp 命令同样可以以.b、.w 和.l 来指定操作格式,source 为源地址,target 为目的地址,count
    为拷贝的长度。我们使用.l 格式将 0x80000000 处的地址拷贝到 0X80000100 处,长度为 0x10 个
    内存块(0x10 * 4=64 个字节),命令如下所示:
    cp.l 80000000 80000100 10

    1.3.6.cmp 命令

    mp 是比较命令,用于比较两段内存的数据是否相等,命令格式如下:
    cmp [.b, .w, .l] addr1 addr2 count
    cmp 命令同样可以以.b、.w 和.l 来指定操作格式,addr1 为第一段内存首地址,addr2 为第
    二段内存首地址,count 为要比较的长度。我们使用.l 格式来比较 0x80000000 和 0X80000100 这
    两个地址数据是否相等,比较长度为 0x10 个内存块(16 * 4=64 个字节),命令如下所示:
    cmp.l 80000000 80000100 10

    1.3.7.网络操作命令

    uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linux
    kernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、nfs 和 tftpboot

     

    setenv ipaddr 192.168.1.50
    setenv ethaddr b8:ae:1d:01:00:00
    setenv gatewayip 192.168.1.1
    setenv netmask 255.255.255.0
    setenv serverip 192.168.1.253
    saveenv

    注意,网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP
    地址在同一个网段内
    ,比如我现在的开发板和电脑都在 192.168.1.0 这个网段内,所以设置开
    发板的 IP 地址为 192.168.1.50,我的 Ubuntu 主机的地址为 192.168.1.253,因此 serverip 就是
    192.168.1.253。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个
    开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关
    的环境变量以后就可以使用网络相关命令了

    ping 命令:ping ip地址 

    dhcp 命令:dhcp 用于从路由器获取 IP 地址前提得开发板连接到路由器上的,如果开发板是和电脑直连的,那么 dhcp 命令就会失效

    nfs 命令:

    nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源

    nfs [loadAddress] [[hostIPaddr:]bootfilename]
    loadAddress 是要保存的 DRAM 地址,[[hostIPaddr:]bootfilename]是要下载的文件地址

    tftp 命令.

    ftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令
    使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器

     1.3.8.存储介质操作命令

    uboot 中常用于操作 MMC 设备的命令为“mmc”。mmc 是一系列的命令,其后可以跟不同的参数。

     1.4.其他命令

    reset 命令  #复位重启

    go 命令用于跳到指定的地址处执行应用,命令格式如下:
            go addr [arg ...]
            addr 是应用在 DRAM 中的首地址 arg是参数,可选

    run 命令

            run 命令用于运行环境变量中定义的命令

    mtest 命令

            mtest 命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR

            mtest [start [end [pattern [iterations]]]]
            start是要测试的DRAM开始地址,end是结束地址

    其他命令以后再继续更新。。。。

  • 相关阅读:
    docker运行镜像、docker删除镜像、docker运行容器、docker退出当前容器、docker关闭容器、docker重新回到后台运行的容器命令
    【第014篇】基于vue+elementui设计的在线预览文件(可预览图片、PDF、WORD、EXCEL文档)
    2024年第十五届蓝桥杯C/C++B组复盘(持续更新)
    Blazor系统教程(.net8)
    web前端期末大作业【足球网页】学生网页设计作业源码
    Shell编程三剑客之sed
    想没想过自己做个APP?来,机会来了
    使用ros发布自定义的消息
    【编程题】【Scratch四级】2021.03 程序优化
    Debian中fping应用丢失之重新安装方法
  • 原文地址:https://blog.csdn.net/m0_46392035/article/details/126711238