DEFMT の出力がない
DEFMT_LOG フィルターを確認してください:
重大度が低い順から高い順のフィルターレベルは、TRACE、DEBUG、INFO、WARN、ERROR です
DEFMT のフィルタリングレベルの詳細はこちら
これは複数の方法で設定できます:
- probe-rs ベースの runner で
cargo runを使用している場合:- ビルド時の
ENV VAR:DEFMT_LOG=trace cargo build ... .cargo/config.toml内。注: cargo には、再ビルド時に変更を自動的に認識しないバグがあります。[env]DEFMT_LOG = "trace"
- ビルド時の
- VSCode プラグインを使用している場合、
rttEnabledがtrueになっており、consoleLogLevelが適切なフィルターレベルに設定されていることを確認してください:{"version": "0.2.0","configurations": [{// 省略..."coreConfigs": [{// 省略 ...,"rttEnabled": true}],"consoleLogLevel": "Console", //Console, Info, Debug}],}
memory.x ファイルが正しいことを確認してください:
- origin オフセットがデータシート/アプリケーションに従って正しいことを確認してください
- 長さがデータシート/アプリケーションに従って正しいことを確認してください
- 注: RAM の値を低くするのは問題ありませんが、チップの仕様を超える値にするとクラッシュし、RTT が接続できなくなります。
正しい Chip が選択されていることを確認してください:
.cargo/config.tomlのrunner。例:runner = "probe-rs run --chip STM32L451RCTx"- VSCode プラグインを
launch.jsonのconfigurations/chipで使用している場合{"version": "0.2.0","configurations": [{// 省略..."chip": "STM32L451RCTx",// 省略...}],}
コード内で defmt_rtt が「使用」されていることを確認してください:
そうでない場合、コンパイル時にリンクされません。例:
use defmt_rtt as _;STM32 シリーズのチップでは、BOOT0 ピンの状態を確認してください:
- BOOT0 が HIGH またはフローティングの場合、コアは書き込まれたファームウェアではなく内部ブートローダーから実行されます。
- SWD プログラミングのために BOOT0 は LOW にプルされている必要があります。ただし、HIGH またはフローティングでも書き込みが成功したように見えることがありますが、ファームウェアは正しく実行されません。
ツール類が最新であることを確認してください:
活発に開発・改善されているあらゆるツール群と同様に、一部が更新されて破壊的変更が入った場合、動作させるには他のツールも更新する必要があることがあります。