1. 程式人生 > >雜記:Cortex™-A8 am335x cpsw (一)

雜記:Cortex™-A8 am335x cpsw (一)

14.1簡介

3口的乙太網子系統。它提供乙太網包通訊,並且可以配置成乙太網交換機,提供GMII,RGMII,RMII,MDIO物理介面。

14.2一覽

這個裝置包含一個3口的千兆乙太網交換機子系統CPSW_3GSS_RG,它提供兩個外部的乙太網介面port1和port2,

和一個內部的支援IEEE 1588v2 and 802.1ae的介面port0。

14.3功能描述

14.3.1 cpsw_3g 子系統

14.3.1.1中斷調速

接受和傳送脈衝中斷可以調速,接收越線和混雜中斷不能調速。

14.3.1.2重啟隔離

只有POR pin reset and ICEPICK COLD reset可以讓交換機重啟。

14.3.1.3

14.3.1.3.1 接收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清零

14.3.1.3.2傳送Packet完成脈衝中斷TX_PULSE

與接收套路一樣

14.3.1.3.3

使能寫一到RX_INTMASK_SET,RX_THRESH_EN

中斷觸發,通告空閒buffer計數RXn_FREEBUFFER,小於等於RXn_PENDTHRESH。

讀Cn_RX_THRESH_STAT,確定那個通道

處理接收到的packets並增加更多的buffer。

寫完成指標地址。

寫0到CPDMA_EOI_VECTOR

禁止:RX_INTMASK_CLEAR寫一,清零RX_THRESH_EN

14.3.1.3.4混雜中斷(EVNT_PEND, STAT_PEND, HOST_PEND, MDIO_LINKINT, MDIO_USERINT).

Cn_MISC_EN[4:0 ]Cn_MISC_STAT[4:0]

  讀Misc_Stat[4:0],確定中斷源

處理中斷

(0x3)寫到CPDMA_EOI_VECTOR

MDIO_LINTINT[1] and MDIO_USERINT[1]沒用到

14.3.2 cpsw_3g

符合IEEE Std 802.3標準

它包含兩個CPGMAC_SL 介面(ports 1 and 2),

一個CPPI 3.0介面(port 0),

通用平臺時間對時cpts

ale engine(adress lookup engine)

cpdma

14.3.2.4 CPDMA RX and TX 介面

CPDMA 子模組是cppi3.0協議的dma packets傳輸控制器,他是port0。

主控寫 STATERAM塊裡面的 傳送通道頭描述符指標地址 來初始化傳送操作。

這樣傳送dma控制器會從packet鏈裡面取出packet傳送到外部的傳送fifo裡面去,64位元組最大一次。

接收差不多

14.3.2.4.1 CPPI Buffer 描述符

描述符用來描述一個buffer的資訊,並且描述符是連結串列形式連線在一起的。

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

14.3.2.4.1.1 TX Buffer 描述符

Next Descriptor Pointer下一描述符指標,標識下一個描述符的地址。

主控設定,emac不會設定。一旦加入了傳送queue,不要改,除非這個值為NULL,並且有新的

描述符要新增到它的後面。如果在新增之前,emc就已經處理完了NULL的描述符(讀EOQ標識),則需要重新啟動傳送。

Buffer Pointer

主控設定,emac不會設定。

Buffer _Offset

buffer頭部有多少位元組不能用。只有sop(pakcet頭有用)

Buffer _Length

buffer中有效位元組長度,不包括無用位元組數offset,必須要大於零。

Start of Packet (SOP) Flag

主控設定,emac不會設定。指示是一個新packet的第一個buffer描述符。

End of Packet (EOP) Flag

主控設定,emac不會設定。指示是一個packet的最後一個buffer描述符。

Ownership

為一的話表明從sop到eop的描述符現在控制權在emac。主控設定1,emac清零如果傳送完了

只用在sop描述符上。

EOQ

為一的話表明,這個描述符是整個傳送通道的最後一個描述符,並且傳送被掛起。

主控清零,emac置一。

只用在eop描述符上。

teardown_Complete

只有在device driver reset or shutdown conditions

emac置一 在所有的sop描述符上

pass_crc

主控置一,在sop上

標識packet資料裡面已經有4位元組的crc校驗了。emac不要再添加了

to_port

傳送到哪個port上去,sop有效

但是ale查詢會執行 用來確定沒有標籤的出口  在VLAN_AWARE模式

To_port_enable

sop有效,只送往一個port

Packet Length

所有buffer加在一起,整個packet的有效長度。sop有效。如果長度不對會觸發錯誤中斷

14.3.2.4.1.2 RX Buffer Descriptors

rx_vlan_encap

置一表明,這個packet有32bit的vlan頭。被CPSW control register rx_vlan_encap bit控制

14.3.2.4.2 Receive DMA Interface

Initialize the receive addresses.
• Initialize the Rx_HDP Registers to zero.
• Enable the desired receive interrupts in the IntMask register.
• Write the rx_buffer_offset register value.
• Setup the receive channel(s) buffer descriptors in host memory as required by CPPI 3.0.
• Enable the RX DMA controller by setting the rx_en bit in the Rx_Control register.

14.3.2.4.3 Transmit DMA Interface

 8個通道,優先順序固定模式,和round robin模式,7最高。TX_VBUSP介面64位元組傳送。

Initialize the Tx_HDP registers to a zero value.
• Enable the desired transmit interrupts in the IntMask register.
• Setup the transmit channel(s) buffer descriptors in host memory as defined in CPPI 3.0.
• Configure and enable the transmit operation as desired in the TxControl register.
• Write the appropriate Tx_HDP registers with the appropriate values to start transmit operations.

14.3.2.5 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的資料會根據頭改變。

14.3.2.7 Address Lookup 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置位。

廣播packet 廣播地址有條目且super bit置位

單播地址  地址有條目且block 和 secure bit置位

以上是所謂Supervisory packets。

14.3.2.7.1 Address Table Entry

   1024個條目。代表

空的

地址

vlan

vlan和地址對

oui地址

不能有兩個相同地址條目。

多播地址在ale處理前需要改成單播地址,改變他的第40位。

如果packet的源地址和目的地址相同則:學習或更新,且丟棄。

14.3.2.7.1.2 Multicast Address Table Entry

Multicast Forward State (MCAST_FWD_STATE)

表明port狀態,接收port需要的狀態,為了把packet轉發到傳送port的 用於packet的目的地址t的查詢的狀態。

  傳送port必須在Forwarding state。

 轉發狀態測試為真。當傳送和幾首port都在需要的狀態下。

14.3.2.7.1.3 VLAN/Multicast Address Table Entry

14.3.2.7.1.4 Unicast Address Table Entry

DLR Unicast  

1到2,2到1  ,0到1或2

匹配的目的地址傳送到vlan_member_list,port_number被忽略。

Block (BLOCK)

源地址或目的地址匹配,則packet丟棄。

Secure (SECURE)

源地址與條目相同,但是接收的port號與條目的port不相匹配,則丟棄。

14.3.2.7.1.5 OUI Unicast Address Table Entry

14.3.2.7.1.6 VLAN/Unicast Address Table Entry

14.3.2.7.1.7 VLAN Table Entry

VLAN ID (VLAN_ID) 12bit

Force Untagged Packet Egress (FORCE_UNTAGGED_EGRESS)

強制去掉vlan封裝

VLAN Member List (VLAN_MEMBER_LIST)

vlan包含的的port

14.3.2.7.2 Packet Forwarding Processes

 四道工序,Ingress Filtering, VLAN_Aware Lookup, VLAN_Unaware Lookup, and Egress.

每個port都有packet轉發狀態 四種  block forwarding learning,disabled(預設)

接收工序,有轉發狀態測試。

相關推薦

雜記Cortex™-A8 am335x cpsw

14.1簡介 3口的乙太網子系統。它提供乙太網包通訊,並且可以配置成乙太網交換機,提供GMII,RGMII,RMII,MDIO物理介面。 14.2一覽 這個裝置包含一個3口的千兆乙太網交換機子系統CPSW_3GSS_RG,它提供兩個外部的乙太網介面port1和port2,

Android應用開發網絡工具——Volley

要求 com 庫文件 urn welcom 順序 之前 air tin 引言 網絡一直是我個人的盲點,前一陣子抽空學習了一下Volley網絡工具的用法,也透過源代碼進行了進一步的學習,有一些心得想分享出來。在Android開發中,成熟的網絡工具不少,And

Java總結篇系列Java多線程

常見 而是 同時 private 狀態 過程 運行時 不同的 bstr Java總結篇系列:Java多線程(一) 多線程作為Java中很重要的一個知識點,在此還是有必要總結一下的。 一.線程的生命周期及五種基本狀態 關於Java中線程的生命周期,首先看一下下面這張較

MyEclipse WebSphere開發教程WebSphere 7安裝指南

develop 技術分享 thum server file enter 操作系統 更多 launchpad 【周年慶】MyEclipse個人授權 折扣低至冰點!立即開搶>> 【MyEclipse最新版下載】 一、先決條件和系統信息 想要使用WebSphere

MIT公開課算法導論 筆記

數組 數學 can div 大局觀 一課 漸近符 bsp 貨幣 課程鏈接:http://open.163.com/special/opencourse/algorithms.html 第一課:算法分析基礎 1.介紹插入排序與歸並排序,計算並比較最壞運行時間 2.算法分析重點

理解異步之美Promise與async await

進行 這就是我 按順序 script 做的 sea rip pre 每次 你可能會放出一個怪物 異步與同步相比,最難以掌控的就是異步的任務會什麽時候完成和完成之後的回調問題, 難以掌控的觸發狀態,讓你自己寫的代碼當時還可以讀懂,但是過幾天、半個月之後如果不重新盤一邊邏輯,你

算法筆記復雜度分析

n+1 增長 角度 復雜 判斷 and 就是 ret 執行時間 (一)漸進符號(這裏暫時只考慮大O) 以輸入規模n為自變量建立的時間復雜度實際上還是較復雜的,例如an2+bn+c+1,不僅與輸入規模有關,還與系統a、b和c有關。此時對該函數進一步抽象,僅考慮運行時間的

轉載Docker源碼分析Docker架構

但是 server engine 設計實現 傳統 microsoft {} 操作 libc 原文地址: http://www.infoq.com/cn/articles/docker-source-code-analysis-part1 作者:孫宏亮 1 背景 1.1 D

前端HTML5 and CSS 入門

1. Say Hello to HTML Element HTML是英文Hyper Text Markup Language(超文字標記語言)的縮寫。 你看到<h1>Hello</h1>了嗎? h1就是一個HTML元素,h1是header1的簡寫,意思是一

BootstrapResponsive Design with Bootstrap

1.Use Responsive Design with Bootstrap Fluid Containers 現在讓我們回到我們的Cat Photo應用。這次,我們將用流行的響應式框架Bootstrap來美化它。 Bootstrap將會根據你的螢幕的大小來調整HTML元素的大小 —

C++學習list容器詳解

list容器詳解       首先說說STL         STL就是Standard Template Library,標準模板庫。這可能是一個歷史上最令人興奮的工具的最無聊

CTF之知識補充網路基礎淺談

開始做CTF題目的時候發現有太多的知識需要補救了,接下來就講講網路的一些基礎知識。因為是自學,肯定會不全面,大家看看就行,有不同見解的也可以在下方評論。 計算機網路體系結構的形成 在此之前,人們已經提出並設計出了計算機體系結構,從系統的角度去定義計算機的構成和

Spark2.3.2原始碼解析 6. SparkContext原始碼分析 SparkEnv

    SparkContext 是通往 Spark 叢集的唯一入口,可以用來在 Spark 叢集中建立 RDDs 、 累加器( Accumulators )和廣播變數( Broadcast Variables ) 。 SparkContext 也是整個 Spark 應用程式(

JIT編譯器雜談#1JIT編譯器的血緣

這年頭啥都得講個娛樂性。專欄第一篇雜談,先來點八卦輕鬆一下。 對我來說,有沒有人最近用DJI無人機求婚成功啥的如同耳邊一陣風;上週CoreCLR在GitHub上以MIT許可證開源了才是激動人心的娛樂新聞啊! 趁著這個娛樂熱點,從CLR的JIT編譯器引伸出去,我想在這篇雜談

新手解讀laravel 框架原始碼分析

眾所周知,php的框架數不勝數,近幾年,一個以優雅著稱的框架,漸漸被國內phper所知道,並且開始使用,但是larave有一個很明顯的缺點就是,他的文件內容少的可憐。而且國內的社群也不是很活躍。所以對使用這款框架的新書造成了很大困難。 作者作為一個入門也沒多久的新手,

吳恩達深度學習系列課程筆記卷積神經網路

本系列文章將對吳恩達在網易公開課“深度學習工程師”微專業內容進行筆記總結,這一部分介紹的是“卷積神經網路”部分。 1、計算機視覺 計算機視覺在我們還是生活中有非常廣泛的應用,以下幾個是最常見的例子: 影象分類: 可以對影象中的物體種類進行判斷,如確定影象中

給IOS學習者關於C++的介紹

你已經精通了Objective-C,並且一直想學更酷的東西?看看這篇文章吧!本文將向iOS開發者介紹C++。稍後我會介紹,Objective-C能夠無縫地使用C和C++程式碼。因此,基於以下幾點原因,iOS開發者理解C++將會很有幫助: 1.有時候你想在應用中使用一個用C++編寫的庫。 2.你可能用C+

從壹開始微服務 [ DDD ] 之十 ║領域驅動【實戰篇·中】命令匯流排Bus分發

烽火 哈嘍大家好,老張又見面了,這兩天被各個平臺的“雞湯貼”差點亂了心神,部落格園如此,簡書亦如此,還好群裡小夥伴及時提醒,路還很長,這些小事兒就隨風而去吧,這周本不打算更了,但是被群裡小夥伴“催稿”了,至少也是對我的一個肯定吧,又開始熬夜中,請@初久小夥伴留言,我不知道你的地址,就不放連結了。 收住,言

kubernetes學習2.kubernetes叢集搭建架構介紹

kubernetes叢集搭建:架構介紹 作為一個容器的編排管理工具,k8s的效能出眾而且社群力量強大,連docker官方也已經預設k8s為容器編排的首選工具。所以我們更有必要去學習和了解它。 k8s的整體架構主要分為兩個部分: master(控制節點)和

學習筆記 -- 斯坦福課程CNN for Visual Recognition

去年就想聽聽這“接地氣”的課程了,但最終也沒有堅持下來。今年既然有了線上的課程視訊,我也開個筆記系列,好好地從基礎開始學起吧。由於課程內容還是比較基礎,這裡只紀錄一些個人覺得有趣或者有用的點,更多的內容大家直接去網站上看吧,相信會有不少收穫的。 Lectu