これまで4回にわたってARMマイコンでデバッグプローブにprintf出力する方法を説明した。
- LPCXpressoでセミホスティング - 滴了庵日録
- LPCXpressoでITM printf - 滴了庵日録
- MCUXpressoでRTT printf (その1) - 滴了庵日録
- MCUXpressoでRTT printf (その2) - 滴了庵日録
- MCUXpressoでUART printfの改善 (2020/11/06 追記)
各方法の比較を表にまとめる。
UART | セミホスティング | ITM | RTT | |
---|---|---|---|---|
出力先 | シリアルポート | デバッガ | デバッガ | Telnet |
速度 | △ 実装しだい |
× msec単位 |
〇 usec単位 |
◎ usec単位 |
接続ピン | △ UARTが必要 |
◎ SWD 2線のみ |
〇 SWOも必要 |
◎ SWD 2線のみ |
デバッガ切断時 | 〇 | × スタックする |
〇 | 〇 |
対応コア | 〇 コアは不問 |
〇 全てのCortex |
△ Cortex-M3以上 |
〇 全てのCortex |
対応デバッガ | ◎ 不要 |
〇 CMSIS-DAP 可 |
〇 CMSIS-DAP 可 |
△ J-Linkのみ |
このようにどの方式にも一長一短がある。ただし、セミホスティングに関しては速度が非常に遅く、またデバッガを接続していないと処理がスタックしてしまうという致命的な欠点があるので、ITMかRTTを利用できるならそちらを検討したほうが良いと思われる。