没有OS的TCP / IP协议栈

时间:2010-07-12 13:02:47

标签: embedded tcp arm bare-metal

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

7 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:2)

这并不一定以你想要的方式回答你的问题(因为我的dia骂可能会太长,所以不在评论部分)。但是,我认为它可能仍然有用。

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

其次,使用GPL软件赋予他们对软件的完全不受限制的权利,它不会允许他们限制其他人。如果你的意思是他们想要限制别人,那么我会问他们为什么认为他们应该有权使用别人的工作而不给任何回馈。

您可能能够在比GPL更宽松的许可下找到TCP堆栈(允许它们有效地关闭它)。如果您有一个用于FPGA的C编译器,您可以从简短的外观中查看具有非常宽松许可的uIP

  

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

     

保留所有权利。

     

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

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

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

  4.   
  5. 未经事先书面许可,不得将作者姓名用于认可或宣传本软件衍生的产品。

  6.         

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

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

答案 2 :(得分:1)

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

该套件包含源代码和原理图,为开发某些产品奠定了坚实的基础。

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

答案 3 :(得分:1)

我已经在'裸机'上为德州仪器的16位DSP编写了一个以太网+ TCP堆栈。缺乏字节范围的寻址相当令人讨厌;一些数据结构存储每个字包装两个字节的数据,而其他数据存储每个字一个字节(在C编译器中,'char'和'int'都是带符号的16位类型)。以太网或TCP代码都不使用中断;两者都以“通常方便的通话”程序处理,通常以100x /秒左右的速度循环。性能不是超级,但通常是足够的。也许我的堆栈中最大的弱点是它不处理无序数据包(无序地到达的数据包将被忽略;它们有望在预期数据包到达后重新传输)。你所寻求的当然是可行的,但这并不一定意味着它值得努力。

BTW,我的TCP堆栈在端口23上支持一个相当有趣的“回显服务器”。任何数量的telnet客户端都可以连接到端口23,并且它们发送的任何数据都将返回给它们。虽然这个服务器只是回声数据,但它可以适用于完全无状态地发送文件等内容。有没有见过这样的人?

答案 4 :(得分:0)

只需添加一条说明即可为飞思卡尔FNET中的MCU提供相当新的开源TCP / IP堆栈。它的LGPL / GPLv3许可,与其他一些BSD许可的不同,所以它可能不适合原始海报的项目,但它可能仍然与其他用户相关。它目前将Kinetis(Cortex-M4)列为支持平台以及一些ColdFire部件。

答案 5 :(得分:0)

好吧,由于调查了FNET,我偶然发现了这篇文章,尽管它已经老了,但没有回答,所以我会加上我的两分钱...... Micromonitor是一个启动监视器,当它独立运行时,支持TFTP客户端/服务器,DHCP客户端,ping客户端/服务器和简单的基于UDP的命令行界面。 它包括演示应用程序,允许您将LWIP直接挂接到bootmonitor使用的底层以太网驱动程序。这使得演示可以在任何微电脑端口上​​使用,几乎没有变化。

没有中断,没有GPL ......只是一个轮询循环。示例应用程序包括几个不同的连接:(LWIP,LUA,PICO-C,BWBASIC等)。该演示包括一个HTTP服务器 (挂钩到uMon的TFS文件系统,所以你只需要构建html基本文件),基于UDP的命令服务器,一个telnet客户端和http-get客户端。大多数演示都是演示的扩展 与LWIP一起提供。

检查出来...... http://www.umonfw.com

答案 6 :(得分:0)

您可以使用Simulink Embedded Coder来实现它。然后,如果需要,您可以修改生成的代码。 (当然,如果您有其他选择,例如上述解决方案之一,则不建议使用。)