U-Boot 的命令集因版本和配置而异,以下是最全面的命令列表和详细说明。
一、基础命令
1. 帮助与信息
help/ ?# 显示所有可用命令列表help<command># 显示特定命令的详细帮助version# 显示 U-Boot 版本信息bdinfo# 显示板级信息(Board Info)coninfo# 显示控制台设备信息二、环境变量命令
2. 环境变量操作
printenv/ print / pri# 显示所有环境变量printenv<var># 显示指定环境变量setenv<var><value># 设置环境变量setenv<var># 删除环境变量(不带值)saveenv / save# 保存环境变量到存储器envdefault[-f][-a]# 恢复默认环境变量envexport[-t|-b]<addr>[size]# 导出环境变量envimport[-d][-t|-b]<addr>[size]# 导入环境变量editenv<var># 编辑环境变量askenv<var>[message]# 提示用户输入环境变量值常用环境变量
bootcmd# 自动启动时执行的命令bootdelay# 自动启动延迟时间(秒)bootargs# 传递给内核的启动参数ipaddr# 板子的 IP 地址serverip# TFTP 服务器 IP 地址netmask# 网络掩码gatewayip# 网关地址ethaddr# MAC 地址stdin/stdout/stderr# 标准输入输出设备三、内存操作命令
3. 内存读写
md[.b, .w, .l, .q]<addr>[count]# 显示内存(byte/word/long/quad)mm[.b, .w, .l, .q]<addr># 修改内存(交互式)nm[.b, .w, .l, .q]<addr># 持续修改内存mw[.b, .w, .l, .q]<addr><value>[count]# 写入内存cp[.b, .w, .l, .q]<src><dst><count># 复制内存cmp[.b, .w, .l, .q]<addr1><addr2><count># 比较内存crc32<addr><count>[addr]# 计算 CRC32 校验和base<addr># 设置或显示基地址loop<addr><length>[delay]# 无限循环内存测试loopw<addr><length><data>[delay]# 无限循环写入测试mtest<start><end>[pattern][iterations]# 内存测试四、存储设备命令
4. MMC/SD 卡操作
mmc list# 列出所有 MMC 设备mmc info# 显示当前 MMC 设备信息mmc dev[dev][part]# 选择 MMC 设备和分区mmc part# 显示分区信息mmcread<addr><blk#> <cnt> # 从 MMC 读取数据mmcwrite<addr><blk#> <cnt> # 写入数据到 MMCmmc erase<blk#> <cnt> # 擦除 MMC 块mmc rescan# 重新扫描 MMC 设备mmc bootbus<dev><boot_bus_width><reset_boot_bus_width><boot_mode>mmc bootpart<dev><boot_part_size><RPMB_part_size>mmc partconf<dev>[boot_ack boot_partition partition_access]mmc rst-function<dev><value># 设置 RST_n_FUNCTIONmmc setdsr<value># 设置 DSR 寄存器值mmc wp# 写保护操作5. NAND Flash 操作
nand info# 显示 NAND Flash 信息nand device[dev]# 显示或选择 NAND 设备nandread<addr><off><size># 读取 NANDnandwrite<addr><off><size># 写入 NANDnand write.trimffs<addr><off><size># 写入时跳过 0xFFnand write.yaffs<addr><off><size># YAFFS 格式写入nand erase[clean]<off><size># 擦除 NANDnand erase.part<partition># 擦除分区nand erase.chip# 擦除整个芯片nand bad# 显示坏块列表nand scrub[-y]<off><size># 强制擦除(包括坏块标记)nand markbad<off># 标记坏块nand dump<off># 转储页面数据nand torture<off># 测试块6. NOR Flash 操作
flinfo# 显示 Flash 信息erase<start><end># 擦除 Flash 区域erase<start>+<len># 按长度擦除erase all# 擦除所有 Flashprotect on<start><end># 开启写保护protect off<start><end># 关闭写保护7. SPI Flash 操作
sf probe[bus:]cs[hz][mode]# 初始化 SPI Flashsfread<addr><offset><len># 读取 SPI Flashsfwrite<addr><offset><len># 写入 SPI Flashsf erase<offset><len># 擦除 SPI Flashsf update<addr><offset><len># 更新 SPI Flashsftest<offset><len># 测试 SPI Flash8. USB 操作
usb start# 启动 USB 子系统usb reset# 重置 USB 控制器usb stop# 停止 USBusb tree# 显示 USB 设备树usb info[dev]# 显示 USB 设备信息usb storage# 显示 USB 存储设备usb dev[dev]# 选择 USB 存储设备usb part[dev]# 显示 USB 设备分区usbread<addr><blk#> <cnt> # 从 USB 读取usbwrite<addr><blk#> <cnt> # 写入到 USB9. SATA 操作
sata init# 初始化 SATA 控制器sata info# 显示 SATA 设备信息sata device[dev]# 选择 SATA 设备sata part[dev]# 显示分区信息sataread<addr><blk#> <cnt> # 读取数据satawrite<addr><blk#> <cnt> # 写入数据10. IDE 操作
ide reset# 重置 IDE 控制器ide info# 显示 IDE 设备信息ide device[dev]# 选择 IDE 设备ide part[dev]# 显示分区ideread<addr><blk#> <cnt> # 读取数据idewrite<addr><blk#> <cnt> # 写入数据五、文件系统命令
11. FAT 文件系统
fatls<interface><dev:part>[directory]# 列出文件fatinfo<interface><dev:part># 显示文件系统信息fatload<interface><dev:part><addr><filename>[bytes]# 加载文件fatwrite<interface><dev:part><addr><filename><bytes># 写入文件fatrm<interface><dev:part><filename># 删除文件fatmkdir<interface><dev:part><directory># 创建目录fatsize<interface><dev:part><filename># 显示文件大小12. EXT2/EXT3/EXT4 文件系统
ext2ls<interface><dev:part>[directory]# 列出文件(ext2)ext2load<interface><dev:part><addr><filename>[bytes]# 加载文件ext4ls<interface><dev:part>[directory]# 列出文件(ext4)ext4load<interface><dev:part><addr><filename>[bytes]# 加载文件ext4size<interface><dev:part><filename># 显示文件大小ext4write<interface><dev:part><addr><filename><bytes># 写入文件13. 其他文件系统
# UBIFSubifsmount<volume-name># 挂载 UBIFS 卷ubifsls[directory]# 列出文件ubifsload<addr><filename>[bytes]# 加载文件ubifumount# 卸载 UBIFS# JFFS2fsload<interface><dev:part><addr><filename># 加载 JFFS2 文件ls<interface><dev:part>[directory]# 列出文件# CRAMFScramfsls<interface><dev:part># 列出文件cramfsload<addr><filename># 加载文件六、网络命令
14. 网络操作
ping<ip># 测试网络连接dhcp[loadAddr][bootfilename]# 通过 DHCP 获取 IP 并加载文件tftpboot[loadAddr][bootfilename]# 通过 TFTP 下载文件tftp<addr>[filename]# TFTP 下载(简化版)tftpput<addr><size>[hostfilename]# TFTP 上传文件rarpboot[loadAddr][bootfilename]# 通过 RARP 启动nfs<addr><host>:<filename># 通过 NFS 加载文件15. 网络配置
mii device[devname]# 选择 MII 设备mii info# 显示 PHY 信息miiread<addr><reg># 读取 PHY 寄存器miiwrite<addr><reg><data># 写入 PHY 寄存器mii dump<addr><reg># 转储 PHY 寄存器mdio list# 列出 MDIO 总线mdioread<addr><devad><reg># 读取 MDIOmdiowrite<addr><devad><reg><data># 写入 MDIO七、启动命令
16. 系统启动
boot# 执行默认启动(运行 bootcmd)bootd# 执行 bootcmd 环境变量bootm[addr[initrd[:size]][fdt]]# 启动内核镜像(uImage)bootz[addr[initrd[:size]][fdt]]# 启动 zImage 格式内核booti[addr[initrd[:size]][fdt]]# 启动 Image 格式内核(ARM64)bootelf[addr]# 启动 ELF 镜像bootvx[addr]# 启动 VxWorks 镜像go<addr>[arg...]# 跳转到地址执行reset# 复位系统poweroff# 关机17. 脚本执行
source<addr>[arg...]# 执行脚本autoscr[addr]# 自动执行脚本(旧版本)八、镜像处理命令
18. 镜像操作
iminfo<addr># 显示镜像头信息imls[addr]# 列出所有镜像imi<addr># 显示镜像信息(旧版本)imxtract<addr><part>[addr]# 从多镜像文件中提取19. FIT 镜像操作
# FIT (Flattened Image Tree) 格式镜像bootm<addr>#<conf> # 使用指定配置启动 FIT 镜像iminfo<addr># 显示 FIT 镜像内容imxtract<addr><part>[addr]# 提取 FIT 镜像组件九、设备树命令
20. 设备树操作
fdt addr<addr>[size]# 设置 FDT 地址fdt move<src><dst>[size]# 移动 FDTfdt resize[size]# 调整 FDT 大小fdt print<path>[prop]# 打印设备树节点fdt list<path>[prop]# 列出设备树节点fdtset<path><prop>[value]# 设置属性值fdt mknode<path><node># 创建节点fdtrm<path>[prop]# 删除节点或属性fdt header# 显示设备树头信息fdt bootcpu<id># 设置启动 CPUfdt memory<addr><size># 设置内存信息fdt rsvmem print# 打印保留内存fdt rsvmemadd<addr><size># 添加保留内存fdt rsvmem delete<index># 删除保留内存fdt chosen[<start><end>]# 设置 chosen 节点十、I2C 命令
21. I2C 操作
i2c speed[speed]# 设置或显示 I2C 速度i2c bus[muxtype:muxaddr:muxchannel]# 显示或设置 I2C 总线i2c dev[dev]# 显示或设置当前 I2C 设备i2c probe[address]# 探测 I2C 设备i2creadchip addr[.0,.1,.2]length memaddr# 读取 I2Ci2cwritememaddr chip addr[.0,.1,.2]length# 写入 I2Ci2c md chip addr[.0,.1,.2][length]# 显示 I2C 内存i2c mm chip addr[.0,.1,.2]# 修改 I2C 内存i2c mw chip addr[.0,.1,.2]value[count]# 写入 I2C 内存i2c nm chip addr[.0,.1,.2]# 持续修改 I2C 内存i2c crc32 chip addr[.0,.1,.2]count# 计算 I2C CRC32i2c loop chip addr[.0,.1,.2][length]# 循环读取i2c reset# 重置 I2C 总线十一、SPI 命令
22. SPI 操作
sspi[bus:]cs[#bits] <value> # SPI 传输数据十二、GPIO 命令
23. GPIO 操作
gpio status[-a|name]# 显示 GPIO 状态gpioset<name># 设置 GPIO 为高电平gpioclear<name># 设置 GPIO 为低电平gpio toggle<name># 翻转 GPIO 状态gpio input<name># 设置为输入模式gpioread<name># 读取 GPIO 值十三、显示命令
24. 视频/LCD 操作
bmp info<addr># 显示 BMP 图像信息bmp display<addr>[x y]# 显示 BMP 图像video dev[dev]# 选择视频设备videoclear# 清屏十四、分区命令
25. 分区管理
part list<interface><dev># 列出分区part start<interface><dev><part><varname># 获取分区起始位置part size<interface><dev><part><varname># 获取分区大小part uuid<interface><dev>:<part><varname># 获取分区 UUIDparttype<interface><dev>:<part><varname># 获取分区类型# MTD 分区mtdparts default# 加载默认 MTD 分区mtdparts# 显示当前 MTD 分区mtdpartsadd<definition># 添加 MTD 分区mtdparts del<partition># 删除 MTD 分区十五、UBI 命令
26. UBI 操作
ubi part<part-name>[offset]# 挂载 UBI 分区ubi info[layout]# 显示 UBI 信息ubi create<volume><size>[type]# 创建 UBI 卷ubi remove<volume># 删除 UBI 卷ubiread<addr><volume>[size]# 从 UBI 卷读取ubiwrite<addr><volume><size># 写入 UBI 卷ubi write.part<addr><part><size>[fullsize]# 写入 UBI 分区十六、加密命令
27. 加密/安全
hash<algorithm><addr><size># 计算哈希值sha1sum<addr><len># 计算 SHA1sha256sum<addr><len># 计算 SHA256md5sum<addr><len># 计算 MD5十七、调试命令
28. 调试工具
sleep<n># 延迟 n 秒echo[-n][args...]# 输出文本true# 总是返回成功false# 总是返回失败exit# 退出脚本showvar<var># 显示变量(调试用)test<expr># 条件测试十八、时钟与定时器命令
29. 时间相关
date# 显示当前日期和时间date[MMDDhhmm[[CC]YY][.ss]]# 设置日期时间timer[start|get|reset]# 定时器操作sleep<n># 延迟 n 秒usleep<n># 延迟 n 微秒十九、CPU 相关命令
30. CPU 操作
dcache on/off# 开启/关闭数据缓存icache on/off# 开启/关闭指令缓存二十、EEPROM 命令
31. EEPROM 操作
eepromread<dev><addr><off><cnt># 读取 EEPROMeepromwrite<dev><addr><off><cnt># 写入 EEPROM二十一、电源管理命令
32. 电源控制
pmic name[name]# 选择 PMIC 设备pmic dump# 转储 PMIC 寄存器pmicread<reg># 读取 PMIC 寄存器pmicwrite<reg><value># 写入 PMIC 寄存器二十二、Fastboot 命令
33. Fastboot(Android)
fastboot<USB_controller># 进入 Fastboot 模式fastboot usb<controller># USB Fastboot 模式fastboot udp# UDP Fastboot 模式二十三、显示控制台命令
34. 控制台操作
cls# 清屏setcurs<col><row># 设置光标位置二十四、随机数命令
35. 随机数
random[<addr>]# 生成随机数二十五、PCI 命令
36. PCI 总线操作
pci[bus]# 列出 PCI 设备pci header<bus.dev.func># 显示 PCI 配置头pci display[.b, .w, .l]<bus.dev.func><addr>[count]# 显示 PCI 配置空间pci write[.b, .w, .l]<bus.dev.func><addr><value># 写入 PCI 配置二十六、FPGA 命令
37. FPGA 操作
fpga info# 显示 FPGA 信息fpga load[dev]<addr><size># 加载 FPGAfpga loadb[dev]<addr><size># 以 bitstream 格式加载fpga loadp[dev]<addr><size># 以 partial bitstream 加载fpga dump[dev]<addr># 转储 FPGA 状态二十七、License 命令
38. License 管理
license# 显示 U-Boot License二十八、磁盘命令
39. 磁盘操作
diskboot<addr><dev:part># 从磁盘启动disk[device]# 显示磁盘信息二十九、Blob 命令
40. Blob(二进制大对象)
blob enc<src><dst><len><modifier># 加密 blobblob dec<src><dst><len><modifier># 解密 blob三十、Zip 命令
41. 压缩/解压
unzip<addr><dest># 解压缩文件zip<src><len><dst># 压缩文件gzwrite<interface><dev><addr><bytes>[<offset>]# 写入压缩数据三十一、LED 命令
42. LED 控制
led<led_label>on# 打开 LEDled<led_label>off# 关闭 LEDled<led_label>toggle# 切换 LED 状态led<led_label>blink# LED 闪烁三十二、Button 命令
43. 按键操作
button<button_label># 读取按键状态三十三、Regulator 命令
44. 电压调节器
regulator list# 列出所有稳压器regulator dev<name># 选择稳压器regulator info# 显示稳压器信息regulator status# 显示稳压器状态regulator value[<value>]# 设置/获取输出电压regulator current[<value>]# 设置/获取电流限制regulatorenable# 使能稳压器regulator disable# 禁用稳压器三十四、DFU 命令
45. DFU (Device Firmware Upgrade)
dfu<USB_controller>[<interface><dev>]list# 列出 DFU 实体dfu<USB_controller>[<interface><dev>][<timeout>]# 启动 DFU三十五、OTP 命令
46. OTP (One-Time Programmable)
fuseread<bank><word>[<cnt>]# 读取 fusefuse sense<bank><word>[<cnt>]# sense fusefuse prog<bank><word><hexval># 编程 fuse(不可逆)fuse override<bank><word><hexval># 临时覆盖 fuse三十六、QSPI 命令
47. QSPI Flash
qspi probe# 探测 QSPI Flashqspiread<addr><offset><len># 读取qspiwrite<addr><offset><len># 写入qspi erase<offset><len># 擦除三十七、TPM 命令
48. TPM (Trusted Platform Module)
tpm init# 初始化 TPMtpm startup TPM_ST_CLEAR# 启动 TPMtpm self_test full# TPM 自检tpm continue_self_test# 继续自检tpm force_clear# 强制清除 TPMtpm extend<pcr><digest># 扩展 PCRtpm pcr_read<pcr># 读取 PCR三十八、Watchdog 命令
49. 看门狗
wdt list# 列出看门狗设备wdt dev[<name>]# 选择看门狗设备wdt start<timeout># 启动看门狗wdt stop# 停止看门狗wdt reset# 重置看门狗wdt expire[<timeout>]# 触发看门狗超时三十九、Clocks 命令
50. 时钟控制
clk dump# 转储时钟树clk setfreq<clk><freq># 设置时钟频率clk disable<clk># 禁用时钟clkenable<clk># 使能时钟四十、ADC 命令
51. ADC 操作
adc list# 列出 ADC 设备adc info[<name>]# 显示 ADC 信息adc single<name><channel># 单次采样四十一、PWM 命令
52. PWM 操作
pwm invert<pwm>[<channel>]<on/off># 反相 PWMpwm config<pwm><channel><period><duty># 配置 PWMpwmenable<pwm><channel># 使能 PWMpwm disable<pwm><channel># 禁用 PWM四十二、RTC 命令
53. RTC (实时时钟)
date# 显示 RTC 日期时间date[MMDDhhmm[[CC]YY][.ss]]# 设置 RTC四十三、环境变量高级操作
54. 变量运算
setexpr<name><value># 表达式计算setexpr<name><val1><op><val2># 二元运算setexpr<name><val1>\&<val2># 按位与setexpr<name><val1>\|<val2># 按位或setexpr<name><val1>\^<val2># 按位异或setexpr<name><value>+<offset># 加法setexpr<name><value>-<offset># 减法setexpr<name><value>\*<multi># 乘法setexpr<name><value>/<div># 除法setexpr<name><value>%<mod># 取模setexpr<name>~<value># 按位取反setexpr<name><value>\\&<mask># 掩码setexpr<name><value>\\|<mask># 按位或掩码setexpr.b/.w/.l/.s# 指定操作数大小四十四、脚本控制命令
55. 流程控制
# if 语句(需要 hush shell)if<test>;then<commands>;fiif<test>;then<commands>;else<commands>;fi# for 循环for<var>in<list>;do<commands>;done# while 循环while<test>;do<commands>;done# until 循环until<test>;do<commands>;done# case 语句case<var>in<pattern>)<commands>;;esac56. 测试表达式
test<expr># 条件测试[<expr>]# 条件测试(简写)# 比较运算符-eq# 等于-ne# 不等于-gt# 大于-ge# 大于等于-lt# 小于-le# 小于等于=# 字符串相等!=# 字符串不等-z# 字符串为空-n# 字符串非空-e# 文件存在四十五、Trace 命令
57. 跟踪调试
trace stats# 显示跟踪统计信息trace pause# 暂停跟踪trace resume# 恢复跟踪trace calls<addr><size># 设置函数调用跟踪trace print# 打印跟踪信息四十六、ACPI 命令
58. ACPI 操作
acpi list# 列出 ACPI 表acpi dump<sig># 转储 ACPI 表四十七、Block 设备命令
59. 块设备操作
blkcache show[<dev>]# 显示块缓存状态四十八、加载命令汇总
60. 各种加载方式
# 从存储设备加载load<interface>[<dev[:part]>]<addr><filename>[bytes][pos]loadb[<addr>[<baudrate>]]# 通过串口 Kermit 协议加载loads[<offset>[<baud>]]# 通过串口 S-Record 格式加载loadx[<addr>]# 通过串口 X-Modem 协议加载loady[<addr>[<baudrate>]]# 通过串口 Y-Modem 协议加载# 从网络加载tftpboot[<addr>][<filename>]# TFTP 下载dhcp[<addr>][<filename>]# DHCP + TFTPnfs<addr><host>:<filename># NFS 加载四十九、Shell 命令
61. Shell 操作
run<var># 执行环境变量中的命令五十、特殊命令
62. 其他特殊命令
# 串口下载kermit# Kermit 协议loadb# Binary 下载# ELF 相关bootelf# 启动 ELF 文件elfload<addr># 加载 ELF 到内存# 中断处理intr# 允许中断# 别名alias<name><command># 创建命令别名常用使用场景示例
场景 1: 通过 TFTP 更新内核
setenv serverip192.168.1.100 setenv ipaddr192.168.1.10 tftp 0x80000000 zImage tftp 0x83000000 dtb nand erase.part kernel nandwrite0x80000000 kernel${filesize}场景 2: 从 SD 卡启动 Linux
mmc dev0fatload mmc0:1 0x80000000 zImage fatload mmc0:1 0x83000000 am335x-boneblack.dtb setenv bootargsconsole=ttyO0,115200n8root=/dev/mmcblk0p2 rootwait rw bootz 0x80000000 - 0x83000000场景 3: 创建启动脚本
# 创建脚本内容setenv bootscript'mmc dev 0; fatload mmc 0:1${loadaddr}boot.scr; source${loadaddr}'# 保存saveenv# 执行run bootscript场景 4: 使用 UBI 文件系统
# 准备 UBI 分区nand erase.part rootfs ubi part rootfs ubi create rootfs# 写入文件系统tftp 0x80000000 rootfs.ubifs ubiwrite0x80000000 rootfs${filesize}# 设置启动参数setenv bootargsconsole=ttyS0,115200 ubi.mtd=rootfsroot=ubi0:rootfsrootfstype=ubifs场景 5: 多镜像 FIT 启动
# 加载 FIT 镜像tftp 0x80000000 image.fit# 查看镜像信息iminfo 0x80000000# 使用特定配置启动bootm 0x80000000#conf-1场景 6: 安全启动
# 验证镜像签名setenv verifyyestftp 0x80000000 zImage.signed iminfo 0x80000000 bootm 0x80000000场景 7: Android Fastboot
# 进入 Fastboot 模式fastboot0# 在 PC 端执行# fastboot flash boot boot.img# fastboot flash system system.img# fastboot reboot场景 8: 恢复出厂设置
# 恢复默认环境变量envdefault -f -a saveenv reset配置文件示例
常用环境变量配置
# 网络配置setenv ipaddr192.168.1.10 setenv serverip192.168.1.100 setenv netmask255.255.255.0 setenv gatewayip192.168.1.1# 启动配置setenv bootdelay3setenv baudrate115200setenv console ttyS0,115200n8# 内核参数setenv bootargsconsole=${console}root=/dev/mmcblk0p2 rootwait rw# 启动命令setenv bootcmd'mmc dev 0; fatload mmc 0:1${kernel_addr_r}zImage; fatload mmc 0:1${fdt_addr_r}dtb; bootz${kernel_addr_r}-${fdt_addr_r}'# 保存saveenv调试技巧
1. 内存测试
mtest 0x80000000 0x90000000042. 查看启动日志
# 增加启动详细信息setenv bootargs${bootargs}loglevel=83. 单步调试启动
# 禁用自动启动setenv bootdelay -1# 或setenv bootdelay -2# 完全禁用,需要重新编译4. 网络测试
ping${serverip}dhcpprintenvipaddr注意事项
- 命令可用性: 不同版本和配置的 U-Boot 支持的命令集不同
- 权限限制: 某些命令(如 fuse)执行后不可逆,需谨慎使用
- 地址范围: 内存地址必须在有效范围内,否则可能导致系统崩溃
- 大小写敏感: U-Boot 命令区分大小写
- 命令简写: 多数命令支持简写,如
pri代替printenv - 版本差异: 建议使用
help命令查看当前版本支持的具体命令
获取更多帮助
# 查看所有命令help# 查看特定命令详情help<command># 查看 U-Boot 版本version# 查看板级信息bdinfo这份指南涵盖了 U-Boot 的主要命令和使用方法。实际使用时,建议根据具体硬件平台和 U-Boot 版本,通过help命令确认可用的命令集。