第13章 Flash存储器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第13章Flash存储器
Flash存储器具有电可擦除、无需后备电源来保护数据、可在线编程、存储密度高、低功耗、成本较低等特点,这使得Flash存储器在嵌入式系统中的使用迅速增长。
本章主要以HC08系列中的GP32为例阐述Flash存储器的在线编程方法,也简要阐述了HCS08系列中GB60的在线编程方法。本章首先概述了Flash存储器的基本特点,并介绍其编程模式,随后给出M68HC908GP32的Flash存储器编程的基本操作及汇编语言和C语言的在线编程实例。最后讨论MC9S08GB60的Flash存储器编程方法。
Flash存储器编程方法有写入器模式与在线模式两种,本章讨论的是在线模式。有的芯片内部ROM中,包含了Flash擦除与写入子程序,在本章的进一步讨论中给出了调用方法,使Flash编程相对方便。有的芯片内部ROM中没有固化Flash擦除与写入子程序,只能自己编写Flash擦除与写入子程序。而编写Flash擦除与写入子程序需要较严格的规范,所以这是比较细致的工作,读者应仔细分析本章的例程,并参照例程编程。掌握了GP32芯片的Flash编程方法后,可以把此方法应用于整个系列的Flash编程。Flash在线编程对初学者有一定难度,希望通过实例分析学习。本章给出Flash在线编程的C语言实例,对于训练C语言与汇编联合编程技巧很有帮助。
13.1 Flash存储器概述与编程模式
理想的存储器应该具备存取速度快、不易失、存储密度高(单位体积存储容量大)、价格低等特点,但一般的存储器只具有这些特点中的一个或几个。近几年Flash存储器(有的译为:闪速存储器或快擦型存储器)技术趋于成熟,它结合了OTP存储器的成本
优势和EEPROM的可再编程性能,是目前比较理想的存储器。Flash存储器具有电可擦除、无需后备电源来保护数据、可在线编程、存储密度高、低功耗、成本较低等特点。这些特点使得Flash存储器在嵌入式系统中获得广泛使用。从软件角度来看,Flash和EEPROM技术十分相似,主要的差别是Flash存储器一次只能擦除一个扇区,而不是EEPROM存储器的1个字节1个字节地擦除,典型的扇区大小是128B~16KB。尽管如此,因为Flash存储器的总体性价比,它还是比EEPROM更加流行,并且迅速取代了很多ROM器件。
嵌入式系统中使用Flash存储器有两种形式:一种是嵌入式处理器上集成了Flash,另一种是片外扩展Flash。
目前,许多MCU内部都集成了Flash存储器。Freescale公司在Flash存储器技术相当成熟的时候,在HC08系列单片机内集成了Flash存储器。该系列内部的Flash存储器不但可用编程器对其编程,而且可以由内部程序在线写入(编程),给嵌入式系统设计与编程提供了方便。存储器是MCU的重要组成部分,存储器技术的发展对MCU的发展起到了极大的推动作用。对于Freescale公司新推出的HCS08系列MCU采用第三代0.25微米的闪存技术,其擦写速度更快,性能更稳定。
本节首先简要概述Flash存储器普遍具有的基本特点、Flash存储器的两种编程模式,然后介绍Freescale的HC08系列单片机内的Flash存储器的主要特点,最后对M68HC908GP32单片机的Flash存储器在两种编程模式下的基本情况作简要介绍。
13.1.1 Flash存储器的基本特点与编程模式
(1) Flash存储器的基本特点
Flash存储器是一种高密度、真正不挥发的高性能读写存储器,兼有功耗低、可靠性高等优点。与传统的固态存储器相比,Flash存储器的主要特点如下。
①固有不挥发性:这一特点与磁存储器相似,Flash存储器不需要后备电源来保持数据。所以,它具有磁存储器无需电能保持数据的优点。
②易更新性:Flash存储器具有电可擦除特点。相对于EPROM(电可编程只读存储器)的紫外线擦除工艺,Flash存储器的电擦除功能为开发者节省了时间,也为最终用户更新存储器内容提供了可能。
③成本低、密度高、可靠性好:与EEPROM(电可擦除可编程的只读存储器)相比较,Flash存储器的成本更低、密度更高、可靠性更好。
(2) Flash存储器的两种编程模式
从Flash存储器的基本特点可以看出,在单片机中,可以利用Flash存储器固化程序,一般情况下通过编程器来完成,Flash存储器工作于这种情况,叫监控模式(Monitor Mode)或写入器模式,这与一般的EPROM、OTP、EEPROM装入程序的含义相似。另一方面,由于Flash存储器具有电可擦除功能,因此,在程序运行过程中,有可能对Flash 存储区的数据或程序进行更新,Flash存储器工作于这种情况,叫用户模式(User Mode)
或在线编程模式。但是,并不是所有类型的单片机内Flash存储器都具有在线编程功能,目前,有的公司出品的单片机,还不能够支持Flash存储器在线编程模式。Freescale的HC908系列单片机的片内Flash支持这两种编程模式。一般来说,两种模式对Flash存储器的编程操作的程序是一致的,差别在于调用这些程序的方式和环境。
13.1.2 HC08系列单片机Flash存储器的特点与编程模式
(1) MC908系列单片机Flash存储器的特点
早期的片内Flash技术与ROM或EPROM相比较,其可靠性和稳定性存在一些不足。Freescale公司在Flash存储器技术相当成熟的时候才推出片内带有Flash存储器的8位单片机,在应用方便性和可靠性等方面有自己的特点,主要有:
第一,编程速度快及可靠性高。Freescale HC08系列单片机的片内Flash的整体擦除时间可以控制在5ms以内,对单字节的编程时间也在40ns以内。片内Flash的存储数据可以保持10年以上,可擦写次数也在1万次以上。
第二,单一电源电压供电。一般的Flash存储器,在正常的只读情况下,只需要用户为其提供普通的工作电压即可,而要对其写入(编程),则需要同时提供高于正常工作电压的编程电压。但是,Freescale HC08系列单片机通过在片内集成电荷泵,可由单一工作电压在片内产生出编程电压。这样,可实现单一电源供电的在线编程,不需要为Flash的编程而在目标板上增加多余的硬件模块。正因为Flash的读写电压要求不同,一些公司的内置Flash存储器便放弃了在线擦除写入功能,而仅有通过编程器的写入功能。
第三,支持在线编程。Freescale HC08系列单片机的片内Flash支持在线编程(In-Circuit Program),允许单片机内部运行的程序去改写Flash存储内容,这样可以代替外部电可擦除存储芯片,减少外围部件,增加了嵌入式系统开发的方便性。
基于以上这些特点,掌握Freescale HC08系列单片机的Flash存储器的编程技术,充分利用Freescale HC08系列单片机Flash存储器的功能,对基于Freescale HC08系列单片机的嵌入式系统的开发是十分必要的。但是,与一般程序相比,Flash存储器的编程技术相对比较复杂,有一些特殊之处,本章将在实际应用基础上,总结Freescale的MC908GP32单片机的Flash编程方法,给出编程实例。
(2) MC908系列单片机Flash存储器的编程模式
MC908系列单片机中绝大多数型号在其内部带有监控ROM(Monitor ROM),其地址和大小取决于芯片型号。Flash存储器工作于监控模式的条件是:
①复位向量($FFFE~$FFFF)内容为“空”($FFFF)。
②单片机复位时在IRQ引脚上加上高电压(1.4~2Vdd),并给某些I/O脚置适当值(与芯片型号有关,设计时,参考芯片手册)。
只要满足上面条件之一,就可以使单片机在复位后进入监控工作方式。前者适用于单片机芯片已经安装在用户PCB板上,可以实现在线编程(ICP)。初始时,芯片为“空”,