Nanopb es una implementación de Protocol Buffers de tamaño de código pequeño en ansi C. Es especialmente adecuado para su uso en microcontroladores, pero se adapta a cualquier sistema con memoria restringida.
Para utilizar la biblioteca nanopb, debes hacer dos cosas:
protoc
.La forma más sencilla de empezar es estudiar el proyecto en "ejemplos/simple". Contiene un Makefile, que debería funcionar directamente en la mayoría de los sistemas Linux. Sin embargo, para cualquier otro tipo de sistema de compilación, consulte los pasos manuales en README.txt en esa carpeta.
Los mensajes de Protocol Buffers se definen en un archivo .proto
, que sigue un formato estándar que es compatible con todas las bibliotecas de Protocol Buffers. Para usarlo con nanopb, necesita generar archivos .pb.c
y .pb.h
a partir de él:
python generator/nanopb_generator.py myprotocol.proto # For source checkout
generator-bin/nanopb_generator myprotocol.proto # For binary package
(Nota: para obtener instrucciones para nanopb-0.3.9.x y versiones anteriores, consulte la documentación de esa versión en particular aquí)
Los paquetes binarios para Windows, Linux y Mac OS X deben contener todas las dependencias necesarias, incluidos Python, la biblioteca python-protobuf y protoc. Si está utilizando git checkout o una distribución de código fuente simple, deberá instalar Python por separado. Una vez que tenga Python, puede instalar las otras dependencias con pip install --upgrade protobuf grpcio-tools
.
Puede personalizar aún más la generación del encabezado creando un archivo .options
. Consulte la documentación para obtener más detalles.
Si desea realizar un mayor desarrollo del núcleo nanopb o verificar su funcionalidad utilizando su compilador y plataforma, querrá ejecutar el conjunto de pruebas. Las reglas de compilación para el conjunto de pruebas se implementan mediante Scons, por lo que es necesario tenerlo instalado (por ejemplo: sudo apt install scons
o pip install scons
). Para ejecutar las pruebas:
cd tests
scons
Esto mostrará el progreso de varios casos de prueba. Si el resultado no termina en un error, los casos de prueba fueron exitosos.
Nota: Mac OS X por defecto tiene el alias 'clang' como 'gcc', aunque en realidad no admite las mismas opciones de línea de comando que gcc. Para ejecutar pruebas en Mac OS X, utilice: scons CC=clang CXX=clang++
. Se puede utilizar la misma forma para ejecutar pruebas con diferentes compiladores en cualquier plataforma.
Para plataformas integradas, actualmente existe soporte para ejecutar las pruebas en la placa de descubrimiento STM32 y el simulador simavr AVR. Utilice scons PLATFORM=STM32
y scons PLATFORM=AVR
para ejecutar estas pruebas.
El código Nanopb C en sí está diseñado para ser portátil y fácil de construir en cualquier plataforma. A menudo, el mayor obstáculo es ejecutar el generador que acepta los archivos .proto
y genera definiciones .pb.c
.
Existen reglas de construcción para varios sistemas:
extra/nanopb.mk
, ver examples/simple
extra/FindNanopb.cmake
, ver examples/cmake
tests/site_scons
(solo generador)BUILD.bazel
en la raíz de origenconanfile.py
en la raíz de origenY también integración a interfaces de plataforma: