u-boot常用命令
Posted Frey_Liu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了u-boot常用命令相关的知识,希望对你有一定的参考价值。
u-boot常用命令
uboot 的全称是Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程。
查看u-boot所支持的命令
进入uboot的命令行模式以后输入“ help”或者“?”,即可查看当前 uboot所支持的命令。
=> ?
? - alias for 'help'
base - print or set address offset
bdinfo - print Board Info structure
blkcache - block cache diagnostics and control
bootefi - Boots an EFI payload from memory
bootelf - Boot from an ELF image in memory
bootflow - Boot flows
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
bootz - boot Linux zImage image from memory
cmp - memory compare
cp - memory copy
crc32 - checksum calculation
dhcp - boot image via network using DHCP/TFTP protocol
echo - echo args to console
env - environment handling commands
erase - erase FLASH memory
exit - exit script
ext2load - load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
ext4load - load binary file from a Ext4 filesystem
ext4ls - list files in a directory (default /)
ext4size - determine a file's size
false - do nothing, unsuccessfully
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatmkdir - create a directory
fatrm - delete a file
fatsize - determine a file's size
fatwrite - write file into a dos filesystem
fdt - flattened device tree utility commands
flinfo - print FLASH memory information
fstype - Look up a filesystem type
fstypes - List supported filesystem types
go - start application at address 'addr'
help - print command description/usage
iminfo - print header information for application image
ln - Create a symbolic link
load - load binary file from a filesystem
loop - infinite loop on address range
ls - list files in a directory (default /)
md - memory display
mii - MII utility commands
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mw - memory write (fill)
net - NET sub-system
nm - memory modify (constant address)
panic - Panic with optional message
part - disk partition related commands
ping - send ICMP ECHO_REQUEST to network host
printenv - print environment variables
protect - enable or disable FLASH write protection
pxe - commands to get and boot from pxe files
random - fill memory with random pattern
reset - Perform RESET of the CPU
run - run commands in an environment variable
save - save file to a filesystem
saveenv - save environment variables to persistent storage
setenv - set environment variables
showvar - print local hushshell variables
size - determine a file's size
source - run script from memory
sysboot - command to get and boot from syslinux files
test - minimal test like /bin/sh
tftpboot - load file via network using TFTP protocol
true - do nothing, successfully
ubi - ubi commands
ubifsload - load file from an UBIFS filesystem
ubifsls - list files in a directory
ubifsmount- mount UBIFS volume
ubifsumount- unmount UBIFS volume
version - print monitor, compiler and linker version
## 命令的具体使用方法
=> ? net
net - NET sub-system
Usage:
net list - list available devices
=> ? cp
cp - memory copy
Usage:
cp [.b, .w, .l, .q] source target count
=>
查询命令
u-boot版本
=> v
U-Boot 2022.10-rc5 (Nov 27 2022 - 21:35:46 +0800)
arm-linux-gnueabi-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
GNU ld (GNU Binutils for Ubuntu) 2.34
=> version
U-Boot 2022.10-rc5 (Nov 27 2022 - 21:35:46 +0800)
arm-linux-gnueabi-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
GNU ld (GNU Binutils for Ubuntu) 2.34
=>
环境变量
=> printenv
arch=arm
baudrate=38400
board=vexpress
board_name=vexpress
boot_a_script=load $devtype $devnum:$distro_bootpart $scriptaddr $prefix$script; source $scriptaddr
boot_efi_binary=load $devtype $devnum:$distro_bootpart $kernel_addr_r efi/boot/bootarm.efi; if fdt addr -q $fdt_addr_r; then bootefi $kernel_addr_r $fdt_addr_r;else bootefi $kernel_addr_r $fdtcontroladdr;fi
boot_efi_bootmgr=if fdt addr -q $fdt_addr_r; then bootefi bootmgr $fdt_addr_r;else bootefi bootmgr;fi
boot_extlinux=sysboot $devtype $devnum:$distro_bootpart any $scriptaddr $prefix$boot_syslinux_conf
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc1 mmc0 pxe dhcp
bootargs=root=/dev/sda1 rw console=ttyAMA0,38400n8 mem=1024M mtdparts=armflash:1M@0x800000(uboot),7M@0x1000000(kernel),24M@0x2000000(initrd) mmci.fmax=190000 devtmpfs.mount=0 vmalloc=256M
bootcmd=run distro_bootcmd; run bootflash
bootcmd_dhcp=devtype=dhcp; if dhcp $scriptaddr $boot_script_dhcp; then source $scriptaddr; fi;setenv efi_fdtfile $fdtfile; if test -z "$fdtfile" -a -n "$soc"; then setenv efi_fdtfile $soc-$board$boardver.dtb; fi; setenv efi_old_vci $bootp_vci;setenv efi_old_arch $bootp_arch;setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp $kernel_addr_r; then tftpboot $fdt_addr_r dtb/$efi_fdtfile;if fdt addr -q $fdt_addr_r; then bootefi $kernel_addr_r $fdt_addr_r; else bootefi $kernel_addr_r $fdtcontroladdr;fi;fi;setenv bootp_vci $efi_old_vci;setenv bootp_arch $efi_old_arch;setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_pxe=dhcp; if pxe get; then pxe boot; fi
bootdelay=2
bootfile=boot.scr.uimg
bootflash=run flashargs; cp $ramdisk_addr $ramdisk_addr_r $maxramdisk; bootm $kernel_addr $ramdisk_addr_r
console=ttyAMA0,38400n8
cpu=armv7
distro_bootcmd=for target in $boot_targets; do run bootcmd_$target; done
dram=1024M
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethact=ethernet@3,02000000
ethaddr=52:54:00:12:34:56
fdt_addr_r=0x60000000
fdtcontroladdr=7ffdff80
fdtfile=vexpress-v2p-ca9.dtb
flashargs=setenv bootargs root=$root console=$console mem=$dram mtdparts=$mtd mmci.fmax=190000 devtmpfs.mount=0 vmalloc=256M
kernel_addr_r=0x60100000
load_efi_dtb=load $devtype $devnum:$distro_bootpart $fdt_addr_r $prefix$efi_fdtfile
loadaddr=0x90000000
mmc_boot=if mmc dev $devnum; then devtype=mmc; run scan_dev_for_boot_part; fi
mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel),24M@0x2000000(initrd)
root=/dev/sda1 rw
scan_dev_for_boot=echo Scanning $devtype $devnum:$distro_bootpart...; for prefix in $boot_prefixes; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list $devtype $devnum -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in $devplist; do if fstype $devtype $devnum:$distro_bootpart bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile $fdtfile; if test -z "$fdtfile" -a -n "$soc"; then setenv efi_fdtfile $soc-$board$boardver.dtb; fi; for prefix in $efi_dtb_prefixes; do if test -e $devtype $devnum:$distro_bootpart $prefix$efi_fdtfile; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e $devtype $devnum:$distro_bootpart efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e $devtype $devnum:$distro_bootpart $prefix$boot_syslinux_conf; then echo Found $prefix$boot_syslinux_conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in $boot_scripts; do if test -e $devtype $devnum:$distro_bootpart $prefix$script; then echo Found U-Boot script $prefix$script; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
stderr=serial
stdin=serial
stdout=serial
ubifs_boot=if ubi part $bootubipart $bootubioff && ubifsmount ubi0:$bootubivol; then devtype=ubi; devnum=ubi0; bootfstype=ubifs; distro_bootpart=$bootubivol; run scan_dev_for_boot; ubifsumount; fi
vendor=armltd
Environment size: 4419/262140 bytes
=>
板子相关信息
=> bdinfo
boot_params = 0x60002000
DRAM bank = 0x00000000
-> start = 0x60000000
-> size = 0x20000000
DRAM bank = 0x00000001
-> start = 0x80000000
-> size = 0x00000004
flashstart = 0x40000000
flashsize = 0x04000000
flashoffset = 0x00000000
baudrate = 38400 bps
relocaddr = 0x7ff67000
reloc off = 0x1f767000
Build = 32-bit
current eth = ethernet@3,02000000
ethaddr = 52:54:00:12:34:56
IP addr = <NULL>
fdt_blob = 0x7ffdff80
new_fdt = 0x00000000
fdt_size = 0x00000000
lmb_dump_all:
memory.cnt = 0x1
memory[0] [0x60000000-0x80000003], 0x20000004 bytes flags: 0
reserved.cnt = 0x2
reserved[0] [0x4c000000-0x4c7fffff], 0x00800000 bytes flags: 4
reserved[1] [0x7fb22c78-0x7fffffff], 0x004dd388 bytes flags: 0
devicetree = embed
arch_number = 0x000008e0
TLB addr = 0x7fff0000
irq_sp = 0x7fb26eb0
sp start = 0x7fb26ea0
Early malloc usage: 370 / 400
环境变量操作
环境变量的操作涉及到两个命令: setenv 和 saveenv,命令 setenv 用于设置或者修改环境变量的值。命令 saveenv 用于保存修改后的环境变量,一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。
# setenv的格式,可用于修改环境变量,也可用于新建环境变量
setenv "命令" "值1 值2 值3" 或者
setenv name value # 第1个参数是环境变量的名称。
# 第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。
# 修改bootdelay
setenv bootdelay 0 # 环境变量bootdelay设置为0
saveenv # 将DRAM中的变量保存到flash, Saving Environment to NAND
## 新建abc
setenv abc 'ttyAMA1,11520 root=/dev/mmcblk2p2 rootwait rw ’
saveenv
## 删除abc
setenv abc
saveenv
内存操作
内存操作命令就是用于直接对DRAM进行读写操作的,常用的内存操作命令有 md、 nm、mm、 mw、 cp 和 cmp。
- md
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,也就是 202=40 个字节; ## 如果显示格式为.l 的话就表示 20 个 long,也就是 204=80 个字节。另外要注意: # 注意uboot 命令中的数字都是十六进制的!不是十进制的! # 查看以 0X80000000 为起始地址的内存数据 md.b 80000000 10 # 以.b 格式显示,长度为 0x10,也就是 16 个字节 md.w 80000000 10 # 以.w 格式显示,长度为 0x10,也就是 16*2=32个字节 md.l 80000000 10 # 以.l 格式显示,长度也是 0x10,也就是 16*4=64 个字节
- nm
nm 命令用于修改指定地址的内存值。
nm [.b, .w, .l] address
=> nm.b 60000000
60000000: 00 ? 12
60000000: 12 ?
60000000: 12 ? q
nm.l 60003000 // 再输入要修改后的数据 0x12345678
-
mm
mm 命令用于修改指定地址的内存值 (修改内存值的时候地址会自增), 而使用命令 nm 的话地址不会自增。mm [.b, .w, .l] address mm.l 80000000 // 再连续输入要修改后的数据, 直到输入q退出
-
mv
mw 使用一个指定的数据填充一段内存。mw [.b, .w, .l] address value [count] # value为要填充的数据,count 是填充的长度 mw.l 80000000 0A0A0A0A 10 # 以 0X80000000 为起始地址的 0x10 个内存块(0x10 * 4=64 字节)填充为 0X0A0A0A0A
-
cp
cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中。cp [.b, .w, .l] source target count cp.w 80000000 80000100 10 # 将 0x80000000 处的地址拷贝到 0X80000100 处,长度为 0x10 个内存块(0x10 * 2=32 个字节)
-
cmp
cmp 是比较命令,用于比较两段内存的数据是否相等。cmp [.b, .w, .l] addr1 addr2 count => cmp.l 60000000 60003000 10 word at 0x60000000 (0x12) != word at 0x60003000 (0x00) Total of 0 word(s) were the same =>
网络操作
开发板的网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可以验证,保证开发板和主机能够ping通(因为uboot ping中不会反馈信息,故只能使用开发板ping主机)。
uboot 网络环境变量设置如下:
setenv ipaddr 192.168.1.80 # 开发板IP,可以不设置,dhcp命令从路由器获取ip
setenv ethaddr 02:04:9f:04:d2:35 # 开发板的MAC
setenv gatewayip 192.168.1.1 # 网关地址
setenv netmask 255.255.240.0 # 子网掩码
setenv serverip 192.168.1.240 # 服务器IP,
saveenv
-
dhcp 命令
dhcp 用于从路由器获取 IP 地址,前提得开发连接到路由器上的,如果开发板是和电脑直连的,那么 dhcp 命令就会失效。直接输入 dhcp 命令即可通过路由器获取到 IP 地址。dhcp [loadAddress] [[hostIPaddr:] bootfilename] # 或者直接 dhcp 获取该网络的IP
-
nfs 命令
nfs 也就是网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,比如我们将linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中的 linux 镜像和设备树下载到开发板的 DRAM 中。一般使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过NFS 访问的文件都需要放到这个 NFS 目录中。准备好以后就可以使用 nfs 命令来将 zImage 下载到开发板 DRAM 的 0X60800000 地址处,命令如下:
nfs 60800000 192.168.1.150:/home/abc/nfs/zImage nfs [loadAddress] [[hostIPaddr:]bootfilename] # 前提是电脑主机必须搭建 nfs 服务,并将需要 nfs 传输的文件放入指定目录 # 注意nfs传输文件的权限: chmod 777 /home/abc/nfs/*
-
tftp 命令
tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议, Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa、xinetd,命令如下:sudo apt install tftp-hpa tftpd-hpa xinetd mkdir /home/tftpboot chmod 777 /home/tftpboot # 最后配置 tftp,打开文件安装完成以后新建文件/etc/xinetd.d/tftp server tftp socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/tftpboot/ disable = no per_source = 11 cps = 100 2 flags = IPv4 # 完了以后启动 tftp 服务 sudo service tftpd-hpa start # 修改配置文件:/etc/default/tftpd-hpa TFTP_USENAME="tftp" TFTP_DIRECTORY="/home/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s" # TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录, # 后面所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。 #最后输入如下命令, 重启 tftp 服务器: sudo service tftpd-hpa restart tftp[loadAddress] [[hostIPaddr:]bootfilename] # 前提是电脑主机必须搭建 tftp服务,并将需要 tftp传输的文件放入指定目录 # 注意 tftp 传输文件的权限: chmod 777 /home/tftp/* # loadAddress 是文件在DRAM中的存放地址 # [[hostIPaddr:]bootfilename]是要从Ubuntu中下载的文件。 # 和 nfs 命令的区别在于,tftp 命令不需要输入文件在Ubuntu中的完整路径,只需要输入文件名即可。 tftp 60003000 zImage # 可以不需要完整路径 # tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处
EMMC和 SD卡操作
uboot 中,一般认为 EMMC和 SD 卡是同一个东西,使用 MMC 来代指 EMMC 和 SD 卡。(通过 ? mmc 查询对应的操作命令)
命令 | 描述 |
---|---|
mmc info | 命令输出当前选中的 mmc info 设备的信息 |
mmc rescan | 命令用于扫描当前开发板上所有的 MMC 设备 |
mmc list | 命令用于来查看当前开发板一共有几个 MMC 设备 |
mmc dev | 命令用于切换当前MMC 设备 |
mmc part | 命令查看EMMC或SD卡的分区情况 |
mmc read | 命令用于读取mmc设备的数据 |
mmc write | 命令将数据写到MMC设备里面 |
mmc erase | 命令用于擦除MMC设备的指定块 |
mmc setdsr | 设置DSR寄存器的值 |
加上 SD 卡一共有两个 MMC 设备, FSL_SDHC:0 是 SD卡, FSL_SDHC:1(eMMC)是 EMMC。默认会将 EMMC设置为当前MMC设备,这就是为什么输入“mmc info”查询到的是EMMC设备信息,而不是 SD 卡。要想查看 SD 卡信息,就要使用命令“mmc dev”来将 SD卡设置为当前的MMC设备。mmc dev 命令用于切换当前 MMC 设备,命令格式如下:
mmc dev [dev] [part]
mmc dev 0 //切换到 SD 卡, 0 为 SD 卡, 1 为 eMMC
# 有时候 SD 卡或者 EMMC 会有多个分区,
# 第 0 个分区存放 uboot,第 1 个分区存放 Linux 镜像文件和设备树,
# 第 2 个分区存放根文件系统。
# 要将数据写到 MMC 设备里面,可以使用命令“mmc write”,格式如下
mmc write addr blk# cnt
# 可以先通过nfs或者tftp将主机文件拷入DRAM,在通过该命令将DRAM中的数据传入SD或eMMC设备
# addr 是要写入 MMC 中的数据在 DRAM 中的起始地址, blk 是要写入 MMC 的块起始地址(十六进制), cnt 是要写入的块大小,一个块为 512 字节。
# 通过nfs或tftp命令将新的u-boot.bin下载到开发板的 DRAM 中,然后再使用命令“mmc write”将其写入到 MMC设备中。先查看一下SD卡中的 uboot 版本号,注意编译时间,输入命令:
mmc dev 0 //切换到 SD 卡
version //查看版本号
# 可以使用命令mmc write来升级uboot,也就是在uboot中更新 uboot,
# 如果要在uboot中更新EMMC对应的uboot。可以使用如下所示命令:
mmc dev 1 0 # 切换到EMMC分区 0
tftp 80800000 u-boot.imx # 下载u-boot.imx到 DRAM
mmc write 80800000 2 32E # 烧写 u-boot.imx 到 EMMC 中
mmc partconf 1 1 0 0 # 分区配置,EMMC 需要这一步!
# 不要写SD卡或者EMMC的前两个块(扇区),里面保存着分区表!
FAT 格式文件系统操作
有时候需要在 uboot 中对 SD 卡或者 EMMC 中存储的文件进行操作,跟该文件操作相关的命令有:fatinfo、fatls、fstype、fatload 和 fatwrite,但是这些文件操作命令只支持 FAT 格式的文件系统!
-
fatinfo-用于查询指定 MMC 设置指定分区的文件系统信息
fatinfo <interface> [<dev[:part]>] # interface 表示接口,比如 mmc,dev 是查询的设备号,part 是要查询的分区。 fatinfo mmc 1:1 # 查询 EMMC分区1的文件系统信息
-
fatls-用于查询 FAT 格式设备的目录和文件信息
fatls <interface> [<dev[:part]>] [directory] # interface 表示接口,比如 mmc,dev 是查询的设备号,part 是要查询的分区, ## directory是要查询的目录。 fatls mmc 1:1 # 查询 EMMC分区1中的所有的目录和文件
-
fstype-用于查看 MMC 设备某个分区的文件系统格式
fstype <interface> <dev>:<part> fstype mmc 1:1 # 查询EMMC分区1的文件格式
-
fatload-用于将指定的文件读取到DRAM中
fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] # interface 为接口,比如 mmc,dev 是设备号,part 是分区, # addr 是保存在 DRAM 中的起始地址,filename 是要读取的文件名字。 # bytes 表示读取多少字节的数据,如果 bytes 为 0 或者省略的话表示读取整个文件。 # pos 是要读的文件相对于文件首地址的偏移,如果为 0 或者省略的话表示从文件首地址开始读取。 fatload mmc 1:1 80800000 zImage# 将EMMC分区1中的zImage文件读取到DRAM中的0X80800000地址处 fatwrite mmc 1:1 80800000 zImage 0x676908 # Image大小为6777096(0X676908)个字节,fatwrite将其写入到EMMC的分区1中,文件名字为zImage # 完成以后使用“fatls”命令查看一下 EMMC 分区 1 里面的文件 fatls mmc 1:1
EXT格式文件系统操作
uboot 有ext2和ext4这两种格式的文件系统的操作命令,常用的就四个命令,分别为:ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit一样,只是 ext2和ext4 都是针对ext文件系统的。比如 ext4ls 命令, EMMC 的分区2就是 ext4格式的,使用 ext4ls 就可以查询 EMMC 的分区 2 中的文件和目录。
ext4ls <interface> [<dev[:part]>] [directory]
ext4ls mmc 1:2 # 查询 EMMC 分区2中的所有的目录和文件
ext4load <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
ext4load mmc 1:2 C2000000 uImage # 将eMMC分区2中的uImage文件读取到DRAM中的0XC2000000 地址处
ext4write <interface> <dev[:part]> <addr> <absolute filename path> [sizebytes] [file offset]
tftp C0000000 uImage
# 使用命令tftp将uImage下载到DRAM的0XC0000000 地址处(uImage大小为 7313888(0X6F99E0)个字节)
ext4write mmc 1:2 c0000000 /test_uImage 0x6f99e0
# 使用命令 ext4write 将其写入到 EMMC 的分区2中 。
# 为了和原有的 uImage 文件区分,我们将要写入的文件命名为 test_uImage
ubi格式文件系统操作
ubifs文件系统是嵌入式系统nand flash常用的文件系统,而nand flash(低成本)又是嵌入式系统中必不可少的存储器件。使用该文件系统前,uboot需通过make menuconfig使能以下宏:
#define CONFIG_MTD_DEVICE
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_PARTITIONS
- ubi info l -当前分区详细信息, 注意其中的PEB代表可擦除的物理页个数,每个物理页大小128K
- ubifsmoun t-命令用于挂载nand flash的
以上是关于u-boot常用命令的主要内容,如果未能解决你的问题,请参考以下文章