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.

[参考译文] TMS320F280025:当 canISR 不在 TI.Ramfunc 中时、hex2000.exe 在末尾添加了奇怪的块

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1291721/tms320f280025-hex2000-exe-adds-strange-block-at-the-end-when-canisr-not-in-ti-ramfunc

器件型号:TMS320F280025

您好!

我正在使用通用电机控制 SDK V4.0.0、当我将 canISR 放在通用电机控制实验室中与 .TI.ramfunc 不同的 RAM 区域(任意)内时、我发现 hex2000.exe 工具有一个非常奇怪的行为:

此操作可行(在结尾不产生任何奇怪的块):

communication.c:

#pragma CODE_SECTION(canaISR, ".TI.ramfunc");

这就造成了一个问题:

communication.c:

#pragma CODE_SECTION(canaISR, "user_data");

如果我选择 USER_DATA 或任何其他选项都无关紧要、它始终会在以 hex2000.exe 结尾创建一个奇怪的块、具有错误的目标地址、如0x4002等:

块:

当将 canISR 放置在与 TI.Ramfunctions 不同的 RAM 部分时、如何生成这样一个具有无效闪存地址的奇怪块?

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

    以了解输出部分如何 TI.ramfuncs 工作原理、请在文章 链接器命令文件入门 中搜索标题为" 在一个地址加载、从另一个地址运行"的器件。  十六进制实用程序会根据加载地址处理段、 .TI.ramfuncs 都作为一个进入闪存的段处理。   

    添加了部分 用户数据 可能会分配一个类似...

        user_data > RAM

    这会创建一段代码的初始化部分、而不是在闪存中、而是在 RAM 中。  您的系统启动可能无法处理这种组合。  请注意、此段的加载地址位于 RAM 中。  这就是十六进制实用程序放置它的位置。   

    谢谢。此致、

    -乔治

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

    谢谢、解决了这个问题