A5系列
ZC1 Cat.1,500MHz,AWorksLP
ARM9系列
M1106/M1107 双核,四核800MHz,1GHz HDMI
M7系列
M1052 528MHz,ZigBee,Mifare,WiFi,LoRa
M1062 528MHz,WiFi,双网口,三路CAN
A7系列
M6G2C 528MHz,双网口,8串口,双CAN
A6G2C系列无线IoT核心板 528MHz,ZigBee,Mifare,WiFi,蓝牙
M6Y2C 800MHz,8串口,双网口,大容量
A6Y2C系列无线IoT核心板  800MHZ,8串口,WiFi,蓝牙
M1126 瑞芯微四核,1.5GHz,GPU
A8系列
M335x-T 800MHz,6串口,双网口,双CAN
A3352系列无线IoT核心板 800MHz,WiFi,蓝牙,RFID
A9/A9+FPGA系列
M6708-T 双核/四核,800MHz/1GHz HDMI
M7015 双核Cortex®-A9 + FPGA,766MHz
A35系列
M1808  瑞芯微双核A35,1.6GHz,AI核心板,NPU
A53系列
M62XX 1.4GHz,3路CAN FD,2路千兆,9路串口
M65XX 1.1GHz,扩展18串口或6路千兆网口
M6442 1.0GHz,5路TSN千兆网口,支持EtherCAT,GPMC
A55系列
M3568 

瑞芯微四核A55,2GHz,NPU,GPU,
VPU,Android,ubuntu,debian,鸿蒙

MD9340/MD9350 

芯驰多核,1.6GHz,
2路千兆,4路CAN FD

Risc-V系列
MR6450/MR6750 15路串口,4路CAN FD,2路千兆
MIPS系列
MX2000 1.2GHz,快速启动,实时系统

十万次掉电测试是怎样炼成的?

少年,不得了了,出大事了!

“监测了一个月的数据,昨晚碰上意外断电,Flash盘里数据全没了!怎么办?”

“客户设备意外停电,来电后Flash盘里的程序都没了!怎么办?”

“系统掉电后,flash盘里目录全部变乱码了!怎么办?”

这些问题的罪魁祸首就是Flash文件系统不具备掉电保护特性。

数据安全日益重要,而文件系统却依然我行我素不管掉电过程中文件的死活,这怎么能忍!

致远不能忍!

不过光有一腔热血是远远不够的,解决问题还需进行全面细致的调研。Nand Flash在擦除和写入过程中发生掉电在实际应用中是极有可能发生的,那么在NandFlash擦除/写入时掉电会发生什么呢?为什么会造成如此恶劣的影响呢?下面我们来一一剖析。

以8位 SLC工艺的NandFlash写操作为例,掉电时写到怎样就是怎样。譬如写入0x01 0x02 0x03 0x04,写到0x03时断电,此时FLASH中有如下可能:

如果是MLC结构,同样写到0x3,那可能结果就是:

理想很美好,现实很骨感,写入0x03都能蹦出这么多种情况,实际应用中的突发掉电造成的结局就更千奇百怪了。那如果在文件系统中没有相应的预防措施会发生什么惨案呢?

WinCE内核中,文件系统版本主要包括 exFAT,FAT32,FAT16,这几个文件系统都不具备掉电保护功能。以FAT32文件系统为例,我们放慢镜头,仔细观察在Flash写操作过程中到底发生了什么。

图1 FAT32文件系统读取文件示意图

上图是FAT32文件系统读取文件示意图,簇是 FAT32 进行数据存储的最小单位,文件按照链式结构存储,FAT表项中存储了下一个簇号,文件系统根据FAT表项中存储的簇号获取下一个簇,直至文件读取完成。

现在我们向文件末尾添加一些数据,文件系统将会为文件分配新的簇,将FAT表项内容改写为新的簇号,将新添加的数据写入到下一簇号的数据区中,如此往复直至文件保存完成。

等等,说好的慢镜头呢? 我们是不是错过了什么?

镜头回到最开始,文件系统为文件分配新的簇,Flash对新分配的簇进行擦除操作,完成后写入新的数据内容。完成数据块的写入后,改写FAT表项内容为下一个簇号,如此往复直至文件全部保存完成。

那么问题来了,如果在写入数据块过程中发生断电,FAT表还没来得及更改,那是不是就意味着新修改的内容没有被保存?回答是肯定的,当然这也是最幸运情况之一了,因为并没有对原文件造成损坏,只是丢失了新添加的内容而已。

如果掉电恰好发生在操作FAT表、目录区呢,是不是有毛骨悚然的感觉?

WinCE默认的文件系统面对突发的掉电这么无助,难道我们只能袖手旁观?

不!

致远WinCE平台为了支持文件系统掉电保护功能,在文件系统中加入了TFAT特性,同时在驱动中添加掉电保护功能代码。为了验证TFAT特性和掉电保护功能代码的实用性,我们为WinCE平台量身打造了Flash掉电测试方案。

使用智能定时器控制被测设备电源,使用测试软件A监测文件系统状况,测试软件B进行数据拷贝操作,在拷贝过程中对设备随机断电,如此往复以模拟Flash写入时掉电,软件运行流程如下图所示。

图2 Flash掉电测试方案软件运行流程

宝剑锋从磨砺出,梅花香自苦寒来,经过一个月漫长的测试,测试次数约达10~12万次,若未出现失败信息则可为该平台发放Flash掉电测试通过许可证,自此仗剑走天涯!