probe-rs

probe-rs CLIユーティリティには多くのサブコマンドがあり、この文書の各セクションで説明しています。

最もよく使われるのは probe-rs run サブコマンドです。

適用できる場合、これは組み込み開発を行う際の推奨される方法です。

これは任意の組み込みバイナリで動作する点に注意してください。ADA、C、C++、Rust、あるいはネイティブのARMバイナリにコンパイルできるその他の言語であっても構いません。

run

run サブコマンドは cargo のターゲットランナーです。これにより、シンプルな cargo run でターゲットへのフラッシュ、起動、ログ出力が可能になります。

プロジェクトでこのランナーを使用するには、.cargo/config.toml に追加してください。

[target.<architecture-triple>]
runner = 'probe-rs run --chip <chip-name>'

これで、ネイティブバイナリの場合と同じようにプロジェクトで cargo run を実行でき、標準出力に書き込んだかのように、同じコンソールで RTTdefmt のログを受け取れます。

RTT または defmt を使用するには、それぞれの crate の手順に従ってファームウェアに統合してください。

attach

probe-rs attachprobe-rs run とまったく同じように動作しますが、現在実行中の状態を保持するため、接続時にリセットを発行せず、ターゲットへのフラッシュも行いません。

これは、ターゲットの状態を変更せずに調査するのに最適です。ファームウェアをまったく把握していない場合でも有用です。

serve

probe-rs のサーバーおよびクライアントのサポートは remote feature の有効化が必要であり、デフォルトの配布物では利用できません。

probe-rs serve は、マシン上でリモートサーバーを起動します。別のマシンから、デバイスへの runattach、メモリの readwrite、プローブの list、およびデバイスの info の取得を行えます。

サーバーは WebSocket で通信します。その上に独自の TLS レイヤーを追加することを推奨します。probe-rs の設定ファイルでは、バインドアドレスとポート、およびユーザー認証情報の一覧を指定できます。

サーバーに接続するには、--host および --token オプションを使用します: probe-rs [command] --host ws[s]://<host> --token <token> [additional arguments]

追加コマンド

追加コマンドの詳細については、probe-rs help または probe-rs <command> --help コマンドを使用してください。

設定

probe-rs は設定ファイルで設定できます。現在利用可能なオプションは次のとおりです。

  • サーバーのリッスンパラメーター
  • サーバーユーザー
  • コマンドプリセット

設定ファイルは tomljsonyamlyml のいずれかのファイルで、次の場所に配置できます。

  • 現在の作業フォルダー
  • probe-rs 実行ファイルがあるフォルダー
  • ユーザーの HOME ディレクトリ

サーバーオプションの指定

サーバーのポートとバインドアドレス、およびユーザー一覧を指定できます。ユーザーが存在しないサーバーには接続できません。特定のユーザーがアクセスできるプローブを設定することもできます。ユーザートークンは一意である必要があり、ユーザー名はアクセスのログ記録にのみ使用されます。

[server]
port = 3000 # デフォルトは3000です
address = "127.0.0.1" # デフォルトは0.0.0.0です
[[server.users]]
name = "user1"
token = "foo"
access = "all" # 任意。デフォルトは "all"
# access = { allow = ["probe serial 1", "probe serial 2"] }
# access = { deny = ["probe serial 1", "probe serial 2"] }

プリセットの指定

プリセットを使うと CLI 引数を簡略化できます。任意の数のプリセットを定義し、--preset <name> オプションでそのうちの1つを選択できます。すると、そのプリセット内の引数がコマンドに追加されます。--preset が指定されていない場合に選択される default プリセットを作成することもできます。

たとえば、次のようなプリセットを用意できます。

[presets]
preset_name = { probe = "vid:pid:serial", host = "remote", token = "token" }

すると、probe-rs run <firmware> --preset preset_name コマンドを実行すると、実質的には probe-rs run <firmware> --probe vid:pid:serial --host remote --token token を実行することになります。