我正在为小型嵌入式系统(多点、rs485 类型的东西)开发一个简单的协议栈。在这个堆栈中,OSI 层之后的模型:
- 应用
- 网络
- 数据链接
- 物理(串行驱动程序)
每一层都有自己的页眉/页脚部分,将其上层的有效负载包装起来。
我将使用我自己的静态分配的固定大小块的缓冲池来存储二进制数据包。(此应用程序中没有 malloc / free。)
在其他 API 中,我看到数据通常作为具有关联长度的 const 指针传递。这样,数据将需要在每一层进行复制操作,因为上一层的有效负载被放置在为当前层新分配的缓冲区中。
对于三层堆栈,这将是 2 个复制操作和 3 个分配的缓冲区。
有没有更好的方法来做到这一点并且仍然保持协议层的干净分离?
为了更好地进行讨论,假设数据包通常在 2k 左右,处理器是运行在 8Mhz 的小型 8 位微控制器。