• 【无标题】


    人生海海

    山山而川

    不过尔尔


    目录

    何为热升级

    你知道热刷新吗

    FPGA是怎么热升级的


    何为热升级

    说起热升级,白嫖君使用最多的还是ARM的热升级,就是不通过烧录器,使用外设接口,比如串口、网口、USB等等,通过自己拟定的一套通信协议给设备进行程序更新。

    就像现在造车新势力比较流行的OTA,Over-the-Air Technology,翻译过来就是空中下载技术,通过车载的SIM卡联网进行升级。

    蔚来汽车OTA界面

    要白嫖君说么,OTA的出现对普通消费者来说不算一件好事,因为厂家修改软件的成本大大降低,他在出厂之前对质量的把关就不会那么严格了,无非就是给客户推送个升级包的事嘛。

    但是对工程师来说,热升级这种技术实在是救命稻草。当你的设备交付客户了,安装在地球上还好,管他天南海北人都能过去,要是像白嫖君的企业一样,设备装卫星上天了,那真出问题想修改一次你咋去

    你知道热刷新吗

    说到这里,再给大家讲一种技术,叫热刷新。众所周知,在外太空弥漫着大量的宇宙射线,脱离了大气层的保护,我们的太空设备常常会暴露在高能量的辐照下,那么这种宇宙辐照有极低的概率穿过厚厚的金属屏蔽腔,然后进入我们的芯片,使芯片内部发生粒子翻转,运算逻辑出错。所以一旦发生粒子翻转,对设备简直是致命打击。

    宇宙射线导致粒子翻转

    这种情况下,就需要用到热刷新技术了,一般是一个抗辐照的专用芯片,定时去回读FPGA的程序,当回读检测到FPGA发生单粒子翻转时,可以采取重载的方式消除单粒子的影响;也可以定时刷新FPGA,削减单粒子的累计效应

    所以,当设备上了太空,工作环境和地面完全不可同日而语,因此宇航级别的芯片要比商业级的芯片贵几百几千倍也不足为奇了。

    FPGA是怎么热升级的

    言归正传,本篇文章讲FPGA的远程升级步骤,以Xilinx家的Artix7为例。

    为什么会觉得FPGA也能远程升级难以理解呢,因为FPGA不同于ARM或者单片机一样有堆栈,有启动指令,上电需要一系列复杂的指令之后才能完成初始化。FPGA里面全是触发器这种东西(可以这么理解),纯靠晶振时钟驱动,时钟来一次他就工作一次,根本没有堆栈这种概念,也没有什么地址映射,内存映射这种概念。所以我们对它上电怎么开始运行的几乎完全不知情。只知道他上电后从外挂的一片flash中把程序读走,然后就开始工作。你想改变他的运行指针?不好意思,没有指针

    那么FGPA是怎么实现远程升级的呢?首先我们需要了解下FPGA加载程序的工作原理,FPGA内部是有一个晶振的,这个晶振大抵就是个LC振荡电路产生的一个时钟信号,使用QSPI时序将程序从flash中读出,然后对程序做一个CRC校验,校验通过后,把程序加载到FPGA上的SRAM之后,就开始执行我们的程序了,如下图红色部分,FPGA通过这四根线从外部flash加载程序。

    FPGA通过QSPI从外部flash加载程序

    其实学问藏在flash芯片的布局里。flash芯片被我们人为地分成了两部分,分别是golden imageupdate image

    golden image看名字就知道了,我把它叫做金坷垃boot,金坷垃boot一旦固化后就不再动了,当升级程序错误的时候,会回退到这个金坷垃boot来,所以必须保证金坷垃boot是个非常稳定的boot;

    update image就是我们正常执行的程序了,我们升级程序也是对这个image所在的flash扇区进行的擦写覆盖。

    如下图所示,FPGA工作时,可以通过QSPI时序擦写update image。

    FPGA热升级示意图

    FPGA上电后的流程是:

    1. 上电后,FPGA首先从0地址读取程序,把金坷垃程序读取回来;

    2. 发现金坷垃使能了跳转,于是我们跳转至update image,于是从update image所在的扇区地址读取程序;

    3. 校验update image文件的正确性,如果校验不对就地死机;

    4. 由于死机,看门狗定时时间到,清零跳转使能寄存器,系统复位;

    5. 执行金坷垃程序。

    具备热升级能力的FPGA上电加载流程

    下一篇文章,我们将对技术的实现细节和一些实现过程中会遇到的小坑写出来,有兴趣的伙伴记得持续关注哦~


    作者 | 冰茶奥利奥

    微信公众号 | 嵌入式电子创客街

  • 相关阅读:
    APP产品经理岗位的具体内容(合集)
    视频通话中的Camera操作
    嵌入式软件中如何排查bug?
    2022数学建模国赛如何安排进度?川川学长精心讲解
    【分享】“微信小商店“在集简云平台集成应用的常见问题与解决方案
    PostgreSQL 技术内幕(十)WAL log 模块基本原理
    软件设计模式
    测试工程师需要具备哪些“技能”?
    excel中去除公式,仅保留值
    3d-DNA组装基因组
  • 原文地址:https://blog.csdn.net/shizhibuyi1234/article/details/126067843