Nanopb - 嵌入式系统的 Protocol Buffers
Nanopb 是一个小的 ANSI C 代码大小的 Protocol Buffers 实现。它特别适用于微控制器,但适用于任何内存受限的系统。
- 主页: https://jpa.kapsi.fi/nanopb/
- 文档: https://jpa.kapsi.fi/nanopb/docs/
- 下载: https://jpa.kapsi.fi/nanopb/download/
- 论坛: https://groups.google.com/forum/#!forum/nanopb
使用 nanopb 库
要使用 nanopb 库,您需要做两件事
- 使用
protoc
编译您的 .proto 文件以供 nanopb 使用。 - 将 pb_encode.c、pb_decode.c 和 pb_common.c 包含到您的项目中。
开始的最简单方法是查看 "examples/simple" 中的项目。它包含一个 Makefile,该文件应该在大多数 Linux 系统中直接工作。然而,对于任何其他类型的构建系统,请参阅该文件夹中的 README.txt 中的手动步骤。
使用 Protocol Buffers 编译器 (protoc)
纳纳米生成器是以插件形式实现的,用于谷歌自家的 protoc
编译器。这有这样一个优点,即无需重新实现.proto文件的基本解析。然而,这也意味着你需要谷歌protobuf库才能运行生成器。
如果你已经下载了纳纳米的二进制包(无论是Windows、Linux还是Mac OS X版本),protoc
二进制文件包含在'generator-bin'文件夹中。在这种情况下,你就可以使用它了。只需运行以下命令
generator-bin/protoc --nanopb_out=. myprotocol.proto
但是,如果你使用的是git检出或纯源分布,你需要提供自己的protoc
版本和谷歌protobuf库。在Linux上,必要的包是protobuf-compiler
和python-protobuf
。在Windows上,你可以从源代码构建谷歌protobuf库或者使用它的二进制发行版。在两种情况下,如果你使用单独的protoc
,你需要手动给出纳纳米生成器的路径
protoc --plugin=protoc-gen-nanopb=nanopb/generator/protoc-gen-nanopb ...
运行测试
如果你想要进一步开发纳纳米核心,或者使用你的编译器和平台验证其功能,你需要运行测试套件。测试套件的构建规则使用Scons实现,所以你需要安装它(例如,在Ubuntu上sudo apt install scons
)。要运行测试
cd tests
scons
这将显示各种测试用例的进度。如果输出不以错误结束,则测试用例成功。
注意:Mac OS X默认将'clang'别名为'gcc',但实际上并不支持gcc相同的命令行选项。要在Mac OS X上运行测试,使用:“scons CC=clang CXX=clang”。同样可以在任何平台上使用不同编译器运行测试。