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/simpleextra/FindNanopb.cmake , см. examples/cmaketests/site_scons (только генератор)BUILD.bazel в корне исходного кода.conanfile.py в корне исходного кода.А также интеграция с интерфейсами платформы: