物联网 (IoT) 设备正在快速进入市场——从家用电器到医疗设备再到汽车——因为制造商必须通过新的创新和采用或集成新技术的灵活性保持领先于竞争对手。随着新功能和法规的采用,设计人员必须在其产品中增加灵活性,以满足不断发展的物联网生态系统。固件更新不仅允许在客户站点的初始部署期间进行定制,而且还允许在产品投入使用后添加新功能/特性或允许在使用过程中修复任何固件问题。
诸如 NOR 闪存的非易失性存储器 (NVM) 设备由于其可重编程性和可靠性而通常用作固件代码存储介质。通过重写驻留在设备中使用的 NVM 中的部分设备固件代码,制造商可以轻松更新设备功能。
在寻求更新固件时,需要考虑三件事:
更新什么/多少代码
多久更新一次
执行更新所需的时间(速度)
要更新什么/多少固件代码
在物联网设备的初始设计阶段,必须考虑更新什么以及更新多少固件代码。固件的可更新部分必须与不可更新部分存储在 NOR 闪存设备的单独区域中。
更新任何一块 NOR 闪存首先要擦除内存的该部分,然后将新信息编程到该部分中。NOR闪存被组织成不同大小的部分,称为扇区和块。NOR 闪存设备,例如 SST 的 64 Mb SuperFlash SST26VF064B 技术,被组织成统一的 4 KB 扇区(4 KB = 4 * 1024 * 8 位 = 32,762 位),可以单独擦除和重新编程。它们还可以组织成更大的 8 KB、32 KB 和 64 KB 块,也可以单独擦除。因此,1 个 8 KB 块有 2 个扇区,1 个 32 KB 块有 8 个扇区,1 个 64 KB 块有 16 个扇区。图 1 显示了 SST26VF064B 在 8/32/64 KB 块中的存储器结构,每个块都可以单独保护。
【图1 | SST26VF064B 的内存组织(映射),由八个 8 KB 块、两个 32 KB 块和 126 个 64 KB 块组成。点击放大。]
在对闪存的任何部分执行任何更新之前,该部分中的块必须不受保护以允许擦除和编程。完成更新后,谨慎的做法是再次保护这些块,以防止对这些区域的任何无意写入或擦除。
固件的可更新部分必须以扇区和块的形式组织,以便有足够的灵活性来允许有限和最大的特性/功能更新。由于更新的速度取决于需要擦除和重新编程的扇区和块的数量,因此在组织固件的可更新部分时,最好同时考虑速度和灵活性。图 2 显示了将内存组织为可更新和不可更新部分的示例。不可更新部分(例如引导代码)存储在受保护区域中,而固件的可更新部分(例如特性/功能)则根据灵活性要求分为更小或更大的块。可更新的图像文件存储在较大的块中,可更新的变量/参数存储在较小的块中。
【图2 | 在不可更新部分(例如引导代码)和可更新部分(例如函数/特性、图像文件和参数变量的代码)中组织内存。点击放大。]
多久更新一次
您可能想要更新固件的频率的主要限制是应用程序中使用的内存的耐用性限制。SST26VF064B 等 SuperFlash 技术存储器具有 100,000 次耐久周期,这意味着每个扇区可以编程和擦除 100,000 次。更新固件 100,000 次的可能性听起来很多;然而,许多物联网设备在运行期间收集数据并将信息存储在 NOR 闪存中,因此在计算最大耐用周期限制时必须考虑这一点。
在内存中分配足够的扇区以考虑耐用性也很重要。例如:
假设物联网设备正在收集和存储 16 字节的信息,并且在产品的生命周期内预计会收集和存储 1 亿次信息。应该分配的扇区数可以计算如下:
1 个扇区 = 4 KB
假设扇区中的所有地址位置都用于存储信息,一次 16 个字节的数据,并被写入一个新的地址位置,直到到达扇区的末尾(例如,0×0000-0x000F 然后 0×0010 -0x001F 然后 0×0020-0x002F 等)。
由于 4 KB/16 字节 = 256,这是在达到扇区容量并擦除扇区中的任何数据之前可以写入存储的次数。如果一个扇区的耐久极限是100,000个周期,一个扇区可以写256次100,000个周期,那么可以收集和存储25,600,000次数据。
如果一个应用程序需要收集和存储 1 亿次数据,则要分配的扇区数计算为 100,000,000/25,600,000 = 3.9。因此,在此示例中,需要分配 4 个扇区来存储应用程序生命周期中的 16 个字节的数据。
物联网设备工程师需要进行类似的计算,为数据记录参数分配足够的扇区和块,以免超出其 NOR 闪存设备的耐用性限制。
更新速度
更新的速度可以根据需要擦除和重新编程的块和扇区的数量来计算。假设需要重新编程存储在 SST26VF064B 中几个 64 KB 块中的 1 Mb、2 Mb 或 4 Mb 固件代码/数据。代码/数据可以由固件代码、图像文件或其他需要更新的代码组成。执行更新涉及执行一系列命令指令以进行闪存。该序列将从取消保护内存块开始,擦除这些块,用更新的数据/代码对这些块进行编程,然后重新保护这些内存块。
对于 SST26VF064B,更新 1 Mb、2 Mb 或 4 Mb 存储器所需的指令序列如表 1 所示。从表 1 可以明显看出,两个最重要的周期是擦除时间和编程时间。
[表 1 | 用于更新 1 Mb、2 Mb 或 4 Mb 内存的闪存命令指令序列。点击放大。]
SST26VF064B 采用 SuperFlash 技术,可提供出色的擦除性能。SuperFlash 技术与传统闪存的擦除和编程性能比较如表 2 所示。与传统闪存相比,SuperFlash 技术提供的卓越擦除性能对于缩短更新时间非常有用。SST26VF064B 支持的最大时钟频率为 104 MHz,最大扇区擦除时间为 25 ms,最大块擦除时间为 25 ms,最大页面编程时间为 1.5 ms。每个命令指令与以 104 MHz 时钟频率运行的闪存之间也需要 12 ns 延迟(CE 高电平时间)。
[表 2 | SST26VF064B 和传统闪存的编程和擦除时间。点击放大。]
使用表 1 中所示的命令序列以及编程和擦除时间的知识,计算更新 1 Mb、2 Mb 或 4 Mb 的 SuperFlash 技术存储器和传统闪存所需的时间量如分别见表 3 和表 4。此类计算必须由物联网设备工程师完成,以估计更新速度,以最大限度地减少物联网设备在更新期间的停机时间。
[表 3 | 更新 1 Mb、2 Mb 或 4 Mb SuperFlash 技术内存所需的时间。点击放大。]
[表 4 | 更新 1 Mb、2 Mb 或 4 Mb 传统闪存所需的时间。点击放大。]
结论
物联网设备设计工程师需要提供更新应用程序代码和数据的灵活性。更新什么和多少代码、更新频率以及更新速度是设计物联网设备时需要解决的问题。NVM 的选择会影响这些问题,并在计算代码更新的时间和速度方面发挥关键作用。
审核编辑:郭婷
-
存储器
+关注
关注
38文章
7413浏览量
163466 -
物联网
+关注
关注
2900文章
43949浏览量
369722 -
IOT
+关注
关注
186文章
4153浏览量
195845
发布评论请先 登录
相关推荐
评论