概要
QualcommがEUD(Embedded USB Debug)のソースコードを公開。 EUDはQualcomm SoCの深いデバッグ機能をUSB経由で提供。 OpenOCDとの統合が進み、一般開発者も利用可能に。 セットアップやツール対応に課題は残るが、低レベルデバッグの大幅な進化。 今後のツール・ドライバ統合や利用事例の拡大に期待。
Qualcomm EUDソースコード公開の意義
- 2024年2月、 Qualcomm が EUD(Embedded USB Debug) のソースコードを静かに公開。
- EUD は2018年以降のほぼ全ての Qualcomm SoC に搭載、SoC内部のCPUやHexagon DSP等のデバッグ機能を提供。
- 開発ボードなどの非製品端末で、 レジスタ操作とUSB phy起動 でEUDが有効化。
- PC側には7ポートUSBハブとして認識され、 EUDコントロールインターフェース が1ポートに出現。
- 適切なUSBコマンドで SWD(Serial Wire Debug)インターフェース が出現、外部ツールや高価なデバッガ不要。
EUDの技術的特徴と使い方
- JTAG や SWD は、CPUコアのデバッグ(ブレークポイント、レジスタ参照等)を可能にする仕組み。
- QualcommがCodeLinaro上で OpenOCDのEUD対応フォーク を公開していたが、以前は内部ライブラリ依存だった。
- デバイス側のEUD有効化は Linuxカーネルに一部実装済み、新SoC向けの追加対応も進行中。
- ソース公開により、 誰でもビルド・修正が可能 に。Ubuntu 20.10 + Qualcomm GCC 8.xでビルド想定だが、一般的な環境では修正が必要。
- 修正済みコードや .gitignore 追加済みリポジトリが公開中。
OpenOCDとの統合と今後の課題
- OpenOCD 0.12.0 ベースでEUD対応パッチが追加、HexagonデバッグやLLDB向け改善も含む。
- 2年以上のOpenOCD本流の差分があり、 リベース作業 が必要。
- Snapdragon 845/855/865 で動作確認済み、新SoC(例:SM8450)は追加対応要。
- SMP(マルチコア)対応が未成熟、 maxcpus=1 での運用推奨。
- デバッグベースアドレスやCTIベースレジスタがSoCごとに異なるため、 動作報告やフィードバック が求められる。
実用面と今後の展望
- Linus Torvaldsはカーネルデバッガ利用に否定的だが、 U-Boot や セキュアワールド 向けデバッグ需要は増加傾向。
- Trusted Substrate 経由でTF-A, OP-TEE, U-Bootを含むBSP統合デバッグが容易化。
- SWD以外にも UART相当のCOMペリフェラル や トレースペリフェラル も存在、さらなる用途拡大が期待。
- 製品端末ではEUDが無効化されている場合が多いが、 デバッグポリシー 次第で例外も存在。
- EL2以上の実行レベル制御は不可、 カーネルレベルでのデバッグ用途 が主。
コミュニティへの呼びかけとまとめ
- 各SoCでの EUD有効化手順や動作報告 をlinux-msmリポジトリで募集。
- PRSRレジスタのsticky reset bitやSMP未対応等、 技術的課題 の解決に協力呼びかけ。
- EUD公開により、 高価なデバッグ機器不要・リモートデバッグ容易化 など大きなメリット。
- Qualcommの 開発者体験向上・オープン化推進 の好例、今後のツール統合や事例拡大に期待。