TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049: 看门狗复位模式跳转到0x3fb02a,汇编ESTOP0不能继续运行了

Part Number:TMS320F280049Other Parts Discussed in Thread:C2000WARE

 使用c2000示例代码将代码中看门狗模式改为复位,仍会出现此问题

论坛中工程师推测是引导问题,说明的在连接烧录器时,将0x0d00块值赋0x5a,将0x0d04地址赋值0x03该方法仍然不行

请问应该怎么解决呢

Green Deng:

你好,具体是哪个例程?我看了一下F280049的例程,跟你的不一样啊

C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f28004x\examples\watchdog

,

kun liu:

图示不是示例代码,示例代码使用的中断模式,将其修改为复位模式也是出现该问题,你可以尝试下,我跟同事都测试了示例代码都会跳转到这个地址

,

Green Deng:

你好,代码会跳转到0x3fb02a其实就是看门狗导致的,看门狗复位了,芯片就会运行到这个地址。

例程中,之所以用中断的方式没有进入这个地址,是因为用中断的情况下程序设计只产生中断而不产生复位信号:

typedef enum
{//! Watchdog can generate a reset signalSYSCTL_WD_MODE_RESET,//! Watchdog can generate an interrupt signal; reset signal is disabledSYSCTL_WD_MODE_INTERRUPT
} SysCtl_WDMode;

所以能看到工程中的两个变量wakeCount和loopCount在增加。

而改成SYSCTL_WD_MODE_RESET模式之后就会直接产生复位信号,导致芯片复位,进而再导致程序进入0x3fb02a地址。

如果你在程序中使能喂狗

wakeupISR(void)
{wakeCount++;//// Acknowledge this interrupt located in group 1//Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
}

那么程序就不会进入错误地址了。

总结:导致进入错误地址的原因不是因为程序有问题,而是因为看门狗引起了芯片复位,从而进入了错误地址(这个地址在boot部分)。说白了,这个是正常现象,CCS仿真的时候复位芯片就是会进入这个错误地址。

,

kun liu:

1.那如何才能产生正确的复位指向main的第1行语句呢,工程需要在uds诊断时看门狗超时复位,所以必须引导至首行,

2.你说的芯片已经复位可是为什么会进入1个错误地址而不是cmd中的reset配置地址呢?28335貌似就可以通过功能相同的函数进行看门狗复位至main首行

3.如果进行喂狗操作就不能产生复位了,这样是不可行的

,

Green Deng:

你好,上面3个问题全都是因为你是在仿真模式下测试看门狗导致的。也就是说,你把程序烧写进flash之后就可以正常地看门狗复位了

,

kun liu:

你好,目前在不使用仿真模式时,我利用led灯测试确实可以看出来有成功复位,现在还有1个问题:为什么仿真模式不行?对比28335,难道是这款芯片做了限制吗

,

Green Deng:

不是,因为仿真模式下的程序引导跟离线模式的不一样。仿真模式下芯片引导是由CCS去完成的,所以会造成芯片硬件复位后跳转报错。

你可以看一下这个FAE分享的帖子:

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/22790/c2000——–ti-fae/455380?tisearch=e2e-sitesearch&keymatch=%2525252522%25252525E4%25252525B8%252525258A%25252525E7%2525252594%25252525B5%25252525E5%25252525BC%2525252595%25252525E5%25252525AF%25252525BC%2525252522#455380

另外,如果觉得我的回复能帮助你解决问题的话,还请点击绿色的“确认答案”按钮,方便其他工程师参考。

,

kun liu:

你好,能直接指出下280049中应该如何引导才能进入main吗,是我提问的memory wibdow的那个值吗

,

Green Deng:

建议你去看一下datasheet的8.9 Boot ROM and Peripheral Booting,这不是一两句话能讲得完的。

而且,这跟看门狗也没多大关系,你要了解得这么复杂干嘛?如果是需要自己做bootloader APP的话可以研究一下,你做看门狗完全不用知道这些。

,

kun liu:

你好,我现在确实在做bootloader保证进入某些功能时能使用看门狗超时复位来引导至main.那如果不清楚如何修改的话无法在仿真模式下继续运行程序了

,

Green Deng:

这里只能简单介绍一下程序执行流程和我记得的几个地址,其他具体地址要一个个查。

如果是ram启动,入口地址在0x0000 0000,flash启动的话在0x8 0000,相应的,程序会这两个入口地址放一条跳转指令,跳转到_c_int00(_c_int00地址不固定),调用boot28.asm进行C28x运行环境配置,最后自动跳转到执行main()函数。

其实关于bootloader,官方有提供基于SCI的例程,你也可以参考例程来设计:

C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f28004x\examples\flash

也可以多参考一下这个文档:https://www.ti.com/lit/ug/spruiu9a/spruiu9a.pdf?ts=1656034392480&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTMS320F280039C

但是说实话,bootloader和看门狗其实是两个相关性很小的部分了,如果有bootloader的问题建议你可以直接新开一个帖子讨论。

,

kun liu:

谢谢

,

Green Deng:

客气了

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049: 看门狗复位模式跳转到0x3fb02a,汇编ESTOP0不能继续运行了
分享到: 更多 (0)

© 2026 TI中文支持网   网站地图 鲁ICP备2022002796号-1