痞子衡嵌入式:并行NOR接口标准(CFI-JESD68)及SLC Parallel NOR简介

2023-10-19 01:30

本文主要是介绍痞子衡嵌入式:并行NOR接口标准(CFI-JESD68)及SLC Parallel NOR简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是CFI标准及SLC Parallel NOR

  NOR Flash是嵌入式世界里最常见的存储器,常常内嵌在微控制器里(Parallel型)或外置作为内存扩展(Serial型),作为代码存储器。对于嵌入式开发而言,NOR主要分为两大类:Serial NOR、Parallel NOR,最早出现的NOR是Parallel NOR,后来为了简化引脚数,逐渐发展出了Serial NOR,目前的格局是Serial NOR主要占据低容量NOR市场(128Mb以下),而Parallel NOR主要占据高容量NOR市场(128Mb以上),生产Parallel NOR的厂商有很多,但无论是哪个厂商的Parallel NOR基本上都兼容CFI接口标准,这给软件驱动开发带来了便利。

一、CFI-JESD68标准由来

  关于NOR Flash发展史,我们知道早在1988年Intel便发表了NOR Flash结构,从此改变了由EPROM/EEPROM一统天下的局面。早期的NOR产品主要是Parallel NOR,作为半导体行业领导大厂,为了使NOR产品发展标准化,Intel于1996年制定了CFI 1.0标准(1.0版本属于draft版本,正式版本是1997年发布的1.1),CFI标准的存在是为了让Host能够从NOR Flash device中直接获取制造商ID、设备ID、Flash大小以及各种物理特性,从而使得NOR Flash产品在前后兼容性上表现更好,软件驱动设计也更加标准化。
  鉴于CFI已慢慢发展成为NOR Flash事实上的接口标准,JEDEC组织于1999年9月正式将CFI标准命名为JESD68,下表是CFI-JESD68标准制定的时间关系:

时间NOR标准制定者
1996.07CFI 1.0Intel
1997.05CFI 1.1Intel
1999.09JESD68JEDEC
2001.12CFI 2.0AMD
2003.09JESD68.01JEDEC

Note: CFI-JESD68标准原则上是为Parallel NOR制定的,但是部分Serial NOR也支持这一标准。

二、SLC Parallel NOR原理

2.1 Parallel NOR分类

  从软件驱动开发角度而言,Parallel NOR可以从以下几个方面进一步细分:

单元层数(bit/cell):SLC(1bit/cell) / MLC(2bit/cell)
地址模式: ADP / ADM / AADM
数据线宽度:x8 / x16
信号线模式:Asynchronous / Synchronous
数据采集模式:SDR / DDR
接口标准:CFI

  本文的主要研究对象是兼容CFI 2.0 (JESD68.01)标准的Asynchronous SDR SLC Parallel NOR Flash。

2.2 Parallel NOR内存模型

  NOR内存单元从大到小一般分为如下5层:Device、Block、Sector、Page、Byte,其中Byte、Page和Sector是必有的,因为Byte是读取的最小单元(即可以任意地址随机访问),Page是编程的最小单元,Sector是擦除的最小单元,而Block则不是必有的(如没有,可认为Block=1)。

Note: 关于Block有一点需要特别说明,即NOR的RWW(Read While Write)特性,我们知道NOR是可以存储代码直接原地执行XIP的,如果在某个Block里执行代码(即CPU从NOR中读取指令数据)的同时去擦除或编程这块Block会发生什么情况呢?有些NOR是支持这种RWW操作的,但也有的NOR不支持RWW(此时会产生hardfault/lockup),Block的存在是为了规避RWW问题,RWW问题的作用范围是Block,如果某Block中执行代码擦除/编程的是另一块Block,则完全不用担忧RWW问题。

2.3 Parallel NOR信号与封装

  CFI手册里并没有明确规定Parallel NOR信号线与封装,但业界有默认的标准,从信号线角度来说NOR和SRAM基本是一样的,如下是典型的Parallel NOR内部结构图,除了内存单元外,还有三大组成,分别是控制单元、地址译码单元和输出缓冲单元,信号线主要挂在这三大组成上,关于各信号线具体作用,请查阅相关文档。

cfi_block_diagram.PNG

  NOR芯片根据Flash size大小不同封装也不尽相同,以经典的128Mb容量的ADP NOR芯片为例,其封装一般有三种TSOP-56, TFBGA-56, LFBGA-64,下图是TSOP-56封装信号分布:

cfi_tsop56.PNG

2.4 Parallel NOR接口命令

  CFI手册里也没有明确规定Parallel NOR接口命令,同样地业界还是有默认的标准,如下是从Micron MT28EW系列手册里截取的部分基本命令,包括Reset、Read、Read CFI、Program(Word program)、Buffer Program、Block(Sector) Erase,涵盖读写擦最基本的三种操作,这些基本命令在主流厂商的NOR产品里都被支持。此外,NOR还支持更多高级命令(Blank Check、security/protect相关,lower power相关等),那些命令因Device而异,不是本文讨论重点。

cfi_cmd_set.PNG
cfi_cmd_set2.PNG
cfi_cmd_set3.PNG
cfi_cmd_set4.PNG
cfi_cmd_set5.PNG
cfi_cmd_set6.PNG
cfi_cmd_set7.PNG
cfi_cmd_set8.PNG
cfi_cmd_set9.PNG

  除了读写擦这三个最基本命令外,还有一个Data Polling机制也非常常用,这个机制用于获取命令(主要是Program/Erase)执行状态与结果,当Program/Erase命令发给NOR device之后,NOR device是通过DQ[7:0]引脚来返回命令执行状态的,各bit意义如下图所示,简单来说DQ3(Erase timer bit)表明操作的开始,DQ5(Error bit)表明操作过程中是否发生硬件错误,DQ6(Toggle bit)表明操作是否结束。

cfi_data_polling_register_bit.PNG
cfi_data_polling_register_bit2.PNG

  下图为Toggle bit检测的流程图,这个检测流程是最常用的,主要用于确认Program/Erase操作是否成功地执行了。

cfi_toggle_bit_flowchart.PNG

  此外,还有一个必有命令不得不提,这个命令是Read CFI,用于获取芯片内部存储的出厂信息(包括内存结构、特性、其他行为参数等),这个query table最多由五部分组成,其结构已由CFI规定如下表,痞子衡已经圈出了一些重要信息,在设计NOR软件驱动时,可以通过获取这个query table来做到代码通用。

cfi_query_table.PNG
cfi_query_table2.PNG
cfi_query_table3.PNG
cfi_query_table4.PNG

2.5 Parallel NOR数据速率

  数据存取速率是个重要的技术指标,对于这个指标,CFI手册里并没有定义,所以需要根据NOR Flash手册里的AC characteristics表来确定。以异步模式Read命令为例讲解(以Micron生产的型号为MT28EW128ABA为例),下面是Read的两种模式Random Read和Page Read完整时序简图:

cfi_random_read_ac_timing_x16.PNG
cfi_page_read_ac_timing_x16.PNG

  从上述时序图,我们可以知道Page Read平均数据率肯定是比Random Read要高的,那么这两种数据率分别能达到多少呢?可继续参看如下时序参数表,tRC最小为70ns,那么Random Read数据率最大为2Bytes/70ns = 228.571Mbps,而tPAGE最大为20ns,那么Page Read的数据率最小为2Bytes / 20ns = 800Mbps。(注:均以x16 Device为例)
cfi_read_ac_characteristics.PNG

  如果想快捷地了解NOR Flash的性能,最简单的就是打开NOR Flash手册,看首页的feature介绍,如下是MT28EW128ABA的简要feature:

• Single-level cell (SLC) process technology
• Density: 128Mb
• Supply voltage– VCC = 2.7–3.6V (program, erase, read)– VCCQ = 1.65 - VCC (I/O buffers)
• Asynchronous random/page read– Page size: 16 words or 32 bytes– Page access: 20ns– Random access: 70ns (VCC = VCCQ = 2.7-3.6V)– Random access: 75ns (VCCQ = 1.65-VCC)
• Buffer program (512-word program buffer)– 2.0 MB/s (TYP) when using full buffer program– 2.5 MB/s (TYP) when using accelerated buffer program (VHH)
• Word/Byte program: 25us per word (TYP)
• Block erase (128KB): 0.2s (TYP)
• Memory organization– Uniform blocks: 128KB or 64KW each– x8/x16 data bus
• CFI (Common Flash Interface) support

三、SLC Parallel NOR产品

  最后痞子衡收集了可以售卖SLC Parallel NOR芯片的厂商及产品系列:

厂商芯片系列官方网址
MicronMT28EW, MT28FWhttps://www.micron.com
parallel-nor-part-catalog
MacronixMX68GL
MX29LA, MX29GL, MX29GA, MX29LV
MX29VS, MX29NS, MX29SL, MX29F
http://www.macronix.com
parallel-nor-part-catalog
WinbondW29GLhttp://www.winbond.com.tw
parallel-nor-part-catalog
SpansionS29GL, S29AL, S29AS, S29PLhttp://www.cypress.com/
parallel-nor-part-catalog
ISSIIS29GLwww.issi.com
parallel-nor-part-catalog
MicrochipSST38VF, SST39VFhttps://www.microchip.com
parallel-nor-part-catalog

  至此,CFI标准及SLC Parallel NOR痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页、CSDN主页、微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

pzhMcu_qrcode_258x258.jpg

这篇关于痞子衡嵌入式:并行NOR接口标准(CFI-JESD68)及SLC Parallel NOR简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236387

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供