zoukankan      html  css  js  c++  java
  • 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即可。
    ————————————————
    版权声明:本文为CSDN博主「weixin_43189165」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43189165/article/details/97761784

  • 相关阅读:
    解决ios手机页面overflow scroll滑动很卡的问题
    响应式网页设计:rem、em设置网页字体大小自适应
    linq 和lambda查询
    单元测试的学习
    各种仓储模式的学习
    ref 微软官网
    泛型 学习
    aop 和castle 的一些 学习文章
    autofac 的好博文
    json 序列化和反序列化的3个方法
  • 原文地址:https://www.cnblogs.com/arci/p/15006078.html
Copyright © 2011-2022 走看看