工具/软件:
您好专家
客户在以下操作中报告了 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