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.

[FAQ] [参考译文] [常见问题解答] F05闪存:如何调试在未连接 Code Composer Studio 的情况下无法独立运行的代码?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/757590/faq-f05-flash-how-can-i-debug-code-that-does-not-run-standalone-without-code-composer-studio-attached

主题中讨论的其他器件:TMS320F2812

问:在 Code Composer Studio 内调试时、我的程序运行正确、但当我尝试运行这个独立的程序时、它不起作用。 为什么会发生这种情况?  

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

    答:

    注意:此答案适用于具有 F05闪存的器件。  请参阅: [常见问题解答] F05闪存:哪些 C2000器件具有"F05闪存"

    答:出现这种情况的原因有几个:

    1. 引导模式选择不是"跳转至闪存"。 查看特定器件的引导 ROM 指南和数据手册。
    2. 已分配初始化段以加载到 RAM 而不是闪存。 所有已初始化的段都应将其加载地址分配给闪存、以便对其进行编程。 检查链接器命令文件(.cmd)和.map 文件以确认所有已初始化的段都被分配给闪存。 《在 TMS320F28xx DSP (SPRA958)应用上从内部闪存运行应用》的第3节 注释说明了编译器生成的每个段应分配的位置。
    3. 如果代码对时间要求严格、需要从 RAM 运行、则可以在运行时复制代码。  SPRA958 介绍了如何复制代码。
    4. 将关键段复制到 RAM 后、确保复制确实发生-检查存储器内容和反汇编窗口。
    5. 尝试首先运行闪存至 RAM 复制例程。 一些函数可能假定代码已经被复制到 RAM 中。 例如,在 InitSysCtrl()函数中使用 delay 函数。 默认情况下、此延迟函数分配给将 TI 示例复制到 RAM 的函数。 如果在复制到 RAM 之前调用 InitSysCtrl(),则会发生异常。 如果在 copy 函数之前调用 InitAdc(),也会发生这种情况。
    6. 没有在闪存入口点添加指令到应用程序代码开头的分支。  SPRA958对此进行了进一步讨论
    7. TMS320F2812特定:除了实际的引导引脚、需要将 MP/MC 引脚拉至低电平来启用引导 ROM。

    若要调试此问题、请单步执行代码并尝试确定其错误位置。 以下是一些调试建议:

    1. 刷写器件
    2. 关闭电源
    3. 连接 CCS 并仅选择"load symbols"
    4. 在闪存的入口点放置一个断点
    5. 使用调试器重置器件并运行-您是否遇到了断点? 如果是、引导模式看起来正常
    6. 单步执行代码、直至发现问题。