韧体更新能力不仅能够在客户现场的初始安装期间进行客制化, 还可以在产品安装完成后在现场添加新的功能/特性, 并且可在使用过程中修复任何韧体问题. NOR闪存等非挥发性内存组件具有可重复刻录能力, 且可靠性极高, 通常可用作韧体程序代码储存媒介.
透过重新编写组件韧体并变更部分的程序(组件使用非挥发性内存), 如此制造商便可轻松更新装置的功能或升级. 想要更新韧体时, 有三件事情须考虑, 分别为更新哪些/多少程序代码, 更新频率, 以及执行更新所需的时间(速度).
首先考虑韧体程序代码更新数
在IoT设备的初始设计时间, 必须考虑更新哪些/多少韧体程序. 相对于不可更新部分, 韧体的可更新部分必须储存在NOR闪存组件的独立区域中. 更新NOR闪存的任何片段都须要先抹除内存的这一部分, 然后将新信息程序刻录到该部分中. NOR闪存分为称为区段和区块的多个部分, 它们的大小各有不同.
NOR闪存组件(如采用SST SuperFlash技术的组件), 分为多个4KB区块, 每个区块可单独抹除和重新刻录(4KB=4×1024×8位=32,762位). 它还可分为更大的8KB, 32KB和64KB区段, 这些区段也可单独抹除.
因此, 一个8KB大小有2个区块, 一个32KB大小有8个区块, 一个64KB大小有16个区块. 图1显示出SST26VF064B采用8KB/32KB/64KB区域的内存组成, 且各个区域也可以单独进行保护. 在对闪存的任何部分执行任何更新前, 必须取消保护该部分中的区域, 以允许抹除和刻录操作.
图1 SST26VF064B的内存构成(映像)由8个8KB区段, 2个32KB区段和126个64KB区段组成.
完成更新后, 谨慎地再次对这些区段进行保护, 以避免意外写入或抹除这些区域. 韧体的可更新部分必须以足够灵活的方式划分为区段和区块, 以便同时支持有限数量和最大数量的特性/功能更新.
由于执行更新的速度由须要抹除和重新刻录的区段和区块数决定, 因此在组织韧体的可更新部分时, 最好同时考虑速度和灵活性.
图2给出了将内存组织为可更新和不可更新部分的范例. 引导程序代码等不可更新部分储存在受保护区域中.
图2 将内存组织分为多个不可更新部分(例如加载程序代码)和可更新部分(例如功能/特性程序代码, 映像档程序代码和参数变量程序代码).
韧体的可更新部分, 例如特性/功能等, 根据灵活性要求分为较小的区段或较大的区段. 可更新的映像档储存在较大的区段中, 可更新的变量/参数储存在较小的区段中.
韧体更新频率的主要限制是应用中所使用内存的耐抹写次数限制. SuperFlash技术内存(如SST26VF064B)的耐抹写次数可达100,000次, 这意味着每个区段可刻录和抹除100,000次.
计算韧体耐抹写次数确认更新频率
韧体可以更新100,000次听起来很多; 然而, 许多IoT设备会在使用期间搜集数据并将信息储存在NOR闪存中, 因此在计算最大耐抹写次数限制时必须考虑这一点.
考虑到耐抹写次数, 必须在内存中分配足够多的区段. 下面将举例说明, 假设IoT设备正在搜集和储存16个字节的信息, 并且信息预计在产品的使用寿命期间须搜集和储存1亿次.
这样就可以按底下方式计算应当分配的区段数:
. 1个区段=4 KB
. 假设区段中的所有地址单元用于储存信息(一次储存16个字节的数据), 然后写入到一个新的地址单元, 直至达到区段尾端(例如, 0×0000-0×000F, 0×0010-0×001F, 0×0020-0×002F等).
. 由于4 KB/16字节=256, 这即是达到区段容量并抹除区段中任何数据之前可以写入储存介质的次数.
. 1个区段的耐抹写限值=100,000次.
. 因此, 如果1个区段可以写入256次且耐抹写次数为100,000次, 则可以搜集和储存数据2560万次.
. 如果一个应用须要搜集和储存数据1亿次, 则要分配的区段数量为100,000,000/25,600,000=3.9. 因此, 在本例中, 须要分配4个区段以应对在一亿生命周期内储存16个字节的数据.
IoT设备工程师须要进行类似的计算, 以便为数据记录参数分配足够多的区段和区块, 以免超出其NOR闪存组件的耐抹写限值.
缩短更新速度降低设备停机时间
可根据须要抹除和重新刻录的区段和区块数来计算更新速度. 假设须要重新刻录SST26VF064B的几个64KB区段中储存的1Mb, 2Mb或4Mb韧体程序代码/数据; 程序代码/数据可以由韧体程序代码, 映像档或需要更新的其他程序代码组成.
更新过程涉及对闪存执行一系列命令指令. 序列将从取消保护内存区段开始, 然后抹除这些区段, 用更新的数据/程序代码进行刻录, 最后重新进行保护.
SST26VF064B采用可提供较佳抹除性能的SuperFlash技术, 与传统闪存相比, SuperFlash技术提供的较佳抹除性能对于缩短更新时间非常有用.
SST26VF064B支持的最大频率频率为104MHz, 最大区段抹除时间为25ms, 最大页刻录时间为1.5ms. 此外, 从发出每条命令指令到闪存以104MHz频率频率工作, 中间还需要12ns延时(CE高电平时间).
具体方法分别如表1和表2所示. 这些计算必须由IoT设备工程师完成以估算执行更新的速度, 目的是最大程度缩短更新期间的IoT设备停机时间.
选择合适挥发性内存提升IoT设备灵活度
IoT设备设计工程师需要在更新应用程序代码和数据时提供一定的灵活性. 更新哪些/多少程序代码, 更新频率和更新速度是设计IoT设备时须要解决的问题; 非挥发性内存的选择会影响这些问题, 并在计算程序代码更新的时间和速度方面起到关键作用.