(免费)嵌入式TCP / IP堆栈的经验?

时间:2009-07-21 16:45:51

标签: networking embedded tcp firmware rtos

有没有人对以下任何嵌入式TCP / IP堆栈有特别好(或坏)的经验?

我的需求是坚实的,易于移植的堆栈。代码大小并不是非常重要,性能相对重要,但易于使用和移植非常重要。

系统可能会使用尚未确定的RTOS,但根据我的经验,大多数堆栈可以在有或没有RTOS的情况下使用。很可能该平台将是ARM变体(很可能是ARM7或CM3)。

不太关心将堆栈连接到以太网驱动程序,因此这不是选择中的重中之重。

我对从Linux,RTEMS等操作系统中提取堆栈并不十分感兴趣。

我对Interniche,Micrium等商业产品也不感兴趣......

堆栈不需要各种各样的铃声和放大器。口哨,不需要IPv6,我不需要任何东西(网络服务器,FTP服务器等)。事实上我可能只会使用UDP,虽然我可以设想几个场景哪个TCP更可取。

我错过的其他筹码经验当然也非常有趣。

感谢您的时间和输入

8 个答案:

答案 0 :(得分:17)

我广泛使用了uIP和lwIP。

<强> uIP的

  • 如果您只想要像引导程序那样基本的东西
  • ,那就太好了
  • 占地面积小。
  • 使用民意调查,所以我们从未超过3kbit: - (
  • 没有DHCP'开箱即用'
  • 糟糕的UDP支持

<强> lwIP的

  • 完全中断驱动的速度要快得多(~x10)
  • 包含具有故障转移功能的DHCP AutoIP
  • UDP with multicast
  • 加上更多

修改
我们从未使用RTOS,因为从来没有需要。

答案 1 :(得分:11)

+1 for lwIP。

几年前我们在一个项目中成功地使用了它,并发现它通常非常可靠。我们发现并修复了我们提交回项目的一些问题(通常是TCP代码中的极端情况),尽管该项目已经发生了很大变化,但我们通常没有发现它缺少任何功能。 / p>

您怀疑它可以使用或不使用RTOS。使用RTOS在我们的系统上运行大约需要一周时间,其中包括我们为支持不寻常的DSP编译器而必须进行的更改。由于您可能在ARM上使用GCC,因此可以避免任何这种努力。

它确实包含了比您需要的更多功能,但是如果您的需求在几年内发生变化,那么您最好开始使用更大的堆栈。

答案 2 :(得分:8)

<强> lwIP的

我参与了一个带有3G调制解调器的项目,我们需要在PPP之上使用UDP / IP堆栈(无TCP)。我们缩小到uIP和lwIP。我们最终选择了lwIP,因为它已经有了PPP(uIP没有),而且我们有足够的RAM来备用。

我们的特定项目没有使用RTOS,没有RTOS就可以使用lwIP。

我没有直接参与移植lwIP代码,尽管我使用调制解调器驱动程序与它进行交互。我的印象是,对于具有以前TCP / IP经验的工程师来说,移植需要花费几周时间才能完成所有工作。 lwIP代码已经被许多人攻击,因此有一些粗糙的边缘(例如某人扔在一个单独的malloc()某处),但经过一些调整后它对我们有用。我们使用独立的验证套件对其进行了测试。

总之,它对我们的UDP / IP和PPP需求“具有适当的功能”(但我无法评论其TCP功能)。

答案 3 :(得分:3)

+1 for lwIP。

它包含在Luminary Micros(现在的TI)串行到以太网参考设计中,具有一些附加功能(某种“服务器端脚本”和cgi),可用于裸机(无RTOS)。

它坚如磐石,性能非常高,只有32KB或RAM。

此致

PFM

答案 4 :(得分:3)

我对Stellaris Cortex-M3上的lwip很满意。

用于LM3S6965评估板的StellarisWare包含enet_lwip演示。这是一个运行在lwip上的小型Web服务器,它运行在裸机上 - 在这种情况下没有FreeRTOS。系统由定时器和以太网中断驱动。撕掉网络服务器并放入我的应用程序非常容易。我没有必要成为第一次运行的lwip专家。

后来我意识到我的应用程序本质上是通过呼叫驱动的。起初,它有一个插座到上呼叫垫圈。我用一个更简单的层替换了该层,它将lwip本机upcalls转换为app的upcalls,并选择了lwip的socket API。这节省了更多的闪存和RAM空间,使整个过程更快更简单。稍微调整一下,我使用52K闪存和30K RAM在S2E板上运行。

答案 5 :(得分:0)

我使用过Microchip TCP / IP协议栈。我一直很满意。它实现起来非常简单,提供了大量的演示代码/教程,并且支持许多协议HTTP,tFTP,SMTP,SNTP等。然而,与您的要求不符的一点是,它不易于移植到另一个架构。事实上,我认为堆栈的许可证明确禁止这样做,因为Microchip希望您仅使用其PIC18,PIC24和PIC32硬件来运行堆栈。然而,他们销售的外部以太网控制器允许您使用ENC28J60来使用该堆栈的某些部分。

答案 6 :(得分:0)

我在RTOS上使用过interniche。 它是一个成熟的堆栈,支持很多功能。 由于您正在寻找非商业版本,我的投票是在lwIP。

答案 7 :(得分:0)

您可以尝试使用开源FNET TCP/IP stack