Flash基础入门之FLASH的知识
小标 2018-05-29 来源 : 阅读 2509 评论 0

摘要:本文主要向大家介绍了Flash基础入门的FLASH的知识,通过具体的说明,向大家展示,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门的FLASH的知识,通过具体的说明,向大家展示,希望对大家学习Flash基础入门有所帮助。

传统的FLASH分为Nor falsh和Nand flash。

(1)Nor flash

     Nor flash存储以块为单元,写入时必须先擦除,并且擦除和写入的速度都很慢。但nor fash具有SRAM接口,有单独的地址总线和地址总线,接口简单,就像是访问ROM一样,读取速度快,能随机访问存储单元。正是这些特性,所以nor falsh被广泛用来存储启动代码。Nor falsh的价格较贵,市面上一般1~16M的小容量的FLASH居多。

    例如SST39VF6401B(支持JEDEC标准),它的大小是8MB,共128个块,块大小是64KB,具有SRAM接口:

 Flash基础入门之FLASH的知识

    读写速度:读70~90ns,擦除块典型值是18ms。

    在mtd源代码中,nor falsh的驱动代码在drivers\mtd\maps目录下。

 

     目前,Nor flash有两种标准JEDEC和CFI。

     JEDEC:全称是Joint Electron Device Engineering Council 即电子元件工业联合会。JEDEC是由生产厂商们制定的国际性协议,主要为内存制定。JEDEC用来帮助程序读取Flash的制造商ID和设备ID,以确定Flash的大小和算法,如果芯片不支持CFI,就需使用JEDEC了。工业标准的内存通常指的是符合JEDEC标准的一组内存。

    CFI:即公共闪存接口(Common Flash Interface)。CFI是一个公开的标准的从Flash Memory器件中读取数据的接口。它可以使系统软件查询已安装的Flash Memory器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等。CFI标准的应用解决了各个FLASH厂商操作命令集和电气参数千差万别的难题,目前市面上的Nor flash大多支持CFI校准。

     CFI标准规定先往FLASH数据总线写入55H,再写入98H,然后从地址10H处读取3个数据,如果这3个数据是'Q'、'R'、'Y',那么遵循CFI标准。在其它地址,保存了FLASH的其它信息,如生产厂商ID,设备ID,FLASH总线宽度,BLOCK总数据,BLOCK大小等所有FLASH有关的信息。cfi.h中的cfi_ident即是查询的数据结构:

[cpp] view plain copy
1. /* Basic Query Structure */  
2. struct cfi_ident {  
3.     uint8_t  qry[3];//’Q‘,'R','Y'  
4.     uint16_t P_ID;  
5.     uint16_t P_ADR;  
6.     uint16_t A_ID;  
7.     uint16_t A_ADR;  
8.     uint8_t  VccMin;  
9.     uint8_t  VccMax;  
10.     uint8_t  VppMin;  
11.     uint8_t  VppMax;  
12.     uint8_t  WordWriteTimeoutTyp;  
13.     uint8_t  BufWriteTimeoutTyp;  
14.     uint8_t  BlockEraseTimeoutTyp;  
15.     uint8_t  ChipEraseTimeoutTyp;  
16.     uint8_t  WordWriteTimeoutMax;  
17.     uint8_t  BufWriteTimeoutMax;  
18.     uint8_t  BlockEraseTimeoutMax;  
19.     uint8_t  ChipEraseTimeoutMax;  
20.     uint8_t  DevSize;  
21.     uint16_t InterfaceDesc;  
22.     uint16_t MaxBufWriteSize;  
23.     uint8_t  NumEraseRegions;  
24.     uint32_t EraseRegionInfo[0]; /* Not host ordered */  
25. } __attribute__((packed));

 

    

(2)Nand flash

    和Norflash一样,Nand flash存储以块为单元,写入时必须先擦除。nand flash擦除和写要比nor flash快,但读取速度比它慢。Nand flash采用复杂的IO口来串行地访问数据,读和写的最小单元都是一个页,所以CPU不能像nor flash一样直接运行FLASH上的代码。Nor falsh的优势是价格便宜,市面上一般以大容量为主,容量大小一般为8M~几个GB。Nand flash一般用来存储数据,如用来做文件系统存储空间。

    Nand falsh的一个页的数据分为数据区域和额外数据区(称为OOB),例如一个页包含2KB的数据区和64B的OOB。OOB数据区一般用来存储特定的数据,如数据校验、坏块标识等。

    Nand flash在擦写的过程中可能形成坏块,如果检测到坏块,一般在OOB数据区标识它。而实际上,Nand flash从工厂生产出来就可能存在坏块,有关坏块标识的细节可以相应的FLASH手册上找到说明。

    举例:三星的K9K8G08U0B

 Flash基础入门之FLASH的知识

它的大小是1GB,共8192个块,块大小是2KB,OOB大小是64B。它的接口是8位的串行数据:

 Flash基础入门之FLASH的知识

数据读取一个页的时间是25us。擦除一个块的时间典型值是1.5ms。

    在mtd源代码中,nor falsh的驱动代码在drivers\mtd\nand目录下。

 

OneNand Flash

    随着过去几十年的Nand技术的发展,一些公司,基于原先的NAND的架构,设计出一种理想的单存储芯片,其集成了SRAM的缓存和逻辑接口,它就是OneNand Flash。OneNand既实现NOR Flash的高速读取速度,又保留了Nand Flash的大容量数据存储的优点。由于笔者在实际项目中还没有用到一款onenand,所以不做举例,读者可以到GOOGLE搜索到onenand的信息。

    在mtd源代码中,nor falsh的驱动代码在drivers\mtd\onenand目录下。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程