Nanopb ist eine Protokollpufferimplementierung mit kleiner Codegröße in Ansi C. Sie eignet sich besonders für den Einsatz in Mikrocontrollern, passt aber in jedes System mit begrenztem Speicher.
Um die nanopb-Bibliothek verwenden zu können, müssen Sie zwei Dinge tun:
protoc
.Der einfachste Einstieg besteht darin, das Projekt unter „Beispiele/einfach“ zu studieren. Es enthält ein Makefile, das unter den meisten Linux-Systemen direkt funktionieren sollte. Für jede andere Art von Build-System lesen Sie jedoch die manuellen Schritte in README.txt in diesem Ordner.
Protocol Buffers-Nachrichten werden in einer .proto
Datei definiert, die einem Standardformat folgt, das mit allen Protocol Buffers-Bibliotheken kompatibel ist. Um es mit nanopb zu verwenden, müssen Sie daraus .pb.c
und .pb.h
Dateien generieren:
python generator/nanopb_generator.py myprotocol.proto # For source checkout
generator-bin/nanopb_generator myprotocol.proto # For binary package
(Hinweis: Anweisungen für nanopb-0.3.9.x und älter finden Sie in der Dokumentation der jeweiligen Version hier)
Die Binärpakete für Windows, Linux und Mac OS X sollten alle notwendigen Abhängigkeiten enthalten, einschließlich Python, Python-Protobuf-Bibliothek und Protoc. Wenn Sie Git Checkout oder eine reine Quelldistribution verwenden, müssen Sie Python separat installieren. Sobald Sie Python haben, können Sie die anderen Abhängigkeiten mit pip install --upgrade protobuf grpcio-tools
installieren.
Sie können die Header-Generierung weiter anpassen, indem Sie eine .options
Datei erstellen. Einzelheiten finden Sie in der Dokumentation.
Wenn Sie den nanopb-Kern weiterentwickeln oder seine Funktionalität mit Ihrem Compiler und Ihrer Plattform überprüfen möchten, sollten Sie die Testsuite ausführen. Die Build-Regeln für die Testsuite werden mit Scons implementiert, Sie müssen diese also installiert haben (z. B. sudo apt install scons
oder pip install scons
). So führen Sie die Tests aus:
cd tests
scons
Dadurch wird der Fortschritt verschiedener Testfälle angezeigt. Wenn die Ausgabe nicht mit einem Fehler endet, waren die Testfälle erfolgreich.
Hinweis: Mac OS Um Tests unter Mac OS X auszuführen, verwenden Sie: scons CC=clang CXX=clang++
. Auf die gleiche Weise können Tests mit verschiedenen Compilern auf jeder Plattform ausgeführt werden.
Für eingebettete Plattformen gibt es derzeit Unterstützung für die Ausführung der Tests auf dem STM32 Discovery Board und dem Simavr AVR-Simulator. Verwenden Sie scons PLATFORM=STM32
und scons PLATFORM=AVR
um diese Tests auszuführen.
Der Nanopb-C-Code selbst ist so konzipiert, dass er portierbar und einfach auf jeder Plattform zu erstellen ist. Die größere Hürde besteht oft darin, den Generator auszuführen, der die .proto
Dateien aufnimmt und .pb.c
-Definitionen ausgibt.
Es gibt Build-Regeln für mehrere Systeme:
extra/nanopb.mk
, siehe examples/simple
extra/FindNanopb.cmake
, siehe examples/cmake
tests/site_scons
(nur Generator)BUILD.bazel
im Quellstammverzeichnisconanfile.py
im QuellstammverzeichnisUnd auch Integration in Plattformschnittstellen: