本例子使用zynq7000系列的ps带的两个mac,一个通过mio引出,一个通过emio引出。如下图:
由于lwip通常不使用双网口,有部分需要注意修改。有以下注意事项:
1 增加宏定义
vivado自带的问题,生成的时候少宏定义。
xxx_bsp/ps7_cortexa9_0/include/xparameters.h 增加宏定义:
#define XPAR_GMII2RGMIICON_0N_ETH1_ADDR 5
xxx_bsp/ps7_cortexa9_0/libsrc/lwip202_v1_2/src/contrib/ports/xilinx/netif/xemacpsif_physpeed.c 增加宏定义
#define XPAR_GMII2RGMIICON_0N_ETH1_ADDR 6
此数据5应与ip核设置为相同
2 路由相关设置
使能路由,并且由于双网口可能处于相同网段需要进行适度修改。
2.1 使能lwip的路由功能
xxx_bsp/ps7_cortexa9_0/libsrc/lwip202_v1_2/src/contrib/ports/Xilinx/include/lwipopts.h
#define IP_FORWARD 1 使能路由
2.2 增加路由功能宏定义
xxx_bsp/ps7_cortexa9_0/libsrc/lwip202_v1_2/src/lwip-2.0.2/src/include/lwip/ip4.h
#define LWIP_HOOK_IP4_ROUTE_SRC
2.3 修改路由相关函数
xxx_bsp/ps7_cortexa9_0/libsrc/lwip202_v1_2/src/lwip202_v1_2/src/include/lwip/netif.h 增加如下:
#if LWIP_SINGLE_NETIF