代码可以参考以下链接:https://gitee.com/maji19971221/lwip-routine
Lwip可以在以下链接下载:http://download.savannah.gnu.org/releases/lwip/
1. 创建一个CH579的最简单工程。
2. 复制一份lwip-2.12的压缩包,解压
3. 工程创建以下文件夹
4. 下面开始添加文件。Lwip/api文件夹下添加lwip-2.12的api文件。
5. Lwip/core文件夹下面添加lwip-2.12/scr/core/ipv4文件夹下面的所有内容+core文件夹下面的所有C文件。
、
6. Lwip/netif文件夹下面添加lwip-2.12/scr/netif下的部分源文件。
7. 添加头文件,编译。此时会报错说没有lwipopts.h。
8. 通过搜索发现,这个文件并不在协议栈的scr文件夹下面,我们把这个文件复制出来,放在自己创建的arch文件夹下面。并在工程中添加arch的路径。
9. 再次编译,报错没有arch/cc.h这个头文件。
10 .我们从其它工程复制过来,放在arch文件夹下面。在头文件这边包含arch的上级文件夹路径。点击编译。显示一些定义问题,因为我这边cc.h和arch.h里面一些定义冲突了,只需要注释掉一种一个即可。
11.点击编译,显示没有arch/bpstruct.h头文件。正常添加即可。添加sys_arch.c文件。然开lwippopts.h,这个是lwip的配置文件。我们将LWIP_IPV6写0,关闭ipv6。此时再编译就是正常的。
12.添加579底层MAC相关的配置文件,编译。
13.其实是缺少ethernetif.c导致的。我们从F4的工程中复制过来,进行修改即可。
后面编译显示以下错误,这个是内存溢出,只需要把lwippopts.h里面一些设置修改小写即可。
14.最后加上写的相关调用网卡接收函数和处理LwIP中定时事件即可。