9 posts / 0 new
Last post
WHQYSMART
Offline
Last seen:9 months 1 week ago
加入:2020-02-12 12:47
SPI Flash引起的JTAG无法连接

Dear CYibin

我在调试中遇到一个很诡异的问题,向您请教。

硬件上使用DA14531+SPI Flash(普通SPI接口,非QSPI)。

我在成功写入一次Bin并运行成功后,擦除了Flash并重复了多次重新写Bin文件的操作。

之后我发现,JTAG无法连接DA14531了。

我们尝试从主板上摘除Flash,JTAG连接又恢复了。

此后我们怀疑Flash中的数据写乱了,导致14531无法启动,于是用FlashProgramer编程器擦除了Flash中的Bin文件,讲Flash恢复为全F的初始状态。

将Flash重新焊回主板,JTAG依然无法连接14531.

以上是我们遇到的问题,期待您的解答。

Device:
CYibin
Offline
Last seen:3 months 3 weeks ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

当 FLASH 中有固件,并且固件中将 JTAG 接口禁用掉,就会发生 JTAG 因为 FLASH 而连接不上的现象。

这种情况常发生在客户复用了 JTAG 接口的 Pin 脚的情形中。

当问题发生后,解决办法之一:可通过 UART 接口将 FLASH 中的固件擦除。

回到你的问题,请问你的硬件环境是什么?该问题是否能稳定复现、详细复现步骤是什么?

WHQYSMART
Offline
Last seen:9 months 1 week ago
加入:2020-02-12 12:47
您说的关掉JTag的方案,在新的SDK中是通过CFG

您说的关掉JTag的方案,在新的SDK中是通过CFG_DEVELOPMENT_DEBUG这个宏来实现的吗?

目前我们的硬件中并没涉及SWCLK和SWDIO管脚的复用,也并没有在App中将这两个pin设置做它用。

我们的硬件复现环境不太稳定,都通过飞线连接,所以实验结果还有冲突的地方,我们还在累计实验。

我想先跟您确认一个问题。

如果SWCLK和SWDIO管脚没有复用,且供电/地都正常的情况下,

即使APP代码异常造成重启,JTAG应该也可以连接到14531,读到芯片的IDCODE。 这样的理解对不对?

CYibin
Offline
Last seen:3 months 3 weeks ago
工作人员
加入:2017-12-14 02:48
可以调用 SetBits16(SYS_CTRL_REG,

可以调用 SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0) 关掉 JTAG

从你的描述中,该问题是一个概率性问题,表现为 JTAG 接口连接不稳定?

可尝试将 SWD 速率调整到 2M 以下。

WHQYSMART
Offline
Last seen:9 months 1 week ago
加入:2020-02-12 12:47
除了SetBits16(SYS_CTRL_REG,

除了SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0) 还有其他方式关闭JTAG吗?

另一个问题是,我发现使用SSToolbox CLI的JTAG下载SPI Flash时会概率的出现写入错误的问题。(但这个时候,CLI 的返回值是正确的。)

例如:

echo y | SmartSnippetsToolbox.exe -type spi -chip DA14531 -jtag xxxxxx -cmd write -file "%~dp0simple_beacon_531.bin" -offset 0 -nomessages 00100

SUCCESS

这个情况您遇到过吗?

CYibin
Offline
Last seen:3 months 3 weeks ago
工作人员
加入:2017-12-14 02:48
你好, 你所指的写入错误是具体是指什么?

你好,

你所指的写入错误是具体是指什么?

WHQYSMART
Offline
Last seen:9 months 1 week ago
加入:2020-02-12 12:47
谢谢您,我找到问题了。

谢谢您,我找到问题了。

ForrestDeng
Offline
Last seen:6 months 2 days ago
加入:2018-07-25 11:38
能分享一下什么原因吗

能分享一下什么原因吗

WHQYSMART
Offline
Last seen:9 months 1 week ago
加入:2020-02-12 12:47
用cli擦除,给的参数不对,造成擦除不完全

用cli擦除,给的参数不对,造成擦除不完全。反复写入导致flash内的数据错误。