📄 ge_test.c
字号:
#ifdef SYS_LOOP
if(L10b()!=OK)
{
printf("test_config:set PM3386 L10b failes!\n");
return ERROR;
}
if(L32b()!=OK)
{
printf("test_config:set PM3386 L32b failes!\n");
return ERROR;
}
#ifdef NO_LOOP
if(Fibre()!=OK)
{
printf("test_config:set PM3386 L10b failes!\n");
return ERROR;
}
#endif
if(PM3386RegCheck()!=OK)
{
printf("test_config:PM3386 Reg state is wrong!\n");
return ERROR;
}
if (infpgaInit()!=OK)
{
printf("test_config:(ERROR)infpga init failed!\n");
return ERROR;
}
return OK;
#endif
}
/*************************End of GE_SelfTest.c**********************************************/
STATUS self_test1()
{
cfg();
infpgaWrite(0x18,0x20+GE_swiport);
taskDelay(3);
spa();
taskDelay(3);
read_in_B_Fifo();
taskDelay(30);/*this packet will go through forward module and then send back to interface.*/
read_E_out_Fifo();
printf("BOARD SelfTest finished!\n");
return OK;
}
STATUS self_test2()
{
cfg();
infpgaWrite(0x18,0x20+GE_swiport);
write_E();
ek_once();
read_E_out_Fifo();
read_out_PM3386_Fifo();
read_in_B_Fifo();
taskDelay(30);/*this packet will go through forward module and then send back to interface.*/
printf("BOARD SelfTest finished!\n");
return OK;
}
/*******************************************************************************************/
STATUS PM3386RegCheck()
{
ULONG RegValue;
RegValue=PM3386Read(0x4);
if (RegValue == !0xC0110000)
{
printf("PM3386RegCheck:PM3386 RFCLK,TFCLK is in unlock state!\n");
return ERROR;
}
RegValue=PM3386Read(0x5);
if (RegValue!=0x0)
{
printf("PM3386RegCheck:PM3386 CLK125 is in unlock state!\n");
return ERROR;
}
RegValue=PM3386Read(0x6);
if (RegValue!=0x0)
{
printf("PM3386RegCheck:PM3386 OPTICAL device is not best connected!\n");
return ERROR;
}
return OK;
}
/******************************************************************************************/
STATUS read_E_out_Fifo()
{
static ULONG read_E_out_Fifo[400];
unsigned int i=0;
ULONG flag;
flag=(outfpgaRead(0x2a))&0x20000000;
if(flag!=0x20000000)
{
printf("\nE_monitor_FIFO not allow to read!\n");
}
else
{
i=0;
printf("\n*==========================read_E_out_Fifo========================*\n");
printf(" E_monitor_FIFO allow to read!\n");
for(i=0;(flag==0x20000000)&&(i<200);i+=3)/* judge packet tail */
{
read_E_out_Fifo[i] = outfpgaRead(0x2F);
read_E_out_Fifo[i+1] = outfpgaRead(0x30);
read_E_out_Fifo[i+2] = outfpgaRead(0x31);
printf("%8lx =*= %8lx ",i,read_E_out_Fifo[i]);
printf("%8lx =*= %8lx ",i+1,read_E_out_Fifo[i+1]);
printf("%8lx =*= %8lx ",i+2,read_E_out_Fifo[i+2]);
printf("\n");
flag=(outfpgaRead(0x2a))&0x20000000;
}
outfpgaWrite(0x1c,0x0);
printf("\n*==========================THE END==============================*\n");
}
return OK;
}
/**************************************************************************************/
STATUS read_out_PM3386_Fifo()
{
static ULONG read_out_PM3386_Fifo[400];
unsigned int i=0;
ULONG flag;
flag=outfpgaRead(0x2a);
printf("\n*==========================read_out_PM3386_Fifo========================*\n");
for(i=0;(flag & 0x10000000)==0x10000000;i+=2)/*packet tail*/
{
read_out_PM3386_Fifo[i] = outfpgaRead(0x32);
read_out_PM3386_Fifo[i+1]=outfpgaRead(0x33);
flag = outfpgaRead(0x2a);
printf(" %8lx =*= %.8lx ",i,read_out_PM3386_Fifo[i]);
printf("%8lx =*= %.8lx\n" ,i+1,read_out_PM3386_Fifo[i+1]);
}
printf("\n*===========================THE END=================================*\n");
outfpgaWrite(0x1d,0x0);
if(i<16)
printf("\nread_out_PM3386_Fifo:This is a extra short packet!\n");
return OK;
}
/**************************************************************************************/
STATUS read_PM3386_in_Fifo()
{
static ULONG read_PM3386_in_Fifo[400];
ULONG Self_Export,i=0,value1,value2,flag,count=0;
/* Self_Export=(ULONG)GE_GetSelfExPort;
value1= Self_Export + 0x10;
infpgaWrite(0x18,value1);*/
infpgaWrite(0x18,0x10+GE_swiport);
taskDelay(3);
flag=infpgaRead(0x0D);
if((flag & 0x1)!= 0x1)
{
printf("PM3386_in_Fifo not allow to read!\n");
return ERROR;
}
for(i=0;(flag&0x1)==0x1;i++)
{
read_PM3386_in_Fifo[i]=infpgaRead(0x0E);
printf("%8lx =*= %8lx",i,read_PM3386_in_Fifo[i]);
count+=1;
if(count%3==0)
printf("\n");
flag=infpgaRead(0x0D);
}
if(i<16)
printf("\nread_PM3386_in_Fifo:This is a extra Short packet!\n");
/* value2=0x0+Self_Export;
infpgaWrite(0x18,value2);*/
return OK;
}
/*************************************************************************************/
STATUS read_in_B_Fifo()
{
static ULONG read_in_B_Fifo[400];
ULONG value1,value2,Self_Export,i,flag,count=0;
/*Self_Export=(ULONG)GE_GetSelfExPort;
value1= Self_Export + 0x20;
infpgaWrite(0x18,value1);*/
/* infpgaWrite(0x18,0x20);
taskDelay(3);*/
flag=infpgaRead(0x0D);
if((flag&0x1)!=0x1)
{
printf("\nread_in_B_Fifo not allow to read!\n");
return ERROR;
}
printf("\n*===========================read_in_B_Fifo================================*\n");;
for(i=0;(flag&0x1)==0x1;i++)
{
read_in_B_Fifo[i]=infpgaRead(0x0E);
printf("%8lx =*= %8lx",i,read_in_B_Fifo[i]);
count+=1;
if(count%3==0)
printf("\n");
flag=infpgaRead(0x0D);
}
printf("\n*===========================THE END=====================================*\n");
if(i<16)
printf("\nThis is a extra short packet!\n");
/* value2=0x0+Self_Export;
infpgaWrite(0x18,value2);*/
return OK;
}
/**************************************************************************************/
STATUS read_in_proFifo()
{
static ULONG read_in_proFifo[400];
ULONG value1,value2,Self_Export,i=0,flag;
flag=infpgaRead(0x0D);
if((flag & 0x1) != 0x1)
{
printf("read_in_proFifo not allow to read!\n");
return ERROR;
}
/*for(i=0;(flag&0x1)==0x0;i++)*/
else
{
for(;(flag & 0x1)==1;i++)
{
read_in_proFifo[i] = infpgaRead(0x0E);
printf("%8lx =*= %8lx\n",i,read_in_proFifo[i]);
flag=infpgaRead(0x0D);
}
}
if(i>375)
printf("read_in_proFifo:This is a extra long packet!\n ");
if(i<16)
printf("read_in_proFifo:This is a extra short packet!\n");
else
printf("read_in_proFifo:This is a normal length packet!\n");
/* value2=0x0+Self_Export;
infpgaWrite(0x18,value2);*/
return OK;
}
/*************************************************************************************/
STATUS test_wr_PM3386()
{
ULONG value;
PM3386Write(0x509,0x0);
PM3386Write(0x609,0x0);
PM3386Write(0x50A,0x1234);
PM3386Write(0x60A,0x4321);
PM3386Write(0x50B,0x5678);
PM3386Write(0x60B,0x8765);
PM3386Write(0x50C,0x0);
PM3386Write(0x60C,0x0);
PM3386Write(0x500,0x4);
PM3386Write(0x600,0x4);
PM3386Write(0x500,0x1);
PM3386Write(0x600,0x1);
value=PM3386Read(0x510);
printf(" %8lx",value);
value=PM3386Read(0x610);
printf(" %8lx",value);
value=PM3386Read(0x511);
printf(" %8lx",value);
value=PM3386Read(0x611);
printf(" %8lx",value);
value=PM3386Read(0x512);
printf(" %8lx",value);
value=PM3386Read(0x612);
printf(" %8lx",value);
return OK;
}
void t()
{
before_init();
taskDelay(30);
after_init();
taskDelay(5);
outfpgaInit();
taskDelay(5);
L10b();
/*L32b();*/
taskDelay(5);
infpgaInit();
taskDelay(5);
infpgaWrite(0x18,0x10+GE_swiport);
taskDelay(5);
outfpgaWrite(0x1e,0x0);
taskDelay(5);
endis_l();
taskDelay(5);
spa();
taskDelay(30);
return;
}
/********************************************************************/
STATUS test_in()
{
unsigned int i;
pkt();
for(i=0;i<8*PKT_COUNT;i++)
{
*(ULONG*)(INFPGABASE+(0x8<<8)+(0x7<<4)+0xC)=PKT[i];
printf(" %d: %8lx\n",i,PKT[i]);
}
for(i=0;i<8*PKT_COUNT;i+=2)
{
PKT1[i]=*(ULONG*)(0x13012680);
PKT1[i+1]=*(ULONG*)(0x13012680);
printf("%2lx: %8lx\n%2lx: %8lx\n",i,PKT1[i],(i+1),PKT1[i+1]);
}
return OK;
}
/*void test_read()
{
ULONG data;
data=*(ULONG*)0x1301287C;
printf(" %8lx",data);
return;
}
void test_write()
{
*(ULONG*)0x1301287C=0x8A3DFFFF;
return;
}*/
STATUS test_out()
{
ULONG VALUE;
unsigned int i;
pkt();
/*data=0xabce0078;*/
for(i=0;i<8*PKT_COUNT;i++)
{
*(ULONG*)(OUTFPGABASE)=PKT[i];
printf(" %d: %8lx ",i,PKT[i]);
VALUE=*(ULONG*)(INFPGABASE+(0x5<<8)+(0x2<<4));
printf(" %8lx \n",VALUE);
}
return OK;
}
/**************************************************************************************/
void w0_(ULONG DATA)
{
*(ULONG*)(INFPGABASE+(0x8<<8))=DATA;
printf(" %8lx \n",DATA);
}
void w1_(ULONG DATA)
{
*(ULONG*)(INFPGABASE+(0x8<<8)+(0x1f<<2))=DATA;
printf(" %8lx \n",DATA);
}
void r0_(ULONG ADD)
{
ULONG DATA;
DATA=*(ULONG*)(INFPGABASE+(0x8<<8));
printf(" %8lx \n",DATA);
}
void r1_(ULONG ADD)
{
ULONG DATA;
DATA=*(ULONG*)(INFPGABASE+(0x8<<8)+(0x1f<<2));
printf(" %8lx \n",DATA);
}
/**************************************************************************************/
void endis_l()
{
wr_to_pb(8,0);
}
void endis_h()
{
wr_to_pb(8,1);
}
void before_init()
{
wr_to_pb(4,0);
wr_to_pb(5,0);
wr_to_pb(6,0);
wr_to_pb(7,0);
endis_l();
/*wr_to_pb(0,0);*/
}
void after_init()
{
wr_to_pb(4,1);
wr_to_pb(5,1);
wr_to_pb(6,1);
wr_to_pb(7,1);
/*wr_to_pb(0,1);
ek_reset();*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -