怎么避免器材“砖头化”,只宣布正告就够了吗?
“体系正在更新,请勿封闭电源。”咱们都看到过这个正告,它一般在电子器材要在闪存装置代码更新时呈现。假如更新被中止,闪存将无法正确更新,代码将会损坏,而器材无法运转,即“砖头化” (bricked)。这种我们了解的正告存在的原因,是由于运用闪存的大多数半导体器材在编程或擦除操作期间需求一向供电。明显,避免器材“砖头化”是非常重要的。可是,只宣布正告就够了吗?有些嵌入式器材乃至都没有用户显示器,因而无法产生正告。在规划中怎么才干保证牢靠且安全的长途体系更新呢?
嵌入式体系长途晋级的重要性
长途晋级对衔接的嵌入式体系日益重要。经过互联网长途修正缝隙或添加新特性,可以节约许多的维护费用;当布置数千个嵌入式体系时,维护便是一个大问题了。跟着嵌入式体系安全问题的不断添加,经过长途安全定向代码晋级来修正潜在安全缝隙变得益发重要。明显,晋级有必要安全地完结,不然,进犯算法便很简单运用不安全的更新来损坏体系。下面是一个典型体系的示例,有助于更好地了解安全牢靠的长途晋级设备的要求。
体系示例——操控平面桥
通讯或网络机箱内的操控平面桥(Control Plane Bridge),是需求长途更新的常见体系示例。这种子体系汇集了许多低速外设,比方模仿传感器、电源办理模块、电扇、毛病记载存储器和运用I2C、SPI和GPIO接口的状况输出。然后,可以选用速度更快的总线——或许是通讯和连网机箱内很常见的子体系接口PCIe,与低速外设直接通讯。这种机箱操控子体系可以施行智能会聚功用,当规则发动点被激活,例如抵达最高温度或最低电压水平常,便会“推动”通讯。图1所示便是这样一个体系,它是用装备片上微操控器的FPGA (一般称为SoC FPGA) 完成的。
图1 经PCIe长途晋级的机箱操控平面桥
FPGA和闪存
在上面的比方中,长途更新经由PCIe总线完成,但并未对编程期间或许呈现的断电进行维护。让咱们看看常见的FPGA施行类型,然后更好地防备闪存长途更新进程中忽然断电时或许呈现的严重毛病。
简直每个根据FPGA的体系都需求选用某种方法的非易失性存储器来贮存装备存储。一般说来,装备存储器坐落芯片外或芯片上。根据SRAM的FPGA需求外部闪存,用于上电时的装备。根据闪存的FPGA可以运用嵌在FPGA结构(结构嵌入闪存FPGA)内的装备存储器,或运用根据SRAM的结构,但将一个闪存块放在芯片上(旁边面闪存FPGA)。
根据SRAM的FPGA一般运用NOR SPI闪存,由于它耗费的引脚数最少,几家供货商有相同的引脚输出,并且密度高达1 Gb。现在的NOR SPI闪存器材具有32位地址挑选,可扩展成为4GB器材,并且不需求改动指令和操控协议。当这种SPI闪存处于程序或擦除形式 (电荷泵发动) 且电力消失时,会产生什么事情呢?电荷在哪里消失?是否有电路检测到这些闪存的电力毛病并将电荷安全地引导到地上?一般说来,正被写入的页面将呈现数据损坏。
图2 三种FPGA装备图:带外部装备闪存的根据SRAM的FPGA、旁边面闪存FPGA和嵌入闪存FPGA
旁边面闪存FPGA体系选用较宽的片上数据总线在上电时载入根据SRAM的装备存储。一般,这种办法载入装备比根据SRAM的FPGA要快,由于后者是选用外部闪存来装备器材的。可是,这种办法存在程序或擦除周期期间功率丢失的问题。电荷去了哪里?闪存是否被损坏?是否仅写入页面被损坏?整个闪存都存在危险?FPGA是否可以检测被损坏的片上存储器,或许,在上电期间,被损坏的数据是否被载入到装备存储器内?
闪存的损坏是个问题,怎么保证长途数据的安全也非常重要。当嵌入式产品可由终端用户拜访时,就存在被篡改的或许。为了避免进犯,有必要一同选用软件和硬件的安全功用。仅对长途装备数据文件进行加密远远不够。尽管这种软件加密安全有用,可是还有必要将解密数据的硬件 (FPGA) 置于安全维护内。当用户拜访嵌入式器材时,加密数据文件很简单被提取。运用价格便宜的电磁探针和进行差分功耗剖析 (DPA) 即可完成这一点。选用这种办法提取FPGA安全密匙的比方许多。假如FPGA并未内置DPA对立办法,则任何长途更新都存在安全危险。当用户可以拜访嵌入式产品时,假如没有DPA对立办法,便好像中门大开,没有安全可言。
在嵌入闪存的FPGA中,装备贮存在芯片上,并严密集成在FPGA结构内。例如,在美高森美SmartFusion2和IGLOO2 flash FPGA上,可经由外部通讯端口如USB、PCIe或JTAG等进行编程,整个编程进程由片上专用编程接口办理。此外,SmartFusion2和IGLOO2 FPGA运用了一种称为“在运用中编程”(IAP)的高档编程机制,即便在编程期间有功率损耗的情况下,仍可供给牢靠且安全的编程。让咱们看看怎么选用IAP机制来完成现在嵌入式体系需求的牢靠长途晋级的才能。
在根据FPGA的嵌入式体系中完成牢靠且安全的长途更新
嵌入闪存的FPGA可以供给更简单支撑安全牢靠的长途更新所需的要害功用。例如,SmartFusion2具有施行要害桥接功用及安全和IAP功用需求的一切干流FPGA特色。如图3所示,低速接口可以选用I2C和GPIO衔接。高速主机接口PCIe则作为不需求FPGA结构的专用端口。
图3 SmartFusion2“在运用中编程”(IAP)支撑机箱操控平面桥,以完成安全牢靠的长途更新
片上处理器可以运用高速存储子体系(HSMS)拜访大型内部闪存来进行代码贮存,拜访大型内部SRAM来进行数据缓冲,而专用DDR操控器则在有需求时拜访其它外部存储器。专用体系操控器供给编程期间运用的安全功用,以及长途更新期间运用的IAP功用。图4详细描述了SmartFusion2 FPGA上可以供给的要害功用。
图4 美高森美SmartFusion2 SoC FPGA具有干流特色及牢靠的安全和长途更新才能
运用“在运用中编程”来完成安全牢靠的晋级
SmartFusion2和IGLOO2供给的IAP机制是一种安全牢靠地长途更新装备比特流的办法。IAP在FPGA内由专用体系操控器履行,因而并不需求运用任何FPGA结构或其它用户可装备逻辑。IAP功用选用一个外部SPI闪存器材,是一个两步进程。在第一步中,外部SPI闪存器材经过任何可用的接口,比方PCIe、USB、JTAG乃至以太网,用需求的比特流编程。用于SmartFusion2器材编程的一切比特流都进行了加密,以保证它们不会被篡改。
在第二步中,体系操控器经过体系服务恳求履行IAP服务。用户向体系操控器供给指针,指向外部SPI闪存内比特流方位的初始地址。IAP体系服务恳求也有三个用户选项:认证、编程或验证。认证一般是在FPGA装备存储器编程之前履行的,以验证SPI闪存内的比特流适用于正在编程的器材。在认证期间,器材正常运转。
包括新比特流的外部SPI闪存还包括一个额定的镜像,即用作康复意图的一个好版别。用户可以在任何时刻点运用康复镜像将FPGA装备为杰出状况。康复镜像可以 “原样”保存,也可在需求时进行更新以便用于要害缝隙的修正。
IAP功用施行期间可以运用程序康复功用。若编程期间断电,发动编程康复,体系操控器会以可控的方法将编程FPGA的内部电荷泵禁动。在接下来的供电周期中,在发动FPGA结构之前,体系操控器将检测到器材编程操作现已被中止,它将从外部SPI闪存中的比特流发动编程周期。用户可挑选从好的镜像进行更新或从刚刚推送到SPI闪存的长途更新镜像进行更新。当外部比特流被载入到SmartFusion2 FPGA内时,它选用内置的DPA对立逻辑,以保证没有电磁探针可以将加密匙解密,然后为嵌入式体系供给可信任的安全器材。
与安全加密比特流和比特流验证一同运用,程序康复可供给现在衔接的嵌入式体系需求的安全牢靠的长途编程更新机制,即便FPGA装备存储器在编程的进程中止电也相同。