A40i默认没有搭建网桥的支持,需要修改源码添加配置,该方案基于A40i双网口方案 1、无论是linux3.10还是linux5.10,都需要添加bridge配置 需要在buildroot中配置BR2_PACKAGE_BRIDGE_UTILS 在内核中配置BRIDGE 具体配置过程见编译手册或应用笔记,两处的配置都设置成y后,才能使用网桥搭建的指令 2、修改网口的驱动 使用linux5.10系统: 修改gmac驱动,打开bsp/drivers/gmac/sunxi-gmac.c,860行处修改成如下内容 static void sunxi_gmac_set_filter(void *iobase, unsigned int flags) { int tmp_flags = 0; /* TODO: replace numbers with marcos */ tmp_flags |= ((flags >> 31) | ((flags >> 9) & 0x00000002) | ((flags << 1) & 0x00000010) | ((flags >> 3) & 0x00000060) | ((flags << 7) & 0x00000300) | ((flags << 6) & 0x00003000) | ((flags << 12) & 0x00030000) | (flags << 31)); writel(tmp_flags, iobase + SUNXI_GMAC_RX_FRM_FLT); } 使用linux3.10系统: 打开linux-3.10/drivers/net/ethernet/allwinner/sunxi_gmac_ops.c,466行处注释掉读取寄存器的代码 void sunxi_set_filter(void *iobase, unsigned long flags) { int tmp_flags; // tmp_flags = readl(iobase + GETH_RX_FRM_FLT); tmp_flags |= ((flags >> 31) | ((flags >> 9) & 0x00000002) | ((flags << 1) & 0x00000010) | ((flags >> 3) & 0x00000060) | ((flags << 7) & 0x00000300) | ((flags << 6) & 0x00003000) | ((flags << 12) & 0x00030000) | (flags << 31)); 3、编译测试 修改完成后,编译镜像,烧写,使用如下指令搭建网桥 ifconfig eth0 0.0.0.0 up ifconfig eth1 0.0.0.0 up brctl addbr br0 brctl addif br0 eth0 brctl addif br0 eth1 ifconfig br0 192.168.0.240 netmask 255.255.255.0 up A40i两个网口分别接不同设备,这两个设备经过了A40i后可以相互ping通。不同网段的ip也不受影响 |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-11-22 12:03
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.