Nanopb は、ANSI C でのコード サイズの小さいプロトコル バッファ実装です。特にマイクロコントローラでの使用に適していますが、メモリが制限されているあらゆるシステムに適合します。
nanopb ライブラリを使用するには、次の 2 つのことを行う必要があります。
protoc
を使用して、nanopb 用の .proto ファイルをコンパイルします。始める最も簡単な方法は、「サンプル/シンプル」でプロジェクトを学習することです。これには Makefile が含まれており、ほとんどの Linux システムで直接動作します。ただし、他の種類のビルド システムの場合は、そのフォルダー内の README.txt にある手動の手順を参照してください。
プロトコル バッファーのメッセージは、すべてのプロトコル バッファー ライブラリと互換性のある標準形式に従っている.proto
ファイルで定義されます。 nanopb で使用するには、そこから.pb.c
および.pb.h
ファイルを生成する必要があります。
python generator/nanopb_generator.py myprotocol.proto # For source checkout
generator-bin/nanopb_generator myprotocol.proto # For binary package
(注: nanopb-0.3.9.x 以前の手順については、ここで特定のバージョンのドキュメントを参照してください)
Windows、Linux、Mac OS X 用のバイナリ パッケージには、Python、python-protobuf ライブラリ、protoc など、必要な依存関係がすべて含まれている必要があります。 git checkout またはプレーンなソース配布を使用している場合は、Python を個別にインストールする必要があります。 Python を入手したら、 pip install --upgrade protobuf grpcio-tools
を使用して他の依存関係をインストールできます。
.options
ファイルを作成すると、ヘッダー生成をさらにカスタマイズできます。詳細についてはドキュメントを参照してください。
nanopb コアのさらなる開発を実行する場合、またはコンパイラとプラットフォームを使用してその機能を検証する場合は、テスト スイートを実行する必要があります。テスト スイートのビルド ルールは Scons を使用して実装されるため、それをインストールする必要があります (例: sudo apt install scons
またはpip install scons
)。テストを実行するには:
cd tests
scons
これにより、さまざまなテストケースの進行状況が表示されます。出力がエラーで終了しない場合、テスト ケースは成功しています。
注: Mac OS X はデフォルトで「clang」を「gcc」としてエイリアスしますが、実際には gcc と同じコマンド ライン オプションをサポートしていません。 Mac OS X でテストを実行するには、 scons CC=clang CXX=clang++
を使用します。同じ方法を使用して、任意のプラットフォームで異なるコンパイラを使用してテストを実行できます。
組み込みプラットフォームの場合、現在、STM32 ディスカバリー ボードおよび simavr AVR シミュレーターでのテストの実行がサポートされています。これらのテストを実行するには、 scons PLATFORM=STM32
およびscons PLATFORM=AVR
を使用します。
Nanopb C コード自体は移植可能で、あらゆるプラットフォーム上で簡単に構築できるように設計されています。多くの場合、より大きなハードルは、 .proto
ファイルを取り込んで.pb.c
定義を出力するジェネレーターを実行することです。
いくつかのシステムにはビルド ルールが存在します。
extra/nanopb.mk
、 examples/simple
参照extra/FindNanopb.cmake
、 examples/cmake
参照tests/site_scons
(ジェネレーターのみ)BUILD.bazel
conanfile.py
また、プラットフォーム インターフェイスへの統合も可能です。