ossfriendlydebugerpast20years.pdf
OSS FriendlyなDebug Adapter 20年史常田 裕士
View Slide
Motivation 組み込み開発周りのOpenOCDやらデバッグアダプタの説明をしようとしたら、整理がつかなくった。 ベンダ依存性が強くてよくわからない話ばっかりなので、多少歴史的経緯を追った方がよさそう。
前史 昔の組み込み開発ではInCircuitEmulator(ICE)のような高価なデバッグ装置が必要だった 2000年ごろからハードウェアのテストに使っていたJTAGがソフトのデバッグにも使われるようになってきた。 それから少し遅れて、2005年ぐらいからOpenOCDを使ったOSSベースの組み込み開発環境が増えてきて、現在に至る。
FT2232とJTAG Adapter FTDI FT2232 (2006年?) USB – 高速シリアル変換のチップ このチップが登場して、JTAGポートを操作するHackが簡単に行えるようになった。 https://akizukidenshi.com/catalog/g/gM-02990/秋月電子でも2009年からモジュール取り扱い
FT2232ベースのJTAGデバッガーの流行 https://www.olimex.com/Products/ARM/JTAG/ARM-USB-OCD-H/?utm_source=platformio&utm_medium=docs 2000年代初頭の「格安PCB製造」の代表だった、ブルガリアのOlimexの製品。 https://strawberry-linux.com/catalog/items?code=15002 Strawberry-linuxでも2006年から販売。 まだD-SUB9 のシリアルが使われていた。 この製品に限らず、そこかしこでFT2232ベースのデバッガがつくられた。 OpenOCDには現在でも70以上のFT2232ベースのアダプタの設定ファイルが格納されている
SWDの普及 2本線でデバッグできるSWDも普及してきた。(ソフト開発から見ると、デバッグできればいいので、これもよく「JTAG」と呼ばれている) ARMのCPUとセットで、各社の~LINKが色々出てきた。各社の廉価なARMチップで作ってることが多数。 https://www.st.com/ja/development-tools/st-link-v2.html ST-LINKは廉価なクローンもたくさん作られた。
CMSIS-DAP 2012年にARMで共通のデバッグポート企画のCMSIS-DAPが制定された。 これで独自の~LINK自体はほぼ必要なくなり。ARM共通のデバッガがつくられるようになった。 標準的なデバッグ機能はこれで賄えるようになったので、商用のデバッグアダプタは独自機能で差別化する形に(J-Linkのログ機能のRTTなど)
PyOCD CMSIS-DAPでARMのデバッガが標準化されると、比較的大規模なソフトであるOpenOCDとは別のOCD実装が登場する。 PyOCDはPythonで書かれたOCD。OpenOCDがスクリプト言語のtclを組み込んで、複雑なカスタマイズを実現しているが、PyOCDはそもそもスクリプト言語。開発者的に取り回しがいい。 対象もCMSIS-DAPに絞っているので、ソフト自体もスッキリしている。 Raspberry Pi Picoを使ったデバッグアダプタのpicoprobeもこれで使える。
Blackmagic Probe OpenOCD、PyOCD、いずれもプロセス間通信でgdbと通信しているため、ソフトの構成としては、複雑なツールとなっている。 Blackmagic ProbeはOCD相当の機能をマイコンに組み込んで、シリアル通信でgdbと通信できるようにしている。 https://github.com/blacksphere/blackmagic gdbで直接デバッグできるようになるので、組み込み特有の設定のわずらわしさが軽減された。 次世代デバッグツールの方向性として注目。
最近のOSSのDebug AdapaterまとめSoC デバッグI/F OCDツール デバッガARM(最近のもの) SWD Blackmagic gdbSWD PyOCD gdbJTAG OpenOCD gdbARM(昔のもの) JTAG OpenOCD gdbRISCV/ESP32 JTAG OpenOCD gdb