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.

[参考译文] TMDSCNCD263P:无法在不重新加载程序的情况下重新启动 Blinky

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1314848/tmdscncd263p-not-possible-to-restart-blinky-without-reloading-the-program

器件型号:TMDSCNCD263P
主题中讨论的其他器件:SysConfig

您好!

我正在使用 mcu_plus_sdk_am263px_09_01_00_20。 我导入了项目"rti_leed_blink_am263px-cc_r5fss0-0_nortos_ti-arm-clang"。

第1期 :在 SysConfig 中,"GPIO_LED"被错误地分配。 您必须将 OSPI0_CSn0/P1更改为 LIN2_TXD/A8。 完成此更改后、LED 将闪烁。

 

第2期 :我只能运行程序一次。

我的意思是:

-暂停后,然后重启,程序运行到 Hwip_undefined_handler()

-在暂停、重置、然后重新启动之后,程序运行到 main(),然后恢复,程序运行到 Hwip_data_abort_handler_c()。

恢复和重新启动程序的唯一方法是先复位然后(Re)加载程序。

a)为何无法重新启动程序?

b)如何避免每次要从头(0x00000000)运行程序时都加载该程序?

谢谢你。

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

    尊敬的 Kier:

    1. 我将向我们的 SDK 团队提交请求单以修复该错误。
    2. 从 CCS/调试中运行该程序时、每次都必须将该程序重新加载到器件中、并每次执行该程序。  要将示例加载到板载 OSPI 闪存模块、请访问下面的 AM26x Academy 链接、然后转到"Flash a Hello World Example"页面。  随后将向您展示如何将程序加载到板载 OSPI 闪存中。
      1. 当从 OSPI 闪存执行程序时、该程序将在复位时执行、您每次都无需重新加载该程序。

    https://dev.ti.com/tirex/explore/node?node=A__AKM3smmsVVn7tYZAiWfuSA__AM26X-ACADEMY__t0CaxbG__LATEST

    此致、

    布伦南

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每次必须将程序重新载入设备并执行。

    尊敬的 Brennan:

    是的、但为什么呢? 这是问题2a。

    据我所知、在按下 Restart 按钮并且 PC 只是复位为0x0之后、该程序应该仍然存在于 RAM 中。 自第一次执行以来,原则上没有任何变化。 实际上、我确认(通过存储器浏览器->保存存储器)程序的.vectors 和.text 段没有变化。

    每次需要运行此程序时、强制将同一程序加载到 RAM 中的是什么?

    这是了解该器件的工作原理的关键。

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

    经过更多的调查,我发现了可能的原因。

    情形1: 暂停后,再重启,程序运行到 Hwip_undefined_handler()

    Restart 后、复位向量正确地指向_c_int00 ()、但我发现 CPU 模式为 Thumb 模式、而在 Program Load 后、该模式为 ARM。 我想复位向量指令被错误地解释了、并导致了未定义指令异常。

    这意味着应按"Reset"按钮将模式改回到 ARM 状态。

    暂停之后:

    在程序加载和复位后:

    场景2: 在暂停、重置、再重启后,程序运行到 main (),然后恢复,程序运行到 Hwip_data_abort_handler_c ()。

    奇怪的是,我今天不能重现这个问题。

    结论:

    因此、总之、可以在 DevBoot 模式下多次运行某个程序而无需重新加载该程序。 在执行复位矢量指令之前、您只需点击 Reset (复位)(以及可选的 Restart)将模式重新更改为 ARM。