移植主要问题出现在lwip-app中的lwip_comm.c代码中,其他部分可以参考原子的视频:第2讲 F4开发板LWIP无操作系统移植(下)_哔哩哔哩_bilibili第4讲 F4开发板LWIP带UCOS操作系统移植_哔哩哔哩_bilibilihh
还有他家的文档,先跟着无操作系统的移植
#include "lwip_comm.h"
#include "netif/etharp.h"
#include "lwip/dhcp.h"
#include "ethernetif.h"
#include "lwip/timers.h"
#include "lwip/tcp_impl.h"
#include "lwip/ip_frag.h"
#include "lwip/tcpip.h"
#include "malloc.h"
#include "delay.h"
#include "usart.h"
#include <stdio.h>
#include "includes.h"
__lwip_dev lwipdev; //lwip控制结构体
struct netif lwip_netif; //定义一个全局的网络接口
extern u32 memp_get_memorysize(void); //在memp.c里面定义
extern u8_t *memp_memory; //在memp.c里面定义.
extern u8_t *ram_heap; //在mem.c里面定义.
/
//lwip两个任务定义(内核任务和DHCP任务)
//lwip内核任务任务堆栈(优先级和堆栈大小在lwipopts.h定义了)
CPU_STK * TCPIP_THREAD_TASK_STK;
//lwip DHCP任务
//设置任务优先级
#define LWIP_DHCP_TASK_PRIO 7
//设置任务堆栈大小
#define LWIP_DHCP_STK_SIZE 256
//任务控制块
OS_TCB LwipdhcpTaskTCB;
//任务堆栈,采用内存管理的方式控制申请
CPU_STK * LWIP_DHCP_TASK_STK;
//任务函数
void lwip_dhcp_task(void *pdata);
//用于以太网中断调用
void lwip_pkt_handle(void)
{
ethernetif_input(&lwip_netif);
}
//lwip内核部分,内存申请
//返回值:0,成功;
// 其他,失败
u8 lwip_comm_mem_malloc(void)
{
u32 mem