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

CC2640用XDS100V3烧录程序后调用HAL_SYSTEM_RESET()重启失败

本来XDS200也是一样的情况,烧录程序后调用HAL_SYSTEM_RESET()重启失败,手动复位后恢复正常。

按照 http://processors.wiki.ti.com/index.php/CC2640_OAD_User%27s_Guide 上的修复措施操作后:

Fix:

Start by downloading the latest emupack from here: http://processors.wiki.ti.com/index.php/XDS_Emulation_Software_Package

Flash Programmer 2:

  1. Run the above installer
  2. Copy the contents of the emupack installer to <fp2_install_dir>/config/xds/*

XDS200烧写器恢复正常,烧录程序后无需手动复位,即可通过HAL_SYSTEM_RESET()进行设备重启。

但是用仿真器 XDS100V3 烧录程序还是有问题,必须手动复位一次,否则调用HAL_SYSTEM_RESET()会让设备卡住。

BLE 2.1 和 BLE 2.2都试了,结果一样,所以应该不是协议栈版本的问题。

请问各位同行有没有碰到这样的情况呢?是如何解决的呢?

也麻烦TI的同事帮忙分析一下可能的原因,感谢!

Susan Yang:

建议您参考 http://www.ti.com/lit/ug/swcu117h/swcu117h.pdf 的第5.6 Halt In Boot (HIB)

如果在CC26xx上连接了调试器,一旦复位,设备将在调试器连接时进入引导模式。

另外您也可以参考E2E上的类似问题 

https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/486098/1919163#pi239031350=1

希望对您有所帮助,谢谢!

Qingsong Du:

回复 Susan Yang:

谢谢Susan!

用XDS100v3烧写完程序后拔掉调试器,再调用HAL_SYSTEM_RESET()进行复位,也是一样的不能正常重启设备。

而用XDS200进行烧写,拔掉或者不拔调试器,都可以用HAL_SYSTEM_RESET()进行复位。

烧写程序用的是 Flash Programmer 2。

您提供的资料我再好好分析一下,非常感谢!

Qingsong Du:

回复 Susan Yang:

应该是进入了HIB状态了。

看了TRM中JTAG相关的内容 。

5.4 ICEMelter,这一节讲得很清楚:

TCK引脚电平变化容易让设备进入调试模式,会打开JTAG的电源,这样会增加400uA的电流消耗。

同时会设置HIB标志,导致下一次设备重启时卡在引导阶段。

最后还给出了解决办法:

1,将TCK拉高。

2,短接TCK到供电,但是用这个办法之后就不能用JTAG烧程序了。

我也在板子上测了下,将TCK和GND短接下,确实会让设备软复位失败,和我问题中提到的现象完全一样。

Qingsong Du:

回复 Qingsong Du:

用逻辑分析仪测了下烧写程序时,TMS、TCK、nRESET三个引脚的电平变化情况。

在烧写完成并复位后,如果TCK引脚还有电平变化,就可能会导致HIB,如果没有变化或变化很少则不会。

da qin zheng sheng:

cjtag时序非常复杂的!建议使用jtag模式。

Qingsong Du:

回复 da qin zheng sheng:

谢谢回复,我已经跟硬件组同事说了。

但是这个问题是TCK信号引起的,用JTAG应该还是会存在吧。

如果有用JTAG接口烧写调试的,可以试试短接一下TCK和GND,然后断开,看看是不是也会增加电流消耗,调用HAL_SYSTEM_RESET()能不能成功重启。

赞(0)
未经允许不得转载:TI中文支持网 » CC2640用XDS100V3烧录程序后调用HAL_SYSTEM_RESET()重启失败
分享到: 更多 (0)