【发布时间】:2020-10-21 23:29:38
【问题描述】:
你好,我用的是MSP430F5340单片机,我的IDE是IAR workbench,今天加了几行代码后,发现我之前存储在flash中的数据崩溃了.所以我认为闪存中的代码内存大小已经超出了数据闪存的边界。
这个MCU总共有64K flash(0xFFFF bytes),我的数据起始地址是0xF400,结束在0xF9FF,总共3个block 0.5K bytes。所以从0x0000 到0xF400 (61K) 是代码区。
从地图文件的最后几行,我发现了以下内容:
41196 字节的 CODE 内存
3022 字节的 DATA 内存(+ 83 绝对值)
5421 字节的 CONST 内存
41,196 + 3,022 + 5,421
以前,当我的数据不受影响时,地图文件显示:
39 478 字节的 CODE 内存
3 022 字节的 DATA 内存(+ 83 绝对值)
4 755 字节的 CONST 内存
不知代码内存起始地址不是0x00,加几行后代码区刚好覆盖数据区。
希望有人能帮我解释一下这个问题。
我认为这个问题涉及固件和硬件部分,所以我将它发布在两个地方。
附上两个地图文件和 MSP430F5340 数据表。
Map File1(数据正确):https://drive.google.com/file/d/13g3YaZKI10u1q55rDdmwMBhIGRPOl71d/view?usp=sharing
Map File2(数据错误):https://drive.google.com/file/d/1l5opnbOKgD1kPARb_j0NY6KI2WhXvE9J/view?usp=sharing
Msp430F5340:https://drive.google.com/file/d/1De8R4SqtLIoAC6_SqyonO0Nbdk6oP29L/view?usp=sharing
【问题讨论】:
-
是的,我在两个地方都发布了这个问题
-
摘要只列出了使用的字节数映射文件的有趣部分是“地址顺序中的段”。如果您查看映射文件 1,您会看到
1 段在地址 F055 处结束,而在映射文件 2 中,它在 F9A5 处结束。 -
非常感谢,给这个问题一个很大的提示!
标签: memory msp430 iar flash-memory