我具有以下设置: CCS 6.1.2、TIRTOS 2.16.0.08、编译器5.2.7、 XDC 3.31.1333、 TM4C1294NCPDT
我有一个项目正在做我需要的事情、并且在一个例外情况下工作。
我使用工具链中内置的网络堆栈、电路板可以 ping 通、使用插座等
*如果我 从关闭电源启动,一切都按预期工作,它会 ping,并且插槽工作等等
*如果我使用 ROM_SysCtlReset()进行软复位 ,一切都按预期工作,则 ping 和套接字工作等等
* 如果我连接 JTAG 探头探头并使用调试器 、则一切都按预期工作、它会执行 ping 操作、并且套接字也会工作
*如果我使用 ROM_UpdateEMAC()跳回引导代码并使用 BOOTP 执行 DFU / fimware 更新,则新固件会运行,但主板不会 ping,并且插座 不起作用。 如果我重置主板,网络 将再次工作,因此我知道使用 BOOTP 放入闪存的固件是有效的固件。
我尝试使用 SysCtlResetCauseGet ()来获得复位原因,我注意到在使用 ROM_UpdateEMAC ()和 BOOTP 后,这是唯一没有设置复位原因位的情况,所以如果 没有设置原因位,只需尝试一些东西, 我调用函数 ROM_SysCtlReset(),之后以太网始终工作。 我认为这不是任何我会长期坚持的解决方案、但这 是一个有趣的实验。
真正的问题 是、导致这种情况的原因是什么? 我想引导代码/BOOTP 正在更改 CPU 中的某些默认设置,而我的代码未设置,这就是需要重置 CPU 以使网络正常工作的原因。
有什么建议和 遗漏了什么?
谢谢、
道格