Ethernet 介紹與TI CPSW debug


Overview

  1. Atchiteccutre

  2. GMAC Overview

  3. GMAC top level block diagram

  4. 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

  1. 八通道,RX_PEND [7:0] interrupts.置一相應的位RX_INTMASK_SET,Cn_RX_EN,被屏蔽的可以從Cn_RX_STAT得到中斷通過子系統寫packet的最后一個buffer描述符地址到通道隊列的接收完成指針地址。
  2. 中斷接收到后,cpu需要寫自己處理的最后一個buffer描述符到通道隊列的接收完成指針地址RXn_CP來應答中斷。軟件需要做如下操作。讀RX_STAT寄存器,確定那個通道發的中斷。
  3. 處理接收到的packets。寫3PSW completion pointer(s) (RXn_CP).軟件寫的值會和子系統寫的值相比較,如果不相等,則意味着,軟件沒有把所有的buffer處理完,這個中斷會一直保持觸發狀態。通過讀RXn_CP,可以知道子系統寫的值。
  4. 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字節最大一次。

接收差不多

  1. CPPI Buffer 描述符: 描述符用來描述一個buffer的信息,並且描述符是鏈表形式連接在一起的。

    8K的cppi ram 地址從0x4a102000到0x4a103FFF。

  2. TX Buffer 描述符: Next Descriptor Pointer下一描述符指針,標識下一個描述符的地址。主控設置,emac不會設置。一旦加入了發送queue,不要改,除非這個值為NULL,並且有新的描述符要添加到它的后面。如果在添加之前,emc就已經處理完了NULL的描述符(讀EOQ標識),則需要重新啟動發送。

  3. to_port:發送到哪個port上去,sop有效 但是ale查詢會執行 用來確定沒有標簽的出口 在VLAN_AWARE模式

  4. TO_PORT_ENABLE: sop 有效,只送往一個port

  5. PACKET LENGTH: 所有的packet 的有效長度,SOP有效,如果長度不對會觸發錯誤中斷。

  6. 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)

  1. 判據: 接收port/目的地址/源地址/長度和類型/vlan信息。
  2. 使能:ale_enable bit in ale_control寄存器, 不使能,所用packet都會丟棄。正常情況下,cpgmac_sl會把異常數據packet丟棄,除非設置了cef, csf, or cmf,這樣只送往port0.
  3. 學習: 基於源地址,查找基於目的地址。
  4. 在bypass模式下,ale_bypass bit in the ALE_Control寄存器。cpgmac_sl接收的數據只會送往port0,CPDMA_Rx_Ch_Map register.使得packet從不同通道發送。
  5. port0 在發送的時候需要制定發送port號。
  6. 在oui禁止模式,enable_oui_deny bit in the ALE_Control寄存器。oui源地址不匹配,packet被丟棄,除非目的地址匹配廣播條目且super bit置位。單播地址 地址有條目且block 和 secure bit置位,以上是所謂Supervisory packets。

Debug

  1. confirm the MDIO hardware connecting and clk

  2. check the alive register

  3. check the link state


免責聲明!

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



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