解决现场升级带来的挑战
Posted 03/01/2018 by Joel Coplen
可编程逻辑器件(如FPGAs和CPLDs)的主要优势在于可编程性。这些器件通常面向特定应用问题而进行针对性设计和部署。许多部署可编程产品的嵌入式系统在部署后都从其设计和配置的能力中受益匪浅。升级功能对于很多终端应用而言都非常有用。例如,传感器或显示屏接口等应用可以利用该功能来改善库存控制。这些应用可能有协议桥桥接,具体时序或规格略有不同,取决于单元类型。另一个应用实例是工业和电信基础设施应用中的板卡管理。这些应用通常需要使用很长时间,如果能够通过远程或现场升级配置来修复错误或提高可靠性将大大受益。
具有片上配置闪存的FPGA提供了现场可重新编程的优势。但是,获得好处的同时也带来了系统设计复杂性增加的缺点。系统设计工程师必须克服若干挑战才能实现这类产品的现场升级解决方案。最先进的Flash FPGA产品包含多种功能来帮助解决这些问题。
第一个系统级挑战是更新期间的停机时间。有些Flash FPGA需要将器件保持脱机状态,或置于专用编程模式才能更新器件。在这些情况下,系统操作必须冻结或停止,并且在进入离线模式之前,器件I/O必须保持在已知的可信状态。对于这样的场景,一些器件直接支持I/O冻结模式。不提供这种专用模式的器件可能需要额外的外部电阻或其他组件才能将I/O保持在安全状态。
将设备置于离线模式有几个缺点——取决于用于编程的接口和器件编程存储器的大小,重新对器件编程可能需要几秒钟的时间。这种停机时间可能无法被很多系统接受,尤其是需要持续运行的基础设施应用。
更高级的Flash FPGA支持后台编程模式。后台编程模式可以在器件不脱机的情况下重新编程器件的配置闪存。这使得器件能够在几秒钟的编程时间内继续正常运行,从而消除对停机时间的担忧。
一旦器件完成了后台编程,配置闪存就可以加载到器件的活动SRAM存储器中。激活新配置的这一步骤通常被称为“刷新”器件,并且与离线模式下器件编程所用的秒数相比,仅需几毫秒。理想情况下,这个刷新步骤可以在不关闭器件电源的情况下完成,具体取决于其技术特性。某些器件可以利用I/O冻结功能并结合刷新命令来为器件实现零停机更新。I/O在刷新步骤期间冻结,只有在器件中新配置处于活动状态时才会释放。该功能被称为“无中断更新(Hitless Update)”,如下图所示。
用于后台编程的接口
如何连接到器件进行后台升级是许多嵌入式系统面临的另一个挑战。JTAG接口是用于在制造过程中对Flash FPGA进行编程的最常见接口。JTAG是制造环境中的理想接口,因为它可以将边界扫描等电路板测试功能与单个器件中的重新编程功能结合在一起。它也常用作调试接口。
使用系统中的其他可编程设备(如微控制器或应用处理器)可满足大部分现场重新编程需求。该器件将通过“无线”方式接收编程更新文件,并充当对FPGA进行编程的主控设备。这里面临的挑战是很多MCU和处理器没有JTAG主模块,这就意味着该接口对于现场后台重新编程而言不是很有用。幸运的是,许多可编程器件还支持用于重新编程的SPI接口,该接口在业界普遍使用。最近发布的一些Flash FPGA增加了通过I2C进行重新编程的能力,需要的I/O比SPI总线更少,并已成为许多系统的首选边带接口。这对于I/O数量较少的小尺寸应用特别有用,其中两个和四个引脚之间的差异可以确定采用哪些封装。
从编程失败中恢复
后台重新编程为该领域的器件使用带来了另一个挑战。在闪存重新编程期间,闪存必须在用新配置编程之前擦除。擦除步骤通常占用整个编程时间的大部分,这个挑战很特别——在进行擦除或编程步骤时发生的电源故障或其他故障将导致配置损坏。
编程失败在许多对停机时间要求苛刻的系统而言提出了严峻的挑战。在Flash FPGA或CPLD是第一个打开,然后管理系统电路板管理并启动/关闭的系统中,编程失败会导致整个系统冻结。这些应用必须有一种方法来从编程失败中恢复。许多Flash FPGA具有称为双引导(Dual Boot)的功能,可以从编程失败中恢复。双引导功能提供了一种方法来存储和访问Golden或Fallback映像,该映像在编程期间不会受到干扰。此映像可以存储在电路板外的SPI闪存中,当系统编程失败时可以读取该映像进行引导。这时候,FPGA可以检测到主设备映像已损坏,并且回退从次映像引导。要充分利用后台重新编程的高可靠性系统通常需要双引导解决方案。
针对恶意更新的安全性
嵌入式系统领域中涌现的一个问题是固件安全性。任何能够进行现场或无线升级的器件都应该包含针对恶意更新的保护措施。FPGA为这些问题提供了多种解决方案。一种解决方案是密码保护。密码保护需要通过编程接口将密码发送到FPGA,然后才能开始后台编程操作。该代码存储在FPGA的闪存中,仅对下载到系统的内容进行编程,包括允许编程器件的密码。
MachXO3
莱迪思为现场升级应用提供业界领先的解决方案,并提供实现安全和透明后台升级的整套解决方案。莱迪思低密度MachXO3 FPGA系列包含多种功能,可解决现场升级(支持业界大多数后台编程接口)所面临的挑战。该器件还支持关键的安全性和可靠性功能,如无中断更新、双引导和密码保护。使用最新的MachXO3-9400开发板开始您的MachXO3 FPGA设计。