CH579-Lwip-2.12移植


代码可以参考以下链接:https://gitee.com/maji19971221/lwip-routine

Lwip可以在以下链接下载:http://download.savannah.gnu.org/releases/lwip/

1. 创建一个CH579的最简单工程。

CH579-Lwip-2.12移植

2. 复制一份lwip-2.12的压缩包,解压

CH579-Lwip-2.12移植

3. 工程创建以下文件夹

CH579-Lwip-2.12移植

4. 下面开始添加文件。Lwip/api文件夹下添加lwip-2.12的api文件。

CH579-Lwip-2.12移植

5. Lwip/core文件夹下面添加lwip-2.12/scr/core/ipv4文件夹下面的所有内容+core文件夹下面的所有C文件。

CH579-Lwip-2.12移植

6. Lwip/netif文件夹下面添加lwip-2.12/scr/netif下的部分源文件。

CH579-Lwip-2.12移植

7. 添加头文件,编译。此时会报错说没有lwipopts.h。

CH579-Lwip-2.12移植

8. 通过搜索发现,这个文件并不在协议栈的scr文件夹下面,我们把这个文件复制出来,放在自己创建的arch文件夹下面。并在工程中添加arch的路径。

CH579-Lwip-2.12移植

CH579-Lwip-2.12移植

CH579-Lwip-2.12移植

9. 再次编译,报错没有arch/cc.h这个头文件。

CH579-Lwip-2.12移植

10 .我们从其它工程复制过来,放在arch文件夹下面。在头文件这边包含arch的上级文件夹路径。点击编译。显示一些定义问题,因为我这边cc.h和arch.h里面一些定义冲突了,只需要注释掉一种一个即可。

CH579-Lwip-2.12移植

CH579-Lwip-2.12移植

11.点击编译,显示没有arch/bpstruct.h头文件。正常添加即可。添加sys_arch.c文件。然开lwippopts.h,这个是lwip的配置文件。我们将LWIP_IPV6写0,关闭ipv6。此时再编译就是正常的。

CH579-Lwip-2.12移植

12.添加579底层MAC相关的配置文件,编译。

CH579-Lwip-2.12移植

CH579-Lwip-2.12移植

13.其实是缺少ethernetif.c导致的。我们从F4的工程中复制过来,进行修改即可。

后面编译显示以下错误,这个是内存溢出,只需要把lwippopts.h里面一些设置修改小写即可。

CH579-Lwip-2.12移植

14.最后加上写的相关调用网卡接收函数和处理LwIP中定时事件即可。

CH579-Lwip-2.12移植

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279603.html

(0)
上一篇 2022年8月8日
下一篇 2022年8月8日

相关推荐

发表回复

登录后才能评论