發布日期:2022-04-18 點擊率:120
關鍵詞: ARM Linux Ethernet
摘要:隨著ARM處理器性能的提升以及嵌入式設備對聯網的需求越來越多,目前主流ARM處理器以及板卡主要原生提供一個百兆或者千兆網絡接口在一些應用場景已經不能滿足需求,因此本文就著重介紹在嵌入式Linux下對ARM平臺警醒網口擴展方案。
1). 簡介
隨著ARM處理器性能的提升以及嵌入式設備對聯網的需求越來越多,目前主流ARM處理器以及板卡主要原生提供一個百兆或者千兆網絡接口在一些應用場景已經不能滿足需求,因此本文就著重介紹在嵌入式Linux下對ARM平臺警醒網口擴展方案。
對于ARM平臺,如果有提供PCIE接口,則是擴展網口尤其是千兆網口的最佳選擇;而對于有些平臺沒有提供PCIE或者已經被其他設備占用,則可以考慮使用USB擴展,需要注意的是如果擴展百兆接口則USB2.0接口帶寬可以滿足需求,而如需擴展千兆網口,則最好使用USB3.0,否則有可能在USB總線處造成網絡帶寬的瓶頸。
本文就以Toradex Apalis iMX6 ARM計算機模塊平臺來展示網口擴展,由于其提供了USB2.0和PCIE x1接口,我們會對上述兩種方式都進行測試。
2). 準備
a). Toradex Apalis iMX6D 512M 計算機模塊搭配Apalisevaluation Board載板
b). USB網卡
./ AX8872B USB2.0 轉百兆網口
./ AX88179 USB3.0 轉千兆網口
c). PCIE網卡
./ Intel 82580 PCIE x1 轉雙千兆網口
./ Realtek RTL8168 PCIE x1 轉千兆網口
d). 嵌入式Linux
./ Toradex 最新Linux發布版本V2.6.1beta1
e). 帶寬測試
./ Apalis iMX6 擴展網口連接局域網千兆交換機,通過DHCP獲取IP地址,并和同一局域網內的Windows PC進行iperf帶寬傳輸測試。
./ Apalis iMX6 網口IP等配置有多種方式可以使用,詳細請見這里,本文使用配置”/etc/systemd/network/wired.network”文件方式。
3). 具體測試
a).AX8872B USB2.0 轉百兆網口
驅動Linux image 原生支持,即插即用。
Iperf測試帶寬數據如下,接近百兆線速。
b). AX88179USB3.0 轉千兆網口
./ 驅動同樣Linux image 原生支持,即插即用。
./ Iperf測試帶寬數據如下,可以看到帶寬相比百兆網口還是明顯上升,不過由于USB 2.0接口的瓶頸,在真正USB3.0接口下應還有一定提升。
另外,對于USB網卡,如果遇到image沒有自帶驅動的時候,可以進入下載內核源碼進入內核config看是否有現成的驅動可以選擇,如筆者手里還有一個RTL8153 USB3.0 轉千兆網口網卡,則在內核中有現成的驅動,位置在[Device Drivers -> Network device support -> USB NetworkAdapters]。
c). Intel82580 PCIE x1 轉雙千兆網口
./ 驅動image中沒有原生支持,需要按照這里的說明下載內核源碼,在內核config中有提供現成的源碼,位于[Device Drivers -> Network device support -> Ethernet driversupport -> Intel (R) 82575/82576 PCI-Express Gigabit Ethernet support]選中即可,然后繼續按照上面說明文檔重新編譯內核并更新呢部署到iMX6模塊上面。
./ 單網口Iperf測試帶寬數據如下,可以看到沒有了USB2.0的限制,傳輸帶寬明顯提高。
d). RealtekRTL8168 PCIE x1 轉千兆網口
./ 驅動image中沒有原生支持,Linux內核中也沒有提供驅動,因此需要手動編譯,流程如下:
-從Realtek官網這里下載RTL8168最新Linux驅動源碼(支持3.x內核版本),需和之前下載Linux內核為同一Linux主機,因需要內核文件做交叉編譯。
-解壓源碼包,如下修改源碼包中src/Makefile
--------------------------------
……
baseDIR := /…/linux-toradex (Linux 內核源碼linux-toradex目錄路徑)
KERNELDIR ?= $(baseDIR)
……
--------------------------------
-退出src目錄,在源碼包根目錄執行”make”命令進行編譯,編譯ko文件可以成功,install由于沒有正確安裝路徑沒有成功,不過沒有關系,我們只需要ko文件即可。
-編譯后進入src目錄,找到”r8168.ko”驅動文件,可以使用file命令查看下是否交叉編譯成功,是針對ARM的驅動。
--------------------------------
file r8168.ko
r8168.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV),BuildID[sha1]=334c9e891b90767efd17727b3b93d23b0fb90ec7, not stripped
--------------------------------
-將”r8168.ko”驅動復制到iMX6核心板上面,使用”insmod”命令進行加載,在本文網絡環境下,筆者運行” udhcpc -i enp1s0”來獲取IP。
./ Iperf測試帶寬數據如下,和Intel PCIE網卡基本一致。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV