10

我正在寻找可以在没有操作系统的情况下使用的 TCP/IP 堆栈。我们的客户对中断有一种“反感”,并且不希望我们正在构建的嵌入式板上有一个真正的操作系统。由于我们将仅使用 50 到 100 MHz 的 Arm,因此希望将尽可能多的功能转移到 FPGA。而且我很确定这个客户不会接受 GPL 许可的东西。(由于与之相关的法律泥潭。他们希望在软件完成后对软件拥有完全不受限制的权利。)

4

7 回答 7

18

uIP(微型 IP)和lwIP(轻量级 IP)都是值得考虑的候选者。根据这两个堆栈的原始开发人员 - Adam Dunkel - 两者之间的主要区别之一是:“lwIP 比 uIP 大,但提供更好的吞吐量”。两种堆栈都采用修改后的 BSD 许可证,并已用于商业产品。

于 2010-07-12T20:57:40.223 回答
2

这不一定以您希望的方式回答您的问题(它不在评论部分,因为我的谩骂可能会太长)。但是,我认为它仍然可能会有所帮助。

几点。我认为你应该重新教育你的客户关于中断的好处和成本。中断是处理设备控制的一种非常有效的方式,除非您对编码非常细致,否则您不太可能将性能与非中断驱动的代码相匹配。

其次,使用 GPL 软件赋予他们完全不受限制的软件权利,只是不允许他们限制他人。如果您的意思是他们确实想限制他人,那么我会问他们为什么认为他们应该有权使用他人的劳动力而没有任何回馈。

您很可能能够在比 GPL 更宽松的许可下找到 TCP 堆栈(允许他们有效地关闭源代码)。如果您的 FPGA 有一个 C 编译器,您可以通过简单的查看来查看uIP,它具有非常宽松的许可证:

版权所有 (c) 2001-2006,Adam Dunkels 和瑞典计算机科学研究所

版权所有。

如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:

  1. 源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。

  2. 以二进制形式重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。

  3. 未经事先明确的书面许可,不得使用作者的姓名来认可或推广源自本软件的产品。

本软件由作者“按原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,作者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断)负责) 无论是由何种责任理论引起的,无论是在合同、严格责任或侵权行为(包括疏忽或其他方式)中以任何方式因使用本软件而引起的,即使已被告知存在此类损害的可能性。

就是这样,没有“必须根据 GPL 发布”或任何其他病毒性条款,唯一的归属是包含版权声明。

于 2010-07-12T13:26:23.657 回答
1

目前我在 ARM Cortex-M3 上使用 lwIP 库,频率为 50MHz,没有操作系统。这是一个基于 Luminary Micro(现为 TI)Stellaris 串行到以太网参考设计套件 ( http://www.luminarymicro.com/products/rdk-s2e.html ) 的项目。

该套件包括源代码和原理图,为我们开发一些产品提供了坚实的基础。

我与 TI 或 Luminary 没有任何关系,只是一个非常满意的客户。

于 2010-07-16T07:34:23.853 回答
1

我为德州仪器公司的 16 位 DSP 在“裸机”上编写了以太网 + TCP 堆栈。缺少字节范围的寻址相当麻烦。一些数据结构每个字存储两个字节的数据,而另一些每个字存储一个字节(在 C 编译器中,'char' 和 'int' 都是有符号的 16 位类型)。以太网或 TCP 代码都没有使用中断;两者都在“尽可能方便地调用”例程中处理,该例程通常循环大约 100 次/秒。性能不是超级骗子,但通常是足够的。也许我的堆栈中最大的弱点是它不处理乱序数据包(乱序到达的数据包将被忽略;它们有望在预期的数据包到达后重新传输)。您正在寻找的东西当然是可行的,尽管那不是

顺便说一句,我的 TCP 堆栈在端口 23 上支持一个相当有趣的“回显服务器”。任何数量的 telnet 客户端都可以连接到端口 23,并且它们发送的任何数据都将返回给它们。尽管该服务器只是回显数据,但它可以适应完全无状态地发送文档之类的东西。有人见过这样的吗?

于 2011-02-01T17:19:38.033 回答
0

只需添加一个注释,即有一个相当新的开源 TCP/IP 堆栈,用于飞思卡尔的FNET中的 MCU 。它是 LGPL/GPLv3 许可的,与其他一些 BSD 许可的不同,因此它可能不适合原始发布者的项目,但它可能仍然与其他用户相关。它当前将 Kinetis (Cortex-M4) 以及一些 ColdFire 部件列为受支持的平台。

于 2012-02-29T05:31:16.787 回答
0

Well, I stumbled on this post as a result of looking into FNET, and although its old, its not answered, so I'll add my two cents... Micromonitor is a boot monitor that when run standalone, supports TFTP client/server, DHCP client, ping client/server and a simple UDP based command line interface. It includes demo applications that allow you to hook LWIP directly to the underlying ethernet driver used by the bootmonitor. This allows the demo to be used on any micromonitor port with almost no change.

No interrupts, no GPL... just a polling loop. The example applications include several different hookups: (LWIP, LUA, PICO-C, BWBASIC, etc..). The demo includes an HTTP server (hooks to uMon's TFS file system so you just build up html basic files), UDP-based command server, a telnet client and http-get client. Most of the demos are extensions of the demos that come with LWIP.

Check it out... http://www.umonfw.com

于 2013-04-17T13:50:57.583 回答
0

You can use Simulink Embedded Coder to implement it. And then if you need, you can modify the generated code. (Ofcourse it is not advised if you have another option such as one of the solutions stated above.)

于 2015-08-10T15:24:20.970 回答