今年 2 月,高通悄然发布了与 EUD 交互的源代码。这或许是他们最近做的最令人兴奋的事情之一——尤其是如果你花了很多时间调试内核或 U-Boot——那就让我们来聊聊它吧。
EUD 代表嵌入式 USB 调试:本质上,这是一个自 2018 年左右以来几乎内置于所有 Qualcomm SoC 中的调试接口。它内部深入 SoC,不仅为 CPU 提供调试功能,还为众多 Hexagon 协处理器/DSP 提供调试功能;许多激动人心的细节都可以在这项 2014 年的专利中找到。
实际上,对于非量产设备(例如开发板,尽管一些量产设备似乎也能正常工作),可以通过写入几个寄存器,然后启动 USB PHY 来启用 EUD(尽管具体细节因代数而异)。你的电脑上显示的并不是你想象中的那种普通设备,而是一个 7 端口 USB 集线器,其中一个端口是“EUD 控制接口”。
使用正确的 USB 命令,第二个设备就会出现,它暴露了一个 SWD 接口!没错!直接通过 USB 线进行 SWD 操作,无需外部工具,无需焊接,也无需昂贵的调试器。这种封闭式调试(几乎)让谷歌的 Suzy-Q 汗颜!
对于不熟悉的人来说:JTAG 和 SWD 都是用于调试设备内部 CPU 内核的机制,就像您可以使用 GDB 在计算机上调试程序(或使用 IDE 集成调试器)一样。它们允许您设置断点、暂停执行、检查寄存器、单步执行指令以及执行其他各种有用的操作。
代码删除
一段时间以来,高通在 CodeLinaro 上发布了一个诱人的 openOCD 分支,承