Closed19
embedded rustでprobe-rsとdefmtを設定する

設定する前の環境はこれを元に作成している

まずはprobe-rsのインストール
セットアップはwindows+STLINK環境では特に不要そう(書き込みはSTLINK自体は今までも使っていたのでドライバは入っていた)

probe-rs chip list
でチップリストを見ることができる

runner = 'probe-rs run --chip STM32G431C6Tx'
単純にこれだけ追加するとcargo run -r
で以下のエラーが出る
Error: The flashing procedure failed for 'target\thumbv7em-none-eabihf\release\imu-fsr-stm32g4'.
Caused by:
Failed to configure a stack for the flash algorithm.

cargo add defmt
して
"-C", "link-arg=-Tdefmt.x",
を追加したが状況は変わらず

エラーが出ているのはこの部分

32KBのRAMで32KBのstack sizeを用意しようとしてない??

probe-rsをgithubリポジトリからクローンしてきて、stack_size: 32768
の行を削除した
cargo install --path probe-rs --features cli
でローカルのコードからインストールした。

これで無事にcargo run
が動いた

yamlを書き換えなくても--chip-description-path <chip description file path>
で実行時に直接指定することは可能らしい

issueとして起案しておいたのでアップデートあるかもです

こちらは修正対応いただきcloseされているので今後は問題なくデフォルト設定で書き込めると思われます

続いてdefmtの設定
Cargo.tomlの依存関係に以下を追加
defmt = "0.3"

VS Codeでのデバッガー設定
手順をちゃんと読んで設定すれば動いた
{
"version": "0.2.0",
"configurations": [
{
"preLaunchTask": "${defaultBuildTask}",
"type": "probe-rs-debug",
"request": "launch",
"name": "probe_rs Executable Test",
"flashingConfig": {
"flashingEnabled": true,
},
//!MODIFY
"chip": "STM32G431C6Tx",
"coreConfigs": [
{
//!MODIFY
"programBinary": "${workspaceRoot}\\target\\thumbv7em-none-eabihf\\release\\プロジェクト名",
"coreIndex": 0,
"rttEnabled": true
}
],
"env": {
//!MODIFY: Remove or use any of the supported DEFMT_LOG options.
"DEFMT_LOG": "info"
}
},
// 省略
このスクラップは2024/03/21にクローズされました