UBOOT常用命令用法

uboot的命令:
(1) help //列出当前uboot所有支持的命令
help 命令 //查看指定命令的帮助
reset //重启uboot

(2)bootm //用于启动内核
用法: bootm 0x42000000 //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址
bootm 用于将内核镜像加载到内存的指定地址处
例:
bootm 0x82000000
bootm [addr [arg …]]

boot application image stored in memory

passing arguments ‘arg …’; when booting a Linux kernel,

‘arg’ can be the address of an initrd image

bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。

第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。
第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。
例如:
bootm 0x3000000 0x2000000 0x2A00000
kernel加载到了0x3000000,
RAMDISK加载到了0x2000000,
DTB加载到了0x2A00000,
使用BOOTM启动KERNEL。

附加说明: 要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000

(3) printenv //打印所有环境变量的值
printenv 环境变量名 //查看指定的环境变量值
常用环境变量:
bootdelay // uboot启动后, 倒计时多少秒后自动执行环境变量bootcmd的语句
bootcmd // 倒计时到0后,自动执行里面的语句
bootargs // 是用于提供给内核的启动参数语句

(4) setenv //设置/修改/删除环境变量的值
用法:
setenv 环境变量名 //删除指定的环境变量
setenv myargs “hello” //设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值
setenv name value
第1个参数是环境变量的名称。
第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量
例:
setenv serverip 192.168.1.12//添加环境变量serverip 其值为 192.168.1.12
setenv serverip 192.168.1.20//在上一行的基础上把环境变量serverip 值重新赋为 192.168.1.20
setenv serverip //把 serverip 变量删除

(5) saveenv //保存环境变量,环境变量修改过后必须执行此命令才可以保存起来,否则重启后环境变量就恢复了.

(6) loady //用于从uart线下载文件到板上内存里(loadb, loads, loadx基本一样)
 用法:
loady 0x40008000 //把下载的文件从内存地址0x40008000开始存放
执行"loady 0x40008000"后, uboot就会进入等待状态,等着接收数据
minicom具有通过uart传输文件的功能.
按"ctrl+a", 松手后再按"s", 选择"ymodem", 在弹出的界面里按空格键选中要传的文件.

(7) md 内存地址 //用于查看内存地址上的值
用法:
md.b    0x40008000 100 //从内存地址0x40008000开始,查看0x100个字节并输出值
md.w 0x40008000 100 //从内存地址0x40008000开始,查看0x100个16位值并输出值
md.l 0x40008000 100 //从内存地址0x40008000开始,查看0x100个32位值并输出值
md查看内存命令
md[.b,.w,.l] address [count]
表示以[.b,.w,.l]为单位显示从地址address开始的内存数据,显示的数据个数为count
例:
md.b 82000000 10显示从地址0x82000000地址开始的0x10个字节的数据
返回信息:
82000000: d3 2c b4 4b 2c d3 4b b4 d3 d3 b4 b4 d3 2c b4 4b .,.K,.K…,.K

(8) mw //用于修改内存地址上的值
用法:
mw.b    0x40008000 0xab 100 //从内存地址0x40008000开始的0x100字节空间,设值为0xab
mw.w 0x40008000 0xabcd 100 //从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcd
mw.l 0x40008000 0xabcdef88 100 //从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88
mw填充内存命令
mw[.b,.w,.l] address value [count]
表示以[.b,.w,.l]为单位往开始地址为address的内存填充count 个值为 value 的数据
例:
mw.b 82000000 ff 100000从地址0x82000000地址开始填充0x100000(1M字节)个值为0xff的数据

(9)mm修改内存命令
mm[.b,.w,.l] address
表示以[.b,.w,.l]为单位从地址address开始修改内存数据,执行mm命令后,输入新数据后回车,地址会自动增加,按“CTRL + c”退出;
例: 把第一个字节数据0xd3修改为0xd4
mm.b 82000000
返回:
82000000: d3 ? d4
82000001: 2c ?

(10)cp复制内存命令
cp[.b,.w,.l] source target [count]
表示以[.b,.w,.l]为单位从源地址source的内存复制count个数据到 目的地址 target的内存中去;

(11) go //执行指定内存地址上的指令
用法:
go 0x40008000

(12) mmc // sd/mmc接口设备(sd卡, emmc)操作命令, 按扇区操作(每扇区512字节)
用法:
mmc read addr blk cnt //从mmc设备上的第blk个扇区开始,共读出cnt个扇区到内存地址addr上
mmc write addr blk cnt //把内存地址addr上的数据写入mmc设备的第blk个扇区,共cnt个扇区大小
mmc dev //用于当看当前的mmc设备是第几个
mmc erase blk cnt //把mmc设备的第blk个扇区开始清零,共清除cnt个扇区大小 
mmc part //列出当前mmc设备的分区信息
mmc list //列出所有的mmc设备信息

(13) ext4ls //查看存储设备的ext2/3/4分区里的内容
用法:
ext4ls mmc 0:2 //查看第0个存储设备的第二个分区

(14) ext4load //从ext2/3/4分区里读出文件到指定的内存地址
用法:
ext4load mmc 0:2 0x40008000 /uImage //从第0个存储设备的第2个分区的根目录读出uImage文件到内存地址0x40008000

(15) fatls //查看存储设备的fat分区里的内容
用法:
fatls mmc 0:1 //查看第0个存储设备的第1个分区(fat分区)

(16) fatload //从fat分区里读出文件到指定的内存地址
用法:
fatload mmc 0:1 0x40008000 /uImage //从第0个存储设备的第1个分区的根目录读出uImage文件到内存地址0x40008000

(17) fatwrite //把内存上的数据存储到fat分区的一个文件里
用法:
fatwrite mmc 0:1 0x40008000 /my.txt 0x35 //把内存地址0x40008000开始的0x35个字节数据写入到第0个设备的第1个分区里,文件名为my.txt

(18) run //执行指定的环境变量里的语句
用法:
run bootcmd //执行环境变量bootcmd里的语句

(19) tftpboot 0x40008000 文件名 // 通过网络下载文件到内存地址0x40008000, PC端需配置好tftp服务器

(20)tftp通过网口下载文件到设备
tftp address filename 把文件filename下载到地址address
例:
(a)下载
tftp 0x82000000 u-boot-hi3520d.bin // 把TFTP目录下名为u-boot-hi3520d.bin的文件拷贝到SDRAM的 82000000 地址
(b)上传
tftp 0x82000000 flash 2000000 // 把SDRAM的 82000000 地址开始的 0x2000000(32M)字节的拷贝到把TFTP目录下命名为flash(flash名字是否可变)

(21) nfs 0x40008000 pc端IP:/带路径的文件名 //pc端需配置好nfs服务器
ping ip //检测网络是否通

(22)eraseFlash擦除命令
erase start end 擦除的范围为 start – end
erase start+len 擦除的范围为 start – (start+len-1)
erase all 擦除所有
例:
对于SPI NOR FLASH
sf erase 0 100000 擦除flash 0 - 0x100000 的数据

(23) writeFlash烧写命令
write addr off size将SDRAM的 addr 地址处的 size 字节的数据烧写到 flash 的 off 偏移地址
例:
对于SPI NOR FLASH
sf write 82000000 0 100000 把SDRAM地址 0x82000000 处 0x100000(1M字节)的数据烧写到 flash 的 0 偏移地址

(24)readFlash读取命令
read addr off size从 Flash 的 off 偏移地址处读取 size 字节的数据到SDRAM的 addr地址
例:
对于SPI NOR FLASH
sf read 82000000 0 2000000 从 flash 的 0 偏移地址出读取 0x2000000(32M)字节的数据到 SDRAM的 82000000 地址

(25)env命令
Usage:
env default [-f] -a - [forcibly] reset default environment
env default [-f] var […] - [forcibly] reset variable(s) to their default values
env edit name - edit environment variable
env export [-t | -b | -c] [-s size] addr [var …] - export environment
env import [-d] [-t | -b | -c] addr [size] - import environment
env print [name …] - print environment
env run var […] - run commands in an environment variable
env save - save environment
env set [-f] name [arg …]

<think>好的,用户想了解U-Boot中的unzip命令的使用。首先,我需要回忆一下U-Boot的基本功能和常用命令。U-Boot是嵌入式系统中常用的引导加载程序,主要用于初始化硬件和加载操作系统。它的命令通常涉及存储设备操作、环境变量设置、文件传输等。 接下来,关于unzip命令,我记得在U-Boot中,压缩和解压功能可能用于处理镜像文件,比如压缩过的内核或文件系统。需要确认unzip命令的具体用途和支持的压缩格式,比如gzip、lzma等。此外,用户可能需要知道如何安装或启用这个命令,因为有些U-Boot版本可能需要配置选项才能支持解压功能。 然后,我需要考虑用户可能的实际应用场景。例如,用户可能在启动过程中需要解压一个压缩过的内核镜像到内存中,然后引导。这时候,使用unzip命令可以节省存储空间,加快传输速度。需要说明命令的基本语法,参数的含义,比如源地址、目标地址、解压后的长度等。 还要注意不同U-Boot版本之间的差异,某些版本可能命令参数有所不同。另外,解压后的数据校验也很重要,可能需要用户使用其他命令如crc32来验证完整性。如果遇到常见问题,比如解压失败,可能的原因包括地址无效、压缩格式不支持或内存不足,需要给出排查建议。 最后,整理这些信息,分步骤解释命令的用法,并提供示例,确保用户能够理解并正确使用。同时,提醒用户查阅具体版本的文档,因为U-Boot的功能可能因配置而异。确保回答结构清晰,覆盖安装、语法、示例和注意事项,帮助用户全面掌握unzip命令的使用。</think>以下是对U-Boot中`unzip`命令的详细介绍: ==================== 一、命令作用 ==================== `unzip`命令用于在U-Boot阶段解压缩内存中的压缩数据,支持格式包括: - gzip (.gz) - lzma - lzo 等(具体支持取决于U-Boot编译配置) 典型应用场景: 1. 解压压缩后的内核镜像 $uImage.gz$ 2. 解压文件系统镜像 3. 从网络加载压缩镜像后解压到指定地址 ==================== 二、使用前提 ==================== 1. 需在U-Boot配置中启用: ``` CONFIG_CMD_UNZIP=y CONFIG_GZIP=y CONFIG_LZMA=y ``` 2. 目标平台需有足够内存空间(解压后数据大小 ≈ 原数据的2-5倍) ==================== 三、命令语法 ==================== 基础格式: ```bash unzip srcaddr dstaddr [dstsize] ``` 参数说明: - `srcaddr`: 压缩数据的内存起始地址(十六进制) - `dstaddr`: 解压目标的存储地址(十六进制) - `dstsize`: 可选参数,目标缓冲区大小(十进制字节数) ==================== 四、使用示例 ==================== 1. 从NOR Flash解压内核: ```bash # 读取0x100000处的2MB压缩数据到内存0x200000 nand read 0x200000 0x100000 0x200000 # 解压到0x80000000地址 unzip 0x200000 0x80000000 ``` 2. 带缓冲区大小检查: ```bash # 确保解压后数据不超过4MB unzip 0x500000 0x82000000 0x400000 ``` 3. 网络加载后解压: ```bash tftp 0x210000 zImage.gz unzip 0x210000 0x220000 ``` ==================== 五、注意事项 ==================== 1. 地址有效性检查: - 使用`bdinfo`查看内存布局 - 确保目标地址不在U-Boot工作区范围内 2. 解压验证: ```bash # 计算CRC32校验 crc32 0x80000000 ${filesize} ``` 3. 常见错误处理: - `unzip - invalid gzip format`:检查压缩工具是否匹配(推荐使用`gzip -9`) - `destination address overlaps with source`:调整缓冲区地址间距 - `Buffer overflow detected`:增大`dstsize`参数 建议配合`md`命令查看内存数据: ```bash md 0x80000000 10 # 查看解压后的前16*4=64字节 ``` 注:具体命令参数可能因U-Boot版本不同存在差异,建议通过`help unzip`查看当前版本帮助信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值