STM32+freertos+lwip
来源:互联网 发布:邱一平麟龙软件破解版 编辑:程序博客网 时间:2024/06/07 06:23
1、初始化包括
(1)、 ETH_GPIO_Config(); //引脚配置
ETH_NVIC_Config();//网络中断配置
ETH_MACDMA_Config();//MAC/DMA配置
(2)、LwIP_Init(); //LWIP初始化 :设置网络接口,初始化IP,掩码,网关等。创建TCP-IP任务,Eth_if任务。
2、应用层创建TCP任务执行do_listen函数监听消息和创建套接字建立连接通信并读取recvmbox数据(5步骤中)。
(1) 建立套接字.bind函数初始化sock中con_net的端口号,IP地址回调函数等信息。
(2)listen(sock, 5); //在socket上进行监听 --> err = netconn_listen_with_backlog(sock->conn, backlog); -->do_listen -->主要做了2件事情。1、申请tcp_pcb(tcp协议控制块 Protocol Control Block)用于初始化socket->con_net->tcp-pcb部分。初始化pcb的发送接收函数等。创建接收消息的mbox。利用sock中的connet创建新的connet发送到sock->connet->acceptmbox.
(3) accept函数中,初始化好的sock添加到全局数组sockets中。
3、中断部分:检测到DMA标志后,发送消息到sem中。
/* Give the semaphore to wakeup LwIP task */
(1) xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken );
(2)Eth_if任务中的ethernetif_input( void * pvParameters )接收到消息,void ethernetif_input( void * pvParameters )函数内部low_level_input对消息进行解析并发送到tcpip_input中。
(3) tcpip_input函数中做了什么呢? tcpip_input将数据发送到mbox
msg->type = TCPIP_MSG_INPKT;
msg->msg.inp.p = p;
msg->msg.inp.netif = inp;
if (sys_mbox_trypost(mbox, msg) != ERR_OK) 到1.2中创建的TCP-IP任务。
(4) TCP-Ip任务,对消息进行拆分解析去掉IP头部信息等。tcpip_thread任务中 --> ethernet_input(msg->msg.inp.p, msg->msg.inp.netif);--> ip_input(p, netif);--> tcp_input(p, inp);--> TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);( /* Notify application that data has been received. */)通知应用层数据保存。将消息发送到connet->recvmbox中
(5)应用层线程调用recv函数读取该recvmbox中的数据。
- STM32+freertos+lwip
- FreeRTOS 与 LWIP 开发笔记
- STM32的lwip使用说明
- LWIP 移植 stm32 注意事项
- stm32 lwip的DHCP
- stm32 LWIP总结
- LwIP+ STM32+HTTP
- stm32 lwip dns功能
- lwip stm32 异常分析
- FreeRTOS STM32移植笔记
- STM32之FreeRTOS
- STM32之FreeRTOS
- FreeRTOS STM32移植笔记
- FreeRTOS移植到STM32
- FreeRTOS STM32移植笔记
- STM32 移植Freertos
- FreeRTOS STM32移植笔记
- STM32上移植FreeRTOS
- 关于回调函数的一些理解
- Maven在IntelliJ IDEA中的学习笔记(2)-----配置maven私服
- POJ 3041 Asteroids(最小点覆盖)
- MFC tab控件使用
- WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
- STM32+freertos+lwip
- vim的配置(自动换行、显示行号和Tab的宽度)
- C语言实现修改文本文件中特定行的实现代码(百度一天没找到,bing搜索十分钟就找到了)
- leetcode 075 Sort Colors
- IdentityHashMap 与HashMap的对比
- C# 获取天气 JSON解析
- SDAU 课程练习3 1023
- UVA674Coin Change母函数模板题目
- LeetCode.283. Move Zeroes