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.

[参考译文] TMS320F2800157-Q1:卡在 SysCtl_delay () 处、调用 sysctl_resetDevice ();返回到 main 以执行 CPU 配置例程

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1550004/tms320f2800157-q1-stuck-at-sysctl_delay-once-call-the-sysctl_resetdevice-the-back-to-main-to-do-cpu-configuration-routine

器件型号:TMS320F2800157-Q1


工具/软件:

您好专家

客户在以下操作中报告了 SysCtl_delay () 问题:

软件结构: 0x80000 至 0x82000 是客户引导地址、0x82000 及后续是应用程序。

编程例程:

  • CAN 通信会触发 客户引导程序更新分支;
  • 引导加载程序将擦除应用扇区闪存并对更新的应用固件进行编程;
  • 触发 sysctl_resetDevice ();应用程序固件更新后、转至客户引导主函数以重新初始化 CPU。

此例程可以在设备上电并使用仿真器恢复  后正常运行、但一旦在固件更新后触发了 sysctl_resetDevice();并从主函数入口重新启动、程序将卡在 Device_init->sysctl_setclock->sysctl_delay (sysctl.c 文件行 300) 中。 程序将转至 Estop、无法使用仿真器再次重新启动。

我与客户进行以下检查:

  • 已确认客户引导已擦除正确的闪存:0x82000 之后。
  • 确认在预定义符号中添加了_FLASH 以确保 SysCtl_delay () 在 RAM 中运行、地址为 0x0000866E。
  • 客户引导更新应用程序固件并对电路板进行下电上电后、MCU 也将停留在同一指令中。

函数似乎放置正确、您对此调试有任何其他建议吗?

谢谢

Joe

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

    您好 Joe、

    复位后、RESC 和 MCDCR.MCLKSTS 的值是多少?   MCLKSTS 卡在 300 行时的值是多少?  我假设 XTAL 是   整个应用的主要时钟源。

     SysCtl_resetDevice() 正在使用 WD 重置设备、因此在重置后、入口点将是引导代码。 引导加载程序中是否发生过任何与时钟相关的配置? 本应用手册讨论了引导过程的详细信息+写入引导加载程序以及资源: C2000 MCU 在有器件复位的实时固件更新(修订版 A)

    此致、

    Aishwarya

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

    您好  Aishwarya

    非常感谢您的支持、问题已解决、根本原因是客户引导和应用程序之间的固件重叠。

    此致

    Joe