Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ossfriendlydebugerpast20years.pdf

soburi
October 27, 2021

 ossfriendlydebugerpast20years.pdf

ossfriendlydebugerpast20years.pdf

soburi

October 27, 2021
Tweet

More Decks by soburi

Other Decks in Technology

Transcript

  1. OSS Friendlyな
    Debug Adapter 20年史
    常田 裕士

    View Slide

  2. Motivation
     組み込み開発周りのOpenOCDやらデバッグアダプタの説明をしようとしたら、
    整理がつかなくった。
     ベンダ依存性が強くてよくわからない話ばっかりなので、多少歴史的経緯を
    追った方がよさそう。

    View Slide

  3. 前史
     昔の組み込み開発ではInCircuitEmulator(ICE)のような高価なデバッグ装置が
    必要だった
     2000年ごろからハードウェアのテストに使っていたJTAGがソフトのデバッグ
    にも使われるようになってきた。
     それから少し遅れて、2005年ぐらいからOpenOCDを使ったOSSベースの組み込
    み開発環境が増えてきて、現在に至る。

    View Slide

  4. FT2232とJTAG Adapter
     FTDI FT2232 (2006年?)
     USB – 高速シリアル変換のチップ
     このチップが登場して、JTAGポートを操作するHackが簡単に行えるようになった。
     https://akizukidenshi.com/catalog/g/gM-02990/
    秋月電子でも2009年からモジュール取り扱い

    View Slide

  5. 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ベースのアダプタの設定ファイルが
    格納されている

    View Slide

  6. SWDの普及
     2本線でデバッグできるSWDも普及してきた。
    (ソフト開発から見ると、デバッグできればいいので、これもよく「JTAG」と
    呼ばれている)
     ARMのCPUとセットで、各社の~LINKが色々出てきた。
    各社の廉価なARMチップで作ってることが多数。
     https://www.st.com/ja/development-tools/st-link-v2.html
     ST-LINKは廉価なクローンもたくさん作られた。

    View Slide

  7. CMSIS-DAP
     2012年にARMで共通のデバッグポート企画のCMSIS-DAPが制定された。
     これで独自の~LINK自体はほぼ必要なくなり。ARM共通のデバッガがつくられ
    るようになった。
     標準的なデバッグ機能はこれで賄えるようになったので、商用のデバッグアダ
    プタは独自機能で差別化する形に(J-Linkのログ機能のRTTなど)

    View Slide

  8. PyOCD
     CMSIS-DAPでARMのデバッガが標準化されると、比較的大規模なソフトである
    OpenOCDとは別のOCD実装が登場する。
     PyOCDはPythonで書かれたOCD。OpenOCDがスクリプト言語のtclを組み込んで、
    複雑なカスタマイズを実現しているが、PyOCDはそもそもスクリプト言語。
    開発者的に取り回しがいい。
     対象もCMSIS-DAPに絞っているので、ソフト自体もスッキリしている。
     Raspberry Pi Picoを使ったデバッグアダプタのpicoprobeもこれで使える。

    View Slide

  9. Blackmagic Probe
     OpenOCD、PyOCD、いずれもプロセス間通信でgdbと通信しているため、ソフ
    トの構成としては、複雑なツールとなっている。
     Blackmagic ProbeはOCD相当の機能をマイコンに組み込んで、シリアル通信で
    gdbと通信できるようにしている。
     https://github.com/blacksphere/blackmagic
     gdbで直接デバッグできるようになるので、組み込み特有の設定のわずらわし
    さが軽減された。
     次世代デバッグツールの方向性として注目。

    View Slide

  10. 最近のOSSのDebug Adapaterまとめ
    SoC デバッグI/F OCDツール デバッガ
    ARM(最近のもの) SWD Blackmagic gdb
    SWD PyOCD gdb
    JTAG OpenOCD gdb
    ARM(昔のもの) JTAG OpenOCD gdb
    RISCV/ESP32 JTAG OpenOCD gdb

    View Slide