资讯
HOME
资讯
正文内容
读写nand flash程序 物联网:关于Nand flash读写范围的问题
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

物联网:关于Nand flash读写范围的问题

物联网:Nand flash读写范围的问题

很多时候对nand的操作都是通过主控的nand控制器直接完成,或者更多时候是通过MTD标准操作接口完成读写擦的过程,然而有些细节问题有必要在这里讨论一下,我分为以下几点进行说明:

1、擦除过程 :擦除过程是将0变成1的过程,即充电的过程(比如SLC中,当低于某个电压值表示0,高于这个电压值则表示1;而对于MLC来说可以有多个阈值,所以可以保存更多bit)。擦除过程是按块进行的,但启始地址是页地址,不过擦除过程在内部是有边界对齐的,也就是说当擦除启始地址不是块对齐时,只能擦除本块,而不能垮越到第二个块继续擦除,也就是无论我们给的地址是否页对齐,本块都将擦除,不会有任何保留。

需要注意的是:块擦除时每一页的oob区也同时被擦除掉了,所以一般擦除前先读取块的第一页的两个字节看是否为0xff(512Byte页大小nand的坏块信息放在第6个字节中,ECC占用0、1、2、3、6、7字节;2k页大小的nand有24位ECC放在oob区的40-63字节处),不是的话就不要擦除,0xff表示正常,其它值表示错误,否则将会擦掉所有坏块信息,尤其是出厂时写入的。

2、写入过程 :写入过程就是将1变成0的过程,即,放电降压的过程,理论上在写之前一定要先擦除,但实际上只要之前的值为1,不用擦也可以写入(举个例子,比如某一存储单元存放的值为7,那么可以写入比7小的值,比如6,然而反过来则不行,即,未擦之前是不能将6改写成7的)。写入过程可以是任意地址,如果不满一页(开头、中间、结尾都可以任意写入),剩下没有写入的存储单元不会因为未写而变成1,而是保持之前的状态不变(因为只有擦除才会变成1)。写入过程在内部也是有边界对齐的,也就是说写入起始地址不是页对齐时,只能从当前字节写到本页结尾,而不能垮越到第二个页继续写,即使写入长度够长,也不能一次写入垮越两页。

3、读取过程 :读取过程只是通过解码电路将存储阵列中的电压信号变换成数字信号,并输出到nand的页缓冲器中,然后依次按一个或多个字节顺序读出的过程。读取过程在nand内部也是有边界对齐的,也就是读取起始地址不是页对齐时,只能从当前字节开始读到本页结尾,而不能垮越到第二页继续读取,即使读取长度够长,也不能一次垮越两页读取。

4、读写过程 :前面的读写过程中的页大小问题,假如:page=2048Byte,oob=64Byte,那么,理论上要读写oob时,需要给出大于2048的列地址,但实际上在读取前面的2048字节数据区时,如果在不重新下达命令并给出列地址的情况下而继续向后读写数据,是可以直接读写oob区的,除非是要单独对oob区进行操作。其实对于oob区来说,nand并没有做过多特殊处理,就是多出来的数据区而已,只是大家约定在这里可以存放一些校验和坏块信息等,如果不存放这些信息,那么oob就是普通数据区。

5、操作地址 :对一个1GByte的nand,可以用30位二进制来表示地址,即A0-A29,当我们希望读取某一个地址中的数据时,那么应该怎样给出这个地址呢,比如我要访问0x9000000这个地址开始的数据,那么这个地址又是否包含oob区域呢(实际上并不包含)。

首先对于nand操作本身来说就没有比页更小的单位(但是可以按字节读写),所以我们给出的地址其实是要进行地址分解的,分解为行地址(页偏移)和列地址(页内偏移),比如K9K8G08U0B(page=2048Byte)就从A11开始分,A0-A10为列址,A11-A29为行地址,那么oob怎么访问呢,

举个例子:

假如我们要访问的地址是2050,那么现在开始分解,首先将2050右移11位,即除以2048进行页对齐处理,其实就是将A0-A10作为列址,A11-A29作为行地址,分别放到两个变量中结果就是row=1,col=2,那么最后读写的数据到底是什么呢(如果包含oob区域,那读写的数据肯定是oob区的数据),实际上就是跳过第一页(跳过包括oob区域)到第二页中读写2这个地址的数据。

到这里我们应该清楚了,不管用户给出什么样的地址,这个地址偏移都是针对数据区域而不会包含oob区的,如果非要读取oob区,那么在分解地址的时候,可以将列地址加上2047(col=col+2047),否则读写的就只是数据区(如果读完数据区继续向后读写的话也可以读写到oob区,因为系统会自动累加列地址)。

以上信息只是在s5pv210作为主控,操作K9K8G08U0B得出的结论,不同主控和nand型号可能会略有不同。

NAND和NOR Flash 完全学习笔记(基础篇)

本文要点:1. NAND FLASH与NOR FLASH 的技术对比;2. 最详细的存储单元对比详解;3. NAND FLASH与NOR FLASH 的最新市场份额及应用;4. NAND FLASH与NOR FLASH 的基础原理分析。

目前,NOR FLASH和NAND FLASH是市场上主要的非易失性闪存技术,但是据我了解,还是有很多工程师分不清NAND FLASH与NOR FLASH。首先,来一个直观的图片。

然后,我从权威的网站上找到了最新的NAND FLASH收益以及市场份额表,根据最新的表单,我们可以知道谁是这个市场的老大,做的比较好一些,一方面让工程师时刻知道市场的动向,另一方面可以在之后的器件选型等方面提供重要的参考。

一般来说,快闪记忆体可分为两大规格,一个是NAND, 一个是NOR。简单来说,NAND一般以存储数据为主,晶片容量大,容量可以达到2Gb甚至更大,NAND的读取是以一次读取一块的形式来进行的,通常一次读取512个字节,采用这种技术的Flash比较廉价;NOR一般以存储程序代码为主,又称为Code Flash,所以可让微处理器直接读取,但晶片容量较低,主流容量512Mb,NOR采用内存的随机读取技术。如果利用闪存只是用来存储少量的代码,这是NOR Flash更合适一些。用户不能直接运行NAND Flash上的代码,因此很多使用NAND Flash的Demo Board除了使用NAND Flash以外,还加上一块小的NOR Flash来运行启动代码。通过下表我比较了几乎所有关于NAND FLASH以及NOR FLASH的全部重要特性。

然后,对于Flash三个重要概念的理解:

1. Flash属于非易失性存储设备,内部存储单元是MOSFET,里面有一个悬浮门(Floating Gate), 是存储数据的单元。与此对应的,易失性存储设备就是断电后,数据就丢失了,例如常用的内存,不论是之前的SDRAM,还是现在通用的DDR3以及DDR4,都是断电后,数据就没有了。

2. SLC和MLC的区别:NAND FLASH的内存单元可以分为两类,存储一位数据,也就是SLC(Single Level Cell); 对应的,存储多位数据的就是MLC(Multi Level Cell),比如两位,或者四位。

3. 大多数的写入操作需要先进行擦除操作。

到此,对于NAND FLASH以及NOR FLASH 我们有了一个基本的认识。我对知识的学习一个重要的方法是对比,通过图表的对比更能看出各自的差异化,从而达到加深知识的效果,因此我做了下图来比较目前还算所有存储器的最小单元结构图,便于学习与理解。

原理分析 要说明此原理,需要一些基本的量子物理学,我认为以下这种论述是比较适合理解的,也很有趣:经典物理学认为,物体越过势垒,有一定的阈值能量;所以,粒子能量小于此阈值能量的不能越过,能量大于此阈值能量的可以越过。举例来说,我们骑自行车过坡道,如果先用力骑,因此有一定初入能量,坡道不高的话,即使不蹬自行车也可以依靠惯性过去;但是,如果坡道很高,不蹬自行车,可能车到了一半,可能就退回来了。而量子力学则认为,即便是粒子能量小于阈值能量,同时很多粒子冲向势垒,虽然也有一部分粒子会反弹,但是还会有一些粒子可以越过去,好像有一个隧道,因此称为量子隧道。

对比二者的差异发现,宏观上的确定性在微观上常常就具有不确定性。因为隧穿几率极小,因此通常情况下,隧道效应并不影响经典的宏观效应,但是某些特殊条件下也会出现。当微电子器件进一步微型化是必须要考虑量子效应。NAND FLASH的擦写均是基于隧道效应,电流穿过浮置栅极与硅基层之间的绝缘层,对浮置栅极进行充电(写数据)或放电(擦除数据);另外,NOR FLASH擦除数据也是基于隧道效应(电流从浮置栅极到硅基层),但在写入数据时则是采用热电子注入方式(电流从浮置栅极到源极)。对于FLASH闪存单元来说,它是为三端器件,与场效应管有相同的名称:源极、漏极和栅极。栅极与硅衬底之间有二氧化硅绝缘层,用来保护浮置栅极中的电荷不会泄漏。采用这种结构,使得存储单元具有了电荷保持能力。举个栗子,就像是装进瓶子里的水,当你倒入水后,水位就一直保持在那里,除非你再次倒入或倒出,所以闪存具有记忆能力。

绝缘浮置栅极是NAND存储数据的核心

相关问答

嵌入式 Flash读写 操作该如何进行设计?

Flash存储芯片的通讯方式以SPI居多,在实现flash读写时就是要实现SPI的通讯协议,与EEPROM不同的是,SPI在操作时是按照PAGE页进行整页擦除写入的,这一点需要注...

uboot是怎样从 nand 加载linux?

一般是开发过程中是先把uboot载到nor中,然后通过nor中的uboot再把uboot跟linux内核,根文件系统下到nandflash,它的最终位置应该是在nandflash。至于nor跟nan...

emmc与 nand flash 哪个好?

1、NANDFlash是一种存储介质,要在上面读写数据,外部要加主控和电路设计。2、eMMC是NANDflash+主控IC,对外的接口协议与SD、TF卡类似;对厂家而言简化了电...

平板电脑怎样可以把默认储存 nandflash 改为外置储存?

首先,升级ipados13,然后再空间里把应用都重新装一遍,可以节约15%左右的app自身空间(ios/ipados13自带的功能),然后你就可以用外置u盘了,这个时候看看万...

NorFlash与 NandFlash 的区别?

NorFlash和NandFlash是两种不同的闪存存储器,它们的主要区别在于其存储方式和应用场景。1.存储方式:NorFlash采用的是随机访问存储(RAM)方式,也就是说可以...

你好U盘因强制拔出后电脑无法识别变成了驱动器 NAND Flash USB device怎么办呀?

按如下步骤,一步步排除故障。1、在确保没问题的USB接口上,插上U盘,听一下音箱有没有叮咚一声的响声。如果什么声音也没有,说明电脑完全没有识别到有USB设备...

内核kernel以及根文件系统rootfs是如何映射到对应的 nandflash 的?

需要修改Linux内核源码中的一个控制logbuffersize的宏:CONFIG_LOG_BUF_SHIFT,buffersize是2^shift,加大这个就可以。一、配置$...

固态硬盘和普通硬盘的区别?

固态硬盘是主控读写nandflash,机械硬盘是磁头读取转动的磁碟,而且,读写方式也有区别,固态硬盘是按位读写(这也是为什么有些型号会有240GB的写入速度没有480G...3...

NAND 与ROM有什么不同-ZOL问答

我的PPC有8G的NAND但是ROM只有128MB,我想问在WM系统中NADN和ROM的使用功能一样...它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储...

NandFlash 烧录时坏块是如何处理的?

WinCE或Linux系统通常存储于NandFlash中,而NandFlash频繁擦写易出现坏块,坏块影响系统正常工作,严重时会导致系统无法启动。M3352核心板、M283核心板、M287核...

 李承铉妹妹  联通4g助手 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部