ARMで4種類のprintfデバッグ方式まとめ

これまで4回にわたってARMマイコンデバッグプローブにprintf出力する方法を説明した。

各方法の比較を表にまとめる。

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を利用できるならそちらを検討したほうが良いと思われる。