技术中心
 
 

Keystone I以太网子系统调试手册

   日期:2015-05-25    
核心提示:对于具备基本Keystone I以太网知识的用户,本手册可以作为用户手册的有力补充。期望读者在初步阅读user guide和具备基本的PA LLD/SA LLD开发经验以后再查阅本文。

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_xxpackagestidrvpafw (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_nybinconfigurationstisim_tci6608_pv.cfg如果该行被注释,请解注释INPUT5 log_file,pass.log;

2.在软件初始化中加入下面的代码

 

3.上两步的初始化过程将在simulator的安装路径(如CCS安装路径

simulation_csp_nyenvccsdriverspass.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子系统部分的调试办法基本可以覆盖开发过程中所遇到的所有问题。文档中给出的各种寄存器配置以及示例程序,都在实际开发中有使用。

 
标签: 以太网
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢