不过这个网站真的很逗http://savannah.nongnu.org/projects/lwip/,这个“nongnu”会激起多少程序员的遐想啊。
lwIP移植工作:
其实,LWIP不需要自己亲自移植,不同的厂商都有移植好的DEMO实例程序。如STM32:
1、从官方网站http://www.stmcu.org/document/list/index/category-523下载STSW-STM32070 面向STM32F4x7微控制器的LwIP TCP/IP协议栈的演示代码的软件包stsw-stm32070.zip。
2、将stsw-stm32070.zip解压得到STM32F4x7_ETH_LwIP_V1.1.0文件夹,这个就是相当全的功能集合。足够自己起步学习或直接做产品。
1、与CPU和编译器的相关接口
cc.h 这个文件是没有的,你需要建立一个目录arch,然后在下面添加cc.h,这里里面主要是一些定义,包括数据类型;
perf .h 定义了性能测量使用的宏,由 LwIP 调用,可以将其定义为一个空的宏。
新建 cpu.h,
添加如下代码
#ifndef__CPU_H__
#define __CPU_H__
#define BYTE_ORDER LITTLE_ENDIAN //小端模式
#endif /* __CPU_H__ */
虽然只有一行代码,但是确实必须的
2、与操作系统的接口
sys_arch.c、sys_arch.h为操作系统模拟层接口文件
opt.h首先看这个文件,这个文件里面包含了LWIP的模块选项,可以在这里选择哪些模块需要编译,那些模块不编译,分成几个部分,mem,arp,icmp,igmp,ppp,dhcp等,这里可以根据自己的需要修改编译选项,如果是带操作系统的,还要修改栈空间,优先级之类的选项。
一般重新定义个文件,如lwipopts.h,这也是官方demode实例有的。
3、修改网卡底层驱动代码
这个官方的demo上可以参考修改,另外配套使用的开发包也是有对应的驱动文件(stm32f4x7_eth_bsp.c)。
主要是配置修改管脚。