有没有人对以下任何嵌入式TCP / IP堆栈有特别好(或坏)的经验?
我的需求是坚实的,易于移植的堆栈。代码大小并不是非常重要,性能相对重要,但易于使用和移植非常重要。
系统可能会使用尚未确定的RTOS,但根据我的经验,大多数堆栈可以在有或没有RTOS的情况下使用。很可能该平台将是ARM变体(很可能是ARM7或CM3)。
不太关心将堆栈连接到以太网驱动程序,因此这不是选择中的重中之重。
我对从Linux,RTEMS等操作系统中提取堆栈并不十分感兴趣。
我对Interniche,Micrium等商业产品也不感兴趣......
堆栈不需要各种各样的铃声和放大器。口哨,不需要IPv6,我不需要任何东西(网络服务器,FTP服务器等)。事实上我可能只会使用UDP,虽然我可以设想几个场景哪个TCP更可取。
我错过的其他筹码经验当然也非常有趣。
感谢您的时间和输入
答案 0 :(得分:17)
我广泛使用了uIP和lwIP。
<强> uIP的强>
<强> lwIP的强>
修改强>
我们从未使用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。