u-boot常用命令介绍

本文介绍了u-boot操作的基本命令,包括环境变量相关命令(printenv、setenv、saveenv)、固件下载命令(loady、loadx、loadb、go)、存储相关命令(fatinfo、fatls、fatload等),还涉及ping、md、mm等命令,并给出了各命令的用法及示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.help   version


以下是环境变量相关的命令:printenv setenv saveenv

2.printenv 

查看全部的环境变量:
TINY4412 # printenv
baudrate=115200
bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000
41000000
bootdelay=3
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.0.1
ipaddr=192.168.0.20
netmask=255.255.255.0
serverip=192.168.0.10
Environment size: 252/16380 bytes
查看指定名的环境变量
TINY4412 # printenv bootdelay
bootdelay=3
TINY4412 # printenv bootdelay gatewayip ipaddr
bootdelay=3
gatewayip=192.168.0.1
ipaddr=192.168.0.20
TINY4412 #
 

3.setenv

例如:

TINY4412 # setenv bootdelay 5
 

4.saveenv


以下是固件下载的一些命令:loady  loadx loadb go

1.loady 命令(使用串口下载代码到内存中)

2.loadx 命令(使用串口下载代码到内存中)

和 loady 命令操作相同,只是选择的协议不同,使用 xmodem mode。

3.loadb 命令(使用串口下载代码到内存中)

和 loady 命令操作相同,只是选择的协议不同。 使用 kermit mode 协议。

4.go 命令(跳转命令)

这个命令只适合引导裸机程序。单纯一个地址跳转命令。(ucOS 有代码工程也会认为是裸机一样的效果)。
先下载一个可以运行的程序到一个内存地址,然后使用 go 语句跳转到该地址。
TINY4412 # go 0x02023400
## Starting application at 0x02023400 ...
这时候裸机程序已经运行起来, u-boot 的生命终结了。
 


以下是存储相关的命令:fatinfo fatls fatload (mmc rescan)mmc mmcinfo emmc md mm

fatinfo:查看指定设备的 fat 分区信息

TINY4412 # help fatinfo
fatinfo - fatinfo - print information about filesystem
Usage:
fatinfo <interface> <dev[:part]>
- print information about filesystem from 'dev' on 'interface'
帮助中有 <> 包含起来的是必须的选项
interface: 接口可以 usb ,或 mmc 。 mmc—SD 卡, MMC 卡, eMMC
dev:开发板上的哪个设备。用数字表示, 0 表示启动设备, >0 表示其他设备(1,2,3,……)。
part:是表示分区号,可选择。
 

fatls:查看指定设备指定目录的文件列表

TINY4412 # help fatls
fatls - list files in a directory (default /)
Usage:
fatls <interface> <dev[:part]> [directory]
- list files from 'dev' on 'interface' in a 'directory'
TINY4412 #
interface: 接口可以 usb ,或 mmc 。 mmc—SD 卡, MMC 卡, eMMC
dev:开发板上的哪个设备。用数字表示, 0 表示启动设备, >0 表示其他设备(1,2,3,……)。
part:是表示分区号,可选择。
directory:目录名,可选择。
 

TINY4412 # fatls mmc 0
Partition1: Start Address(0x4b800), Size(0xe8c800)
system volume information/
images/
0 file(s), 2 dir(s)
 

mmc rescan 命令(重新扫描开发析上的 mmc 设备)
这个命令用于像 SD 卡,TF 卡拔出后再次插入,不重新上电情况, 重新识别它们。
示例:
测试命令:
先拔出卡, 然后重新插入, 输入以下命令:
TINY4412 # fatls mmc 0
.......

MMC_DATA_READ
** Can't read from device 0 **
** Unable to use mmc 0:1 for fatls **
结果显示,找不到 SD 卡。
重新扫描 mmc 设备:
TINY4412 # mmc rescan 0
再次输入相同的命令:结果显示已经可以识 SD 卡了。
TINY4412 # fatls mmc 0
Partition1: Start Address(0x4b800), Size(0xe8c800)
system volume information/
images/
392 led.bin
1 file(s), 2 dir(s)
TINY4412 #
 

fatload 命令(从 fat 分区中加载文件到内存中)
TINY4412 # help fatload
fatload - fatload - load binary file from a dos filesystem
Usage:
fatload <interface> <dev[:part]> <addr> <filename> [bytes]
- load binary file 'filename' from 'dev' on 'interface'
to address 'addr' from dos filesystem
说明:
interface: 接口可以 usb ,或 mmc 。 mmc—SD 卡, MMC 卡, eMMC
dev:开发板上的哪个设备。用数字表示, 0 表示启动设备, >0 表示其他设备(1,2,3,……)。
part:是表示分区号,可选择。
addr: 目标内存地址。
filename:要读取的文件(要带完整路径,如: /image/led.bin)
bytes: 要读取的字节数量,可选, 不写的情况下默认全部读取
示例: 加载 sd 卡中的 led.bin 文件到内存中,然后使用 go 命令测试程序。
TINY4412 # fatload mmc 0 0x02023400 led.bin
Partition1: Start Address(0x4b800), Size(0xe8c800)
reading led.bin
392 bytes read
TINY4412 # go 0x02023400
## Starting application at 0x02023400 ...
 

ping 命令(检测网络连接是否连通)
和电脑的 ping 功能相同,不过只 ping IP 地址
示例:
TINY4412 # ping 192.168.1.101
No ethernet found.
ping failed; host 192.168.1.101 is not alive
TINY4412 #
not alive 表示开发板和 192.168.1.101 主机没有连接。
 

md 命令(查看内存数据)
TINY4412 # help md
md - memory display
Usage:
md [.b, .w, .l] address [# of objects]
先加载一个 led.bin 到内存中。
TINY4412 # fatload mmc 0 0x02023400 led.bin
Partition1: Start Address(0x4b800), Size(0xe8c800)
reading led.bin
392 bytes read
使用 md 命令查看内存中的数据
TINY4412 # md 0x02023400
02023400: e59fd004 eb000001 eafffffe 02060000 ................
02023410: e52db004 e28db000 e3a02411 e2822e2e ..-......$......
 

mm 命令(内存修改)
可以使用来修改寄存器内容。
TINY4412 # help mm
mm - memory modify (auto-incrementing address)
Usage:
mm [.b, .w, .l] address
先查看未修改内容:
TINY4412 # md.b 0x40000000
40000000: 04 d0 9f e5 01 00 00 eb fe ff ff ea 00 00 06 02 ................
40000010: 04 b0 2d e5 00 b0 8d e2 11 24 a0 e3 2e 2e 82 e2 ..-......$......
开始修改
TINY4412 # mm.b 0x40000000
40000000: 04 ? 11 ---修改第 1 个为 11
40000001: d0 ? 12 ---修改第 2 个为 12

40000002:9f ? n     ---结束修改

其他形式:
md.w 是一次修改 2 字节
md.l 是一次修改 4 字节
md. 是一次修改 4 字节
 

mmcinfo 命令(查看 mmc 类指定设备的基本信息)
TINY4412 # help mmcinfo
mmcinfo - mmcinfo <dev num>-- display MMC info
Usage:
mmcinfo <dev num>
说明:
<dev num>: 就是 mmc 设备编号,从为 0 开始, 0 表示启动设备
示例:
TINY4412 # mmcinfo 0
Device: S3C_HSMMC2
Manufacturer ID: 27
OEM: 5048
Name: SD8GB
Tran Speed: 0
Rd Block Len: 512
SD version 2.0
High Capacity: Yes
Size: 7600MB (block: 15564800)
Bus Width: 4-bit
Boot Partition Size: 0 KB
TINY4412 # mmcinfo 1
Device: S5P_MSHC4
Manufacturer ID: 15
OEM: 100
Name: M4G1Y
Tran Speed: 0
Rd Block Len: 512
MMC version 4.0
High Capacity: Yes
Size: 3728MB (block: 7634944)
Bus Width: 8-bit
Boot Partition Size: 2048 KB
TINY4412 #
 

mmc 命令(针对 mmc 设备操作的命令, 有多个成员)
TINY4412 # help mmc
mmc - MMC sub system
Usage:
mmc read <device num> addr blk# cnt
mmc write <device num> addr blk# cnt
mmc rescan <device num>
mmc erase <boot | user> <device num> <start block> <block count>
mmc list - lists available devices
mmc list 命令:列出当前的 mmc 设备
TINY4412 # mmc list
S3C_HSMMC2: 0
S5P_MSHC4: 1
TINY4412 #
先加载测试文件 :
TINY4412 # fatload mmc 0 0x02023400 led.bin
Partition1: Start Address(0x4b800), Size(0xe8c800)
reading led.bin
392 bytes read
打开 emmc
TINY4412 # emmc open 1
再显示数据
TINY4412 # mmc read 1 41000000 0 1
MMC read: dev # 1, block # 0, count 1 ... 1 blocks read: OK
先查看数据
TINY4412 # md.b 41000000
把内存中 0x02023400 的数据写入有 MMC 第 0 个扇区开始,总共写入 1 个扇区。
TINY4412 # mmc write 1 0x02023400 0 1
再显示数据
TINY4412 # mmc read 1 41000000 0 1
MMC read: dev # 1, block # 0, count 1 ... 1 blocks read: OK
先查看数据
TINY4412 # md.b 41000000
对比出现的数据和 led.bin 的前面数据是否相同 。
 

mmc 命令综合应用
把 led.bin 下载到 eMMC 中,然后,修改 bootcmd 环境变量, 实现 emmc 启动 led.bin 程
序。
加载 led.bin 到内存中:
TINY4412 # fatload mmc 0 40000000 led.bin
Partition1: Start Address(0x4b800), Size(0xe8c800)
reading led.bin
392 bytes read
打开有 eMMC
TINY4412 # emmc open 1
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
写入有 eMMC
TINY4412 # mmc write 1 0x40000000 0 10
MMC write: dev # 1, block # 0, count 16 ... 16 blocks written: OK
TINY4412 #
TINY4412 # emmc close 1
eMMC CLOSE Success.!!
TINY4412 #
设置 bootcmd 环境变量
TINY4412 # setenv bootcmd 'emmc open 1;mmc read 1 0x02023400 0 1;emmc close 1;go 0x02023400'
保存环境变量:
TINY4412 # saveenv
Saving Environment to SMDK bootable device...
done
TINY4412 #
重新启动开发板:
OK
U-Boot 2010.12 (Jul 18 2015 - 08:22:10) for TINY4412
CPU: S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
APLL = 1400MHz, MPLL = 800MHz
Board: TINY4412
DRAM: 1023 MiB
vdd_arm: 1.2
vdd_int: 1.0
vdd_mif: 1.1
BL1 version: N/A (TrustZone Enabled BSP)
Checking Boot Mode ... SDMMC
REVISION: 1.1
MMC Device 0: 7600 MB
MMC Device 1: 3728 MB
MMC Device 2: N/A
Net: No ethernet found.
Hit any key to stop autoboot: 0
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
MMC read: dev # 1, block # 0, count 1 ... 1 blocks read: OK
eMMC CLOSE Success.!!
## Starting application at 0x02023400 ...
按下开发板按键,观察灯状态。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值