嵌入式linux系统的开发——多网口交换机的实现

前言

联发科MT7628/7688集成了 1T1R 802.11n Wi-Fi radio、580MHz MIPS® 24KEc™ CPU、1-port fast Ethernet PHY、USB2.0 host、PCIe、SD-XC、 I2S/PCM,以及multiple low-speed IOs于单颗SOC中。MT7628/7688支持IoT gateway与 IoT device两种运作模式,其中IoT gateway模式下可支持5网口交换机功能,本文主要介绍如何实现MT7628/7688的5网口交换机功能。

集成式交换机

网卡是我们上网必备组件之一,它主要工作在osi的最后两层,物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口,物理层对应的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能,数据链路层对应的芯片称之为MAC控制器。PHY和MAC之间通过IEEE定义的标准MII/GigaMII接口实现数据传输和交互。MT7628/7688作为更灵活、密度更高的芯片已经将MAC和PHY整合在SOC中,同时在MAC层实现了交换功能。

嵌入式linux系统的开发——多网口交换机的实现

多网口寄存器

MT7628/7688的多网口和单网口为复用功能,当使用多网口交换机功能时需要通过对寄存器配置将IO口定义为port功能使用。AGPIO_CFG寄存器中EPHY_GPIO_AIO_EN和EPHY_P0_DIS配置为0,即P0-P4为模拟PAD。GPIO2_MODE寄存器中对Pn_LED_KN_MODE位设置为00,即作为EPHY_Pn_LED。

嵌入式linux系统的开发——多网口交换机的实现

多网口配置

在uboot的configuration界面取消对ETH_One_Port_Only选项的选择(config.in文件可修改configuration界面的配置项)。

嵌入式linux系统的开发——多网口交换机的实现

界面的配置项最终会生成为autoconf.h文件中的宏定义,未选中ETH_One_Port_Only选项时,autoconf.h文件中则未定义ETH_ONE_PORT_ONLY宏定义。autoconf.h文件内容如下:

/* Automatically generated by make menuconfig: don't edit */

……

未选中ETH_One_Port_Only选项:#undef ETH_ONE_PORT_ONLY

……

在rt2880_eth.c中, 根据宏定义ETH_ONE_PORT_ONLY选择对MT2688的AGPIO_CFG寄存器和GPIO2_MODE寄存器进行配置。rt2880_eth.c文件内容如下:

嵌入式linux系统的开发——多网口交换机的实现

总结实现MT7628/7688集成5端口的switch功能后,可根据需要对5端口进行VLAN划分,具体VLAN的划分方法可参考文章《嵌入式linux系统的开发—— VLAN虚拟网络划分实现》。


分享到:


相關文章: