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/TMS320F28377D:在 EMU RAM 引导期间擦除额外的 RAM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/835555/ccs-tms320f28377d-extra-ram-being-erased-during-emu-ram-boot

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

您好!

我在尝试 EMU RAM 引导时遇到问题。

1.编译工程,将程序加载到 RAM 中,按下 CCS 中的调试按钮,调试从 main()启动的应用程序,运行良好。

2.如果我选择 EMU 引导过程引导至 RAM (通过 CCS 中的"Scripts"更改 EMU_BMODE 和 EMU_KEY)、然后在 CCS 中按"reset"和"run"(使器件通过仿真引导流程)、则应用程序卡在 ITRAP0中断中。

3.分步重复过程#2以找出原因。 问题是、在"复位"和"运行"之后、在应用程序进入 code_start 分支之前、应该被"subACC  、#1"指令占用的地址0x122现在为 ITRAP0。 此指令是 TI 提供的 RAM 延迟函数的第一条指令("F2837xD_usDelay.asm")。 这意味着在器件完成仿真启动流程后、0x122中的指令被擦除。

4.修改 cmd 文件以使保留的引导栈从0x2 - 0x121 (其长度为0x120)变为0x2 - 0x122 (其长度为0x121)、问题得到解决。 现在、该指令位于0x123中、在引导流程中未被擦除。

这是否意味着当选择引导至 RAM 时、为引导保留的空间应该为0x2 - 0x122、而不是技术参考手册.pdf 中建议的0x2 - 0x121?

我知道、RAMM0的一部分被引导流程用作堆栈。 但根据手册、保留的空间为0x2 - 0x121 (其长度为0x120)。 被擦除的指令位于地址0x122处、该指令驻留时应该是安全的。 以下是"重置"和"运行"之前和之后的图片。 你们可以确认我是对的吗?

 在"复位"和"运行"之前:

在 "reset"和"run"之后:

此致、

John

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

    我看到 TRM 已经提到"0x02-0x122"要保留 。  您能否在复位后和运行前检查0x122的内容。

    此致

    Baskaran

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

    Baskaran、您好!

    条件:

    加载到 RAM 中的应用程序

    2. EMU 引导至 RAM

    点击"调试"按钮后的状态:

    CCS 中"复位"之后和 CCS 中"恢复"之前的状态:

    在第3章 TRM 中、为 bootROM 保留的空间大小为0x120。

     此致、

    John

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

    您好!

      是的、表的结束地址和长度不正确。 感谢您的注意。   

       我已在 TRM 和链接器命令文件中提出修复的 TT。  

    此致

    Baskaran

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

    Baskaran、您好!

    感谢你的帮助。

    此致、

    John