専門家が一般的に使用する3つのオープンソースライブラリにより、MCU開発がより効率的になります

上の「UncleWheat」をクリックして「Top/ StarPublicAccount」を選択してください

福祉乾物、お早めにお届け

みなさん、こんにちは。私はウィートです。システムの開発と調整の過程でログシステムが重要です。

特にプロジェクトで問題が発生した後、問題を特定するのに役立つログがないことは非常に苦痛であることを誰もが知っておく必要があります。

プログラムをデバッグするためにデバッガーを常にステップ実行できるとは限らないため、デバイスの実行ログは特に重要です。

通常、ログには次の要件があります。

  • さまざまなログレベル(Debug、、、、;WarningInfo, ErrorFatal

  • ログ印刷は、次のようprintfに簡単に使用できる必要があります。

  • ログレベルを設定する機能。

  • 小さな足跡;

  • 構成可能で、ロギングも無効にできます。

  • さまざまなログレベルに基づく色の強調表示をサポートします。

  • 構成、タイムスタンプをカスタマイズできます。

  • RTOSをサポートします。

上記は比較的基本的な機能ですが、組み込みデバイスでは、デバイスの実行ログを保存したい場合があり、次の機能のいくつかが必要です。

  • 組み込みファイルシステムに保存するシリアル端末などの複数のアクセス方法をサポートします。

  • シリアル端末を介してアクセスするためのシェルコマンドラインをサポートします。

これらの要件のすべてが満たされるわけではありません。

一般的に使用されるものに加えてlog4clog4cppここにあなたに推奨される3つの非常に優れたオープンソースログライブラリがあります。これらはシングルチッププロジェクトでの使用により適しています。最初の軽量から後部の機能豊富なものまで、最後のものは非常に強力ですので、最後まで我慢してください。

rxi_log

プロジェクトアドレス:https://github.com/rxi/log.c

C99に基づいて実装された単純なログライブラリ。具体的な出力は次のとおりです。

6f40e2fc6665e54a2635700f8ddfe998.png
画像-20211204142024466

特定の使用法

log.cおよびをソースコードに統合log.hしてプロジェクトに組み込むことができます。ログを印刷する必要がある場合は、以下に示すように、次のAPIを呼び出すことができます。

log_trace(const char *fmt, ...);
log_debug(const char *fmt, ...);
log_info(const char *fmt, ...);
log_warn(const char *fmt, ...);
log_error(const char *fmt, ...);
log_fatal(const char *fmt, ...);

これらのAPIの他に、、などがありますlog_set_quiet詳細については、元のプロジェクトを参照してください。log_set_lockLOG_USE_COLOR

ステーク

プロジェクトアドレス:https://github.com/rdpoor/ulog

uLogは、組み込みマイクロコントローラーまたはリソースに制約のあるシステムに構造化されたロギングメカニズムを提供します。これは、人気Log4cのプラットフォームのLog4j背後にあるいくつかの概念を継承していますが、オーバーヘッドは低くなっています。

uLogのいくつかの機能:

  • uLogは、ほとんどすべての環境に簡単に統合でき、1つのヘッダーと1つのソースファイルで構成され、純粋なCで記述されます。

  • uLogは、おなじみの重大度レベル(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)を提供します。

  • uLogは、複数のユーザー定義出力(コンソール、ログファイル、メモリバッファーなど)をサポートし、それぞれに独自のレポートしきい値レベルがあります。

  • uLogは「積極的に独立」しており、依存関係は最小限で、stdio.h、string.h、およびstdarg.hのみが必要です。

  • uLogを使用しない場合、邪魔になりません。コンパイル時にULOG_ENABLEDが未定義の場合、ロギングコードは生成されません。

  • uLogは十分にテストされています。詳細については、付属のulog_test.cファイルを参照してください。

20f5be4ab0e2e637db344e2ac7738d87.png
色分け

EasyLogger

プロジェクトアドレス:https://github.com/armink/EasyLogger

063ef0759fe744db4006d1dcddb22a81.png
テキストの色

私はこのプロジェクトを長い間使ってきたので、強くお勧めします。RTOSに統合されたRT-Threadの作品です。サポートされている機能は非常に豊富で、基本的にさまざまな開発のニーズを満たしています。

機能は次のとおりです。

  • 轻量,ROM<1.6K, RAM<0.3K

  • 複数のアクセスモードをサポートします(例:ターミナル、ファイル、データベース、シリアルポート、485、フラッシュ...);

  • ログの内容には、レベル、タイムスタンプ、スレッド情報、プロセス情報などを含めることができます。

  • スレッドセーフで、非同期出力モードとバッファ出力モードをサポートします。

  • さまざまなオペレーティングシステム(RT-Thread、UCOS、Linux、Windows ...)をサポートし、ベアメタルプラットフォームもサポートします

  • ログはRAW形式をサポートし、hexdumpをサポートします。

  • タグレベルキーワードによる動的フィルタリングをサポートします;

  • ログの各レベルは、異なる色の表示をサポートしています。

  • これは非常に拡張性が高く、プラグインの形で新しい機能の拡張をサポートします。

上記はこのプロジェクトのほんの一部です。詳細については、プロジェクトのアドレスを参照してください。

まとめ

通常の開発でのログの使用に注意を払い、開発段階ごとに異なるレベルのログを設定し、モジュールごとにモジュールログを設定して、問題の特定を容易にし、問題を迅速に解決し、効率を向上させることを願っています。 。この号の記事はこちらです。次号でお会いしましょう。

- 終わり -

過去に推奨

一見単純なコードですが、隠された秘密...

ひび割れを防ぐ方法は?MCU暗号化技術が明らかに

交通奴隷になるのをやめることをお勧めします...

ヘッダーファイルの大学は、C言語がこれらの原則に注意を払う必要があることを求めています...

実際の戦闘で要約された7つのCプログラム、良いものは隠されていません

上のカードをクリックしてフォローしてください

4332a0cf7bab8c9a9e968bbe89446d8d.png

あなたが注文したものはすべて良さそうです、私はそれが好きなのでそれを真剣に受け止めます

おすすめ

転載: blog.csdn.net/u010632165/article/details/123196402