音箱彻底坏透了怎么办
不是突然就死了吗, 你家的那台小智音箱? 插电没反应, 蓝牙也连不上, 按任何键都没动静。很多人第一反应就是把它扔到一边等死, 或者直接送去维修让售后给换了。可你知道拆开之后发现主板完好, 焊点也没问题, 到底是哪里出了毛病吗?
存在这样一个问题, 它实际上是颇为常见的。智能音箱当中的主控SoC,其集成了CPU, 还集成了音频处理以及Wi-Fi蓝牙模块, 一旦在某个环节出现卡住的情况, 那么整个系统就会呈现黑屏且无响应的状态。传统的方法对其没有办法, 所以就得依靠一项冷门技术, 也就是JTAG调试。
什么是JTAG调试接口
听起来很陈旧过时的JTAG这个名字, 仿若上世纪的电子接口一般俗常。然而它于现代电子设备维修而言, 却是有如救命稻草般至关重要的存在。它乃是由IEEE 1149.1标准所定义的一个五线接口, 专门被用于debug芯片内部状态。

借由TCK时钟线, 以及TMS模式选择线, 还有TDI输入线与TDO输出线, 能够将主板之上的全部芯片予以串联。哪怕那个设备已然完全死机, 只要依旧处于供电状态之时, 便能够借助仿真器强行暂停CPU, 进而读取寄存器内容以及堆栈路径。
小智音箱死机案例
有一批, 名为小智音箱的产品, 在出厂之后, 根本就无法启动。其电源处于正常状态, 并且, Flash芯片之中, 也存有数据, 然而, 主机却就是一动不动。产线尝试过各种各样的烧录方案, 结果都没有效果, 眼看着, 就要判定主板存在不良, 从而进行批量报废。
进行研发工作, 最终拿出JTAG接到相关设备上, 读取了PC指针之后才发现, 程序停在了空地址处, 这属于非常典型的Flash擦除失败情况。要不是有这个接口, 这几十块状态良好的板子便会被白白地扔掉了。
jtag newtap esp32s3 cpu -irlen 5 -expected-id 0x12345678
jtag newtap wm8960 codec -irlen 4 -ignore

JTAG调试的布线门道
openocd -f esp32s3-jtag.cfg
倘若意欲叫 JTAG 在消费电子产品之中达成稳定运作的状态, 那么布线是存在一定讲究的。走线必然得短且直, 并且要离诸如 I2S 音频总线这般的高频干扰源远远的。过往之时我们曾将 JTAG 线绕至背面而后再引出, 然而结果却是识别始终处于不稳定的情形, 最终经过探寻发觉原来是布线过长进而引发了信号反射。
arm-none-eabi-gdb firmware.elf
(gdb) target remote :3333
(gdb) monitor reset halt
(gdb) info registers
(gdb) x/16wx 0x40000000 # 查SRAM内容
除此之外, 电平的转换也是相当关键的, 众多的SoC运用的是1.8V的IO电平, 然而仿真器默认输出的却是3.3V, 要是不进行转换的话, 情况较轻的时候会导致通信失败, 情况严重的时候则会烧坏芯片, 如今我们会在入口的地方添加双向电平转换IC, 以此来确保安全。
多芯片链式调试技巧

现今的智能音箱主板之上, 存在着一串芯片, 其中包括主控SoC、音频Codec、Wi-Fi模组, 它们都有可能挂在同一条JTAG链上。要是ID顺序以及指令长度配置出现不对的情况, 那么在扫描的时候就会报出"tap错误"。
调试期间, 我们遭遇过Codec的TAP对主控识别产生干扰的状况。解决途径为, 于配置文件当中明确声明仅留意主控JTAG后, 设置跳过ID, 以使非目标设备自行实施旁路。
JTAG不只是修故障
在生产测试这个环节当中, JTAG同样是具备用途功用的。借助边界扫描这项技术能够凭借协议纯粹依靠协议直接对PCB焊接质量予以检测, 并不需要去运行固件。将其与自动测试设备进行相应配合, 这种情况下, 单台检测能够在三秒以内完成, 从而使得良率管控效率有了大幅度的有效提升。
有些人询问为何不是每一台音箱都配备JTAG, 入门级款式为了节省成本会采用两线制的SWD进行替代, 然而中高端产品将可维护性视作竞争力, 我们的小智Pro系列一直保留着完整的JTAG, 并且还配套了自动化诊断平台。
提醒:请联系我时一定说明是从全国伴游信息网上看到的!