Probe-run
VSCode向けの rust-analyzer プラグインは、すべてのテストまたは main() 関数の上に便利な小さな ▶ Run ボタンを表示してくれます。これにより、エディターから直接コードを実行できます。
しかし残念ながら、組み込みプロジェクトではこれはそのままでは動作しません。▶ Run をクリックすると rust-analyzer は cargo run を呼び出しますが、cargo 自体は組み込みターゲット上でアプリケーションをフラッシュして実行する方法を知らないためです。
ただし、Rust-Analyzer は probe-run、組み込み開発向けのカスタム cargo ランナー とシームレスに統合できます。
probe-run は cargo サブコマンドではなく cargo ランナーなので、必要なのは cargo run が呼び出されたときに代わりに probe-run を使用するよう設定を変更することだけです。その後は、ネイティブプロジェクトと同じように ▶ Run ボタンを使用できます。
この設定方法を示すために、cortex-m-quickstart をベースにしたプロジェクト、具体的には私たちの 初心者向け組み込みトレーニング のコード例を設定してみましょう。
まず、Rust-Analyzer と probe-run がインストールされていることを確認してください。
$ cargo install probe-run
次に、私たちのチップがサポートされているかを確認する必要があります。これにより、後で設定で使用するバリアント名もわかります。
$ probe-run --list-chips
(..)
STM32F107VB
STM32F107VC
nrf52 series
Variants:
nRF52810_xxAA
nRF52811_xxAA
nRF52832_xxAA
nRF52832_xxAB
nRF52840_xxAA
nrf51 series
(..)
nRF52840 Development Kit 向けに例をビルドしたいので、選択するバリアントは nRF52840_xxAA です。
これで、プロジェクトの .cargo/config または .cargo/config.toml ファイルで、ボード向けにビルドされた実行可能ファイルを実行するときに使用するデフォルトの runner として probe-run を設定できます。
[target.thumbv7em-none-eabi]
runner = "probe-run --chip nRF52840_xxAA"
# ^^^^^^^^^ ^^^^^^^^^^^^^
[build]
target = "thumbv7em-none-eabi" # = ARM Cortex-M4
これで完了です。これで通常どおり Run ボタンを使用できます。