rtthread工业使用_基于RTThread 的LwIP使用讲解

在RT-Thread 1.1.x系列中默认使用lwIP 1.4.0作为TCP/IP协议栈,同时为了保持原有驱动的兼容性,

对lwIP 1.4初始移植做了调整,在驱动编写,初始化顺序上可以完整兼容lwIP 1.3.2的风格。

lwip 1.4 迁移指南

一、lwip,netif架构

+-----------------------+

|   driver interface    |

|                       |

|   struct eth_device   |

| +-eth_rx_ready()      |

+---->+-link_up()      |    |

|   | +-link_down()    |    |

|   +------------------|----+

+-------------+ |   +------------------|----+    +-------------------+

| driver      | |   |   ethernetif     |    |    | lwip 1.4          |

|             | |   |                  V    |    |                   |

| isr() --------+   |   rx_thread           |    | tcpip_thread      |

| rx()  input  ------------>tcpip_input       |

| tx()  output

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在单片机上使用lwIP,可以按照以下步骤进行: 1. 下载lwIP库文件,通常可以从官网或者第三方开源社区下载。 2. 将lwIP库文件移植到单片机上,通常需要根据具体的单片机类型进行移植。 3. 在rt-thread中配置lwIP,包括IP地址、子网掩码、默认网关等参数。 4. 使用lwIP提供的API进行网络编程,例如创建套接字、发送数据等。 下面是一个简单的示例代码,演示如何在rt-thread中使用lwIP: ```c #include "lwip/sockets.h" #include "lwip/api.h" int main(void) { struct sockaddr_in server_addr; int sockfd, ret; char buf[1024]; /* 创建TCP套接字 */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { printf("socket error\n"); return -1; } /* 配置服务器地址 */ server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = inet_addr("192.168.1.1"); /* 连接服务器 */ ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret < 0) { printf("connect error\n"); return -1; } /* 发送数据 */ strcpy(buf, "hello world\n"); ret = send(sockfd, buf, strlen(buf), 0); if (ret < 0) { printf("send error\n"); return -1; } /* 关闭套接字 */ close(sockfd); return 0; } ``` 在使用lwIP时,需要注意以下几点: 1. 在使用lwIP之前,需要先初始化rt-thread的网络栈。 2. 使用lwIP时,需要避免在中断服务函数中进行网络操作,因为lwIP并不是完全可重入的。 3. lwIP提供了多种API,可以根据具体需要选择适合的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值