适用于嵌入式设备的良好串行通信协议/堆栈? [关闭]

2024-03-22

在为各种项目编写了几个不同的自定义串行协议后,我开始对每次重新发明轮子感到沮丧。我一直在寻找更通用的解决方案,而不是继续为每个项目开发定制解决方案。我想知道是否有人知道满足以下要求的串行协议(或者更好的是实现):

  • 支持多种设备。我们希望能够支持 RS485 总线。
  • 保证交货。某种确认机制,以及一些简单的错误检测(CRC16 可能没问题)。
  • 不是主/从。理想情况下,从站能够异步发送数据。这主要只是出于美观原因,对每个奴隶进行轮询的概念对我来说并不合适。
  • 操作系统独立性。理想情况下,它根本不依赖于抢占式多任务环境。如果我能得到其他东西,我愿意承认这一点。
  • ANSI C。我们需要能够为几种不同的体系结构编译它。

速度并不是什么大问题,我们愿意放弃一些速度以满足其他一些需求。然而,我们希望最大限度地减少所需资源的数量。

我正要开始实现一个带有 ACK 的滑动窗口协议,并且没有选择性重复,但我想也许有人可以帮我解决这个麻烦。有谁知道我可以利用的现有项目?或者也许是更好的策略?

UPDATE
我认真考虑过 TCP/IP 实现,但确实希望有更轻量级的东西。 TCP/IP 的许多功能对于我想要做的事情来说是多余的。我愿意(不情愿地)接受,也许我想要的功能并不包含在较轻的协议中。

UPDATE 2
感谢您对 CAN 的提示。我过去看过它,将来可能会使用它。不过,我真的希望库能够处理确认、缓冲、重试等。我想我更多地寻找网络/传输层而不是数据链路/物理层。

UPDATE 3
所以听起来这个领域的最新技术是:

  • 精简的 TCP/IP 堆栈。可能从类似的事情开始lwIP http://savannah.nongnu.org/projects/lwip/ or uIP http://www.sics.se/~adam/uip/index.php/Main_Page.
  • 基于 CAN 的实现,它可能会严重依赖 CAN 总线,因此它在其他物理层上没有用处。就像是CAN节 http://www.canfestival.org/可以一路提供帮助。
  • HDLC 或 SDLC 实现(例如this one http://sourceforge.net/projects/opensourcehdlc/)。这可能就是我们要走的路线。

如果您遇到此问题,请随时发布更多答案。


你有没有考虑过HDLC http://en.wikipedia.org/wiki/HDLC or SDLC http://en.wikipedia.org/wiki/Synchronous_Data_Link_Control?

还有LAP/D http://en.wikipedia.org/wiki/Link_Access_Procedures,_D_channel(链路访问协议,D 通道)。

尤利斯·布莱克的《数据链路协议 https://rads.stackoverflow.com/amzn/click/com/013204918X“总是在我的书架附近 - 您也可能会在那里找到一些有用的材料(甚至仔细阅读目录并研究不同的协议)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于嵌入式设备的良好串行通信协议/堆栈? [关闭] 的相关文章

随机推荐