This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/F28M35H52C:UniFlash:停止CPU时出现问题。 (错误-1266@0x0)设备处于复位状态...

Guru**** 2539500 points
Other Parts Discussed in Thread: UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/618177/ccs-f28m35h52c-uniflash-trouble-halting-cpu-error---1266-0x0-device-is-held-in-reset

部件号:F28M35H52C
主题中讨论的其他部分:UNIFLAASH

工具/软件:Code Composer Studio

芯片是F28M35H52C1。  JTAG仿真器是德州仪器(TI)的XDS100v3 USB调试探头,  

我曾使用UniFlash为F28M35的Cortex_M3内核一次刻录多个Flash图像(具有离散负载地址的.bin文件)。 但没有成功。 我忘记了弹出错误消息上的确切内容(可能只是告诉我写入多个图像失败)。

然后,我尝试CCS调试Cortex_M3内核。 但JTAG仿真器无法再连接到它,并报告了以下错误:

连接到目标时出错:
(错误-1170 @ 0x0)
无法访问DAP。 重置设备,然后重试此操作。 如果错误仍然存在,请确认配置,关闭电路板电源后重启,和/或尝试更可靠的JTAG设置(例如,Lower TCLK)。
(仿真软件包6.0 .628.1)

为了区分问题,我使用相同的仿真器通过CCS为新F28M35刻录映像,该过程成功。

我继续在新型F28M35上进行测试...

1.关闭CCS。

2.由UniFlash连接

3.单击左侧菜单“内存”-> Cortex_m3/0和“读取目标设备”。 在初始化和配置调试器后,“加载循环”图标会持续运行很长时间。 有时,它似乎永远在运行,有时在等待很长时间后,它会在内存浏览器中显示数据。 不管怎样,它始终在控制台上报告错误:

[ERROR] Cortex_M3_0:停止目标CPU时出错。(错误- 1266 @0x0)设备处于重置状态。将设备从重置状态中取出,然后重试此操作。[仿真软件包6.0。628.3 ]

对于C28内核,它报告了类似错误:设备处于重置状态。

但实际上没有硬件重置。 使用CCS调试或加载映像时,不会出现此类“保留在重置中”错误。  

我观察到,通过CCS,我在Cortex_M3内核上编写了从0x0020 0000开始的0xFFFFFFFF。 但是,在执行上述过程从UniFlash读取此类内存后,所有数据都设置为0x0万。 当我从CCS再次读取这些内存时,它实际上是全0。

是否是因为"设备处于重置状态",并将所有重置为0?

参考芯片的数据表

"用户在擦除闪存期间不应使用全部零作为密码或重置设备。 在擦除例程期间重置设备可能会导致密码为零或未知。 如果在密码位置全部为零时重置设备,则无法通过密码匹配流解锁设备。 使用全为零的密码将严重限制用户调试安全代码或重新编程闪存的能力。"

第一个芯片无法通过JTAG仿真器连接的原因是,当UniFlash执行擦除作业时,芯片被意外重置了吗?  如果是,什么会导致芯片保持复位?

希望看到您的意见。  

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    感谢您发送详细的帖子。

    我的第一个问题是:当您将示例代码加载到设备时,是发生了问题还是该代码为空? 根据您的解释,代码似乎正在影响整个设备的状态,从而导致连接问题。

    一般而言,JTAG调试器必须能够控制器件才能成功连接到它-例如,由错误代码或外部看门狗计时器导致的连续重置可能会导致与您所看到的类似的问题。

    此外,您可能怀疑,如果密码区域被随机数据覆盖,直接将二进制文件写入设备内存可能会导致设备锁定。 乍一看,我不认为这是您的案例中发生的情况,但我会仔细检查您写入数据的内容和位置。 例如,在图1中,您说您正在将数据从0x20万写入0x20FFFF,这不仅写入闪存ECC位区域,还写入OTP。

    在图2和图3中,调试探测器报告设备处于复位状态的事实使从设备读取的任何数据无效,因此Uniflash屏幕中显示的零是假数据。

    我无法完全理解您在图4中所做的操作,但我怀疑设备的先前状态可能已导致在后续尝试中无效或连接问题。

    请参阅以下页面中的错误说明-1170 (只需搜索字符串"1170")。
    software-dl.ti.com/.../ccsv7_debugging_jtag_connectivity_issues.html

    此外,根据设备的不同,设备本身可能会显示为"保持复位",但实际上设备可能已锁定-如果设备已被密码锁定,也是如此。 为此,只需在上面的同一页中搜索字符串“1015”。 它包含一些有关如何解锁设备的提示。

    最后,我使用XDS100v3测试了F28M35 controlCARD上的几个代码加载/执行,但找不到任何相关问题。

    希望这能有所帮助,
    拉斐尔