T1042 查看 MAC、BMI、QMI寄存器, 查看DPAA丢包情况

本文档详细介绍了T1040QorIQDataPathAccelerationArchitecture(DPAA)中MAC、BMI和QMI寄存器的地址结构,特别是MAC的错误统计寄存器,如RXERR和TXERR,用于监测帧接收和发送中的错误。通过devmem命令访问这些寄存器以获取错误计数,并提供了针对不同MAC接口的检查脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考手册:T1040 QorIQ Data Path Acceleration Architecture (DPAA) Reference Manual

MAC/BMI/QMI寄存器组成都是由下面3个部分组成的

The full register address of any DPAA register consists of all of the following:
• CCSR window base address, specified in CCSRBAR (default address 0_FE00_0000h)
• Block base address
• The specific register’s offset within that block

MAC/BMI/QMI寄存器都是FMan memory map的一部分。

 针对MAC而言,每个网口,对应不同的 基地址 ,下面第一个红框,是访问MAC寄存器要用哪个到的,第二个红框的port id 在访问 QMI/BMI 寄存器的时候会用到。

从下面的Map 可以看出来,QMI 和 BMI 的基地址是一样的,就是offset 不一样 

 

 

 

 

1、MAC 寄存器

MAC1  , 0xffe000000 + 0x4e0000 + offset = 0xffe4e0000 + offset

MAC2  , 0xffe000000 + 0x4e0000 + offset = 0xffe4e2000 + offset

MAC3  , 0xffe000000 + 0x4e0000 + offset = 0xffe4e4000 + offset

MAC4  , 0xffe000000 + 0x4e0000 + offset = 0xffe4e6000 + offset

MAC5  , 0xffe000000 + 0x4e0000 + offset = 0xffe4e8000 + offset

然后参考手册中 6.4.2 mEMAC Detailed Memory Map ,

offset  0x100开始是Rx Statistics Counter Registers;

offset  0x200开始是Tx Statistics Counter Registers。

比如我想看下 RX ERR 相关的统计

 如果符合下面的情况,都会在这个寄存器中累积,0x13c 是高32位,0x138是 低32位

6.4.3.2.8 Receive Frame Error Counter Register (RERRn)
Incremented for each frame received with an error (except for undersized/fragment frame) :
• FIFO overflow error
• CRC error
• Payload length error
• Jabber and oversized error
• Alignment error (if supported)
• Reception of PHY/PCS error indication (0xFE, not a code error)
MAC1:
	# devmem 0XFFE4E0138 32
	0x00000000
	# devmem 0XFFE4E013c 32
	0x00000000
	
MAC2:
	11个包
    # devmem 0XFFE4E213c 32
	0x00000000
	# devmem 0XFFE4E2138 32
	0x0000000B

同样的 TX 也有一个相关的统计 

 

6.4.3.2.34 Transmit Frame Error Counter Register (TERRn)
Incremented for each frame transmitted with an error:
• FIFO overflow error
• FIFO underflow error
• memory double ECC errors
• late-collision or excessive collisions (half-duplex only)	
MAC1:
	# devmem 0XFFE4E023C 32
	0x00000000
	# devmem 0XFFE4E0238 32
	0x00000000


MAC2:		
	# devmem 0XFFE4E2238 32
	0x00000000
	# devmem 0XFFE4E223c 32
	0x00000000

 2、BMI/QMI 寄存器

BMI/QMI rx port寄存器, 不同的MAC 对应rx_port_id 不一样,见上面的图。

0xffe000000 + 0x400000 + 0x80000 + 0x01000* rx_port_id + offset

BMI/QMI  tx port寄存器, 不同的MAC 对应tx_port_id 不一样,见上面的图。

0xffe000000 + 0x400000 + 0x80000 + 0x01000* tx_port_id + offset

BMI Rx port寄存器请参考手册章节BMI Rx Port Registers部分,0x200开始是一些统计。

BMI Tx port寄存器请参考手册章节 BMI Tx Port Registers部分,0x200开始是一些统计。

QMI Rx port寄存器请参考手册章节 QMI Rx Port Registers部分,0x41c和0x420是一些统计。

QMI Tx port寄存器请参考手册章节 QMI Tx Port Registers部分,0x41c开始是一些统计。

3、检测脚本


echo "T1042 DPAA Frame Error Check from register"
echo ""

echo "Receive Frame Error Counter Check!"
echo ""
echo "[SGMII][MAC1] High 32bit: `devmem 0XFFE4E013c 32`"
echo "[SGMII][MAC1] Low  32bit: `devmem 0XFFE4E0138 32`"
echo "[SGMII][MAC2] High 32bit: `devmem 0XFFE4E213c 32`"
echo "[SGMII][MAC2] Low  32bit: `devmem 0XFFE4E2138 32`"
echo "[RGMII][MAC4] High 32bit: `devmem 0XFFE4E613c 32`"
echo "[RGMII][MAC4] Low  32bit: `devmem 0XFFE4E6138 32`"
echo "[RGMII][MAC5] High 32bit: `devmem 0XFFE4E813c 32`"
echo "[RGMII][MAC5] Low  32bit: `devmem 0XFFE4E8138 32`"
echo ""

echo "Transmit Frame Error Counter Check!"
echo ""
echo "[SGMII][MAC1] High 32bit: `devmem 0XFFE4E023c 32`"
echo "[SGMII][MAC1] Low  32bit: `devmem 0XFFE4E0238 32`"
echo "[SGMII][MAC2] High 32bit: `devmem 0XFFE4E223c 32`"
echo "[SGMII][MAC2] Low  32bit: `devmem 0XFFE4E2238 32`"
echo "[RGMII][MAC4] High 32bit: `devmem 0XFFE4E623c 32`"
echo "[RGMII][MAC4] Low  32bit: `devmem 0XFFE4E6238 32`"
echo "[RGMII][MAC5] High 32bit: `devmem 0XFFE4E823c 32`"
echo "[RGMII][MAC5] Low  32bit: `devmem 0XFFE4E8238 32`"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值