Overview
-
Atchiteccutre
-
GMAC Overview
-
GMAC top level block diagram
-
CPSW 3G
Feature:
- Two thernet ports(Port0 and port1)
- QOS support (Quality of Service)
- CPPI 3.1 compliant DMA controllers
- Support for Audio/Video Briding
- Flow Control support
- ADDress loopup engine(ALE)
- VLAN support
- 8k (2048 × 32) internal CPPI buffer descriptor memory
- Management Data Input/Output (MDIO) module for PHY Management
The GMAC_SW subsystem consists of:
- CPSW_3G which contains two G/MII interfaces
- Two RGMII interface modules
- Two RMII interface modules
- One MDIO interface module
- One Interrupt Controller module
- One CPPI interface
- Local CPPI memory of size 8 KiB
- Two Static Packet Filter
The CPSW subsystem consists of:
- CPGMAC_SL interfaces (ports 1 and 2)
- one CPPI interface Host Port (port0)
- Common Platform Time Sync (CPTS)
- ALE Engine
- CPDMA
CPSW
introduction
3口的以太網子系統。它提供以太網包通信,並且可以配置成以太網交換機,提供GMII,RGMII,RMII,MDIO物理接口。這個設備包含一個3口的千兆以太網交換機子系統CPSW_3GSS_RG,它提供兩個外部的以太網接口port1和port2,和一個內部的支持IEEE 1588v2 and 802.1ae的接口port0。
接收Packet完成脈沖中斷RX_PULSE
- 八通道,RX_PEND [7:0] interrupts.置一相應的位RX_INTMASK_SET,Cn_RX_EN,被屏蔽的可以從Cn_RX_STAT得到中斷通過子系統寫packet的最后一個buffer描述符地址到通道隊列的接收完成指針地址。
- 中斷接收到后,cpu需要寫自己處理的最后一個buffer描述符到通道隊列的接收完成指針地址RXn_CP來應答中斷。軟件需要做如下操作。讀RX_STAT寄存器,確定那個通道發的中斷。
- 處理接收到的packets。寫3PSW completion pointer(s) (RXn_CP).軟件寫的值會和子系統寫的值相比較,如果不相等,則意味着,軟件沒有把所有的buffer處理完,這個中斷會一直保持觸發狀態。通過讀RXn_CP,可以知道子系統寫的值。
- CPDMA_EOI_VECTOR寄存器寫1.
取消中斷如下:寫一到RX_INTMASK_CLEAR,RX_EN清零
發送Packet完成脈沖中斷TX_PULSE
與接收類似
cpsw_3g
它包含兩個
- CPGMAC_SL 接口(ports 1 and 2),
- 一個CPPI 3.0接口(port 0),
- 通用平台時間對時cpts
- ale engine(adress lookup engine)
- cpdma
CPDMA RX and TX 接口
CPDMA 子模塊是cppi3.0協議的dma packets傳輸控制器,他是port0。主控寫 STATERAM塊里面的 發送通道頭描述符指針地址 來初始化發送操作。這樣發送dma控制器會從packet鏈里面取出packet發送到外部的發送fifo里面去,64字節最大一次。
接收差不多
-
CPPI Buffer 描述符: 描述符用來描述一個buffer的信息,並且描述符是鏈表形式連接在一起的。
8K的cppi ram 地址從0x4a102000到0x4a103FFF。
-
TX Buffer 描述符: Next Descriptor Pointer下一描述符指針,標識下一個描述符的地址。主控設置,emac不會設置。一旦加入了發送queue,不要改,除非這個值為NULL,並且有新的描述符要添加到它的后面。如果在添加之前,emc就已經處理完了NULL的描述符(讀EOQ標識),則需要重新啟動發送。
-
to_port:發送到哪個port上去,sop有效 但是ale查詢會執行 用來確定沒有標簽的出口 在VLAN_AWARE模式
-
TO_PORT_ENABLE: sop 有效,只送往一個port
-
PACKET LENGTH: 所有的packet 的有效長度,SOP有效,如果長度不對會觸發錯誤中斷。
-
RX Buffer Descriptors: rx_vlan_encap 置一表明,這個packet有32bit的vlan頭。被CPSW control register rx_vlan_encap bit控制
VLAN Aware Mode
CPSW Control register的 vlan_aware bit 置一。
port0從cpsw_3g接收的packets也許是或者不是vlan封裝的,決定於CPSW Control register的 rx_vlan_encap bit.
port0接收的數據不會更改。vlan封裝數據有個32位的頭加在包的數據上。從packet描述符中的 rx_vlan_encap判斷。
port0不能發送vlan封裝的包。
這種模式下,發送packet的數據會根據頭改變。
Address loopup Engine(ALE)
- 判據: 接收port/目的地址/源地址/長度和類型/vlan信息。
- 使能:ale_enable bit in ale_control寄存器, 不使能,所用packet都會丟棄。正常情況下,cpgmac_sl會把異常數據packet丟棄,除非設置了cef, csf, or cmf,這樣只送往port0.
- 學習: 基於源地址,查找基於目的地址。
- 在bypass模式下,ale_bypass bit in the ALE_Control寄存器。cpgmac_sl接收的數據只會送往port0,CPDMA_Rx_Ch_Map register.使得packet從不同通道發送。
- port0 在發送的時候需要制定發送port號。
- 在oui禁止模式,enable_oui_deny bit in the ALE_Control寄存器。oui源地址不匹配,packet被丟棄,除非目的地址匹配廣播條目且super bit置位。單播地址 地址有條目且block 和 secure bit置位,以上是所謂Supervisory packets。
Debug
-
confirm the MDIO hardware connecting and clk
-
check the alive register
-
check the link state