主题中讨论的其他器件:C2000WARE
我一直在从事一个项目、在 M3和 C28主程序之上添加了一个引导加载程序。 我遇到的问题是通过 UART 与计算机上的另一个程序进行通信。
当前、M3引导加载程序会启动并等待一段时间、以便通过 UART 从外部程序接收命令、或者超时、并通过函数指针跳转到另一个加载的主程序
当 M3引导加载程序收到命令时、它会输入条件并通过 UART 响应外部程序
此部件工作正常
然后、通过 memcpy 将一些函数移动到从 RAM 执行、并通过函数调用加载新的主程序
一旦进入函数调用、UART 就不再像在引导加载程序中继续与外部程序通信那样输出到示波器。 UART 寄存器看上去一切正常、并且似乎已打开所有正确的位、以显示 UART 处于启用状态。 不过、引导加载程序或函数调用中的 UARTDR 在转至 UART TX 函数时不会显示寄存器中的任何内容。
我发现的其他一些问题可能与此相关
- SCB_FAULT_STAT 寄存器上的模糊总线错误、一旦我在 ACTLR 寄存器上打开写高速缓存、就会显示一个精确的总线错误、该错误的验证地址为0x4000000C、即 WDT0中断清除。 这会升级为硬故障、并使我进入故障 ISR 以永久循环。
- 当我向被调用的函数添加一个额外的 while (1)、以将新程序加载到垃圾邮件 UART 写入时、它基本上会导致程序在该点之前不再正常运行、尽管函数调用处于某个条件下、在外部程序发送之前不应输入该条件 它的命令。
我希望这是足够的信息、请随意询问您认为有助于解决此问题的任何其他事项。
谢谢、
Steven