我正在开发一个使用移远EC25的项目,这是一个基于ARM的模块。我需要使用arm-oe-linux-gnueabi 工具链在此模块上实现TCP/IP(全栈)套接字编程。我已经确定了 LWIP(轻量级 IP),但我正在寻找其他建议和指导。
到目前为止,我已经探索了 LWIP 库,但我正在寻找更多选项来比较和确定最适合我的需求的选项。我对轻量级且适合资源受限环境的库特别感兴趣,并且我将不胜感激任何特定的配置步骤或在类似硬件上成功实现的示例。
谢谢, 索米亚 M
当必须占用小内存时,我使用过uIP:uIP github repo:
它的占地面积非常小
uIP
参考手册:uIP 代码大小约为几千字节,RAM 使用量为 大约几百个字节
它的集成相对容易
例如用于
ContikiNG
操作系统 (uIP ContikiNG)
优点:
缺点:
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