Hi ADI,
I try to make the frame generator and check function to work on adin1110. But the reading seems incorrect.
My setup is a EVAL-ADIN1100EBZ board (with original ADI FW 12.3.24193e28) + linux laptop connecting with a target board (adin1110 + processor (Xilinx Linux Kernel 6.6.10)). I can read and write the registers via a script build on phytool on the target board.
Test procedures are like below.
1. Power on both board. Make EVAL-ADIN1100EBZ work on mode 15 as below.
2.Ping between adin1110 and adin1100 successfully.
3.Set the adin1110 into frame generator mode
- Write a 0 to both FG_NFRM_H and FG_NFRM_L to set the number of frames to zero.
$./c45_access.sh write eth1 0x1 0x1F 0x8027 0x0
$./c45_access.sh write eth1 0x1 0x1F 0x8028 0x0
- Write a 1 to FG_EN to enable the frame generator.
$./c45_access.sh write eth1 0x1 0x1F 0x8020 0x1
- Write FG_CONT_MODE_EN = 1 to enable continuous mode.
$./c45_access.sh write eth1 0x1 0x1F 0x8022 0x1
- Set FG_FRM_LEN to configure the desired frame length in bytes.
$./c45_access.sh write eth1 0x1 0x1F 0x8025 0x6b
- Write the value in bytes to FG_IFG_LEN to configure the interframe gap.
$./c45_access.sh write eth1 0x1 0x1F 0x8026 0xc
- Assert FG_RSTRT to restart the frame generator. (001 – random number data frame)
$./c45_access.sh write eth1 0x1 0x1F 0x8021 0x9
4.Set the fame check of adin1110
- Assert FC_EN to enable frame checker. The frame checker is enabled by default.
$./c45_access.sh write eth1 0x1 0x1F 0x8001 0x1
- Write the appropriate value to FC_TX_SEL to select the source to analyse.
$./c45_access.sh write eth1 0x1 0x1F 0x8005 0x0
- If needed, read RX_ERR_CNT to clear all counters before starting the frame generation.
$./c45_access.sh read eth1 0x1 0x1F 0x8008
- Read RX_ERR_CNT to latch all counters and read the rest of the counters of interest according to below table.
$./c45_access.sh read eth1 0x1 0x1F 0x8009
$./c45_access.sh read eth1 0x1 0x1F 0x800a
$./c45_access.sh read eth1 0x1 0x1F 0x800b
$./c45_access.sh read eth1 0x1 0x1F 0x800c
$./c45_access.sh read eth1 0x1 0x1F 0x800d
$./c45_access.sh read eth1 0x1 0x1F 0x800e
As my understanding, if the adin1110 is checking the data from PHY and the EVAL-ADIN1100EBZ is in normal mode, I should get a lot of errors. But the error count is 0 as below. Why? Did I do anything wrong?