2021年11月06日

PIC32マイコンSYS_CONSOLE

今回はPIC32MX270F256BをターゲットにMPLAB X v5.45+Harmony3+XC32 v2.50を使用して、SYS_CONSOLEの使用方法について紹介します。

マイコンのデバッグをする場合、デバッガーを使って確認する方法の他にUART等を介してシリアルコンソールに情報を表示させる方法があります。個人的にはデバッガーよりもUARTとシリアルコンソールを使ったデバッグの方が早く、必要な情報を取り出せるため、よく利用しています。PIC32のHarmony3で利用可能なSYS_CONSOLEはシリアル出力のラッパー機能となっています。UARTの関数を直接呼び出してシリアル出力するよりも汎用性高く、利用しやすくなっています。システムに応じてコンソールの出力先のUARTを変更したり、USBCDCの出力に変更することも容易です。また、コンソールのデバッグレベルを使い分けることで、必要なコンソール出力のみに制限したりすることも容易にできます。


Harmony3ではSystem ServiceのConsole、Debugとしてライブラリが準備されています。今回はConsoleをUART2に接続して利用しました。Harmony3のプロジェクトグラフは下記の通りです。

sys_console1.jpg

必要に応じてUART2のボーレートやピンアサインの設定を行います。

出力のレベルはSYS_ERROR_FATAL、SYS_ERROR_ERROR、SYS_ERROR_WARNING、SYS_ERROR_INFO、SYS_ERROR_DEBUG から選択できます。デフォルトはSYS_ERROR_DEBUGとなっており、プロジェクトグラフのDebugから出力レベルを変更できます。コードではconfiguration.h内で下記のように定義が出力されています。

#define SYS_DEBUG_ENABLE
#define SYS_DEBUG_GLOBAL_ERROR_LEVEL SYS_ERROR_DEBUG

例えば、デバッグ時はSYS_ERROR_DEBUGにして、デバッグ終了後はSYS_ERROR_INFOにすると、SYS_ERROR_INFO以下のコンソールが出力されるようになり、SYS_ERROR_DEBUGのコンソール出力は出力されなくなります。コンソール出力をコメントアウトしたりせずに一括で変更できるため、非常に便利です。


コンソール出力の使い方は下記の通りです。
ヘッダのインクルードを追加します。
#include "system/debug/sys_debug.h"

出力関数は下記の通りです。
SYS_DEBUG_PRINT(SYS_ERROR_DEBUG, "\r\nInitOK\r\n");


コンソール入力を利用する場合は下記の変数をグローバル変数等に定義します。
SYS_CONSOLE_HANDLE consoleHandle;
ssize_t consoleReadSize;
char consoleBuffer[130];

入力関数は下記の通りです。入力がない場合はconsoleReadSizeが0になります。入力があった場合はそのbyte数がconsoleReadSizeに入り、データはconsoleBufferに格納されます。

consoleReadSize = SYS_CONSOLE_Read( consoleHandle, consoleBuffer, sizeof(consoleBuffer) );

UARTのコンソールはPIC32MXではデフォルトでDMA&リングバッファとして設定されているため、マイコンのメイン処理に対してコンソール出力の影響を抑えてデバッグすることが可能です。

これまで毎週更新していましたが、半導体不足でプロジェクトが停滞気味のため、今後のブログ更新はペースを減らして随時記事を投稿する予定です。
posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。