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.

[参考译文] TMS320F28335:通过#pragma CODE_SECTION (insert_function_name_here、"ramfuncs")、有多少给定函数从闪存复制到 RAM?

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1056984/tms320f28335-how-much-of-a-given-function-is-copied-to-ram-from-flash-by-pragma-code_section-insert_function_name_here-ramfuncs

器件型号:TMS320F28335

您好!

我正在闪存中工作、但我有一个控制环路 ISR、我想从 RAM 中执行。  但是、我很好奇 TI 的以下命令"深度"如何。

#pragma CODE_SECTION (CONTROL_LOOP_ISR、"ramfuncs");

我调用一个全局数据结构和一组从该 ISR "control_LOOP_ISR"调用的函数。  我希望、因为我在这个整体 ISR 中将它们称为"they、它们都被复制到 RAM 中。  但是、我不确定 ISR 涉及的所有内容是否都通过此命令或仅通过指令调用复制到 RAM 中。  例如,如果我有一个作为 ISR 一部分调用的函数 MyFunction(),调用它的指令是加载到 RAM 还是整个函数?  最后、我希望此 ISR 中的所有内容尽快执行、包括全局数据结构。

谢谢、

洛根雪

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

    洛根、您好!

    情况并非如此。 只有函数  CONTINL_LOOP_ISR 将被放置在 ramfuncs 部分中。 如果 您正在调用的函数是内联函数、则它将保留为   control_LOOP_ISR 函数的一部分并位于 ramfuncs 中。 否则、这些函数将是.text 段的一部分。 您需要为这些函数中的每个函数使用该 pragma。 或者、也可以使用 SET_CODE_SECTION pragma 为 pragma 下面的所有声明设置段。

    例如:

    #pragma SET_CODE_SECTION ("section")
    extern void func1();
    extern void func2();
    #pragma SET_CODE_SECTION ()

    此致、

    Veena

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

    Veena、

    谢谢你。 一个跟进-我如何为我的全局数据结构实例化执行此操作? 我希望所有这些都在 RAM 中可用、以便快速利用函数。

    谢谢、

    洛根

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

    您可以对 全局数据使用类似的 pragma、如 DATA_SECTION 和 SET_DATA_SECTION。

    请注意、数据将始终位于 RAM 中(除了 CONST、它默认位于闪存中)

    此致、

    Veena