在为各种项目编写了几种不同的自定义串行协议之后,我开始对每次重新发明轮子感到沮丧.我不断继续为每个项目开发定制解决方案,而是一直在寻找更通用的解决方案.我想知道是否有人知道满足以下要求的串行协议(或更好的实现):
速度不是太大的问题,我们愿意放弃一些速度,以满足其他一些需求.但是,我们希望尽量减少所需资源的数量.
我即将开始实施带有搭载ACK的滑动窗口协议,而且没有选择性重复,但是想到也许有人可以省去我的麻烦.有谁知道我可以利用的现有项目?或者也许是更好的策略?
更新
我认真考虑过TCP/IP实现,但我真的希望能有更轻量级的东西.TCP/IP的许多功能对于我正在尝试的内容来说都是过度的.我愿意(不情愿地)接受我想要的功能可能不包含在较轻的协议中.
更新2
感谢您关于CAN的提示.我过去看过它,将来可能会用它.我真的很喜欢这个库来处理确认,缓冲,重试等.我想我更需要网络/传输层而不是数据链路/物理层.
更新3
所以听起来这个领域的最新技术是:
如果您遇到这个问题,请随时发布更多答案.
从我对固件工程工具,实践等历史的了解来看,它一直落后于软件工程领域几年.例如,据我所知,在固件世界中,关于C++是否真的值得用于我们的应用程序仍然存在相当多的争论,并且一些C++编译器明显缺失(微芯片?!?).我想在很大程度上这是由于固件和软件之间的要求不同.再次,从历史来看,在经过适当审查的工具和技术进入固件世界之前,似乎只是时间问题.
现代软件工程师经常使用哪些方法,工具,最佳实践等,固件工程师是否也可以利用它们来改进他们的工艺?
具体来说,我正在考虑以下几个轴(但不要让它们限制你):
我也很乐意看到嵌入式商店回答或评论答案,以提供有关理论可行性或更好的个人经验的反馈.
更新
我特别感兴趣的是稍微跳过曲线.所以相对较新的东西已经过相当好的审查(适用于大多数人),比如C++,TDD等等.你一直在使用什么,喜欢什么?
更新2
到目前为止,我在答案中获得了很多优秀的通用编程建议,这很好,但我真的在寻找更多非传统方法,这些方法已经证明对人们来说是成功的.我正在试图挑逗敏捷实践者,TDDers以及那些尝试过东西的人,看到它在黑桃中得到回报或者失败可怕.作为一名软件工程师,您在过去几年中采用了哪种工具或实践产生了非常积极或消极的影响?