你好:
我现在在调6455与v5之间的SRIO通信,现在遇到了这样的情况:
v5的srio ip在正常运行,但是6455的SRIO还没有跳出初始化程序,我的初始化程序是这样的:
int rdata=0;
/* Glb enable srio */
SRIO_GBL_EN = 0x00000001 ;
SRIO_BLK0_EN = 0x00000001 ; //MMR_EN
SRIO_BLK5_EN = 0x00000001 ; //PORT0_EN
SRIO_BLK1_EN = 0x00000001 ; //LSU_EN
SRIO_BLK2_EN = 0x00000001 ; //MAU_EN
SRIO_BLK3_EN = 0x00000001 ; //TXU_EN
SRIO_BLK4_EN = 0x00000001 ; //RXU_EN
SRIO_BLK6_EN = 0x00000001 ; //PORT1_EN
SRIO_BLK7_EN = 0x00000001 ; //PORT2_EN
SRIO_BLK8_EN = 0x00000001 ; //PORT3_EN
SRIO_PER_SET_CNTL = 0x0400026F ;
SRIO_SERDES_CFG0_CNTL = 0x0000000B;//mpy=00101b pll 10x;pllen=1;
SRIO_SERDES_CFGRX0_CNTL = 0x00081101 ; // enable rx, rate=00 full rate; EQ=0001 adaptive; align=01 Comma alignment enabled;
SRIO_SERDES_CFGTX0_CNTL = 0x00010801 ; // enable tx, rate=00 full rate; swing=100:750mv;
SRIO_DEVICEID_REG1 = 0 ; // id-16b=0000, id-08b=00
SRIO_DEVICEID_REG2 = 0 ; // id-16b=0000, id-08b=00
SRIO_SP_IP_MODE = 0x0400003F; // mltc/rst/pw enable, clear
SRIO_DEV_ID = 0x00000030 ; // id=0000, ti=0x0030
SRIO_DEV_INFO = 0x00000000 ; // 0
SRIO_ASBLY_ID = 0x00000030 ; // ti=0x0030
SRIO_ASBLY_INFO = 0x00000100; // 0x0000, next ext=0x0100
SRIO_PE_FEAT = 0x20000009 ; // proc, bu ext, 8-bit ID, 34-bit addr
SRIO_SRC_OP = 0x0000FDF4; // all
SRIO_DEST_OP = 0x0000FC04; // all except atomic
SRIO_PE_LL_CTL = 0x00000001; // 34-bit addr
SRIO_LCL_CFG_HBAR = 0x00000000 ; // 0
SRIO_LCL_CFG_BAR = 0x00000000; // 0
SRIO_BASE_ID = 0x00000000; // 16b-id=0000, 08b-id=00
SRIO_HOST_BASE_ID_LOCK = 0x00000000; // id=0000, lock
SRIO_COMP_TAG = 0x00000000; // not touched
SRIO_SP_IP_DISCOVERY_TIMER = 0x90000000;// 0, short cycles for sim
SRIO_IP_PRESCAL = 0x00000018; // srv_clk prescalar=0x18 (250MHz)
SRIO_SP0_SILENCE_TIMER = 0x20000000;
SRIO_SP0_CTL = 0x00600001; // enable i/o;
SRIO_SP_LT_CTL = 0xFFFFFF00; // long time
SRIO_SP_RT_CTL = 0xFFFFFF00; // long time
SRIO_SP_GEN_CTL = 0xC0000000; // host, master, undiscovered
SRIO_ERR_DET = 0x00000000 ; // clear
SRIO_ERR_EN = 0x00000000 ; // disable
SRIO_H_ADDR_CAPT = 0x00000000 ; // clear
SRIO_ADDR_CAPT = 0x00000000 ; // clear
SRIO_ID_CAPT = 0x00000000 ; // clear
SRIO_CTRL_CAPT = 0x00000000 ; // clear
SRIO_SP_IP_PW_IN_CAPT0 = 0x00000000 ; // clear
SRIO_PER_SET_CNTL = 0x0500026F; // bootcmpl=1
//INIT_WAIT wait for lane initialization
// polling SRIO_MAC's port_ok bit
rdata = SRIO_P0_ERR_STAT ;
while ((rdata & 0x00000002) != 0x00000002)
{
rdata = SRIO_P0_ERR_STAT ;
}
SRIO_PCR = 0x00000004; // peren
程序停在了while处,不知道这是怎么回事,请专家指导解答!