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.

[参考译文] MSPM0G1506:如何从 SRAM 运行程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1398311/mspm0g1506-how-to-run-a-program-from-sram

器件型号:MSPM0G1506

工具与软件:

你好。 我叫 Mori、

我正在使用 MSPM0G1506、但 ROM 容量不足、
所以我想将一些程序的函数放在 SRAM 中并运行它们。
我有两个问题:
①Is 可以将程序放置在 SRAM 中并使用 MSPM0G1506运行该程序?
②If ①是可能的、请告诉我如何设置。

提前感谢您。

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

    嗨、Mori、

    [quote userid="575906" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1398311/mspm0g1506-how-to-run-a-program-from-sram 是否可以将程序放置到 SRAM 中并使用 MSPM0G1506"运行?

    是的、当然可以。

    [quote userid="575906" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1398311/mspm0g1506-how-to-run-a-program-from-sram ①如果 可行、请告诉我如何设置。

    可以为函数代码腾出一些 SRAM 存储器。

    在 该区域分配您的函数代码。

    3.在主代码中、使用 程序集跳转命令。

    下面是我编写的演示代码、以帮助您自己开发代码。 希望它能对您有所帮助。

    e2e.ti.com/.../E2E_5F00_runProject_5F00_inRAM2.zip

    此致、

    Zoey

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

    Zoey
    感谢您的答复。
    这对我们很有帮助。

    我能够从 SRAM 确认执行、但是在执行了放置在 SRAM 中的函数之后、
    我以为它会返回到调用函数、但事实并非如此。
    是否缺少任何处理?
    我已经附加了已执行的部分设置和源代码。
    很抱歉再次询问。
    请检查。

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

    您好!

    在 RAM 中完成函数后、需要再次跳回、否则它将运行至默认处理程序

    此致、

    Zoey

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

    您好!

    这样做的最佳方法可能是:只需调用函数、而不是使 PC 进入地址。

    int main(void)
    {
        SYSCFG_DL_init();
    //    __asm("ldr     r0, = 0x20205000\n");
    //    __asm("mov     PC, r0\n");
        Func_RAM();
    
        while (1) {
        }
    }

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

    您好、Zoey

    感谢您的回答。
    我做了。

    我还要确认一点:使用"__attribute__((section (".program_RAM"))定义的函数所调用的函数是否也会分配给 SRAM?

    很抱歉多次提出这个问题。 提前感谢您。

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

    您好!

    这不是 C 语法中用来装饰定义的函数或变量的函数。

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

    嗨、Mori、

    请注意、如果将函数分配到 SRAM 中、而 MCU 再次上电、则该函数将丢失、因为 SRAM 在断电后无法保持数据。

    此致、

    Zoey

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

    您好、Zoey

    我理解。 感谢您的答复。