移远通信TCP协议库

问题描述 投票:0回答:1

我正在开发一个使用移远EC25的项目,这是一个基于ARM的模块。我需要使用arm-oe-linux-gnueabi 工具链在此模块上实现TCP/IP(全栈)套接字编程。我已经确定了 LWIP(轻量级 IP),但我正在寻找其他建议和指导。

到目前为止,我已经探索了 LWIP 库,但我正在寻找更多选项来比较和确定最适合我的需求的选项。我对轻量级且适合资源受限环境的库特别感兴趣,并且我将不胜感激任何特定的配置步骤或在类似硬件上成功实现的示例。

谢谢, 索米亚 M

c++ c sockets tcp
1个回答
0
投票

当必须占用小内存时,我使用过uIP:uIP github repo

  • 它的占地面积非常小

    • 来自
      uIP
      参考手册:

    uIP 代码大小约为几千字节,RAM 使用量为 大约几百个字节

  • 它的集成相对容易

  • 例如用于

    ContikiNG
    操作系统 (uIP ContikiNG)

  • 优点:

    • 根据我的经验,它非常强大。
    • 占地面积非常小
  • 缺点:

    • 源代码中有丰富的 goto 语句,正如作者所说(来自 uip.c 模块):

    uIP 是 IP、UDP 和 TCP 协议(以及一些基本 ICMP 内容)的小型实现。

    该实现将 IP、UDP、TCP 和应用层紧密耦合。 为了减小编译后代码的大小,此代码经常使用 goto 语句

    虽然可以将 uip_process() 函数分解为许多较小的函数,但这会增加代码大小,因为参数传递的开销以及优化器效率不高的事实。

您可以按照

doc
中的内容进行操作和/或查看
apps
子目录中的示例:

  • 例如

    dhcpc
    文件夹有一个使用
    DHCP
    交换网络消息的应用程序的简单示例:

  • 基本上你需要实现:

    • netdev_send
      netdev_read
      处理网络数据包
    • dhcpc_appcall
      处理来自网络、应用层的数据包
    • uip_periodic
      定期处理
      uIP
      堆栈
  • 您必须设置

    MAC
    地址

  • 并根据您的硬件初始化和处理低级网络数据包 tx 和 rx

© www.soinside.com 2019 - 2024. All rights reserved.