About probe-rs

probe-rs は、組み込みデバッグとターゲット操作のためのツールキットです。これにより、 ユーザーはデバッグプローブを介してマイクロコントローラーをプログラムし、デバッグできます。

probe-rs は次のことに役立ちます

  • ARM および RISC-V ターゲットへのファームウェアの書き込み。さらに多くの アーキテクチャにも対応予定です。
  • SWD および JTAG を介した、メモリの読み書き、実行、停止、ブレークポイント の設定と読み取り、ターゲットのリセット。
  • ターゲット上でファームウェアを実行し、RTTdefmt を介してログを取得し、 panic 時にスタックトレースを表示すること。
  • 実行中の RTT ログ、メモリ検査などを利用しながら、VS Code 経由でターゲット をデバッグすること。

この記事では、組み込みデバッグについてもう少し詳しく説明し、その中で probe-rs がどのような位置付けにあるのかを説明します。組み込みデバッグに慣れている場合は、 読み飛ばしてかまいません。{.tip}

組み込みデバッグ

多くのプログラミング分野では、ソフトウェアは最終的に実行されるシステムに近い コンピューターシステム上で作成できます。そのシステムは OS を備えており、 プロセス、ネットワークアクセス、そしておそらく GUI さえ備えています。

組み込みシステムでは、事情が異なります。ソフトウェアは、機能が大きく制限された ターゲット上で動作します。そこではオペレーティングシステムは動作せず、IO も 非常に限られています。ホストシステムからターゲットにソフトウェアをダウンロード (つまりフラッシュ)したり、デバッガーでターゲットをデバッグしたりするには、 ターゲットのデバッグインターフェースを使用する必要があります。このインターフェース はターゲットのアーキテクチャによって異なりますが、非常に基本的なものであり、 ターゲットのデバッグシステムを制御する特定のターゲットメモリ領域の読み書きに 基づいています。

現代のコンピューターは、USB など、ターゲットよりもはるかに高度な インターフェースを備えており、そのプロトコルをネイティブには使用できません。 そのため、ホストインターフェース(主に USB ですが、場合によっては Ethernet)からターゲットインターフェース(たとえば ARM では SWD)へ変換する デバッグプローブが必要になります。

デバッグプローブ
デバッグプローブ - 組み込みデバッグで非常に便利な道具です。

一部の新しいターゲットは USB 経由の DFU (デバイスファームウェアアップグレード) をサポートしていますが、それを介してデバッグすることはできません。DFU は ターゲットへの書き込みだけであれば便利ですが、その大きな制約のため、デバッグや そのソフトウェアの開発には適していません。

probe-rs

probe-rs は、さまざまなメーカーのデバッグプローブのプロトコルと、さまざまな チップアーキテクチャのプロトコルを実装したライブラリです。さらに、多くの ターゲットへの書き込みや、それらへのソフトウェアのダウンロードも行えます。

probe-rs はもともと Rust コミュニティ向けに作られましたが、C での プログラミングにも自由に利用できます。