简介
spi flash 路由方案通常控制在16m以内。 需要支持32m需要4byte 地址。ar9531 地址映射只能映射16m地址到地址空间内。
希望把后16m作为固件备份分区,当主分区的固件升级失败后,自动从恢复分区恢复固件。
代码基于以下代码实施:
https://github.com/pepe2k/u-boot_mod.git
32m 分为两个分区,前16m为主分区。后16m为恢复分区。
uboot 校验主分区固件失败,自动从恢复分区恢复
uboot 启动linux失败n次后,自动从恢复分区恢复
uboot操作指令
以下只包含本次uboot修改增加的命令。
更新主分区固件
run fw_upg
更新恢复分区固件
run fw_bak_upg
更新校准art
run art_upg
更新uboot
run uboot_upg
恢复uboot env
run erase_ubootenv
从恢复分区还原
recover
uboot web升级
注意: web升级自动更新 主分区与恢复分区。用于出厂升级。
uboot执行命令:
httpd
uboot linux协同
uboot每次开机对环境变量bootcount 进行加1操作,linux系统正常启动后,进行置0操作。当uboot尝试启动linux失败次数大于bootlimit(默认为10)时,uboot从恢复分区恢复固件到主分区。
uboot 操作bootcount 计数器:
setenv bootcount 0
saveenv
uboot 操作bootlimit
setenv bootlimit 10
saveenv
linux置零操作
fw_setenv bootcount 0
linux升级备份分区
mtd erase /dev/mtd7
mtd write <firmware.bin> /dev/mtd7