Flash存储器的故障特征

本文探讨了Flash存储器特有的故障类型,如GPD、GED等,并重点介绍了March算法(如MatchA)在检测和修复这些故障中的应用,包括其复杂度和覆盖的故障类型。适合嵌入式系统中Flash的故障检测与预防。
AI助手已提取文章相关产品:

Flash存储器是一种基于浮栅技术的非挥发性半导体存储器,一般有NOR、NAND、 DINOR和AND 等几种类型。作为一类非易失性存储器 ,Flash存储器具有自己独特的优点:不需要特殊的外部高电压即可进行电可擦除和重复编程,成本低及密度大,因而广泛用于嵌入式系统中。

与RAM不同的是,Flash存储器除了具有一些典型的存储器故障类型外,还会出现一些其它的故障类型,例如 NOR类型的Flash还会出现以下主要故障类型:

(1) 栅极编程干扰 (GPD)和栅极擦除干扰(GED),对一个存储单元的编程操作引起同一字线上的另外单元发生错误的编程或擦除操作。

(2)漏极编程干扰和漏极擦除干扰:对一个存储单元的编程操作引起同一位线上的另外单元发生错误的编程或擦除操作。

(3)读干扰:对一个存储单元的读操作引起对该单元的错误编程。

(4) 过度擦除(OE):对存储单元的过度擦除将会导致对该存储单元的下一次编程不起作用,从而无法得到正确的操作结果。

上面几种类型的干扰故障一般发生在Flash 存储器同一行或者同一列的单元之间,利用内存Flash故障的理论模型6,可以选择应用适合Flash存储器测试的March算法,并且可以对这些算法进行对比与评估7,例如一种Match A算法可表示为:
在这里插入图片描述
这种March A 测试算法能够覆盖SAF (Stuck-At Faults),DPD,DED,RD,OE和几乎所有的 GPD,GED 故障。其算法复杂度可以表示为11xP+4xR ,其中P和R分别表示一次编程和读取操作,N表示存储器的存储容量(字数)。

您可能感兴趣的与本文相关内容

### STM32 Flash存储器使用教程及常见问题 #### 1. Flash存储器简介 Flash存储器是一种非易失性存储器,在STM32微控制器中用于存储程序代码和常量数据。它的主要特点是即使断电也能保存数据[^3]。 #### 2. NOR FLASHNAND FLASH 的区别 根据存储单元电路的不同,Flash存储器可以分为NOR FLASHNAND FLASH两种类型。在一些小型开发板上,通常会采用NOR FLASH来存储程序[^1]。 #### 3. STM32内部Flash配置 STM32系列微控制器内置一定容量的Flash存储器,具体大小取决于具体的型号,最大可达2MB。该Flash存储器主要用于存放用户编的固件程序以及静态的数据表等信息[^2]。 #### 4. 编程接口与操作方法 为了实现对Flash的操作,开发者可以通过HAL库或者LL(Low Layer)库调用相应的API函数完成入、擦除等功能。下面是一个简单的例子展示如何向指定地址入一段数据: ```c #include "stm32f1xx_hal.h" void Flash_Write(uint32_t Address, uint32_t Data){ HAL_StatusTypeDef status; /* Unlock the Flash to enable the flash control register access */ HAL_FLASH_Unlock(); /* Clear all pending flags (if any) before proceeding with new operation */ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR| FLASH_FLAG_PGSERR); /* Perform Page Erase if necessary prior writing data into target location*/ if(HAL_OK != HAL_FLASHEx_Erase(&Address)){ // Handle error here... } /* Program word at given address*/ status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, Data); /* Lock the Flash to disable further modifications until next unlock command issued.*/ HAL_FLASH_Lock(); } ``` 上述代码片段展示了通过ST官方提供的硬件抽象层(HAL Library)执行单次编程的过程。 #### 5. 常见错误及其解决方案 - **Erase Error**: 如果尝试在一个未被清除的位置进行入,则会产生此类型的异常情况。确保总是先擦掉目标页面再继续下一步骤。 - **Programming Alignment Faults**: 当试图将不匹配宽度的数据放入特定区域时会发生此类故障。务必遵循所选模式下的正确格式要求。 - **Power Supply Issues During Write Operations**: 不稳定的电源可能会干扰正常的flash更新流程,建议在整个过程中维持稳定电压供给。 #### 6. 性能优化技巧 对于频繁修改的小块数据考虑利用SRAM作为缓冲区后再批量提交至永久储存空间从而减少单独访问次数提高效率并延长使用寿命。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值