基於I.MX6Q PCIE的千兆以太網(intel I210)的擴展設計

 

 

前言:我們在使用I.MX6Q的過程中,由於CPU只帶一個以太網控制器,而我們的設計需要2個甚至多個,此時就設計到以太網擴展的問題,以太網擴展方案其實挺多的,打個比方:

1.基於localbus總線的DM9000以太網控制器的擴展設計;

2.基於USB總線的USB9514的以太網+USBHUB控制器的擴展設計;

3.基於PCIE總線的I210 PCIE PHY以太網控制器的擴展設計。

前兩種擴展設計早些年都玩過,但是速度上不是很滿意,後來ARM上有了PCIE總線之後,終於可以擴展PCIE以太網了。

PCIE以太網擴展設計涉及到PCIE PHY芯片的選型,我之前選過realtek的RTL8111E,marvel的88E8057,也都進行過測試,由於RTL沒有工業級的芯片,marvel的88E8057後期又被告之停產,所以才選型intel的I210芯片,這款芯片支持光口以及電口,要注意的是,所有的模式的配置,都是由外置的SPI FLASH或者片內的INVM的配置,沒有這些的話,I210的默認型號是0X1531,這是無法使用的,準確的使用型號如下:

2.13 What are the PCI Device IDs for the I210/I211?
• I210-AT – 0x1531 (hardware default, indicating an unprogrammed device)
• I211-AT – 0x1532 (hardware default, indicating an unprogrammed device)
• I210-AT – 0x1533
• I210-IS/AS - 0x1536 SERDES Fiber
• I210-IS/AS - 0x1537 SERDES Backplane (KX, BX)
• I210-IS/AS - 0x1538 SGMII (external PHY controlled via MDIO or I2C)
• I211-AT – 0x1539
• I210-IS/AS – 0x157C using iNVM (no flash memory)
• I210-AT – 0x157B using iNVM (no flash memory)

 

所以在設計的時候,建議把SPI FLASH設計進去,後期通過SPI FLASH燒寫器來批量燒寫SPI FLASH,較爲方便快捷。

如果需要通過I210出百兆光口設計的話,需要在後端增加一個88E1112 PHY芯片,流程:The I210 in SGMII mode <-> Marvell 88e112 <-> SFP cage.

 

I210原理圖參考設計如下圖:

 

這裏我主要提幾點:

1.關於外部有源晶振的選型設計,第一,由於I210  XTAL腳電平比較低,一般3V3的晶振不使用,所以需要選一款1V8的,或者也可以通過電容分壓來實現輸出CLK腳電平的控制;

2.PCIE的時鐘,FSL官方本身就不建議使用I.MX6自帶的PCIE CLK,所以我這裏選型的是pericom的PCIE100外部有源差分時鐘;

3.PCIE TX RX的輸入輸出的對應;

4.reset腳3V3上拉,外部連接到CPU的GPIO,用來控制I210的復位,一般是電源和時鐘穩定後的100ms,對I210進行復位,時序上要把握好,大於100ms都可以。

5.如果外部用的是100光口,接的88E1112的話,請把I210的MDIO MDC連接到SFP座子上,這樣驅動才能通過MDIO MDC讀取外部PHY的信息,否則無法正常使用。

6.對於PCIE這種高速總線的走線,儘量不要走表層和底層,可能會導致輻射發射超標,另外就是過孔儘量少,一般PCIE過孔不超過6個hole,我記得SATA總線的要求更高,一般不超過2個hole。

7.一再強調,SPI FLASH一定要預留好,否則後期調試,全是坑。

 

 

linux內核方面,主要記得添加對I210的支持,配置如下:

 

 .config - Linux/arm 4.1.15 Kernel Configuration
 → Device Drivers → Network device support → Ethernet driver support ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  ┌────────────────────────────────────────────────────────────────────────────────────── Ethernet driver support ──────────────────────────────────────────────────────────────────────────────────────┐
  │  Arrow keys navigate the menu.  <Enter> selects submenus ---> (or empty submenus ----).  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, <M> modularizes features.  Press    │  
  │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable                                                                                                                             │ │  
  │ │                                                             < >     Intel(R) PRO/100+ support                                                                                                   │ │  
  │ │                                                             < >     Intel(R) PRO/1000 Gigabit Ethernet support                                                                                  │ │  
  │ │                                                             < >     Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support                                                                                                           <*>     Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support                                                    
                                                                     [*]       Intel(R) PCI-Express Gigabit adapters HWMON support 

 

編譯內核,測試linux下網卡性能,差不多能達到880M/s.結果較爲滿意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章