ZYNQ7045 系统升级实现方法(multiboot)

1.实现原理框图
在这里插入图片描述
系统分为6个部分组成:
fsbl:原始fsbl
googen_image:由3块组成分别为fsbl、bit、u-boot
update_image:由3块组成分别为fsbl、bit、u-boot
kernel_google:原始kernel
kernel_update:更新kernel
update_flag:更新标识
2.实现原理
flash存储格式及地址分配如上图所示
位于0x0位置的fsbl启动判断update_flag标识是否有效,如果无效则跳转到位置为0x100000的googen_image处,依次执行fsbl、加载bit、启动boot后跳转到位置为0xf00000的原始kernel中;
如果有效则跳转到位置为0x700000的update_image处,依次执行fsbl、加载bit、启动boot后跳转到位置为0x2200000的更新kernel中
通过该方法可实现不断电更新bit和kernel功能
3.操作方法
a.板子初始状态
通过jtag依次将fsbl、googen_image、kernel_google分别下载到地址0x0、0x100000、0xf00000处;
b.启动系统
通过网络接收更新文件update_image、kernel_update或者只接收其中一个,原始kernel接收更新文件后,依次下入地址:0x700000、0x2200000,如果只更新一个,只把文件写入相应的地址,写完之后向0x3c00000写入更新标识
c.更新文件
输入reboot命令,即可实现跳转,即运行update_image里面的bit,运行更新的kernel,或者只运行其中一个
4.结论
该方法可实现不断电更新zynq的bit和系统,目前已在项目中使用
注意
googen_image、update_image:可使用bootgen命令生成
可参考xapp1175
5.额外添加
petalinux下等待系统运行正常后,可通过flashcp命令直接操作flash,实现升级
例如flash分区为mtd0、mtd1、mtd2、mtd3,这些定义可在系统中查看
mtd0:boot
mtd1:env
mtd2:kernel
mtd3:space
假如要升级boot
首先将要升级的BOOT.BIN远程传输到本地,可使用scp命令
到本地后,运行
flashcp -v BOOT.BIN /dev/mtd0即可。
假如要升级kernel
首先将要升级的uimage.bin远程传输到本地,可使用scp命令
到本地后,运行
flashcp -v uimage.bin /dev/mtd2即可。

评论 3 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

weixin_43189165

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值