前些天为Linksys EA8500 刷机因为对 U-Boot 不了解导致刷机多次失败,现将刷机过程中了解的内容总结一下。
常用命令:
printenv #查看所有环境变量
setenv #设置或清除环境变量
saveenv #保存环境变量
LinkSys EA8500 环境变量如下:
(IPQ) #printenv
#副启动分区引导位置altkern
=3780000
auto_recovery=yes
#TTL 传输波特率baudrate
=115200
#当前引导分区号boot_part
=2
boot_part_ready=3
boot_ver=1.0.12
bootargs=console=ttyHSL1,115200n8
bootcmd=bootipq
bootdelay=2
ethact=eth0
#机器Mac地址ethaddr
=00:06:3b:01:41:00
#主启动分区写入命令flashimg
=tftp $loadaddr $image;nanderase$prikern $imgsize;nand write $loadaddr $prikern $filesize
#副启动分区写入命令flashimg2
=tftp $loadaddr $image;nanderase$altkern $imgsize;nand write $loadaddr $altkern $filesize image=wraith.bin
imgsize=2800000
#本机(路由器)IPipaddr
=192.168.1.1
# 写入固件的临时起始位置;loadaddr
=42000000
machid=1260
netmask=255.255.255.0
#主启动分区启动参数partbootargs
=console=ttyHSL1,115200n8 init=/sbin/init rootfstype=squashfs root=31:14
#副启动分区启动参数
partbootargs2=console=ttyHSL1,115200n8 init=/sbin/init rootfstype=squashfs root=31:16
#主启动分区引导位置prikern
=f80000
#tftp 文件服务器位置serverip
=192.168.1.2
stderr=serial
stdin=serial
stdout=serial
Environment size: 804/262140 bytes
刷机核心命令及解释
# 将刷机固件写入本级存储
tftp $loadaddr $image;
$loadaddr - tftp 传输的固件放置位置
$image - 拉取的固件文件名
# 清除主分区空间
nand erase$prikern $imgsize;
$prikern - 主启动分区的引导地址、起始地址
$imgsize - 上传固件的大小,字节数
# 将固件写入主引导分区
nand write $loadaddr $prikern $filesize
$loadaddr - tftp 传输的固件放置位置
$prikern - 主启动分区的引导地址、起始地址
$filesize - 上传固件的大小,字节数 与 $imgsize 一致;