This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6455与v5通信时无法完成初始化



你好:

我现在在调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处,不知道这是怎么回事,请专家指导解答!