首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于protobuf和STM32F7的协议设计

基于protobuf和STM32F7的协议设计
EN

Stack Overflow用户
提问于 2019-07-15 18:41:25
回答 1查看 541关注 1票数 0

我正在尝试执行在wiki Workflows中定义和描述的相同的协议

我的工具集是用于嵌入式系统的Protobuf : Nanopb。使用串口的STM32F7。

我现在正试图在PC和STM32F7之间进行通信,通常通信将在两个STM32F7板之间进行。

我的问题:

  1. 什么样的协议足以满足像trezor那样的请求和回答?
  2. 我搜索了一下,我发现我必须使用类似HLDC的东西,这是必要的还是一种开销?
  3. 编码和设计问题:我将触发一个串行中断,它总是轮询两个板之间通信的数据,现在将有一个非常大的状态机来解码每个消息类型并根据消息类型执行事件。有其他的设计吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 23:46:20

首先,AFAIK,纳米粒子并不支持Protobuf模式语言的全部可能性。因此,您需要一个对纳米粒子有效的模式,希望它能够满足需求。但是,(据我所知)非常有用的oneof不起作用,这可能很烦人。

其次,protobuf线格式不是自定界。因此,您将在串行电缆上喷射数据,但不可能可靠地(如果有的话)指出一条消息的结束位置和另一条消息的启动位置。因此,您将需要传输某种类型的消息间同步模式的字节,选择不太可能遇到的消息。您必须读取同步模式之间的字节,将它们放置在缓冲区中,并从中进行解析。

第三,如果您发送了各种不同的消息,并且不能使用oneof,那么您将需要一些其他的方法来识别消息的类型,这样就可以将其解析为正确的对象类型。这种“方式”可以是一个固定的消息类型序列,或者是一个值标识消息类型的字节,或者是一个在所有消息中执行相同任务的字段。oneof很有吸引力(尽管您无法使用),因为它可以用作各种不同消息类型的载体;您只需使用oneof的解析器来解析接收到的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57045483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档