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

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

文章摘要:表3. 块交换存储器配置实例 Flash SectorsSector NumberData Flash Address00xF000-0xF3FF10xE000-0xE3FF图2. 块交换流程 同时采用有界队列和块交换管理数据闪存的最可靠、最灵活的办法是同时采用有界队列和块交换技术。当需要将少量的数据周期性存入闪存,并要保持数据完整性的时候,结合使用这两种技术将非常有利。表4给出了一个包含两个2K x 16分区,每个分区被划分为32个相等条目的实例。图3示例数据在两个分区之间、有界排队内的流向。 这种组合方法的程序比有界队列方法稍微复杂一些。附录A给出了一个简单的C源代码实例。 表4. 块交换

在应用编程MAXQ微控制器中可分区擦除的程序和数据闪存,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com
表3. 块交换存储器配置实例
Flash Sectors
Sector Number Data Flash Address
0 0xF000-0xF3FF
1 0xE000-0xE3FF

图2. 块交换流程
图2. 块交换流程

同时采用有界队列和块交换
管理数据闪存的最可靠、最灵活的办法是同时采用有界队列和块交换技术。当需要将少量的数据周期性存入闪存,并要保持数据完整性的时候,结合使用这两种技术将非常有利。表4给出了一个包含两个2K x 16分区,每个分区被划分为32个相等条目的实例。图3示例数据在两个分区之间、有界排队内的流向。

这种组合方法的程序比有界队列方法稍微复杂一些。附录A给出了一个简单的C源代码实例。

表4. 块交换和有界队列存储器配置实例

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

FQueueBank0[ ]
Queue Index Data Flash Address
31 0xE7C0-0xE7FF
30 0xE780-0xE7BF
29 0xE740-0xE77F
. . . . . . . .
2 0xE080-0xE0BF
1 0xE040-0xE07F
0 0xE000-0xE03F


图3. 有界队列和块交换流程
图3. 有界队列和块交换流程

应用ROM闪存例程
MAXQ微控制器具有片内闪存支持程序,驻留在ROM (只读内存)中,用来对闪存进行编程、擦写和校验。有两种方法来调用这些例程。第一种也是最快的方法是直接访问,只需通过以下代码提供一个头文件:

u16 flashEraseSector(void *);
u16 flashEraseAll(void);
u16 flashWrite(u16 *pAddress, u16 iData);
然后,加入链接定义给每个例程分配合适的地址。对于IAR链接文件,加入下面几行语句:
-DflashEraseSector=0x8XXX
-DflashEraseAll=0x8XXX
-DflashWrite=0x8XXX
具体使用时,用每个例程相应的存储器地址替代0x8XXX。其他编译器可能使用不同的方法添加这些声明。

注意,直接访问方法与未来的ROM版本无法前向兼容。

第二种为查表法。尽管这种方法兼容性较好,但是执行时间较长。在下面每一段例程说明的后面,汇编例程采用查表法获取ROM应用例程的地址。表5所示为应用ROM提供的几个闪存例程。关于ROM应用例程的完整列表,参见特定MAXQ器件的用户指南。

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


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