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.

[参考译文] TMS320F2.8384万S:将const部分重定向到RAM

Guru**** 2394295 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1085670/tms320f28384s-redirect-const-section-to-ram

部件号:TMS320F2.8384万S

团队成员,您好!

我的ISR调用IPC功能。 IPC对象(IPC.obj)位于driverlib.lib中,它在.const部分包含一些数据,如IPC_instance。 这是一个问题,因为我想避免ISR的闪存访问,以便在ISR运行时擦除其他闪存扇区。

在liker命令文件中,如何重定向ipc.obj的开销部分(如果单个对象不可能,则重定向整个库的开销部分)以驻留在RAM中?

是否有其他方法可以解决此问题?

 

提前感谢您的参与,

Inno.(注:)

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

    您好,  

    您可以 使用负载/运行 功能为const部分配置不同的运行地址。

    例如:

    .const : load = FLASH5, run = RAMLS0,
    load_start (constLoadStart),
    load_size (constLoadSize),
    run_start (constRunStart),align (8)

    在主-

    memcpy (&constRunStart,&constLoadStart,(size_t)&constLoadSize);

    确保先完成memcpy,然后再访问常量。

    详情请浏览 https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    此致,

    Veena

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

    如果您不想对整个.const节执行此操作,并且只需要对IPC.obj中的.const执行此操作,则可以执行以下操作:

    ipcConst

    driverlib.lib<IPC.obj>(.const)(驱动程序lib.lib<IPC.obj>(.const))
    } LOAD = FLASH5,RUN = RAMLS0,
    load_start (constLoadStart),
    load_size (constLoadSize),
    run_start (constRunStart),align (8)

    这将创建一个名为 ipcConstt的新输出部分,并按指定的方式进行分配。 有关输出部分的详细信息,请参阅上述文档

    此致,

    Veena

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

    您好,

    我尝试了您建议的第二个选项(仅重定向IPC.obj的const),它对我有效。 非常感谢!!!

    我的ISR在后台循环程序或擦除闪存扇区(不是执行代码的扇区)时访问闪存。

    是否有一种简单的方法来执行此操作,而不是手动删除ISR中的每个闪存访问?

    再次感谢,

    Inno.(注:)

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

    您好Inno,

    如果您知道可以从ISR访问的部分,则可以 使用组{}功能将它们全部分组,并使用RAM运行位置。

    您是否正在寻找能够自动解析所有ISR并识别闪存访问并将其移动到RAM的设备?

    此致,

    Veena

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

    您好,Veena,

    是否存在 自动解析所有ISR并识别闪存访问的内容?

    验证我是否从ISR删除了所有闪存访问将非常有用。

    此致,

    Inno.(注:)

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

    您好Inno,

    我不知道有这种情况。 我将与专家核实并回复您

    此致,

    Veena

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

    您好Inno,

    在运行时,您可以使用ERAD模块检测对指定内存范围的访问。 在编译期间很难获得该信息

    此致,

    Veena

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

    您好,Veena,

    感谢您的回复。

    如何使用  ERAD模块?

    请您引导我查看相关文档吗?

    谢谢,此致,

    Inno.(注:)

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

    您好Inno,

    您可以参考设备TRM和以下材料:

    https://training.ti.com/embedded-real-time-analysis-diagnostics-erad-c2000-mcus

    https://www.ti.com/lit/an/spracm7/spracm7.pdf

    您可以配置总线比较器以检测对指定区域的访问。 您可以将其配置为生成断点或中断。

    此致,

    Veena

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

    您好,Veena,

    这非常有趣,可以满足我们的需求。

    我将仔细查看并考虑使用它。

    非常感谢您的支持。

    此致,

    Inno.(注:)