Keystone I乙太網子系統調試手冊

2021-01-11 電子產品世界

摘要

本文引用地址:http://www.eepw.com.cn/article/201610/306215.htm

Keystone I系列晶片(C6670,C6671,C6672,C6674,C6678, TCI6614)的乙太網子系統可以劃分為三個功能實體:內部Switch(SGMII Serdes/SGMII/EMAC/CPSW),PA(包加速器),SA(安全加速器)。該子系統因為包含的子模塊多,相對較為複雜,相關的四本用戶手冊內容組織並不是很容易理解,不少用戶在開發過程中都遇到了一些技術難題。本手冊總結實際應用中遇到的部分典型的技術問題和各種問題的調試方法,同時也提供乙太網子系統的各種實用配置和建議。對於具備基本Keystone I乙太網知識的用戶,本手冊可以作為用戶手冊的有力補充。期望讀者在初步閱讀user guide和具備基本的PA LLD/SA LLD開發經驗以後再查閱本文。

1.乙太網子系統說明

圖1 乙太網子系統框圖

在用戶手冊中,乙太網子系統可以稱為網絡協處理器子系統(NETCP),其主要構成模塊有:

1.乙太網交換部分

主要模塊有Serdes,SGMII, EMAC,三埠交換機等

2.包加速器

主要模塊有6個PDSP,3個一級的查找表,1個二級的查找表,對應的Packet DMA等

3.安全加速器

主要模塊有2個PDSP,加解密和鑑權引擎等

注意:

乙太網子系統的整個初始化過程,一般推薦採用從內到外的次序:

PA PAKET DMA->PA PDSP->3 port switch/CPSW->EMAC->SGMII->SGMII Serdes

2.SGMII

2.1 SGMII SerDes配置

Serdes的配置主要與供給的Serdes時鐘相關,下面給出一個對應不同時鐘頻率的配置示例:

312.5MHz->SGMII PLL Configuration Register 0x41,

250MHz-> SGMII PLL Configuration Register 0x51,

156.25MHz-> SGMII PLL Configuration Register 0x81

配置完畢以後,請注意檢查SGMII SerDes Status Register(SGMII_SERDES_STS)的最低Lock 位是否為1。

2.2 SGMII與PHY的連接

當SGMII與PHY連接的時候,SGMII一定是Slave模式,一般情況下同時使能自協商。

2.3 SGMII與Switch的連接

對於支持SGMII標準的外部switch與Keystone I晶片連接的時候,可以一端配置為master,另一端配置為slave,同時使能自協商模式。但是對於只支持1000BASE-X的switch與Keystone I晶片連接的時候,應該將兩端都設置為master模式,並禁止自協商,強制為1000M全雙工。

2.4 MDIO接口與PHY的控制

通過MDIO控制寄存器MDIO_CONTROL可以對外接的PHY進行控制,按照用戶手冊的建議配置到2.5MHz。需要注意的是:

1.MDIO模塊初始化後,應該先通過MDIO讀取PHY的ID寄存器,確認該連接是否正常。

2.讀取MDIO模塊的PHY Alive Status Register(ALIVE)獲取PHY ID(注意PHY ID是0~31)

3.將第二步讀到的PHY ID作為PHY address寫到MDIO User Access Register 0 (USERACCESS0)或者MDIO User Access Register 1(USERACCESS1)中訪問對應的PHY寄存器

2.5 1000M半雙工的問題說明

Keystone I不支持1000M半雙工的應用,當外接的PHY或者是switch支持1000M半雙工時,可能會對keystone I的網絡功能造成影響。特別是當某些PHY在復位過程中,可能會發起1000M半雙工的請求,這種情況下,請在系統上電初始化時先通過MDIO接口關閉PHY的1000M半雙工協商能力。

3.EMAC

3.1 VLAN aware模式和VLAN unaware模式

1.VLAN unaware模式下所有的包不會被改變

2.VLAN aware模式的配置步驟:

A.配置GbE switch Control寄存器(CPSW_CONTROL)的VLAN_AWARE比特

B.配置ALE Control寄存器(ALE_CONTROL)的ALE_VLAN_AWARE比特

C.配置P0_PORT_VLAN,P1_PORT_VLAN和P2_PORT_VLAN寄存器

3.VLAN aware模式對不同包的不同策略:

A.對於untagged包,插入埠所配置的VLAN頭

B.對於priority tagged包,根據CPSW_CONTROL中的 P0_PASS_PRI_TAGGED/P1_PASS_PRI_TAGGED/P2_PASS_PRI_TAGGED配置,如果該位為 0(default),則該埠上收到的priority tagged包中的VLAN ID會被替換為該埠配置的VLAN ID。

C.對於VLAN tagged包,包中的VLAN優先級會被替換為該埠配置的VLAN優先級,VLAN ID 不變。

3.2 EMAC的復位

EMAC模塊提供了一個軟復位的寄存器,一般情況下在晶片上電復位啟動後,不建議使用該寄存器對EMAC模塊做單獨的復位操作,該復位操作後可能會引起乙太網包收發異常,請謹慎使用。

3.3 MAC地址的說明

對於Keystone I的晶片來說,一般可以配置3個MAC地址。以C6678為例,

MACID1(0x02620110)和MACID2(0x02600114)

該MAC地址是出廠時,TI寫到晶片的Efuse裡的,類似於一個晶片ID,只讀不可修改。如果晶片選擇乙太網boot方式,晶片會以該地址發出bootp的報文(Ethernet ready announcement)

MAC1_SA_LO(0x2090870)和MAC1_SA_HI(0x2090874)

MAC2_SA_LO(0x20908A0)和MAC2_SA_HI(0x20908A4)

以上兩個MAC地址是分別配置給兩個EMAC埠的,但該地址的作用僅限於使能乙太網Rx流控以後,封裝發到網絡上的流控幀,並不按MAC地址過濾乙太網包。

因為Keystone晶片有包加速器(PA),MAC地址的過濾應該由配置PA來完成,所以可以認為Keystone I的EMAC模塊工作在混雜模式(Promiscuous mode)。換句話講,所有的報文都會接收併到PA進行過濾,從業務層面,對於一顆Keystone I的晶片理論上最大可以配置64個MAC地址(LUT1-0有64個表項)。

4.CPSW

4.1 ALE模塊的注意事項

4.1.1 MAC地址的老化問題

因為ALE只有1K個表項,且硬體沒有提供內部的timer來自動維護一個老化周期,所以應用程式需要自己維護一個timer。Time第一次超時,應用程式對ALE_CONTROL寄存器的AGE_OUT_NOW比特置位,會導致所有ageable的ALE Entry被設置為untouched;第二次timer超時,再次設置ALE_CONTROL寄存器的AGE_OUT_NOW比特,在兩次超時之間仍保持為 untouched的表項將會被清除。如果在兩次超時之間,有包交換並重新touched的表項將會被保留。

4.1.2 ALE Bypass

設置ALE bypass只是表明從網絡外發到晶片的包,將不會通過查找ALE再交換,而是無條件發送到HOST port。而從HOST port發送到外部的網絡的包仍然要通過ALE交換。

4.1.3 未知的單播,多播,廣播包

1.在某一個埠收到的,ALE中無法匹配的多播和廣播包會被廣播到另兩個埠。

2.在HOST埠收到的,ALE中無法匹配的單播包,會被發送到兩個SGMII埠。

3.在某SGMII埠收到的,ALE中無法匹配的單播包,只會被發送另一個SGMII埠。

4.2乙太網子系統環回配置及其應用

圖2 乙太網子系統環回

乙太網子系統提供如圖的SGMII Serdes環回,SGMII digital環回,CPSW FIFO環回。

注意環回的方向,SerDes環回,SGMII digital環回和CPSW FIFO環回都有內環的功能,也就是晶片內的CPU(包括DSP core,ARM core)向外發的包會被環回到晶片。因為發生環回的節點不一樣,所以可以利用這幾種環回來定位乙太網配置問題。示例:

1.CPSWFIFO環回成功,而Serdes環回和digital環回失敗,基本可以判定EMAC/SGMII配置有問題

2.CPSWFIFO環回和digital環回成功,而Serdes環回失敗,基本可以判定SGMII Serdes配置有問題

3.CPSWFIFO環回,digital環回和CPSW FIFO環回都成功,說明CPSW以下層的配置在基本是正確的

CPSW FIFO環回還包含了外環的功能,也就是從外部網絡(PHY/Switch)進入晶片的包會被環回到外部網絡,晶片內的CPU core將無法收到這些包。這個功能可以用以判定 PHY/switch與keystone I的連接配置是否正確。注意CPSW FIFO環回只能用於debug,使能以後不能動態的去使能,也就是說使能以後若想恢復正常狀態,必須對整個SoC下電,重新上電復位。

4.3 乙太網流控

Rx流控的意義是CPSW檢測到FIFO超過一定的門限以後,該埠主動向網絡外發出乙太網流控幀。該流控幀的發送量是30pps。

Tx流控的意義是CPSW檢測到網絡對端發出的流控幀,報告給HOST(DSP/ARM),由HOST軟體來裁決減少發送的網絡流量。

需要注意的是,如果Rx FIFO的佔用情況一直滿足Rx 流控的檢測條件,Rx flow control 幀會不斷的發送到網絡上,這種情況多出現在上層軟體或者PA/SA出現某種異常的場景下。

4.4 CPSW的統計寄存器

1.寄存器實際都是R/W屬性,比如當你讀到一個寄存器的值為0x80,回寫大於0x80的數字,會導致該寄存器的值清0。實際對該組寄存器的寫操作是減法關係,如果該寄存器正在動態變化中,對它進行寫操作並不會導致統計值的丟失。比如當你讀到一個寄存器的值為0x80,回寫0x80的時刻該寄存器實際的值已經變為0x90(因為該時刻有包的收發),則此時寫0x80的結果是該寄存器的值變為0x90-0x80=0x10。

2.CPSW的統計寄存器有兩組,其中STATA是對應於HOST port,STATB是兩個SGMII port的和

3.對於統計寄存器中的Rx,Tx分別都是站在CPSW模塊的角度統計的結果,換句話說,統計STATA中的Rx表示的是HOST port從DSP/ARM cores收進CPSW的包,Tx表示的是從HOST port 發出CPSW到DSP/ARM core的包;而統計STATB中的Rx表示的是兩個SGMII埠從網絡收進來的包,Tx表示的是從兩個SGMII埠發送到外部網絡的包。

簡單的示例:

1)如果一個包從網絡外發送到Keystone I晶片,DSP/ARM core沒有收到

A.檢查STATB的Rx寄存器

B.檢查STATA的TX寄存器

2)如果一個包從DSP/ARM core發送到網絡外,網絡上沒有收到

A.檢查STATA的Rx寄存器

B.檢查STATB的TX寄存器

4.一般情況下RXSOFOVERRUNS/RXMOFOVERRUNS/ XDMAOVERRUNS寄存器都為0,在某些特定條件下,如乙太網子系統reset過程中收到包,這些寄存器出現較小的值且不增加是正常的。但如果這些寄存器出現不斷增加且收包流量並不大,這種情況一般說明乙太網收包異常,通常異常是由於收包的軟體模塊異常或者PA子系統異常造成的。

4.5 802.1P VLAN QoS的配置

圖3 CPSW FIFO示意圖

每個CPSW EMAC埠都有收發的FIFO,收發的總memory數為20個4K block。Rx/Tx的收發block數可以通過P1_MAX_BLKS和P2_MAX_BLKS寄存器配置。其中Tx FIFO分為四個優先級隊列(priority queue),優先級0到3,其中3的優先級最高。配置過程為:

1.配置packet priority to header packet priority mapping register(P0_RX_PRI_MAP 和兩個EMAC的MAC_RX_PRI_MAP),將實際的VLAN包的8個優先級映射到晶片內部包頭的優先級

2.配置header priority to switch priority mapping register(P1_TX_PRI_MAP和P2_TX_PRI_MAP),將內部包頭的優先級映射到4個優先級隊列

注意:

a.對於untagged VLAN包,映射所要用的VLAN優先級將使用埠的VLAN優先級。在P0_PORT_VLAN,P1_PORT_VLAN和P2_PORT_VLAN寄存器中配置

b.當只使用0~3四個優先級隊列中的部分時,必須從優先級最高的隊列3開始分配。比如只使用兩個隊列,則應該用3和2。

c. 埠0代表HOST port,埠0收到的包都會通過ALE交換後從兩個EMAC埠發送出去,所以埠0隻需要配置packet priority to header packet priority mapping register,而沒有header priority to switch priority mapping register。

下面是三個VLAN映射的示例:

5.PA

5.1 PA PLL配置

根據data sheet(參考SPRS671D TMS320TCI6614 Data Manual Figure 8-25 PASS PLL Block Diagram),PA子系統的時鐘可以選擇兩個來源,一個是PASS PLLOUT,另一個是從SYSCLK1固定的三分頻。當晶片的主頻配置為1GHz時,如果選擇SYSCLK1,則PA子系統工作頻率是333MHz,可以選擇PASS PLLOUT方式,通過PA PLL配置子系統工作於350MHz。但是對於主頻為1.2GHz的晶片,只能選擇PASS PLLOUT方式,通過PA PLL配置子系統工作於350MHz,不能支持SYSCLK1三分頻到400MHz。

5.2 PA的Packet DMA模塊

1.PA的packet DMA模塊有9個Tx通道和24個Rx channel,注意這些通道在硬體上都有固定的映射關係,請在使能PA子系統的時候,使能所有的通道。

2.PA的packet DMA模塊有32個Rx flow。實際應用中經常見到做法是所有用到Rx Flow/FDQ 的地方都配置同一個Rx Flow/FDQ,這樣的做法雖然最簡單,但是一旦出現問題則很容易導致該FDQ的描述符迅速耗盡,而且很難定位導致問題的點。

3.一般來說在PA與其他的硬體模塊(特別是SA)數據交互過程都非常的快,而PA將分類好的數據交給HOST queue,因為有軟體的處理所以較慢。故而推薦分開靈活配置不同的Rx Flow(FDQ): 硬體模塊交互間的FDQ一般包含16個描述符/buffer就足夠了,而最後到HOST queue的Rx Flow/FDQ可以根據實際軟體的處理速度來配置更多的個描述符/buffer。

4.分開配置不同的Rx Flow/FDQ帶來的另一個好處是,配置到HOST queue的RX flow/FDQ 裡的描述符耗盡,也不會影響到硬體的處理。而且因為FDQ根據不同的功能和包處理流程做了不同的配置,在定位某些網絡處理問題的時候更加容易。比如在某一個FDQ裡的描述符用盡時,基本可以確定是該級的相關模塊處理的問題,更容易縮小問題定位的範圍。

下面是兩個的配置實例:

IPSec ESP隧道模式

1.當PDSP1根據IPSec ESP的SPI將包分類並路由到SA的時候,將需要一個Rx Flow的配置(在LUT1-1的配置),假定配置為Rx Flow No.1(FDQ No.1000,包含空閒描述符/buffer 16 個)。

2.當SA對IPSec ESP報文解密完畢,並送到PDSP2做內層IP分類的時候,配置Rx Flow No.2 (FDQ No.1001,包含空閒描述符/buffer 16個) 。

3.當PDSP3做完L4/L5分類以後,將包送到HOST queue時配置Rx Flow No.3(FDQ No.1002,包含空閒描述符/buffer 8K個)。

IPSec AH+ESP隧道模式

1.當PDSP1根據IPSec AH的SPI將包分類並路由到SA的時候,將需要一個Rx Flow的配置(在LUT1-1的配置),假定配置為Rx Flow No.1(FDQ No.1000,包含空閒描述符/buffer 16個) 。

2.當SA對IPSec AH報文鑑權校驗完畢,並送回PDSP1做IPSec ESP SPI分類的時候,配置Rx Flow No.4(FDQ No.1003,包含空閒描述符/buffer 16個)。

3.當PDSP1根據IPSec ESP的SPI將包分類並路由到SA的時候,配置Rx Flow No.1(FDQ No.1000,包含空閒描述符/buffer 16個)。

4.當SA對IPSec ESP報文解密完畢,並送到PDSP2做內層IP分類的時候,配置Rx Flow No.2 (FDQ No.1001,包含空閒描述符/buffer 16個)。

5.當PDSP3做完L4/L5分類以後,將包送到HOST queue時配置Rx Flow No.3 (FDQ No.1002,包含空閒描述符/buffer 8K個)。

為了更好的定位在開發過程中遇到的網絡問題,比如丟包,packet DMA隊列卡死,描述符丟失等等,推薦在應用軟體側做一些描述符的輔助定位手段:

1.當描述符初始化以後,記錄下所有的描述符首指針。

2.查詢/掃描PA Packet DMA Tx隊列No. 640~648中描述符個數

3.當發現隊列No. 640~648隊列中有包擁塞時(正常情況下該隊列中的描述符個數不會超過64個),停止包的收發

4.將在步驟1記錄的描述符地址與FDQ殘留的和隊列No. 640~648隊列中擁塞的做比較

5.發現丟失的描述符,並檢查其內容,特別是檢查是否有描述符的packet length超過其連結的所有分片的buffer length總和的情況

5.3 PA Bypass

晶片可以配置為bypass整個PA子系統。PA bypass的實質是忽略所有的PA模塊(PDSP/LUT)的處理,從SGMII埠收到的包經過內部的packet stream switch直接通過PA PKTDMA模塊傳輸到HOST queue。其配置過程為:

1.配置CPSW Configuration Register(CPSW_CFG_REG)為0x606(參考sprugz6 Network Coprocessor(NETCP)User Guide)

2.初始化並配置PA Packet DMA模塊

3.配置PA Packet DMA的Rx flow No.22和Rx flow No.23,其中Rx flow No.22中的destination queue代表了從SGMII0收到的包所要放到的目的隊列,Rx flow No.23中的destination queue代表了從SGMII1收到的包所要放到的目的隊列。

注意:PA bypass以後,由於所有的包未經過PA子系統的過濾直接進入到HOST隊列中,流量較大的情況下,很容易造成FDQ的描述符耗盡。而且容易造成軟體協議棧loading過高,容易遭受網絡攻擊。另由於在晶片設計中,PA可以直接與SA進行數據傳輸,特別是在from network方向上對加密的包進行解密以後在送到HOST queue,而PA bypass以後,對於加密包的解密處理將增加HOST側的CPU負荷。

5.4 PA的固件和Low level driver

PA的固件有三個文件,位於PDK安裝目錄\pdk_C6678_x_x_x_xx\packages\ti\drv\pa\fw (x_x_x_xx 為版本號) ,PDSP0~PDSP2共用一個文件(classify1_bin.c),PDSP3用一個文件(classify2_bin.c),PDSP4和PDSP5共用一個文件(pam_bin.c)。PA子系統運行於大端序,所以固件都是大端序。注意固件版本和LLD版本一定要一致。固件的版本號可以從上述C文件的數組中讀到,第三個32bit WORD就是版本號。

如上例固件版本號為1.3.0.7

PA LLD的版本號可以從PA LLD安裝目錄的paver.h中得到(PA_LLD_VERSION_ID和PA_LLD_VERSION_STR)。

PA LLD中的函數Pa_downloadImage是下載PDSP固件的,注意其中每個PDSP的常量表定義pap_pdsp_const_reg_map,不同的版本這些值可能不同。對於某些有ARM core的Keystone I晶片,該常量表不是通過PA LLD函數來賦值而是Linux kernel代碼直接賦值的,所以必須跟各個版本的固件對應。如果常量表和固件,LLD的版本不匹配,可能會有某些功能異常。

5.5 PA LUT1表項增加的策略

LUT1是線性查找表,也就說,配置的表項從下標No. 0一直找到No.63。因為不同的表項內容間可能有包含關係,比如某一項A只要求匹配目的IP位址,另一項B配置了同樣的目的IP 地址,同時也配置了源IP位址。這樣其實是B的條件比A更加嚴格,那麼嚴格的表項B應該比寬鬆的A下標小。比如配置A在No.1,B在No.0,只有這樣B才能有被匹配的可能性。

注意:PA LLD提供的函數如Pa_addIp,Pa_addMac等,都提供了不指定下標的方式添加表項,函數的參數為不指定下標的時候,PA LLD的處理為從下標較大的開始添加。例如當某個64表項的表為空,而兩次調用Pa_addIp添加表項並不指定表項位置的時候,第一次添加的表項在No.63的位置,第二次添加的表項在No.62位置。

5.6 PA相關的調式

5.6.1 Device simulator輔助調試

由於PA子系統主要由硬體模塊組成,提供的寄存器有限,對於複雜的功能來說,調試相對比較困難。但是TI的晶片simulator上對該子系統進行了充分的支持,在初期開發階段,simulator上調試PA更加方便。

下面是一個在TCI6608的simulator上使能PA調試和Log輸出的例子:

1.CCS安裝路徑\simulation_csp_ny\bin\configurations\tisim_tci6608_pv.cfg如果該行被注釋,請解注釋INPUT5 log_file,pass.log;

2.在軟體初始化中加入下面的代碼

3.上兩步的初始化過程將在simulator的安裝路徑(如CCS安裝路徑

\simulation_csp_ny\env\ccs\drivers\pass.log)下產生名為Pass.log的詳細log文件

該文件包含LUT表項的添加過程,LUT表項每一級的匹配過程等等詳細的內容。

注意這個方法非常適合診斷某些包未按照預想的規則匹配/路由的情況,軟體只需要將測試包發到640隊列(忽略乙太網子系統其他的模塊的初始化過程)就可以開始測試。但是對於發包量比較大的測試,產生的Log文件可能過於龐大。

5.6.2 PA子系統提供的系統統計

用PA LLD提供的Pa_requestStats和Pa_formatStatsReply函數可以提取PA子系統給出的統計計數器,這些統計計數器在系統運行過程中可以診斷部分的包匹配,包錯誤等問題。下面是對這些計數器的詳細說明。

5.6.3 輔助調試的寄存器

利用PDSP所提供的一些輔助計數器/寄存器可以更容易的在運行時定位問題。比如下面的計數器

0x2000000+0x10*n PDSPn收到的包數(包括配置命令和數據包)

0x2000008+0x10*n PDSPn收到的配置命令數

舉例說明其用法:

1.如果讀到0x2000000為0xa,0x2000008為0x1,代表PDSP0收到了9個數據包和1個配置命令

2. 在第一步的基礎上繼續讀到0x2000010為0x3,0x2000018為0x1,代表PDSP1收到了2個數據包和1個配置命令

3.根據前兩步的結果,我們可以知道,有2個數據包在PDSP0收到後繼續傳給了PDSP1

表1 PDSP輔助寄存器列表

PDSP control register:PDSP寄存器,控制PDSP的運行狀態。

PDSP status register:PDSP狀態寄存器,其實是PDSP固件的PC值,該值不恆定,如果該值一直不變化,可以確定是PDSP固件crash。

PDSP instruction RAM:PDSP指令空間,設置PDSP control register為1,可以將PDSP halt,同時查看PDSP的指令空間。在某些功能異常的時候,可以回讀PDSP指令空間,特別是固件的版本號,看看是否與期望的一致。

PDSP debug register:PDSP的調試寄存器。

LUT table bit map:查找表的佔用狀態。每個查找表的表項在佔用後,PDSP都會對該表項對應的位域置位。這個位表中保存的是PDSP/硬體所維護的查找表狀態,應用軟體可以將其回讀來與自己所保存的比較,看看是否有不一致的情況發生。理論上軟硬體應該是同步的。

LUT table route info:根據LUT table bit map所查找到的對應表項下標,乘以64位元組的偏移量,可以找到該表項匹配後對應的路由信息,該信息是由軟體配置的。同樣可以回讀,看看是否與期望的一致。

5.6.4 PDSP的單步跟蹤

在某些PDSP相關的問題定位過程中,可能需要對PDSP做單步跟蹤。該方法主要適用於在simulator的方式下無法重現的功能問題,比如表項匹配失敗失敗,路由錯誤等等。獲得的信息可以交由TI進行分析。

調用示例:單步跟蹤PDSP1,600步

6.SA

SA調試的過程中,請充分利用SA提供的相關統計信息:

6.1 系統統計

注意:

描述符中提供了PS_flag欄位,可以指定該描述符所發向的目的SGMII埠(direct packet mode),但是當該描述符要先經過SA的時候,請清空該欄位,否則SA對該包的處理導致安全上下文的錯誤(errCtx)。在經過SA處理後的包仍需要指定對應的SGMII埠的情況,配置該包從SA輸出以後的路由到645隊列/PDSP5,並用PA的Next route命令指定到乙太網以及對應的SGMII埠號。

6.2 通道統計

6.2.1 SRTP

6.2.2 IPSec

6.2.3 Air Cipher

注意:

取通道統計應該在調用完SA API Sa_chanReceiveData或Sa_chanSendData以後,而這兩個API本身有部分加解密的初步檢查作用,應用程式必須要對返回值進行判斷。如果它們返回錯誤,則應該終止向SA發包的過程,並根據返回值來檢查自身應用軟體的錯誤。何時調用這兩個API是需要注意的另一個問題,在IPsec/SRTP的場景下,TX側代表to network方向,即加密方向,需要調用調用Sa_chanSendData;Rx側代表from network方向,即解密方向,需要調用Sa_chanReceiveData。對於air cipher的場景, TX側對於空中接口來說實際為from air方向, 即解密方向,需要調用調用Sa_chanReceiveData;Rx側代表to air方向,即加密方向,需要調用Sa_chanSendData。

6.3 輔助寄存器

SA的輔助寄存器主要用來定位SA相關的硬體錯誤,當然該硬體錯誤可能是由軟體的非法操作導致的。下面是常用的輔助寄存器列表,表中標註了正常情況下所期望的值。特別請注意CMD_STATUS寄存器,在運行時間的SA異常情況,常能夠反映到該寄存器中。其具體的含義請參考SA用戶手冊。

表2 SA調試寄存器列表

7.總結

本文主要總結了目前為止中國區用戶在開發Keystone I系列晶片的時候,所遇到的乙太網子系統相關的典型技術問題,以及閱讀user guide時一些較為集中的疑問。很多用戶在開發過程中容易忽略的問題本文都做了強調。PA子系統部分的調試辦法基本可以覆蓋開發過程中所遇到的所有問題。文檔中給出的各種寄存器配置以及示例程序,都在實際開發中有使用。

參考文獻

1.KeyStone Architecture Network Coprocessor (NETCP) User Guide (SPRUGZ6)

2.KeyStone Architecture Gigabit Ethernet (GbE) Switch Subsystem User Guide (SPRUGV9A)

3.KeyStone Architecture Packet Accelerator (PA) User Guide (SPRUGS4)

4.KeyStone Architecture Security Accelerator (SA) User Guide (SPRUGY6)

相關焦點

  • 基於ARM LPC2210的乙太網RTL8019AS驅動系統設計
    三乙太網驅動系統設計說明3.1乙太網驅動系統概述乙太網RTL8019AS驅動系統的內容是完成對晶片初始化,接收數據包和發送數據包模塊的編寫。發送數據包時,驅動程序把要發送的數據按指定格式寫入晶片並啟動發送命令,RTL8019AS會自動把數據轉換成物理幀格式在物理信道上傳輸。
  • 10G乙太網系統中的並行CRC編解碼器的設計
    而當並行深度很大的情況下(10G乙太網接人系統使用64比特並行數據通路),遞推過程就顯得過於煩瑣而缺乏實用性。為此,本文提出了矩陣法、代入法和流水線法等三種算法,解決了深度並行情況下CRC算法的實現問題。利用本文提出的算法,可以得出64比特並行CRC計算的邏輯表達式,並用於10G乙太網接入系統的設計。設M/(x)為信息多項式,G(x)為生成多項式。
  • 基於Submerge Frame方法的CAN-乙太網網關
    1.1 嵌入式can-乙太網網關性能要求 對can網關的具體性能要求是與應用類型相關的,不同應用的側重點及其指標也不一樣,一般來說,對can網關都有以下要求: 1)實時性。網關的響應要快,不能影響系統的實時性。 2)可靠性。
  • 中譯英-乙太網採集分流設備用戶手冊翻譯
    稿件內容是乙太網採集分流設備用戶手冊的翻譯,量比較大,故在此招聘熟悉相關內容譯員。
  • Linux 系統內核的調試
    使用KGDB可以象調試普通的應用程式那樣,在內核中進行設置斷點、檢查變量值、單步跟蹤程序運行等操作。使用KGDB調試時需要兩臺機器,一臺作為開發機(Development Machine),另一臺作為目標機(Target Machine),兩臺機器之間通過串口或者乙太網口相連。
  • 帶乙太網口的中西文VFD字符顯示器
    摘要:介紹一種帶乙太網口的中西文VFD字符顯示器,根據乙太網該字符顯示器為單位內部、公共場所的監控系統發布信息提供了完整的方案。 關鍵詞:字庫 Rabbit2000微處理器 乙太網 VFD顯示器在一些單位內部、醫院和公共場所的監控系統中,常要發布流動的信息。
  • 路由器指南之配置調試篇
    現將路由器的一般配置和簡單調試介紹給大家,供朋友們在配置路由器時參考,本文以Cisco2501為例。  Cisco2501有一個乙太網口(AUI)、一個Console口(RJ45)、一個AUX口(RJ45)和兩個同步串口,支持DTE和DCE設備,支持 EIA/TIA-232、 EIA/TIA-449、 V.35 、X.25和EIA-530接口。
  • 乙太網驅動的流程淺析(四)-乙太網驅動probe流程
    我們繼續沿著上一篇的乙太網思路來繼續分析,目的是為了學習乙太網這塊從應用層到底層的整塊加載和匹配流程。
  • 以太坊入門手冊(附各類工具連結)
    誕生於 2014 年的以太坊,到今天已經走過了整整 5 個年頭。本文將圍繞以太坊,介紹相關基礎知識,提供各種查詢工具、社群連結,幫助大家更加深入學習以及在以太坊上進行開發。記者 | 秦曉峰編輯 | 盧曉明以下為本入門手冊目錄:一、以太坊是什麼?
  • 手持式乙太網性能測試儀的功能
    在數據中心和機房的管理維護中,手持式乙太網性能測試儀基本是不可或缺的工具,今天,我們就來聊一聊手持式乙太網性能測試儀的各項功能。 1.
  • 【汽車乙太網測試】系列之二:確保新一代車載網絡的性能和一致性
    當前的主要實例是汽車乙太網,它覆蓋了電氣和電子工程師(IEEE)開發的四項標準。目前,汽車乙太網將與涵蓋各種系統和子系統的多種總線共存。因此,我們需要不同的測試方法,來完成汽車和IVN的設計、驗證、調試、排障、維護和保養。發展趨勢:更多需求來自數據、乙太網、標準化和生命周期。
  • 工業乙太網交換機在風力發電控制系統的應用
    隨著風力發電場的大量建設,風場信息化管理系統,風機遠程監控系統也大量應用。這些系統應用環境惡劣,需要管理型寬溫工業乙太網交換機進行網絡支持,所以中國風電市場對工業乙太網交換機的要求也越來越高。  2、電機控制系統電磁環境惡劣,需要工業交換機具有較強的抗電磁幹擾能力、較長時間的平均無故障時間。  3、為了保障通信的可靠性,要求建立冗餘的環網,具有較小的自愈時間。通信網絡出故障時,能夠平滑的切換到冗餘備份線路。  4、為了保證遠程監控的數據的安全性,交換機需要有全面的網絡安全設置。
  • 採用工業乙太網實現遠程開放型實驗室系統的構建
    1 系統的整體方案 現在高校電氣與自動化類實驗室設備大多是有通訊串口,能在本地用計算機對實驗過程數據監測和操作,但是對於聯入乙太網或者校園網的功能欠缺,本文以過程控制實驗室為例,採用乙太網監控系統的通信接口和軟體技術,對具有本地傳統通訊串口的實驗設備實施具備遠程訪問、監控功能的二次開發和設計,實現一種基於工業乙太網架構的遠程開放型控制系統實驗平臺。
  • FPGA-PC乙太網通信
    考慮到ADC採樣頻率較高(10M-100Mb/s),串口通信的速率遠遠達不到要求,考慮使用乙太網來實現信息傳輸。物理鏈路:14位ADC;開發板使用Xilinx Spartan-6 黑金開發板AX545;超五類或六類網線;由於程序只支持千兆乙太網傳輸,並且考慮到部分筆記本不攜帶網口,因此使用了USB3.0-千兆網口的網卡;裝有wireshark的電腦。
  • 工業乙太網數據採集模塊:快速選型指南
    M3408路PT100/PT1000熱電阻遠程乙太網採集模塊M340工業乙太網交換機工業乙太網交換機,支持各種百兆/千兆光電組合,支持千兆光口,支持即插即用。、PLC、HMI、MES系統以及OPC系統集成。
  • 乙太網?看完你就懂了
    》講解了乙太網數據包結構,其中牽扯到了802.3,乙太網數據包等名詞,本文將詳解講解一下這方面的內容。乙太網的類型欄位定義了後續數據的類型。而在802標準定義的幀格式中,類型欄位則由後續的子網接入協議的首部給出。幸運的是,802定義的有效長度值與乙太網的有效類型值無一相同,這樣,就可以對兩種幀格式進行區分。
  • 汽車乙太網技術及測試介紹
    近期,信而泰推出汽車乙太網測試方案,該方案通過專有的BigTao硬體測試平臺及協議和流量仿真軟體平臺Renix,可以針對汽車乙太網中的ECU終端、車載網關進行全面的2-7層功能和性能測試,包括AVB/TSN等協議測試,全面滿足汽車乙太網測試需求,助力國內汽車乙太網建設。
  • 歐姆龍乙太網在成品庫通信和控制方面的應用分析
    為了降低公司生產管理成本,充分利用人力資源,提高自動化程度而進行了NEPID系統的開發。在NEPID系統的開發中,使用耐高溫、無源的NEPID讀寫卡裝備在每個車身,從而實現設備側立體庫的乙太網控制。為了使現場控制系統能夠與生產管理伺服器順利交換數據,與NEPID系統進行網絡連接,選擇了使用可編程控制器及乙太網模塊,乙太網(Ethernet)指的是由Xerox公司創建並由Xerox、Intel和DEC公司聯合開發的基帶區域網規範,是當今現有區域網採用的最通用的通信協議標準。乙太網絡使用CSMA/CD(載波監聽多路訪問及衝突檢測)技術,並以10M/S的速率運行在多種類型的電纜上。
  • 東芝為汽車駕駛艙提供先進乙太網功能 推最新乙太網橋接IC
    該款產品可為汽車的遠程信息處理和信息娛樂系統提供先進的乙太網功能。實時處理能力以及可靠的數據傳輸能力至關重要,將支持遠程信息處理、信息娛樂系統、駕駛員輔助系統以及各種傳感器數據,以實現完全聯網車輛。包括乙太網音視頻橋接技術(Ethernet AVB)和乙太網時間敏感網絡(Ethernet TSN)在內的新乙太網標準,正廣泛被汽車和工業應用採用,以滿足不斷增長的性能需求。
  • 乙太網交換機原理及應用
    乙太網交換機原理乙太網交換機,作為今天我們廣為使用的區域網硬體設備,一直為大家所熟悉。它的普及程度其實是由於乙太網的廣泛使用,作為今天乙太網的主流設備,幾乎所有的區域網中都會有這種設備的存在。這種問題在小型乙太網中並不會造成很大問題,並且可以很好的工作,但是如果網絡上的通訊量有增加,或者連接的節點數目很多的時候,「衝突」會嚴重影響網絡的性能,比如我們在第一章中講解乙太網原理的時候就解釋過優化「衝突域」的問題,這時候我們需要能夠隔離「衝突」的設備,交換機就可以完成這個功能了。