ZYNQ芯片是近两年比较流行的片子,双ARM+FPGA,在使用分立FPGA和CPU的场合很容易替代原来的分立器件。

  ZYNQ可以外接QSPI FLASH作为程序的存储介质。

  QSPI和SPI flash是串行接口的NOR FLASH,在设计支持,容量都比较小,所以协议中只留了3Bytes寻址,也就是最大16MB空间。但是随着工艺和技术的提升,现在32MB、64MB,甚至128MB和更大容量的SPI/QSPI flash都出现了。

  

  以32MB为例,当需要访问大于16MB的地址是,新的器件提供了两种方法:

  1. 切换bank,每个bank 16MB,地址扔采用3Byte模式,只能访问此bank,需要访问高地址时,切换到高bank;

  2. 切换到4Btyes地址模式,通过命令,可以把flash从3Bytes传统模式切换到4Bytes新模式

  以上方法都可以实现大于16MB地址的访问,软件可以随便玩。但是,ZYNQ有个设计问题,固化到片子内部的bootrom,“固执”得认为外面接的qpsi flash是16MB的,只能访问这16MB:

  如果cold reset,flash自然会处于BOOTROM认识的状态;

  但是warm reset时,如果之前切换到别的bank或者进入4Bytes模式,就会导致BOOTROM找不到正确的景象,从而启动失败。这是由血泪教训验证出来的。所以软件在主动复位之前,一定要把flash设置为默认的模式;如果系统外接了硬件看门狗,看门狗也reset要一并拉到flash的reset引脚上!!!

  

大于16MB的QSPI存放程序引起的ZYNQ重启风险的更多相关文章

  1. 转:OWASP发布Web应用程序的十大安全风险

    Open Web Application Security Project(OWASP)是世界范围内的非盈利组织,关注于提高软件的安全性.它们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险 ...

  2. java:如何让程序按要求自行重启?

    正文开始前的废话: 这里的程序即包括b/s的web application,也包括standalone的类c/s的java application.   为什么要自我重启?   场景1:分布式环境中, ...

  3. SharePoint自定义程序页面部署 不用重启IIS

    SharePoint的部署方式默认是部署WSP包,尤其是有多个前端的时候WSP包的部署显得非常方便和快捷,但是WSP的部署需要重启整个IIS服务会造成SharePoint站点一段时间不能访问.结合自己 ...

  4. 应用程序有bug崩溃重启的案例2

    ------解决思路----------------------另外做一个服务或者程序定时监控系统进程.程序奔溃的话,都会在入口函数出现异常处理一下winform可以有两个事件来捕获主线程异常和线程异 ...

  5. 应用程序有bug崩溃重启的案例

    1.程序主界面代码 using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;u ...

  6. 程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)

    TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff); procedure ShutDown(sdStatus : TShutDown ...

  7. mfc封装cef浏览器 关闭整个窗口程序得时候又重启mfc 应用的程序

    最近使用mfc 做了一个cef得浏览器 多标签得.当使用这个封装得浏览器一段时间之后(超过1分钟2分钟) 当关闭封装得浏览器整个窗体 x得时候,整个窗体又重新弹了出来. 大概现象就是一个exe程序你杀 ...

  8. window程序意外关闭自动重启脚本实现

    @echo off : tasklist|find /i "xxxx"||start yyyy ping/n 127.1>nul 新建 .bat 文件,将其写入文件 xxxx ...

  9. linux如何让一个程序崩溃后自动重启

    思路:  写一个脚本 监控程序的运行状态  没有运行启动运行 已运行不做操作. 如果在控制台启动脚本 注意必须  nohup sh xxx.sh & while true do ps -ef ...

随机推荐

  1. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  2. CentOS 防火墙开放特定端口

    iptables是linux下的防火墙,同时也是服务名称.   service  iptables  status        查看防火墙状态 service  iptables  start   ...

  3. div仿textarea使高度自适应

    今天真的有些无语,在百度上找了很多关于textarea和input高度自适应的代码,并且考虑到了要判断textarea的滚动条,从而动态改变它的高度,直到我搜索了这个让我目瞪狗呆的办法…… <d ...

  4. 菜鸟快飞之JavaScript对象、原型、继承(一)

    有前辈说过,在JavaScript中,一切皆对象.由此可见,作为JavaScript的核心之一,对象是有多么重要.虽然今天走亲戚有点累,但还是得写写这个对象,免得吃几天好的,就又忘光了. 1.创建对象 ...

  5. 基于JQuery的获取鼠标进入和离开容器方向的实现

    做动画时,需要判断鼠标进入和退出容器的方向.网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例.注意绑定鼠标事件用的是on(),所以JQuery版本需高于1.7. <!DOCT ...

  6. 3.1 js基本概念

    js中的语法大量借鉴于C以及其他类C语言(Java,Perl). js中一切(变量.函数名.操作符等等)都区分大小写.如"var a;"中的变量a跟"var A;&quo ...

  7. 深化管理、提升IT的数据平台建设方案

    谈到信息化,每个企业有每个企业的业务模式,每个企业有每个企业不同的思考.落地有效的信息化建设一定紧跟着企业的发展,围绕业务和管理,来提升效率,创造价值. 对于企业如何在发展的不同阶段提升信息化建设,这 ...

  8. Arcmap中加载互联网地图资源

    本文转载自:http://blog.3snews.net/space.php?uid=6955280&do=blog&id=67981 前一段时间想在Arcmap中打开互联网地图中的地 ...

  9. iOS开发-- 通过runtime kvc 移除导航栏下方的阴影效果线条

    网上查了很多, 都是重新绘制, 感觉有点蠢, 恰巧工作有会闲, 就简单的通过runtime遍历了下属性找寻了下私有类和方法, 这里直接贴方法, 找寻过程也发出来, 能看懂的直接就能看懂, 看不太明白的 ...

  10. 【代码笔记】iOS-UILable电子表显示

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...