SRAMにログ収集

溶接機器の設計をしていて、動作中の機器から、無線(XBee)により

ログを収集しようとしたところ、ノイズが大きくて、収集できなかった。

ログは、リアルタイムOSのログをそのまま出力しようとしていて

デバッグ環境では、便利に使えていたのだが。

そこで、ログをSRAMに保存することにした。

可変引数のsyslogの代わりを作成し、文字列を作成し、SRAMに保存

void set_syslog( uint_t errlevel, char *format, … )

{

va_list arg;

char err_msg[ MSG_LEN ];

              va_start( arg, format );

              vsprintf( err_msg, format, arg );     // err_msgに文字列保存

              va_end( arg );

              syslog( errlevel, err_msg );                           //シリアルにログを出力

              if( errlevel <= LOG_INFO  ) {                     // LOG_INFO 以上のメッセージのみ保存

                            save_msg( err_msg);                       //SRAMに保存

              }

}

SRAMに保存する関数(save_msg)では、時刻を付加し、書き込み位置計算を行い

文字列を保存する。

これにより、溶接が終了したあとで、動作不具合の調査が可能となった。