Nanopb — это реализация протокольных буферов небольшого размера на языке ansi C. Она особенно подходит для использования в микроконтроллерах, но подходит для любой системы с ограниченным объемом памяти.
Чтобы использовать библиотеку nanopb, вам нужно сделать две вещи:
protoc
.Самый простой способ начать — изучить проект в режиме «примеры/простые». Он содержит 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
в корне исходного кода.А также интеграция с интерфейсами платформы: