我们正在运行基于 CC2630的设计、该设计启用了引导加载程序后门功能。 它通过基于 FTDI 的电缆连接到 PC。
在正常情况下、PC 软件会通过对微控制器执行"ping"操作来初始化通信、该微控制器的顺序为三个字节0x03、0x00、0x00、这三个字节被微控制器正确忽略(因为尚未执行波特率检测)。 接下来、在等待约450ms 后、PC 发送必要的0x55、0x55 (两个字节)序列、用于自动波特率检测。 微控制器通过常规0x00、0xCC 序列进行确认、然后 PC 知道微控制器处于活动状态、并开始请求 ID 和大量其他内容。
但是、在某些情况下、微控制器不会 ACK 自动波特率检测。 这种情况并非总是发生的、但当发生这种情况时、始终是在新加电后发生的。
在这种情况下、PC 对0x03、0x00、0x00执行 ping 操作、等待450ms、然后发送0x55、0x55。 微控制器忽略此情况、PC 应用程序停止、并发送一条消息、表明它无法与微控制器通信。 如果我们随后再次运行 PC 应用程序(不进行循环通电或重置 micro)、PC 会 ping 0x03、0x00、0x00、而 micro (意外的) ACK 会使用0x00、0xCC 序列进行此操作。 我认为这表明在 PC 应用程序的上一次运行期间、先前的自动波特率检测尝试成功、但微控制器只是 dd、而不是当时的 ACK。 不管怎样、在第二次运行时、PC 非常高兴收到此 ACK 至其初始 ping、它跳过0x55、0x55序列(因为不再需要此序列)、并继续成功请求 ID 和其余通信。
是否有什么想法会导致这种行为? 我已经监视了 VDDS、VDDR、RESET 和 DIO2 (我们的 BL_PIN_NO)上的波形、在这种情况发生时以及在上电后第一次尝试通信时、这些波形看起来是相同的。
此致、
克里斯蒂安



