Marvell交換芯片總結 —— 寄存器


Marvell 88E6390X

該芯片作為PHY和SERDES使用

基礎知識

MII

MII 是一個標准接口,用於連接 MAC 和 PHY。MII 是 IEEE-802.3 定義的以太網標准, MII 接口可以同時控制多個 PHY。

 

MII包含兩個接口:

1.一個數據接口,用戶 MAC 和 PHY 之間收發 Ethernet 數據
2.一個管理接口,這個管理接口通常稱為 MDIO,MIIM 或者 SMI。
  這個接口用於 MAC 從 PHY 讀取相關管理寄存器的值,或者往 PHY 管理寄存器上寫入數據。

 

 MDIO

MDIO 也被稱為 MIIM,或者 SMI,它是 IEEE802.3 定義標准 MII 接口的一部分,用於 MAC 配置 PHY。MDIO 具有兩個信號線,分別如下:

1. MDC 時鍾線:MDIO 的時鍾信號,由 MAC 驅動 PHY

2. MDIO 數據線:雙向數據線,用於在 MAC 和 PHY 之間傳輸配置信息

MDIO 總線只支持 MAC 作為主設備,PHY 作為從設備。MIDO 支持兩種時序,分別為 Clause 22 和 Clause 45.

MDIO接口最初是由IEEE RFC802.3中的22號條款定義的,在最初的定義中,一個單獨的MDIO接口可以訪問32個不同的PHY設備中的32個寄存器,這些寄存器提供狀態和控制信息,例如:連接狀態、傳輸速度能力、當前選擇的傳速、低壓消耗時的下電情況、全雙工還是半雙工、自動協商、錯誤提示以及反饋信息等等。
 
為了滿足10G以太網設備的普及發展,在IEEE 802.3ae 的45號條款中為MDIO接口提供了額外的規范:
1)能夠通過32個端口訪問32個不同設備的65536個寄存器;
2)為訪問10G以太網提供額外的OP碼和ST碼,從而可以直接訪問寄存器地址;
3)端到端的報錯信號;
4)環回模式控制;
5)低壓電氣標准。

22號條款

22號條款的MDIO通信的幀格式定義如下:

                

 

45號條款

為了彌補22號的條款中定義的缺陷,45號條款中增添了對低壓設備的支持,最低可到1.2V,同時擴充了幀格式,能夠訪問更多的設備和寄存器。
 
45號MDIO通信幀格式如下:

           

 第45號條款的主要變化是如何訪問寄存器。在第22中,一個單獨的幀指定要讀或寫的地址和數據,同時完成了這些工作。45號中改變這種范式,第一個地址幀發送到指定的MMD和寄存器,然后發送第二幀來執行讀或寫。

 

工作模式

該芯片有兩種尋址模式:單芯片尋址和多芯片尋址。

多芯片尋址
  對於多芯片尋址,需要給芯片設置一個非零的SMI地址(ADDR[4:0]的反碼)。在多芯片尋址模式下,僅有兩個寄存器(0x00:SMI Command Register 0x01:SMI Data Register)能夠使用,內部各PORT的寄存器均由這兩個寄存器間接訪問。

  通過向SMI Command Register的[9:5]寫入內部SMI設備地址,[4:0]寫入內部SMI寄存器地址來訪問各個Port的內部寄存器,[11:10]決定決前是寫入還是讀出操作。

 

   通過向SMI Data Register的[15:0]位寫入或讀取SMI Command Register設定的寄存器內容。

 

單芯片尋址
  對於單芯片尋址,其SMI地址為0x00(針對整個芯片),即ADDR[4:0]=0x1F。

   

在單芯片尋址模式下,每個Port都有各自的SMI地址(針對內部每個Port),Port0-Port9對應的SMI地址分別為0x0-0x9(直接訪問),port10對應0xA。

若Port0、1、2等接有外部PHY,則必須使用以下SMI地址,0x00對應Port0,0x01對應Port1,這樣PPU才能自動的輪詢各個PHY獲取各自的連接狀況,速度,雙工情況,流控狀態等信息,這些外部PHY需要使用Global2 offset 0x18、0x19進行訪問。對於Port3a、Port4的內部PHY地址映射為0x03、0x04;Port9、Port10的內部SERDES映射為0x9、0xa,同樣的,也是需要使用Global2 offset 0x18、0x19進行訪問。

Global2 寄存器的 Offset24,25 寄存器
前文提到,兩個非常重要的寄存器,即Global2 offset 0x18、0x19寄存器,在單芯片尋址模式下PHY和SERDES寄存器的訪問都必須通過這兩個寄存器間接訪問。

Global2 offset 0x18 (SMI PHY Command Register)寄存器

 bit[12]指定了幀協議是22號時序還是45號時序。22號協議下,與多芯片存儲能夠訪問的Command Register寄存器一樣,[9:5]寫入SMI設備地址,[4:0]寫入SMI寄存器地址來訪問各個Port的內部寄存器,[11:10]決定當前是寫入還是讀出操作。45號協議,[9:5]指定port,[4:0]指定設備類別。

Global2 offset 0x19 (SMI PHY Data Register)寄存器

 與SMI Data Register相同,通過[15:0]位寫入或讀取SMI Command Register設定的寄存器內容。

在45號協議下,第一個地址幀發送到指定的MMD和寄存器,我們要把PHY Command Reg中的[11:10]置為0x00=write Address register,即在第一個幀中的最后16位數據中,指定要操作的寄存器的地址。隨后在第二個數據幀中,要把PHY Command Reg中的[11:10]置為0x01=write data register,即第二個幀中的最后16位寫入的是數據。

Uboot 中訪問 MDIO (SMI/MIIM)

項目開發中,經常要在 uboot 階段通過 MDIO 總線去配置 PHY 或者 SWITCH。

 

 更多指令

示例:

6390x config

**配置端口10**
//0xa:P10  
//0x34a:
//      bit[3:0]-0xa-接口配置模式-SGMII
//        bit[6]  -0x1-EEE(Energy Efficient Ethernet)Enabled
//        bit[9:8]-0x3 = 10Gb or 2500Mbps
miiwrite 0xa 0 0x34a

**配置端口5** 
//p5        p177  p355
//addr:0x1c  
//regi:0x19  SMI Data register
//regi:0x18  SMI Command register
//在45號條款中
//第一個地址幀發送到指定的MMD和寄存器,然后發送第二幀來執行讀或寫。

miiwrite 0x1c 0x19 0x2000   //將數據0x2000寫到PHY data寄存器0x19中
miiwrite 0x1c 0x18 0x82a4    //將數據0x82a4寫到PHY Command寄存器中
//0x82a4 
//bit[15]:0x1——此位在首次操作SMI時,要置為1,並且在操作SMI完畢之后會自動清零
//bit[14:13]:0x0——內部訪問-用於訪問包含在這個設備中的內部PHYs和/或serde。
//bit[12]:0x0——SMI MODE——Generate IEEE 802.3 Clause 45 SMI frames
//bit[11:10]:0x0—— Write Address Register
//bit[9:5]:寫入SMI設備地址-0x15——Port 10 Lane 1 = Port 5 & its registers are accessed at SMI address 0x15
//bit[4:0]:device class(clause 45)
//第一個地址幀的后16位為Addr,即data register中的數據0x2000

miiwrite 0x1c 0x19 0x8140    //將數據0x8140寫到PHY data寄存器0x19中
miiwrite 0x1c 0x18 0x86a4    //將數據0x86a4寫到PHY Command寄存器中
////bit[11:10]:0x01—— Write data Register
//第二個幀,后16位為要寫入的數據,即data register中的數據0x8140

 

參考:

芯片相關文檔

MDIO (SMI/MIIM)

Marvell交換芯片88E6321/88E6320驅動總結-寄存器篇

了解與MDIO/MDC接口相關的22號、45號條款

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM