串行协议中的错误检测/纠正/恢复

Jas*_*n S 3 protocols serial-communication error-correction

我有一些设计要为串行协议做,并且遇到了一些我认为必须在其他地方考虑过的问题。

所以我想知道是否有一些关于设计串行协议的最佳实践的建议。请陈述一个易于验证的事实,或者如果您提出声明,请引用信誉良好的来源。)也欢迎对网站/书籍的一般建议。

特别是我必须处理诸如

  • 将字节流解析为数据包
  • 验证数据包是否正确(例如,使用 CRC 很容易)
  • 识别可能发生的合理类型的错误(例如,在点对点串行流中,偶发的单个位错误和丢失的字节序列都是可能的,但不太可能出现额外的幻象字节;而存储在闪存中的记录或在磁盘驱动器上,主要的错误类型是不同的)
  • 纠错或恢复(如果我在数据包中检测到错误,我可以纠正它吗?如果没有,我可以重新同步到下一个数据包的边界吗?)
  • 如何使可变长度数据包对纠错/恢复具有鲁棒性。

有什么建议?

Cra*_*een 5

数据包定界

为了同步到数据包边界,通常您有一个字节或字节序列来标识数据包边界,这不能出现在数据包本身内。如果数据包数据恰好包含该标识符,那么您必须“转义”(又名字节内容)它。

例子:

数据包验证

各种选项是:

纠错等

好问题。我在这方面没有太多经验。