ルネサス公式RAファミリ開発お役立ち情報ページがあります。本稿は、このページの中から、ソースコードを変更せずにprintfデバッグができるDymanic Printfを説明し、他の2方法と比較します。
printfデバッグ2方法
ソースコード変数値を出力し、デバッグする方法をprintfデバッグと呼びます。RAファミリ評価ボードにも、printfデバッグを容易にするツールや、外部ハードウェア(USART-USB変換)が実装済みのものもあります。
例えば、RAファミリのPFB-RA6E1(Cortex-M33/200MHz)、FPB-RA4E1(Cortex-M33/100MHz)の場合は、SEGGER J-Linkエミュレータサーキット経由でprintfデバッグできる無償J-Link RTT ViewerをPCへ追加すると、変数やユーザへの説明がPCへ出力できます。
競合他社の例では、STM32G071RBやLPCXpresso54114などは、評価ボードプログラミングとUSART-USBレベル変換機能を兼ねたハードウェアが実装済みのため、これを利用してVirtual COM経由でprintfデバッグが可能です。この場合も、Tera TermなどのPCコンソール表示フリーウェアが追加で必要になります。
Dynamic Printf
Dynamic Printfの特徴は、J-Link RTT ViewerやTera TermなどのPC追加ソフトウェア不要、e2studioなどEclipse IDEのDebug Console Viewへ、printfフォーマット変数数値を直接出力できることです。
Debug Console Viewへの出力設定は別途必要(Dynamic Printf動画30秒付近)ですが、前述のデバッグ2方法と比べると、ソースコードの記述変更も不要です。
Dynamic Printfは、ブレークポイントの一種です。一旦プログラムを停止し、設定変数をDebug Consoleへ出力後、自動的にプログラムを再開します。
例えば、センサAD変換値をDebug Consoleへ連続出力し、正常動作を確認する時などに重宝します。
RAファミリprintf 3方法まとめ
printf方法 | J-Link RTT Viewer | Virtual COM | Dynamic Printf |
ソースコード 記述例 |
APP_PRINT(“\r\n> Current FSP version is v%d.%d.%d.”, version.major, version.minor, version.patch); | VcomSndMsg(uint8_t *String, uint32_t Size); | 不要 (Debug Console設定要) |
追加ソフトウェア | J-Link RTT Viewer SEGGER_RTT common_utlils.h |
Tera Term | 不要 |
追加ハードウェア | 不要 | TTL-USBレベル変換要 | 不要 |
特徴 | 手軽にPC出力可能 色付き出力不可 |
競合他社標準PC出力 色付き出力可能 |
ソースコード不変 変数連続出力容易 |
出力例 |
RAファミリ評価ボードのprintfデバッグに使える3方法を説明、特徴などをまとめました。
printfデバッグは、デバッグの最も基本テクニックです。確認したい変数出力だけでなく、プログラムや操作方法の説明出力などにも使います。
Virtual COMの方法は、Tera Term追加が必要ですが一般的なMCU開発でよく用います。
J-Link RTT Viewerの方法は、TTL-USBレベル変換非搭載の低価格RAファミリ評価ボードで使います。
Dynamic Printfは、Eclipse IDE搭載機能です。ブレークポイントを設定し、変数のprintfフォーマット出力後、自動的に再実行します。センサAD変換値を連続表示する時など、ソースコード変更なしに手軽に変数出力とセンサ動作確認できるので便利です。
最初に示したルネサス公式RAファミリ情報ページには、本稿printf以外にも多くのTipsが掲載中です。説明や動画が短く纏まっているので、隙間時間のチェックに都合が良く、開発ヒントも得られます。