This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F5335:RAM 使用情况

Guru**** 2032800 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/566078/msp430f5335-ram-usage

器件型号:MSP430F5335

大家好。

我正在开发一个需要在 RAM 中使用大型数据阵列的应用。

IAR 存储器映射显示我在 一个18KB RAM 器件上使用的是"17 178字节的数据存储器(+ 151绝对值)"。

我的代码运行良好、但我需要您的意见 、我是否会因为高 RAM 使用率而在执行过程中遇到问题。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jorge、

    只要为堆栈留出了足够的空间、这就不会成为问题。 是否有任何您想要解决的具体问题? ftp.iar.se/.../EW430_CompilerReference.pdf

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan。
    我更深入地了解了 IAR、发现我的堆栈使用量为1336 + 1300 = 2666字节

    (二
    **
    *堆栈使用情况*
    **
    (二

    调用图根类别 最大使用量 总使用
    -------------- ---- ------
    中断 1 294 1 330人
    程序进入 1 336 1 336


    因此,我将堆栈大小更改为2700字节,这将在存储器映射中提供:18278字节的数据存储器(+ 151绝对值)= 18429字节。
    不知道+151绝对值来自、18278为0x33+0x3CA7+0xA8C。

    因此、存储器映射保持:

    DATA16_I 1C00 - 1C32 33. 版本 1
    DATA16_Z 1C34 - 58DA 3CA7. 版本 1
    CODE_I 58DC 版本 1
    DATA20_Z 58DC 版本 1
    DATA20_I 58DC 版本 1
    DATA20_N 58DC 版本 1
    CSTACK 5974 - 63FF A8C 版本 1

    据我所知、由于我的 RAM 介于1C00 - 63FF 之间、尽管我在限制范围内、但我不应该有问题、对吧?

    此致、
    豪尔赫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jorge、

    不要开玩笑说限制了、这会使它变得非常接近。 但是、只要编译器能够正确地将所有内容放入 RAM 空间、并且没有错误、就不应遇到任何问题。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan。

    我喜欢住在边缘...

    我做了更多的测试、并使用一些其他 IAR 功能、如堆栈视图和 RAM 存储器视图、我发现堆栈上实际上只使用了1294个字节。 因此、据我了解、映射文件上的堆栈使用情况会造成最坏的情况。 我应该很幸运,不会遇到麻烦……

    UART 调试消息是导致高堆栈使用率的因素之一。 因为我仍在开发、所以我需要它、但在生产固件中、它不是必需的、所以我将对它进行检索、从而为堆栈留出更多空间。

    您能告诉我映射文件上的"数据存储器(+ 151绝对值)"是什么意思吗?

    此致、

    豪尔赫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Jorge Cunha18">因此,据我了解,映射文件上的堆栈使用情况是最坏的情况。 对此我应该感到幸运、而不会遇到麻烦...[/引述]

    至少我使用的工具链(不包括 MSP430!) 请勿进行任何静态堆栈大小计算和检查。 即使是高价工具、如果它们这样做、静态堆栈大小估算也会很薄弱。 映射文件反映了在其他位置完成的堆栈大小设置、通常是在工程设置中的某个位置。

    实际堆栈使用情况取决于应用程序的复杂性(调用深度)、ABI (参数传递方法)和异步事件(使用堆栈的中断)。 因此、您基本上必须"支撑"最坏情况下的应用、并进行合理的猜测。 这种最坏的情况可能会出现罕见的情况、即使在测试了所有可预见的情形后、也会以看似随机的方式使您的应用崩溃。 (具有优先中断和潜在大型中断堆栈帧的 MCU -具有 FPU 上下文保存功能的 MSP432 -在这里更容易...)。

    [引用 user="Jorge Cunha18"]您能告诉我映射文件上的"数据存储器(+ 151绝对值)"是什么意思吗?

    我没有 MSP430编译器/链接器方面的经验、但应该很容易找到。 检查哪些数据进入该部分、并交叉参考源。 可能是恒定数据?