登录/注册

flash存储器的在线编程与数据写入的过程是怎样的?

采用flash介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

更多

Flash存储器的在线编程和数据写入是一个涉及物理特性、电子操作和软件控制的精密过程,以下是详细步骤分解:


核心前提:独特的物理机制

Flash基于浮栅MOS晶体管(Floating Gate MOSFET)


在线编程与写入的完整流程

  1. 准备工作:解锁与通信

    • 通信接口:通过SPI、I²C、SDIO或并行总线连接主控器(如MCU)。
    • 解除保护:发送特定命令序列(如0xAA 0x55)解锁写保护位。
    • 状态寄存器检查:确认Flash空闲(BUSY=0)。
  2. 擦除操作(写入前的必经之路)

    • 原因:Flash只能将比特位从“1”翻转为“0”,而擦除可重置区块为全“1”。
    • 发送擦除命令
      Send_Command(ERASE_SECTOR); // 如0x20  
      Send_Address(Sector_Addr);  // 指定扇区地址  
      Send_Confirm(0x30);         // 确认命令  
    • 物理过程
      • 施加高压(~20V)到源极,浮栅电子被抽离(Fowler-Nordheim隧穿)。
      • 耗时较长:典型扇区擦除需50ms~2s。
    • 轮询等待:持续读取状态寄存器直到BUSY=0
  3. 数据写入(编程)过程

    • 写入单位
      • NOR Flash:可按字节/字写入,但需连续写多字节时效率低。
      • NAND Flash:必须以页(如4KB)为单位写入。
    • 发送写入命令
      Send_Command(PROGRAM);      // 如0x80  
      Send_Address(Page_Addr);    // 页起始地址  
      Send_Data(Buffer, 256);     // 发送数据缓冲区  
      Send_Confirm(0x10);          // 触发写入  
    • 物理过程
      • 控制栅加高压(~12V),电子注入浮栅(热电子注入或隧穿)。
      • 将目标位从“1”变为“0”(单次写入不可逆)。
    • 写入时间:页编程约200μs~1ms。
    • 自动校验:芯片内部比对数据与缓冲内容(ECC校验)。
  4. 验证与错误处理

    • 读取回数据:写入后立即读取对比原数据。
    • ECC纠错
      • NAND Flash每页生成ECC校验码,读取时修正位错误。
      • 超过纠错能力则标记坏块(Bad Block)。
    • 状态寄存器检查
      • PROGRAM_FAILERASE_FAIL位为1表示失败,需重试或换块。
  5. 后处理

    • 重新上锁:发送写保护命令防止意外修改。
    • 更新映射表(FTL层):
      • 在SSD/eMMC中,闪存转换层记录逻辑块到物理块的映射,避免频繁擦写。

关键挑战与应对方案

  1. 写前擦除限制

    • 写入放大(Write Amplification):小数据修改需搬移整个块,通过损耗均衡(Wear Leveling)算法优化。
  2. 可靠性问题

    • 擦写寿命:SLC约10万次,MLC/TLC仅数千次。
    • 数据保持:浮栅电荷泄漏导致比特翻转,需定期刷新(Read-Scrub)。
  3. 掉电保护

    • 写缓冲电容:企业级SSD用钽电容保证意外断电时完成写入。

与在线编程的关系


可视化流程图

graph TD
    A[开始] --> B[解锁写保护]
    B --> C{需擦除?}
    C -- 是 --> D[发送擦除命令]
    D --> E[高压擦除扇区]
    E --> F[等待擦除完成]
    F --> G[验证擦除状态]
    C -- 否 --> H[发送写入命令]
    G --> H
    H --> I[加载数据到页缓存]
    I --> J[高压编程]
    J --> K[内部ECC校验]
    K --> L{成功?}
    L -- 是 --> M[读取回读验证]
    L -- 否 --> N[标记坏块/重试]
    M --> O[重新上锁]
    O --> P[结束]

:实际流程因Flash类型(NOR/NAND)和控制器设计有所差异,但核心物理机制一致。现代闪存通过多平面操作(Interleaving)和缓存加速提升吞吐量。

PROM器件与其他存储器的区别

PROM(可编程只读存储器)是一种早期的非易失性存储器技术,它允许用户通过特定的编程过

2024-11-23 11:18:46

EEPROM与Flash存储器的区别

可编程只读存储器)和Flash存储器是两种常见的非易失性存储器,它们具有

2024-05-23 16:35:36

浅谈flash存储器的特点和优缺点

Flash存储器的写操作具有特殊性,它只能将数据位从1写成0,而不能从0写成1。因此,在对

2024-02-19 11:37:28

【转】PIC单片机的 程序存储器数据存储器,EEPROM区别

PIC的程序存储器是FLASH存储器,主要存储程序代码,掉电不丢失。

资料下载 张国厚 2021-11-16 13:06:01

AN-946: 通过LIN—协议6进行Flash/EE存储器编程

AN-946: 通过LIN—协议6进行Flash/EE存储器编程

资料下载 自我清欢 2021-03-18 22:57:20

Flash存储器在MCS-51系统中的应用

介绍了 Flash 存储器的特性和应用场合 ,在16 位地址总线中扩展大容量存储的一般方法。讨论了 MCS-51 系列单片机与

资料下载 姚小熊27 2021-03-18 09:50:04

Flash模块概要与编程要点以及构件设计

Flash存储器编程的基本操作 Flash

资料下载 o_dream 2020-11-11 16:52:15

如何进行单片机存储器的扩展详细技术说明

ROM的特点是把信息写入存储器以后,能长期保存,不会因电源断电而丢失信息。计算机在运行过程中,只能读出只读

资料下载 佚名 2019-08-29 17:03:38

stm32 flash数据怎么存储

,包括其结构、特点以及如何写入数据。 一、STM32 Flash的结构 STM32 F

2024-01-31 15:46:03

单板硬件设计:存储器( NAND FLASH)

停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 1.1 存储器ROM介绍 rom最初不能

2023-05-19 15:59:37

非易失性存储器Flash和EEPROM之间的差异与优缺点

和用于读取,写入和擦除数据的操作略有不同。而EEPROM指的是电可擦可编程只读存储器是一种

2023-04-07 16:42:42

请问怎样使用FLASH存储器去设计引导装载系统?

怎样去设计DSP自动引导装载系统的硬件?对FLASH存储器进行烧写有哪些步骤?怎样

2021-04-27 07:13:39

Flash存储器的故障特征

电压即可进行电可擦除和重复编程,成本低及密度大,因而广泛用于嵌入式系统中。与RAM 不同的是,Flash存储器除了具有一些典型的

2020-11-16 14:33:15

Flash存储器的使用寿命有什么办法延长吗?

嵌入式系统的海量存储器多采用Flash存储器实现扩展,由于Flash

2019-08-16 07:06:12

使用CPLD产品实现大容量FLASH存储器的接口设计

FLASH存储器(FLASH Memory)是非易失存储器,即使在供电电

2019-08-09 08:00:00

7天热门专题 换一换
相关标签