我们已经在 STM32 微控制器平台上为传感器网络实现了自定义协议,现在最好将该协议栈移植到 linux 内核中。
情况是这样的:我们有一个定制的无线电发射器,内置功能很少(NRF24L01+)。但同时我们对带宽和功耗有很高的要求,所以我们在简单的 NRF24L01+ 功能之上设计并实现了分时算法(DTDMA)。同样为了连接可靠性,我们实现了传输层协议,它负责重传(使用稍微修改的滑动窗口协议)。我们的网络采用星形拓扑结构,因此此处不需要路由,而且似乎将来也不会改变。
另请注意,另一端的资源太少,无法实现完整的 TCP/IP 协议栈。所以自定义轻量级协议是强制性的:(。
所以本质上我们有三层:
- 硬件驱动程序 (NRF24L01+)
- 时分算法
- 包控制算法
所以问题是时间共享算法应该在哪里(架构上)?
据我了解,实现 NRF 驱动程序的最佳方法是使用linux/netdevice.h接口,而数据包控制(滑动窗口)是使用linux/net.h接口(使用struct proto_ops)。但我无法弄清楚时间划分应该如何以及在哪里适合。
任何帮助都非常感谢。提前致谢 :)。