嵌入式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虛擬網絡劃分實現》。


分享到:


相關文章: