36

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

我需要一个可靠的、易于移植的堆栈。代码大小不是很重要,性能相对重要,但易用性和移植性非常重要。

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

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

我对从操作系统(例如 Linux、RTEMS 等)中提取堆栈不是很感兴趣。

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

堆栈不需要各种花里胡哨,不需要 IPv6,而且我不需要任何东西(Web 服务器、FTP 服务器等)。事实上,我可能会只使用 UDP,尽管我可以设想 TCP 更可取的几个场景。

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

感谢您的时间和投入。

4

8 回答 8

17

我已经广泛使用了 uIP 和 lwIP。

uIP

  • 如果你只想要一些基本的东西,比如引导加载程序,那就太好了
  • 占地面积小。
  • 使用轮询,所以我们从来没有超过 3kbit :-(
  • 没有“开箱即用”的 DHCP
  • UDP 支持不佳

低功耗IP

  • 完全中断驱动的速度要快得多(~ x10)
  • 包括带有故障转移 AutoIP 的 DHCP
  • 带多播的 UDP
  • 再加上更多

编辑:
我们从来没有使用过 RTOS,因为从来没有需要。

于 2009-07-29T12:30:50.713 回答
11

+1 为 lwIP。

几年前,我们在一个项目中成功地使用了它,发现它通常非常可靠。我们发现并修复了一些我们提交给项目的问题(通常是 TCP 代码中的极端情况),尽管项目从那时起已经进行了相当长的一段时间,但我们通常不会发现它缺少任何功能。

正如您所怀疑的那样,无论有没有 RTOS,它都可以工作。使用 RTOS 在我们的系统上运行大约需要一周时间,其中包括我们必须进行的更改以支持不寻常的 DSP 编译器。由于您可能在 ARM 上使用 GCC,因此您可以避免任何这些工作。

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

于 2009-07-22T18:23:01.353 回答
8

低功耗IP

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

我们的特定项目没有使用 RTOS,并且 lwIP 可以在没有 RTOS 的情况下使用。

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

总而言之,它对于我们的 UDP/IP 和 PPP 需求是“合适的”(但我不能评论它的 TCP 功能)。

于 2009-07-22T00:34:46.193 回答
3

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

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

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

于 2009-07-27T21:01:08.710 回答
3

+1 为 lwIP。

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

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

问候

PFM

于 2009-07-27T14:23:59.693 回答
0

您可以尝试开源FNET TCP/IP 堆栈

于 2012-10-02T14:13:42.757 回答
0

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

于 2010-04-01T15:58:01.993 回答
0

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

于 2010-08-31T04:38:46.117 回答