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.

[参考译文] TMS320F28379D:Pragma code_section (".TI.ramfunc")的位置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1367210/tms320f28379d-location-of-pragma-code_section-ti-ramfunc

器件型号:TMS320F28379D

工具与软件:

您好!

我要测试的程序结构涉及从一个或两个 ISR 调用的多个函数。

程序被加载到闪存中、并允许从我提供的 RAM 中执行  #pragma code_section (".TI.ramfunc");  。 我是否需要对在 ISR 内部调用的所有函数执行此操作、或者这些函数是否自动从 RAM 执行? 。 我还有一些全局变量。 我是否需要更改它们的定义方式?

谢谢!

阿迪亚

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

    尊敬的 Aditya:  

    您需要包含  #pragma code_section (".TI.ramfunc")  以及加载到闪存并从 RAM 执行的所有函数的编译过程。

    请查看类似主题- (+) CCSTUDIO-C2000:关于 CODE_SECTION Pragma - C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

    谢谢

    阿斯温

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

    您好、Aswin、

    感谢链接到这个主题。 我不理解优化的效果。

    基本上、如果我有  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    interrupt void ISR1()
    {
    function1();
    }
    void function1()
    {
    Statements...;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我是否需要将其包括在内、就像  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #pragma CODE_SECTION(".TI.ramfunc")·
    interrupt void ISR1()
    {
    function1();
    }
    void function1()
    {
    Statements...;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    或  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #pragma CODE_SECTION(".TI.ramfunc")·
    interrupt void ISR1()
    {
    function1();
    }
    #pragma CODE_SECTION(".TI.ramfunc")·
    void function1()
    {
    Statements...;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如果我们需要在每个函数之前包含它、那么在有大量函数的情况下、有没有更简单的方法可以做到这一点吗? 如果要执行的函数不需要太快、而是相对频繁地调用、那么在不先将其加载到 RAM 中的情况下执行该函数是否会有任何问题?  

    谢谢。

    - Aditya

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

    尊敬的 Aditya:

    您需要遵循第二种方法。 您需要在要从 RAM 执行的函数之前添加该函数。

    请 参考这些#pragma 定义的 flash.h/.c 文件中的 driverlib 代码。

    我们需要为所有针灸单独添加它。

    谢谢

    阿斯温

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

    感谢您的澄清。 除了性能降低之外,如果我不为 ISR1()调用的所有函数添加此项,会有什么问题吗?

    谢谢!

    阿迪亚

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

    尊敬的 Aditya:

    如果您需要从 RAM 执行、则应采用 Pragma 格式。

     如果不包含所有函数、则不会出现其他问题。  

    我目前正在关闭该请求单、如果您需要进一步的帮助、请告诉我。

    谢谢

    阿斯温