Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在linux内核中实现自定义协议栈_C_Linux_Networking_Kernel_Custom Protocol - Fatal编程技术网

C 在linux内核中实现自定义协议栈

C 在linux内核中实现自定义协议栈,c,linux,networking,kernel,custom-protocol,C,Linux,Networking,Kernel,Custom Protocol,我们已经在STM32微控制器平台上实现了传感器网络的自定义协议,现在最好将该协议栈移植到linux内核中 情况是这样的:我们有一个定制的无线电发射机,几乎没有内置功能(NRF24L01+)。但同时我们对带宽和功耗有很高的要求,因此我们在简单的NRF24L01+函数的基础上设计并实现了分时算法(DTDMA)。此外,为了保证连接的可靠性,我们还实现了传输层协议,该协议负责重传(使用一个稍加修改的滑动窗口协议)。我们的网络具有星形拓扑结构,因此这里不需要路由,而且在将来似乎不会改变 还要注意,另一端的

我们已经在STM32微控制器平台上实现了传感器网络的自定义协议,现在最好将该协议栈移植到linux内核中

情况是这样的:我们有一个定制的无线电发射机,几乎没有内置功能(NRF24L01+)。但同时我们对带宽和功耗有很高的要求,因此我们在简单的NRF24L01+函数的基础上设计并实现了分时算法(DTDMA)。此外,为了保证连接的可靠性,我们还实现了传输层协议,该协议负责重传(使用一个稍加修改的滑动窗口协议)。我们的网络具有星形拓扑结构,因此这里不需要路由,而且在将来似乎不会改变

还要注意,另一端的资源太少,无法实现完整的TCP/IP协议栈。因此,自定义轻量级协议是必需的:(

因此,本质上我们有三个层次:

  • 硬件驱动程序(NRF24L01+)
  • 时分算法
  • 分组控制算法
所以问题是(架构上)分时算法应该在哪里

据我所知,实现NRF驱动程序的最佳方法是使用linux/netdevice.h接口,而对于数据包控制(滑动窗口)来说,则是使用linux/net.h接口(使用struct proto______ops)。但我不知道如何以及在何处使用时分


非常感谢您的帮助。提前感谢:)。

您的协议是如何实现的?它是否由标准IPv4承载?不,它不是由标准TCP/IP承载的(因此没有IPv4或IPv6)。原因是在另一端有一个小型微控制器,内存非常低(16Kb RAM)。你考虑过用户模式的实现吗?例如,通过usb将数据包发送至stm32至nrf24l01?