【问题标题】:Data in msp430 flash was lostmsp430 flash中的数据丢失
【发布时间】:2020-10-21 23:29:38
【问题描述】:

你好,我用的是MSP430F5340单片机,我的IDE是IAR workbench,今天加了几行代码后,发现我之前存储在flash中的数据崩溃了.所以我认为闪存中的代码内存大小已经超出了数据闪存的边界。

这个MCU总共有64K flash(0xFFFF bytes),我的数据起始地址是0xF400,结束在0xF9FF,总共3个block 0.5K bytes。所以从0x00000xF400 (61K) 是代码区。

Flash Allocation

从地图文件的最后几行,我发现了以下内容:
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


【解决方案1】:

已经解决了这个问题。 关键是,从链接文件'lnk430f5340.xcl'中,我发现代码区的闪存分配是0x4400-0xFF7F & 0x10000-0x143FF。
并且代码大小是'41196字节的CODE内存'+'5421字节的CONST内存'('3022字节的DATA内存'应该在RAM中)
因此 0xF400 处的数据丢失。 有两种方法可以解决。
1).把数据放到更大的地址,比如0x13600
2).修改代码区的内存分配,改为0x4400-0xFF3F & 0x10000-0x143FF,这样0xF400处的数据就不会被覆盖了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多