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:软件在复位或上电后不运行

Guru**** 2555120 points
Other Parts Discussed in Thread: UNIFLASH, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1163036/tms320f280025-software-does-not-run-after-a-reset-or-powerup

器件型号:TMS320F280025
主题中讨论的其他器件:UNIFLASHC2000WARE

尊敬的团队:

我能够在调试和发布模式下编译我的应用并将其刷写。 我在调试会话中以及在通过 uniflash 首次刷写发布版本时都能按预期运行软件。

如果我触发手动硬件复位、或者断电和上电、软件似乎是空白的、并且不运行。 如果我错过了什么,请在这里提供帮助?

我不是编辑链接器 cmd 文件的专业人员、我也可能在这里弄乱了一些东西、并且需要您的支持来查看使用的文件"28002x_flash_api_lnk.cmd"是否真的有意义。  

Code Link: https://drive.google.com/file/d/1eaS0wdvwy-eaq297uyui1zk2ND3DfbIB/view?usp=sharing

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

    您好 Surya、

    查看您的源代码、我看不到 f28002x_codestartbranch.asm 文件。 此文件包含代码入口点、并放置在"开始存储器"部分。 否则、闪存启动时没有指令指示 CPU 分支到代码初始化/主函数。 调试时工作正常、因为调试器直接将入口点地址写入 CPU 程序计数器、但在独立模式下、CPU 将从闪存的地址0开始;需要有一条分支到_c_int00的指令。 您可以在任何 C2000ware 示例项目中找到此文件。

    此致、
    Ibukun

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

    您好、 Ibukun、

    很好、结果就是将这个 asm 文件添加到了我的项目中、它可以正常工作。

    我 现在看到的一个新的奇怪问题是、在软件从此 ASM 引导的复位后、应用程序速度非常慢。

    这意味着在调试会话中、应用程序大约在1秒内启动、我的外设以设置的所需时钟速率运行。 但在复位或上电时、应用程序至少需要10秒才能启动、与在调试模式下运行的相同软件相比、SPI 显示刷新率太慢。

    在使用  f28002x_codestartbranch.asm 时、我是否应该注意到一些技巧?

    谢谢

    Surya

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

    大家好、

    在这里进行了测量、我注意到复位后代码执行时间比调试模式下的代码执行时间增加了6倍。

    在 GPIO 上测量了系统时钟"SYSCTL_CLOCKOUT_SYSCLK"、在调试和独立模式下测量了相同的80MHz。 不确定在独立模式和调试模式下运行的相同代码有何不同?

    谢谢

    Surya

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

    Surya、

    我不知道您的外部外设代码的详细信息是什么。 但我要做的一件事是检查外设时钟分频器(LSPCLK)。 您还可以使用外部示波器或 DCC 模块来测量该值。 只要时钟配置相同、独立模式和调试器模式之间的执行速度就不应存在差异。

    此致、
    Ibukun

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

    我怀疑它与示例中的 asm 文件有关

    e2e.ti.com/.../flash_5F00_kernel_5F00_ex3_5F00_codestartbranch.asme2e.ti.com/.../f28002x_5F00_codestartbranch.asm。 

    我刚才有一个简单的 while 循环代码来切换 IO、我在调试和独立模式下尝试过该操作。

    while(1)
    {
    tmp = 8000;
    while(tmp > 0) tmp--;
    
    GPIO_togglePin(IO_ErrorLED);  
    GPIO_togglePin(IO_SystemLed);
    }

    使用"f28002x_codestartbranch.asm"切换时间试用版-调试模式(370ns)、独立模式(1.5us)

    使用 "flash_kernel_ex3_codestartbranch.asm"切换时间试用版-调试模式(370ns)。 独立(12.7us)

    代码启动 ASM 缺少一些初始化、调试器在调试模式下正确执行这些初始化吗?

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

    您好 Surya、

    让我就这一议题与我们的一些其他专家进行磋商。 请多多包涵、我会再回来的。

    此致、
    Ibukun

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

    您好、Ibukun、

    期待您的支持。

    添加了信息、我尝试在 RAM 和闪存上运行 GPIO 示例代码。 我在调试会话与独立运行时看到的性能问题相同。

    希望这可以从您的角度以及我的上述帖子中随附的 asm 文件中重现。

    供参考:如果有助于发现问题、我还拥有完整的软件

    Code Link: https://drive.google.com/file/d/1eaS0wdvwy-eaq297uyui1zk2ND3DfbIB/view?usp=sharing

    谢谢

    Surya

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

    您好、Suraya、

    感谢您的耐心等待。

    我们正在处理这一问题。  我们的一位专家将很快为您提供解决方案。

    此致、

    哈迪

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

    尊敬的团队

    我们在这里有什么新闻吗?

    谢谢

    Surya

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

    您好 Surya、

    感谢您的参与。

    您能否检查引导配置并验证它们是否设置正确?

    有关如何配置这些自定义引导选项的更多详细信息、请参阅特定于器件的 TRMS ROM 代码和外设引导一章的器件引导模式部分。 有关如何配置引导引脚、自定义引导表和使用扩展引导选项的示例、请参阅 C2000Ware 中 F28004x 下的 boot_ex2_customBootConfig 工程。

    此致、

    哈迪

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

    您好 Hadi、

    感谢您的建议、我尝试根据示例设置引导模式、但基本问题仍然存在。 我尝试了两种方法

    -独立模式和0引导模式、可单独从闪存"configBMSPS0"直接引导  

    重置时、运行时间问题仍然存在。 如果您可以提供一个有效的软件示例,说明正确的引导 ASM 和在独立模式下正确运行所需的引导设置 ,这将非常有帮助?

    谢谢、

    Surya

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

    您好 Surya、

    我正在处理这个问题。 我将咨询我们的专家、并尽快与您联系。

    此致、

    哈迪

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

    您好 Hadi、

    很抱歉,我知道这段假期之间有一些假期,但我们在这里有什么消息吗?

    我们处于紧张的状态、必须解决这一独立运行时间问题、这在发布产品之前非常关键。

    谢谢

    Surya  

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

    您好 Surya、

    我只是注意到您的源代码中有我以前没有看到的内容。 在您编程到闪存的构建中、您是否在构建选项中或在其中一个头文件中定义了_FLASH? 我看到闪存初始化/等待状态等取决于此符号。

    此致、
    Ibukun

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

    非常感谢  Ibukun!

    这是可行的。 我定义了_FLASH,我看到从 device.c 中启用了大量 Flash_*调用

    现在测试了代码、并在独立模式下获得相同的最佳运行时性能

    感谢您的大力支持

    Surya。