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.

[参考译文] CCS/LAUNCHXL-F28377S:闪存编程非法 ISR

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587678/ccs-launchxl-f28377s-flash-programming-illegal-isr

器件型号:LAUNCHXL-F28377S

工具/软件:Code Composer Studio

大家好、TI 社区、

最近、我一直在尝试使用"2837xS_Generic_flash_lnk.cmd"链接器文件将程序刷写到 F28377S 板上。 当我使用通用 RAM 链接器文件时、我的程序运行正常。 当前、当我调试程序并运行时、CCS 会将我带到"F2837xS_DefaultISR"源文件中的"ILLEGAL_ISR"中断。 我目前在主源文件中定义了我创建的所有函数和中断。 我不知道为什么会发生这种情况。 是因为我没有将函数推送到 RAM 中的函数、还是缺少其他内容?

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

    Brenden、

    您可能会在链接器命令文件中将一些函数分配给".TI.ramfunc"段。

    这些函数将具有一个闪存加载地址和一个 RAM 执行地址。  在执行这些函数之前、必须将它们从闪存复制到 RAM 中。  您可以使用 memcpy()函数来执行此操作(在 F2837xS_sysctrl.c 中签出 InitSysCtrl()函数)。  如果不将这些函数复制到 RAM、CPU 将从 RAM 中获取错误的操作码、从而导致 ITRAP/非法 ISR。

    此外、请确保您从 RAM 执行闪存 API、除非您在擦除/编程另一个存储块时从一个存储块执行闪存 API。  在 C:\ti\c2000\C2000Ware_1_00_00\device_support\f2837xs\examples\cpu1\flash_programming\cpu01中检查 flash_programming_cpu1_flash.cmd -此链接器命令文件使用闪存加载地址和闪存 API 库的 RAM 运行地址。

    谢谢、此致、

    Vamsi

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

    我假设要执行 memcpy(),我所要做的就是在主源文件中定义_flash? 我注意到、在示例闪存编程链接器文件中、它们只将.text 分配给 FLASHD 和 FLASHE。 我想知道、这是否为我的源文件提供了足够的内存。 我将"flash_programming_cpu1_flash.cmd"链接器文件复制到工程中、并将 common/lib 目录添加到链接器搜索路径中。 编译时、我收到警告"#10068-D no matching section"。 当我调试时、仍然会提示我使用非法的 ISR 函数。

    我觉得我没有进行正确的 memcpy 校正...

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

    在使用代码之后、我意识到我需要在 SYSCTRL.c 源文件中定义"_flash"。 现在、一切看起来都正常工作。 我仍在使用 Generic_flash_lnk 链接器文件。

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

    Brenden、

    如果您对给定的 TI 示例工程使用闪存构建配置、您将注意到在构建设置中定义了_FLASH 符号。 很好,你可以找到它-我指向 SYSCTRL 文件,这样你就会注意到它。

    谢谢、此致、
    Vamsi