probe-rsの使い方

Written on 2024-06-02

プロジェクト・テンプレートどおりに使う場合はcargo runすれば内部でprobe-rsが使われ、コマンドとして意識することはすくない。 しかし、直接、コマンドを実行することで、細かな操作を行うことができる。 ただし、ドキュメントは不足しているので必要に応じてソースを見る必要がある。

bootloaderのサブ記事だが、独立させておく。

❯ which probe-rs 
~/.cargo/bin/probe-rs

❯ probe-rs --help                            
The probe-rs CLI

Usage: probe-rs [OPTIONS] <COMMAND>

Commands:
  dap-server  Debug Adapter Protocol (DAP) server. See https://probe.rs/docs/tools/vscode/
  list        List all connected debug probes
  info        Gets info about the selected debug probe and connected target
  reset       Resets the target attached to the selected debug probe
  gdb         Run a GDB server
  debug       Basic command line debugger
  download    Download memory to attached target
  erase       Erase all nonvolatile memory of attached target
  run         Flash and run an ELF program
  attach      Attach to rtt logging
  trace       Trace a memory location on the target
  itm         Configure and monitor ITM trace packets from the target
  chip        Inspect internal registry of supported chips
  benchmark   Measure the throughput of the selected debug probe
  profile     Profile on-target runtime performance of target ELF program
  read        Read from target memory address
  write       Write to target memory address
  help        Print this message or the help of the given subcommand(s)

Options:
      --log-file <LOG_FILE>
          Location for log file
          
          If no location is specified, the log file will be stored in a default directory.

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

イメージ(バイナリ形式)を書き込む

ビルドしたELFを直接書き込むのではなく、そこから編集したイメージを書き込むときには。直接probe-rsコマンドを使う。

  • --format binでバイナリフォーマットであることを明示
  • --base-addressオプションで開始アドレスを指定(バイナリフォーマットは開始アドレスの情報が含まれていない)
  • --skipオプションで、イメージ先頭のスキップする長さを指定
❯ probe-rs download --chip RP2040 --protocol swd --format bin --base-address 0x10020000 --skip -0 ../target/${arch}/${debug}/app-blinky.base

チップをリセットする

❯ probe-rs reset --chip RP2040 --protocol swd

メモリ内容をダンプする

❯ probe-rs read --chip RP2040 --protocol swd b32 0x10020000 256