NOR Flash的三种基本操作擦(erase),写(write),更新(update)实现方式

//分享一下芯片底层Flash操作,因为工作相关,主要接触三星的芯片居多。

很多芯片应用都是由芯片厂商提供API来辅助开发,API是个黑盒,知道输入条件和结果。

降低了客户开发的难度,但是API需要导入LIB才能使用,占用空间啊。其实根据芯片的usermanual完全可以自己实现。

一.擦(erase)


    Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的Page擦除,而擦除的过程就是把所有位都写为 1 的过程。是寄存器控制的。都是0xFFFFFFFF才能被写入

1.擦除的单位是page,一个page可能是256B也可能是512B。

2.擦除的地址需要提前进行页对齐。

实现目标 擦除一个page的数据
流程:

(1)设置寄存器为page擦除状态
(2)加载一个无效数据dummy,任意值到目标区域上
(3)激活寄存器高电平状态
(4)加一个while死循环,等待高电平状态消失,高电平状态消失说明擦写完成
(5)使能寄存器的鉴别模式
(6)读出所有数据和0xFFFFFFFF比较
(7)数据相符,关闭寄存器verify模式,返回success。失败重复上面所有步骤
(8)失败次数达到门限值,关闭寄存器verify模式,返回fail


Note:在高电平操作之后,硬件已经记住了目标的擦除page,所以只会是目标page是表现出verify模式

二.写(write)

需要注意:

1.以word为写入单位
2.写前需要提前擦除。写入前,必须是0xFFFFFFFF。

实现目标写一个buffer的数据(需要注意操作的时候要按照具体芯片文档说明来操作,比如关闭一些时钟和中断)

流程:
(1)设置底层寄存器为写状态
(2)加载一个word的数据到buffer上
(3)通过设置寄存器设置为高电平状态
(4)等待高电平状态消失,判定为写结束
(5)数据比对,比对成功则写成功

(6)重复前面的步骤进行第二个一直到第n个word的写操作

三.更新(update)

Update!=Write

 Write是目标区域是空白,然后写入数据;Update是在目标区域已经存在数据的情况下,把目标区域的数据给覆盖更新成新数据

这样一说是不是很清晰了呢?

    按照已知的特点,flash是无法一次擦除,多次写入的。要想写入数据必须重新对目标区域进行擦除。而擦除一擦除就是一整个page,因此需要对数据进行备份到ram中,再擦除,再写入。把flash的擦和写结合一下就是upade了。


实现目标update,nword

流程:

(1)目标地址dst,Upade数据来源地址src,长度n个word,计算目标地址和page起始地址的偏移长度offset
(2)复制备份数据到ram中
(3)在ram中把数据update掉
(4)擦除page
(5)把ram buffer中的数据到目标区域,整个page都重新写入




  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NorFlash过程是将对应的Page擦除,即将所有位都为1的过程,这是Flash的编程原理决定的。在NorFlash中,CPU读取地址0和1对应的字节时,Flash会返回第一个字,即地址为0的字节。而NorFlash没有本地坏区管理,因此一旦存储区块发生毁损,软件或驱动程序必须处理这个问题,否则可能会导致设备出现异常。在解锁、抹除或入NorFlash区块时,会先入已擦除的记忆区的第一页(Page),然后NorFlash芯片会提供可用的指令清单给实体驱动程序,这些指令是由一般性闪存接口(CFI)所定义的。与用于随机存取的ROM不同,NorFlash也可以用于存储设备,但相比NAND Flash,NorFlash入速度一般会慢很多。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [NOR Flash三种基本操作erase),write),更新update实现方式](https://blog.csdn.net/bkyy123/article/details/80167344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [NOR Flash和原理分析 (一)](https://blog.csdn.net/u012351051/article/details/81032913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值