在应用编程MAXQ微控制器中可分区擦除的程序和数据闪存

[09-13 17:04:32]   来源:http://www.88dzw.com  控制技术   阅读:8553

文章摘要:摘要:本应用笔记介绍了MAXQ微控制器中的程序和数据闪存,以及如何使用内置的应用ROM对闪存进行擦/写。本应用笔记适用于所有使用分区擦除闪存的MAXQ微控制器。 引言本应用笔记介绍了如何管理MAXQ微控制器中、可分区擦除的内部数据和程序闪存。一般性地介绍了怎样构建一个引导装载应用,实现程序闪存的在应用编程。注意:本文不适于那些使用页擦除闪存的MAXQ微控制器,即那些只允许少量闪存被擦除的微控制器。各MAXQ数据手册都会说明其所采用的闪存类型。 闪存简介存储器配置本应用笔记给出了多种不同尺寸的闪存配置,并不完全和某一特定MAXQ器件相符。这些配置仅用于本文中的实例。各MAXQ器件的数据手册会列出

在应用编程MAXQ微控制器中可分区擦除的程序和数据闪存,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com
摘要:本应用笔记介绍了MAXQ微控制器中的程序和数据闪存,以及如何使用内置的应用ROM对闪存进行擦/写。本应用笔记适用于所有使用分区擦除闪存的MAXQ微控制器。

引言

本应用笔记介绍了如何管理MAXQ微控制器中、可分区擦除的内部数据和程序闪存。一般性地介绍了怎样构建一个引导装载应用,实现程序闪存的在应用编程。注意:本文不适于那些使用页擦除闪存的MAXQ微控制器,即那些只允许少量闪存被擦除的微控制器。各MAXQ数据手册都会说明其所采用的闪存类型。

闪存简介

存储器配置
本应用笔记给出了多种不同尺寸的闪存配置,并不完全和某一特定MAXQ器件相符。这些配置仅用于本文中的实例。各MAXQ器件的数据手册会列出该器件的存储器配置。

引导、程序和数据区在操作上并没有区别。如果引导装载程序需要的空间超过了第一闪存区的范围,那么可将程序扩展到下一分区中。然而,在下面的实例中,标号会有所不同。

表1. 闪存配置实例

数据闪存
数据闪存可以被用来可靠地存储一些系统工作期间需要一次性或周期性保存的系统数据。数据闪存的容量因特定的MAXQ器件而异,通常在128至2k字之间。

数据闪存的使用有一些限制。与EEPROM不同,数据闪存不能按字擦除;每次必须擦除一个完整的分区。擦除一个分区通常需要0.7秒的时间,最坏情况下可能会长达15秒。在这期间,用户代码停止运行,不能进行其他操作。因此,在根据系统需求选择软件技术时,必须要仔细考虑这些限制。对于绝大多数周期性数据存储,采用有界队列和/或分区切换技术,即可满足系统可靠性的要求。下面给出分区交换和有界队列技术的简单实例。

有界队列
有界队列是一个包含固定数量元素的队列。该方法常用于处理周期性数据。例如,可以将一个2k字的数据闪存分成32至64个字的条目,如表2所示的存储器配置。

初始化时,启动程序扫描队列,以确定队列中下一个可用条目。队列填满之后只有将其擦处后方可写入下一个条目。如果要保留全部条目,那么必须改变分区以保持所有数据。闪存擦除后,则可以写入新的条目。这种方法的缺点是在擦写过程中如果掉电,所有数据将会丢失。图1示例条目载入有界队列的流程。附录A给出了一个简单的C源代码实例。

如果这种有界队列方法还不能满足您的系统要求,那么还可以采用分区交换技术。

表2. 有界队列存储器配置举例

FLASHQueue[ ]
Queue Index Data Flash Address
31 0xF7C0-0xF7FF
30 0xF780-0xF7BF
29 0xF740-0xF77F
. . . . . . . .
2 0xF080-0xF0BF
1 0xF040-0xF07F
0 0xF000-0xF03F

图1. 有界队列流程
图1. 有界队列流程

块交换
块交换能够有效防止数据在漫长的分区擦除过程中丢失或损坏。这里所讲的“块”等同于“分区”。块交换方式最适合于分区尺寸略大于数据总量的情况。缺点是至少需要两个数据闪存分区。当要写入的数据总量远小于分区尺寸时,最好将块交换和有界队列两种方法结合使用。

如果需要采用块交换,则需要选用至少含有两个数据闪存分区的MAXQ器件。表3给出了一个包含两个1K x 16闪存分区的存储器配置实例。图2给出了块交换写/擦流程。

附录A给出了一个简单的C源代码实例。

[1] [2] [3] [4] [5]  下一页


Tag:控制技术计算机控制技术,工厂电气控制技术控制技术