为物联网程序存储器应用选择和使用正确的闪存技术
投稿人:DigiKey 北美编辑
2018-05-23
随着物联网节点变得越来越强大,处理要求可能会提升到全新的水平,需要 Linux 等完全嵌入式操作系统 (OS) 才能正确管理所有正在运行的复杂任务。虽然将此代码存储在闪存 microSDHC 卡上很方便,但大多数闪存 microSDHC 卡仅适用于数据存储而非操作系统存储,不过供应商已经提出了一些创新的解决方案。
本文介绍了嵌入式操作系统的作用,以及为何将操作系统和应用程序代码同时放在物联网节点中的 microSDHC 闪存卡上通常是明智之举;然后解释了闪存卡的性能下降模式,以及操作系统如何受到这种性能下降现象的特别影响;接下来展示了设计人员如何通过新的闪存实施办法来克服这种性能下降,从而确保物联网节点的实施高效且可靠。
为何使用嵌入式操作系统
对于某些物联网应用而言,可在远程物联网节点上执行的预处理越多,物联网节点需要传输回中央集线器的数据就越少,这样可释放网络带宽。经过预测试的嵌入式操作系统可通过有效处理大量单独任务来支持复杂的预处理,并以可预测(确定性)的方式处理多重任务。当然,这将对微控制器提出额外的要求,需要更快的时钟速度,更重要的是,需要更多的程序存储器。
商业或开源成品嵌入式操作系统的另一优势在于采用经预测试的可靠代码,很少需要更新。例如,可用的嵌入式 Linux 操作系统可能只是每季度更新一次,或是仅安装紧急安全补丁。嵌入式操作系统和所需应用程序代码可能需要 8 Gb 或更多的存储空间,由于操作系统很少更新,因此将操作系统存储在由技术人员手动(物理)更新的 microSDHC 闪存卡上会更方便。这也适用于未来的内存扩展,因为下次技术人员访问时,现有的 4 GB 闪存卡可以根据需要轻松更换为 8 Gb 或容量更大的卡(图 1)。
图 1:Swissbit Class 10 microSDHC S-140u 存储卡支持高达 104 Mb/s 的速度,足够用于高速访问程序存储器。(图片来源:Swissbit)
与通过无线网络更新的闪存相比,在手动更新的 microSDHC NAND 闪存卡上存储千兆字节的嵌入式操作系统具有多个优势。在无线网络中,根据所使用的仲裁方案,更新 4 GB 或更大的嵌入式操作系统可能会导致从操作通信中窃取无线带宽。通过网络更新还需要一个两倍于正常容量的 microSDHC 卡,因为需要足够的存储空间来运行操作系统和容纳传入的更新。
由于无线电活动以及更高的闪存写入电压和功率要求,通过无线方式更新闪存代码也会缩短电池寿命。
与数据存储相比,从闪存执行的嵌入式操作系统对闪存单元也提出了不同的要求。大多数商用闪存 microSDHC 卡都是制造商设计用于数据存储的。最常见的商业用途是移动设备的多媒体存储。虽然视频、图像或音频文件中的多个位错误可能会被最终用户忽视,但关键嵌入式操作系统文件中只要有一个位错误,就可能导致整个系统出现故障。
闪存的使用寿命有限制。对闪存阵列的每次写入操作都会缩短阵列的寿命。每个半导体闪存规范列出了有限数量的擦写周期。随着闪存单元接近规定的限制,单元磨损并且不接受新编程状态的可能性变得越来越大。
磨损均衡是防止由于写入操作引起闪存阵列性能下降的一种常见方法。写入并非写入相同的闪存位置,而是均匀地分布在整个闪存半导体存储器阵列上,确保写入内容在闪存矩阵中均匀分布。通过磨损均衡,当微控制器写入物理存储器中的单个位置时,闪存控制器可以将该位置映射到闪存阵列中的不同位置。
读取干扰错误如何发生
操作系统文件的访问频率比数据文件要高得多,因此无法容忍文件位错误。在某些情况下,核心操作系统文件可能会被不断读取,进而在闪存阵列中引入位错误。
闪存以块的形式排列,每个块包含许多页。对存储器来说,块是可擦除的最小部分,而页是可读取或编程的最小部分。闪存块的一般大小为 256 KB,每个块可包含 64 页,每页 4 KB。每个页还包括额外的 64 个字节,用于纠错码 (ECC)、擦除计数和到物理转换信息的逻辑。
在一页数据的闪存读取操作期间,即使页中仅有一个字节需要读取,也会对页所属的整个块施加较小的读取电压。由于闪存处理单元技术,也会在块中的周围页内产生较小的电压。这可以将电子注入到单元绝缘层中,类似于对单元进行编程,这就是它被称为“软编程”的原因。将较小的读取电压重复施加到同一个块可能最终干扰非正在读取的闪存页的编程。随着时间的推移,这可能导致将相邻单元的状态改为不同的值。
虽然大多数 NAND 闪存 microSDHC 卡都有某种形式的纠错功能来纠正单元错误,但由软编程引起的错误数量可能很多,以至于达到无法纠正的临界水平,从而导致微控制器从位位置读取不同的值,造成文件损坏错误。这些位错误称为读取干扰错误。
用于数据存储的 NAND 闪存 microSDHC 卡很少出现读取干扰错误。在闪存阵列上执行写入操作时,磨损均衡操作过后,闪存位置被重新编程,因此消除了任何软编程影响。但是,用于嵌入式操作系统的闪存阵列很少编程,这使得读取干扰错误成为现实。
单阶存储单元 (SLC) 闪存卡的额定读取次数为一百万次,多阶存储单元 (MLC) 闪存卡在读取干扰错误发生之前的额定读取次数为 100,000 次。对于数据闪存,读取干扰错误被认为非常罕见,以至于规格书中通常不指定这些数字。
使用 RDM 防止读取干扰错误
为了防止读取干扰错误,Swissbit 开发了一种称为读取干扰管理 (RDM) 的功能。在 Swissbit 的 RDM 中,闪存卡控制器会跟踪每个闪存块的读取操作次数。当块达到内部定义的读取操作次数时,控制器将数据移动到新块,类似用于写入操作的磨损均衡。如有必要,在对新块进行写入操作期间,SD 控制器的纠错码 (ECC) 会纠正任何损坏的数据。
Swissbit 的 SFSD8192N1BM1MT-I-QG-221-STD 8 GB S-450u UHS-I Class 10 microSDHC 闪存卡中已实施 RDM。S-450u 专为使用嵌入式操作系统的工业应用而设计,具有许多复杂的物联网节点中嵌入式 Linux 操作系统和应用程序代码所需的足够空间。在 SDR104 模式下,S-104u 可支持高达 104 Mb/s 的数据访问速度。
使用 microSDHC 卡执行程序存储器
如前所述,microSDHC 卡通常仅用于数据存储器,因此大多数 Harvard 架构微控制器上的外设仅支持访问作为数据存储器的 microSDHC 卡。这限制了可用选项。
现有解决方案会读取 microSDHC 卡并将程序存储器加载到 RAM 中,然后从 RAM 中执行。RAM 芯片不仅增加了电路板的成本,而且程序扩展仅限于 PC 板上可用的板载 RAM 数量。
MicroSDHC 卡能够在 SD 模式或 SPI 模式下连接。
要将微控制器连接到作为程序存储器的 S-450u microSDHC 卡,所选的微控制器需要支持两种 microSDHC 总线协议之一:
- 映射到程序存储器的 SDHC 卡 SD 模式控制器外设(图 2)。此外设可以是外部外设,也可以是内部微控制器外设。接口由六个信号组成:四位数据 (DAT[0-3])、一个时钟 (CLK) 和一个双向指令/响应信号 (CMD)。数据一次传输四位,并提供最快的程序执行速度。主机控制器或微控制器为 microSDHC 卡提供时钟。
- 一个可配置 SPI 接口,支持芯片内执行 (XIP)。可通过在 SPI 模式下访问 microSDHC 卡来执行卡中的代码,提供快速数据传输,但传输速度不如 SDHC 卡模式。XIP 存储器将卡的存储器映射到微控制器的程序存储器空间,使得 microSDHC 卡访问对主机固件保持透明。
图 2:使用 SD 模式连接 microSDHC 卡时,使用一个简单的六信号接口,以提供最快的内存访问速度。(图片来源:DigiKey)
microSDHC 卡在 SD 卡模式下启动。要选择单位 SPI 模式,在开机后的前六个时钟,DAT3 信号必须上拉至 VDD,同时通过将 CMD 下拉至 VSS 发送 RESET(复位)命令 (000000b) 至卡。此后,卡将保持 SPI 模式,直至关机。
Maxim Integrated 的 MAX32652 Arm® Cortex®-M4F 微控制器是专为物联网节点设计的低功耗微控制器。它有一个片载 QSPI XIP 接口,如果配置正确,能够执行 microSDHC 卡的代码。
MAX32652 还有一个完整的 SDHC 接口,主要用于数据存储器存储。
需要注意的是,微控制器的这些接口必须是程序存储器接口。无论使用何种总线协议或接口,微控制器都需要包含一些片载闪存启动代码,以便初始化 microSDHC 卡的接口。
插座安全
用于工业应用 microSDHC 卡的插座经常被忽视。对于要求坚固耐用的应用,锡或类似触头材料会随着时间的推移而变色或失去其拉伸强度。金触点虽然价格稍贵,但是能提供稳固的触头连接,确保其拉伸强度不会随时间改变,因此物有所值。
Amphenol ICC 的 10101704J6#2A 通用闪存 (UFS) 和 microSDHC 连接器/插座可为任何 microSDHC 兼容卡提供稳固的连接(图 3)。该插座具有防磕碰触点,可防止存储卡在插拔过程中卡住。
图 3:10101704J6#2A UFS 和 microSDHC 卡连接器/插座支持现有的 microSDHC 和下一代 UFS 卡,数据传输速度高达 6 Gb/s。(图片来源:Amphenol)
此 Amphenol 插座兼容新的通用闪存 (UFS) 格式,因此还支持未来扩展,UFS 外形尺寸与 microSDHC 类似,但触点封装不同(图 4)。UFS 卡具有差分双向数据传输功能,支持两倍于 microSDHC 的传输速度。
图 4:左侧是 microSDHC 卡,右侧是新的 UFS 卡。UFS 卡具有差分双向数据传输功能,支持两倍于 microSDHC 的传输速度。(图片来源:DigiKey)
一些联网的物联网节点可能位于 Wi-Fi 不可用或不实用的远程位置。对于上述情况,可通过无线蜂窝数据连接来执行联网。这需要使用一张用户 SIM 卡,该 SIM 卡也需要插入。
节省电路板空间的一个简单方法是使用 microSDHC 和 SIM 卡插座组合,如 Molex 的 1041681620 双插座,同时支持 SIM 卡和 microSDHC 卡(图 5)。该插座还具有金触点,可在恶劣环境中实现稳固的连接,并采用防磕碰触点。
图 5:1041681620 组合 SIM 卡和 microSDHC 卡插座可显著减少板空间,提供防磕碰触点,防止插拔错误。(图片来源:Molex)
总结
虽然闪存 microSDHC 卡过去常用于数据存储,但目前正在寻求改进,以支持嵌入式操作系统在芯片内执行程序存储器的独特需求。此演进过程的一部分包括开发可支持持续读取请求的更快闪存。此外,微控制器正在演进,以支持可从外部 microSDHC 卡可靠执行代码的新存储器接口,同时减少或消除闪存错误。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。