U-Boot命令

文章详细介绍了U-Boot中的环境变量设置,包括查看、修改和删除,以及内存操作如md、nm、mm、mw、cp和cmp。还涵盖了网络操作如dhcp、ping、nfs和tftp,以及eMMC和SD卡的管理,如mmcinfo、fatload和ext4文件系统的操作。最后提到了U-Boot的启动命令bootz和bootm用于引导Linux系统。
摘要由CSDN通过智能技术生成
  1. 信息查询:

    • bdinfo:查看板子信息
    	=> bdinfo
    	boot_params = 0x0000000000000000
    	DRAM bank   = 0x0000000000000000
    	-> start    = 0x0000000080000000
    	-> size     = 0x0000000080000000
    	flashstart  = 0x0000000000000000
    	flashsize   = 0x0000000000000000
    	flashoffset = 0x0000000000000000
    	baudrate    = 115200 bps
    	relocaddr   = 0x00000000ffee2000
    	reloc off   = 0x000000007f6e2000
    	Build       = 64-bit
    	current eth = ethernet@8000000port@1
    	ethaddr     = f4:84:4c:f9:7d:05
    	IP addr     = <NULL>
    	fdt_blob    = 0x00000000fdeb6e80
    	new_fdt     = 0x00000000fdeb6e80
    	fdt_size    = 0x000000000000af60
    	multi_dtb_fit= 0x0000000000000000
    	lmb_dump_all:
    	    memory.cnt             = 0x1
    	    memory.size            = 0x0
    	    memory.reg[0x0].base   = 0x80000000
    	                   .size   = 0x80000000
    	
    	    reserved.cnt           = 0x2
    	    reserved.size          = 0x0
    	    reserved.reg[0x0].base = 0x9e800000
    	                     .size = 0x1800000
    	    reserved.reg[0x1].base = 0xfdeb5a80
    	                     .size = 0x214a580
    	arch_number = 0x0000000000000000
    	TLB addr    = 0x00000000ffff0000
    	irq_sp      = 0x00000000fdeb6e70
    	sp start    = 0x00000000fdeb6e70
    	Early malloc usage: 2a08 / 8000
    
    • printenv:输出环境变量
    => printenv
    addr_fit=0x90000000
    arch=arm
    args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000 ${mtdparts}
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    args_nand=setenv bootargs console=${console} ${optargs} ubi.mtd=${nbootpart} root=${nbootvolume} rootfstype=ubifs
    args_usb=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am64x
    board_name=am64x_gpevm
    board_rev=A
    board_serial=0230
    board_software_revision=01
    boot=mmc
    boot_fdt=try
    boot_fit=0
    bootcmd=run findfdt; run envboot; run init_${boot}; if test ${boot_fit} -eq 1; then run get_fit_${boot}; run get_overlaystring; run run_fit; else; run get_kern_${boot}; run get_fdt_${boot}; run get_overlay_${boot}; run run_kern; fi;
    bootdelay=2
    bootdir=/boot
    bootenvfile=uEnv.txt
    bootm_size=0x10000000
    bootpart=1:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyS2,115200n8
    cpu=armv8
    dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1;rootfs part 0 1 mmcpart 0;tiboot3.bin.raw raw 0x0 0x800 mmcpart 1;tispl.bin.raw raw 0x800 0x1000 mmcpart 1;u-boot.img.raw raw 0x1800 0x2000 mmcpart 1;u-env.raw raw 0x3800 0x100 mmcpart 1
    dfu_alt_info_mmc=boot part 1 1;rootfs part 1 2;tiboot3.bin fat 1 1;tispl.bin fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1;sysfw.itb fat 1 1
    dfu_alt_info_ospi=tiboot3.bin raw 0x0 0x100000;tispl.bin raw 0x100000 0x200000;u-boot.img raw 0x300000 0x400000;u-boot-env raw 0x700000 0x020000;rootfs raw 0x800000 0x3800000
    dfu_alt_info_ram=tispl.bin ram 0x80080000 0x200000;u-boot.img ram 0x81000000 0x400000
    dtboaddr=0x89000000
    envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
    eth1addr=70:ff:76:1e:28:b8
    eth2addr=70:ff:76:1e:28:b9
    ethaddr=f4:84:4c:f9:7d:05
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontroladdr=fdeb6e80
    fdtoverlay_addr_r=0x80200000
    findfdt=if test $board_name = am64x_gpevm; then setenv fdtfile k3-am642-evm.dtb; fi; if test $board_name = am64x_skevm; then setenv fdtfile k3-am642-sk.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
    finduuid=part uuid ${boot} ${bootpart} uuid
    get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    get_fdt_nand=ubifsload ${fdtaddr} ${bootdir}/${fdtfile};
    get_fdt_usb=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    get_fit_mmc=load mmc ${bootpart} ${addr_fit} ${bootdir}/${name_fit}
    get_fit_nand=ubifsload ${addr_fit} ${bootdir}/${name_fit}
    get_fit_usb=load usb ${bootpart} ${addr_fit} ${bootdir}/${name_fit}
    get_kern_mmc=load mmc ${bootpart} ${loadaddr} ${bootdir}/${name_kern}
    get_kern_nand=ubifsload ${loadaddr} ${bootdir}/${name_kern}
    get_kern_usb=load usb ${bootpart} ${loadaddr} ${bootdir}/${name_kern}
    get_overlay_mmc=fdt address ${fdtaddr};fdt resize 0x100000;for overlay in $name_overlays;do;load mmc ${bootpart} ${dtboaddr} ${bootdir}/${overlay} && fdt apply ${dtboaddr};done;
    get_overlay_nand=fdt address ${fdtaddr};fdt resize 0x100000;for overlay in $name_overlays;do;ubifsload ${dtboaddr} ${bootdir}/${overlay} && fdt apply ${dtboaddr};done;
    get_overlay_usb=fdt address ${fdtaddr};fdt resize 0x100000;for overlay in $name_overlays;do;load usb ${bootpart} ${dtboaddr} ${bootdir}/${overlay} && fdt apply ${dtboaddr};done;
    get_overlaystring=for overlay in $name_overlays;do;setenv overlaystring ${overlaystring}'#'${overlay};done;
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
    init_mmc=run args_all args_mmc
    init_nand=run args_all args_nand ubi_init
    init_usb=run args_all args_usb
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
    loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
    loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    mmcboot=mmc dev ${mmcdev}; devnum=${mmcdev}; devtype=mmc; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run args_mmc; if test ${boot_fit} -eq 1; then run run_fit; else run mmcloados;fi;fi;fi;
    mmcdev=1
    mmcloados=if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
    mmcrootfstype=ext4 rootwait
    mtdids=nor0=fc40000.spi.0,nand0=omap2-nand.0
    mtdparts=mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system)
    name_fit=fitImage
    name_kern=Image
    nbootpart=NAND.file-system
    nbootvolume=ubi0:rootfs
    partitions=name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    rd_spec=-
    rdaddr=0x88080000
    run_fit=bootm ${addr_fit}#${fdtfile}${overlaystring}
    run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
    scriptaddr=0x80000000
    serial#=0000000000000230
    soc=k3
    stderr=serial@2800000
    stdin=serial@2800000
    stdout=serial@2800000
    ubi_init=ubi part ${nbootpart}; ubifsmount ${nbootvolume};
    update_to_fit=setenv loadaddr ${addr_fit}; setenv bootfile ${name_fit}
    usbboot=setenv boot usb;setenv bootpart 0:2;usb start;run findfdt;run init_usb;run get_kern_usb;run get_fdt_usb;run run_kern
    vendor=ti
    
    Environment size: 5742/131068 bytes
    
    • version
    => version
    U-Boot 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    
    aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
    GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209
    
  2. 环境变量操作

    • 修改/新建/删除环境变量:setenv, saveenv
    #修改,有空格应用单引号
    setenv bootdelay 5
    saveenv
    
    setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
    saveenv
    
    #新建
    setenv author zx
    saveenv
    
    #删除
    setenv author
    saveenv
    
  3. 内存操作:md nm mm mw cp cmp

    • md:用于显示内存值,注意U-Boot中的命令都是十六进制,10=>0x10 是十进制的16

      md[.b, .w, .l] address [# of objects]
      		#命令中的[.b .w .l]对应 byte、 word 和 long,也就是分别以 1 个字节、 2 个字节、 4 个字节
      来显示内存值。 address 就是要查看的内存起始地址, [# of objects]表示要查看的数据长度
      => md.b 80000000 10
      80000000: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff    ................
      => md.w 80000000 10
      80000000: 0000 ffff 0000 ffff 0000 ffff 0000 ffff    ................
      80000010: 0000 0000 0000 0000 0000 0000 0000 0000    ................
      => md.l 80000000 10
      80000000: ffff0000 ffff0000 ffff0000 ffff0000    ................
      80000010: 00000000 00000000 00000000 00000000    ................
      80000020: 00000000 00000000 00000000 00000000    ................
      80000030: 00000000 00000000 00000000 00000000    ................
      
      
    • nm:用于修改指定地址的内存值

      nm[.b, .w, .l] address
      => nm.l 80000000
       80000000: ffff0000 ? 12345678
       80000000: 12345678 ? q
      =>md.l 80000000 1
       80000000: 12345678
      
    • mm:也用于修改指定地址内存值,修改内存值的时候地址会自增

      => mm.l 80000000
      80000000: 12345678 ? 13243546
      80000004: 12345678 ? 13243546
      80000008: 12345678 ? 13243546
      8000000c: 12345678 ? q
      
    • mw:用于使用一个指定的数据填充一段内存

      mw[.b, .w, .l] address value [count]
      => mw.l 80000000 0a0a0a0a0a 10
      
    • cp:数据拷贝命令

      cp[.b, .w, .l] source target count
      =>cp.l 80000000 80000100 10
      
    • cmp:比较两个内存的数据是否相等

  4. 网络操作命令:dhcp ping nfs tftpboot

    • ping:只能在U-Boot中ping其他机器
    • dhcp:用于从路由器获取IP地址,还会通过TFTP来启动Linux内核
    • nfs:通过网络来分享资源,一般使用U-Boot中的nfs命令,将Ubuntu中的文件下载到开发板的DRAM中
      nfs [loadaddress] [hostIPaddress:[bootfilename]]
      nfs 80800000 192.168.1.1:/home/zx/nfs/zImage
      
    • tftp:作用与nfs一样
  5. eMMC和SD卡操作指令

    • mmc info:输出MMC设备信息
    • mmc read:
    • mmc write:
    • mmc part:列出MMC设备的分区
    • mmc dev:切换MMC设备
    • mmc list:
  6. FAT文件系统操作命令

    • fatinfo:

      => fatinfo mmc 1:1
      Interface:  MMC
        Device 1: Vendor: Man 000003 Snr 4e29fe01 Rev: 10.4 Prod: SB16G▒
                  Type: Removable Hard Disk
                  Capacity: 15193.5 MB = 14.8 GB (31116288 x 512)
      Filesystem: FAT16 "boot       "
      
    • fatls

      => fatls mmc 1:1
      577307   tiboot3-am64x_sr2-hs-evm.bin
      902455   tispl.bin
      1131919   u-boot.img
       1490   uEnv.txt
        318   wificfg
              System Volume Information/
      577307   tiboot3_orig.bin
      574718   tiboot3.bin
      131072   uboot.env
          1   .psdk_setup
      
      9 file(s), 1 dir(s)
      
    • fstype:用于查看MMC设备某个分区的文件系统格式

      => mmc list
      mmc@fa10000: 0 (eMMC)
      mmc@fa00000: 1 (SD)
      => fstype mmc 1:0
      ** Unrecognized filesystem type **
      => fstype mmc 1:1
      fat
      => fstype mmc 1:2
      ext4
      => fstype mmc 0:0
      ** Unrecognized filesystem type **
      => fstype mmc 0:1
      ext4
      => fstype mmc 0:2
      ** Invalid partition 2 **
      
    • fatload:将指定的文件读取到DRAM中

      fatload mmc 1:1 80800000 zImage
      
  7. EXT格式文件系统操作:ext4load ext4ls ext4write

    => ext4ls mmc 1:2
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <DIR>       4096 bin
    <DIR>       4096 boot
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 home
    <DIR>       4096 include
    <SYM>         20 init
    <DIR>       4096 lib
    <SYM>         19 linuxrc
    <DIR>       4096 media
    <DIR>       4096 mnt
    <DIR>       4096 opt
    <DIR>       4096 proc
    <DIR>       4096 run
    <DIR>       4096 sbin
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    <DIR>       4096 var
    <DIR>       4096 www
    
    
  8. BOOT操作命令
    U-Boot的本质工作是引导Linux,常用bootz、bootm和boot来启动Linux。

    • bootz:用来启动zImage镜像文件

      bootz [addr [initrd[:size]] [fdt]]
      
    • bootm:用于启动uImage镜像

      bootm [addr [initrd[:size]] [fdt]]
      
    • boot会读取环境变量bootcmd来启动Linux系统

  9. 其他常用命令

    • reset:复位重启
    • go:用于跳到指定的地址处执行应用
    • run:用于运行环境中定义的命令
    • mtest:简单的内存读写测试命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值