multiboot的功能对于不同的FPGA应该是相同的,但是具体的配置可能不一样。基本流程如下:

上图来源是xapp1246,  明显分为5个步骤,在FPGA启动时是有flash的0地址开始,但是因为golden image加了一些配置,在FPGA接收到这些配置是会转到其他的地址,继续读update image的内容。这些配置需要在生成golden bit的时候加约束命令如下:

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]                 //可选的压缩项
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]      //使能回读功能
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 'h00800000 [current_design]  //update image 的起始地址

如果在加载update image 出错时,又要能够返回到golden image区,这需要在生成update image时添加如下约束:

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]

意义如同golden image。生成这两个bit 后使用如下命令生成mcs文件。

write_cfgmem -force -format mcs -interface bpix16 -size  -loadbit "up 0x0 led_icape_golden.bit up 0x00800000 led_light_update_error.bit" -file icape_golden_light_update_error.mcs

这些参数和具体的flash 和bit文件的大小有关。比如 bpix16表示16位的bpi flash,  up 0x0 led_icape_golden.bit表示 这个bit 的开始地址是0x0, 最后是生成的mcs文件。前提是当前的工作目录存在这两个bit。 pwd命令查看当前的工作目录,cd命令可以切换当前工作目录。

为了验证,update 配置错时可以返回到golden 配置,可以将bit更改其中的数据,再生成mcs文件,烧录到flash中,即可完成验证。

但是,在本实验中发现了一个有趣的问题:

测试1:led1工程,做为golden image 并加了golden的约束。 led2工程, 做为update image 并加了update的约束。 最后将两个bit 合并为一个mcs。结果是没问题,而且也能在update image有错的情况下,返回到golden区。

测试2:flash系统的升级工程,做为golden image 添加和测试1一样的golden 约束。led2工程和测试1一致。生成mcs的命令也是一样只是bit不同。结果是不能启动update image,而只是返回到golden image。

可能产生的原因:golden image没有尝试跳转。golden image 跳转地址有误。update image bit写入flash中有误。

同事直接看生成的mcs文件,发现跳转的地址是00。但是我已添加了约束命令,为什么没有效果?惊人的结果截图看效果:

在Linux系统下多了一些符号,这些符号导致了跳转的地址没有写入到bit文件中。入下图:是bit的开头。为啥能在这看出重启地址没有写入,我不说,有兴趣可以查查。当然我也不是特别清楚,我也需要在查查。

为什么会牵涉到linux我也先不说。。。哈哈。

multiboot 的golden image 和update image的 mcs文件的生成及调试的更多相关文章

  1. cvs update后输出的文件标志 和 update常用的几个参数

    (1)update 和 checkout 在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:       U file        文件按要求从仓库得到更新.用在那些仓库里面 ...

  2. mysql update 忘加 where 文件恢复

    前提条件:mysql :data_row_format=rowmysql> show variables like '%image%';+------------------+-------+| ...

  3. 路由器逆向分析------QEMU的下载和安装(Linux平台)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68953160 一.QEMU源码的下载和编译 QEMU源码的github下载地址:h ...

  4. 【Spring Framework】Spring入门教程(六)Spring AOP使用

    Spring的AOP 动态代理模式的缺陷是: 实现类必须要实现接口 -JDK动态代理 无法通过规则制定拦截无需功能增强的方法. Spring-AOP主要弥补了第二个不足,通过规则设置来拦截方法,并对方 ...

  5. Xilinx 7 series FPGA multiboot技术的使用

    Xilinx 7 series FPGA multiboot技术的使用 当升级程序有错误的时候,系统会启动golden bitstream 注意:需要在源工程与升级工程中添加如下约束语句 生成组合mc ...

  6. svn自动update到指定目录

    对于开发和测试环境来说,可以使用svn自动update 到指定目录,这样就省去每次提交代码都要去服务器上手动update.对于团队来说,省时省力. 看下怎么做吧,在服务器svnserver安装 目录下 ...

  7. 解决maven项目update project会更改jdk版本问题

    一.问题描述             在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.6, 结果每次使用Maven > Update project的时候JDK版本都恢复成 ...

  8. 【转】MySQL外键约束On Delete、On Update各取值的含义

    转载地址:http://hi.baidu.com/jxqlovejava/item/3d2cc5b5d689917c244b0920 ‍ 先看On Delete属性,可能取值如上图为:No Actio ...

  9. MySQL外键约束On Delete、On Update各取值的含义

    主键.外键和索引的区别?   主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...

随机推荐

  1. Java中的注解基础

    一.元注解 元注解的作用就是负责注解其他注解. 1.@Target @Target用来指明注解所修饰的目标,包括packages.types(类.接口.枚举.Annotation类型).类型成员(方法 ...

  2. 配置github的SSH key及GitHub项目上传方式一——使用终端命令行

    GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤——往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:htt ...

  3. 后端利用Redis队列及哈希实现定时推送提醒的三个思路

    周煦辰 2016年8月31日 本文介绍了一下本人在开发过程中遇到"定时推送提醒"的需求的时候所思考的三种解决方案. 明确问题 首先明确一下这个需求可能包含的几个"坑&qu ...

  4. mytabits表关联一对一(多对一?)

    mytabits表关联一对一(多对一?) association联合 联合元素用来处理“一对一”的关系.需要指定映射的Java实体类的属性,属性的javaType(通常MyBatis 自己会识别).对 ...

  5. Andrew and Taxi CodeForces - 1100E (思维,拓扑)

    大意: 给定有向图, 每条边有一个权值, 假设你有$x$个控制器, 那么可以将所有权值不超过$x$的边翻转, 求最少的控制器数, 使得翻转后图无环 先二分转为判定问题. 每次check删除能动的边, ...

  6. ruby on rails Mac 安装

    网上的资料有很多,但好多坑,有的已经过期了,有的不符合现整理了一下 貌似有的还跟os系统版本有关系,请勿照搬,根据实际情况安装 我的系统版本是10.12.3 ps:选择一个较好的网络,很多问题有得时候 ...

  7. POSIX线程接口编程学习心得

    由于实验需要,需要了解下C语言多线程编程的知识,于是学习了下POSIX线程编程的知识,有点心得,记录并分享一下. POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段.与标准 fork( ...

  8. 012PHP文件处理——copy rename file set_include_path

    <?php //copy rename file set_include_path /*file() 以行为单位返回数组 * */ /*$arr=file('b.txt'); foreach ( ...

  9. jQuery实现的手机发送验证码倒计时效果代码分享

    这是一款基于jquery实现的手机发送验证码倒计时效果代码,可实现实时显示秒数倒计时的功能,还可实现对手机号码格式验证的功能,是一款常用的网站注册发送手机验证码特效代码. 效果描述:注册一个网站,当需 ...

  10. websocket 缺点

    当时用 python 做的服务器,后来回去想再工作项目上用,但新的技术升级,随之而来还是要解决很多非技术问题, 服务器带宽,并发服务器性能方方面面考虑之后还是没有用上,十分可惜, 一个新的技术推动,尤 ...