个人初次基础 lwip,所以在这里记录学习过程。如果有什么问题,欢迎交流。
一.开发环境
硬件环境:
主要芯片:STM32F207VET6 + DP83848
软件环境:
系统版本:RT-THREAD2.1.0 + LWIP1.4.1
编译环境:IAR7.8
二.学习计划
1.lwip应用初体验
任务要求:设备1<----->设备2
总的通信流程:
1. 设备2通过UDP通过8000端口广播 “!Dev2_SearchValidMac$”
2. 设备1通过监听UDP8000端口,收到广播包“!Dev2_SearchValidMac$”,并回复TCP服务器地址(假如为192.168.4.132)和端口号(假如为9876),例如“!Dev1_192.168.4.132_09876_00:60:6e:3a:00:39$”(项目中可固定字节数)
3. 设备2通过设备1回复的ACK中的地址和端口号,连接相应的服务器,建立通信
4. 设备2根据4455协议发送ch+opcode+arg_len+arg给设备1,设备1根据4455协议回复ch+opcode+0XFF
异常备注:a. 步骤3完成之后,设备2理论上30S会发送一条心跳报文给设备1,如果设备1连续2分钟都没有收到心跳,直接断开此连接
设备单独分析:
设备1:
设备上电:
a.开启TCP_Server的Soket端口6000,等待客户端连接通信,连接成功之后,心跳包不可超过2分钟,否则重启TCP_Server
b.开启UDP的Soket端口6000,等待接收广播包,如果收到有效广播包,回复相应的自身TCP_Server信息
设备2:(第一阶段用PC代替)
设备上电:
a.开启UDP的Socket端口,定期发送广播包“!Dev2_SearchValidMac$”,收到有效数据包后
b.开启TCP_Client的Soket,根据UPD收到数据包连接服务器,连接成功之后,心跳包30S一次,发送失败,重新连接。
2.lwip应用提高篇
任务要求:
a.梳理初体验篇中的各种异常情况并处理
b.梳理Lwip中的多个重要函数使用方法
3.Lwip项目实践篇
任务要求:EMW3165+红外转发器可以用手机远程控制。
三.Lwip学习计划变化
1.根据网关协议,做一个逻辑简单的网关
设备的所有硬件BSP包支持+所有软件BSP包支持+platform包支持
2.设备接入测试稳定性