⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regcheck.c

📁 此為philip 1362 USB DOS下的驅動程式包, 已經共測試並內含有說明文件
💻 C
📖 第 1 页 / 共 2 页
字号:
 cmd61[0x34].active      =1;

 strcpy(cmd61[0x40].name,"HcISTL0BufferPort  ");
 cmd61[0x40].code        =0x40;
 cmd61[0x40].init        =0x0000;
 cmd61[0x40].length      =16;
 cmd61[0x40].active      =1;

 strcpy(cmd61[0x42].name,"HcISTL1BufferPort  ");
 cmd61[0x42].code        =0x42;
 cmd61[0x42].init        =0x0000;
 cmd61[0x42].length      =16;
 cmd61[0x42].active      =1;

 strcpy(cmd61[0x43].name,"HcINTLBufferPort   ");
 cmd61[0x43].code        =0x43;
 cmd61[0x43].init        =0x0000;
 cmd61[0x43].length      =16;
 cmd61[0x43].active      =0;

 strcpy(cmd61[0x45].name,"HcDirectAddress    ");
 cmd61[0x45].code        =0x45;
 cmd61[0x45].init        =0x0000;
 cmd61[0x45].length      =16;
 cmd61[0x45].active      =1;

 strcpy(cmd61[0x47].name,"HcPTLToggleRate    ");
 cmd61[0x47].code        =0x47;
 cmd61[0x47].init        =0x0000;
 cmd61[0x47].length      =16;
 cmd61[0x47].active      =1;

 strcpy(cmd61[0x51].name,"HcATLPTDDoneThrsCnt");
 cmd61[0x51].code        =0x51;
 cmd61[0x51].init        =0x0000;
 cmd61[0x51].length      =16;
 cmd61[0x51].active      =1;

 strcpy(cmd61[0x52].name,"HcATLPTDDoneThrsTO ");
 cmd61[0x52].code        =0x52;
 cmd61[0x52].init        =0x0000;
 cmd61[0x52].length      =16;
 cmd61[0x52].active      =1;

 strcpy(cmd61[0x53].name,"HcINTLBlkSize      ");
 cmd61[0x53].code        =0x53;
 cmd61[0x53].init        =0x0000;
 cmd61[0x53].length      =16;
 cmd61[0x53].active      =1;

 strcpy(cmd61[0x62].name,"OTGControl         ");
 cmd61[0x62].code        =0x62;
 cmd61[0x62].init        =0x01C0;
 cmd61[0x62].length      =16;
 cmd61[0x62].active      =1;

 strcpy(cmd61[0x67].name,"OTGStatus          ");
 cmd61[0x67].code        =0x67;
 cmd61[0x67].init        =0x0001;
 cmd61[0x67].length      =16;
 cmd61[0x67].active      =1;

 strcpy(cmd61[0x68].name,"OTGInterrupt       ");
 cmd61[0x68].code        =0x68;
 cmd61[0x68].init        =0x0000;
 cmd61[0x68].length      =16;
 cmd61[0x68].active      =1;

 strcpy(cmd61[0x69].name,"OTGInterruptEnable ");
 cmd61[0x69].code        =0x69;
 cmd61[0x69].init        =0x0000;
 cmd61[0x69].length      =16;
 cmd61[0x69].active      =1;

 strcpy(cmd61[0x6A].name,"OTGTimerControl    ");
 cmd61[0x6A].code        =0x6A;
 cmd61[0x6A].init        =0x0000;
 cmd61[0x6A].length      =32;
 cmd61[0x6A].active      =1;
}

void read_registers(void)
{
 unsigned int test_cnt;
 unsigned int no_of_test;
 long reg_data;
 long *r_ptr;
 char status_buffer[60];
 unsigned int l_space=8;

 cleardevice();

 sprintf(status_buffer,"ISP1362 HC Register Test");
 outtextxy(10,10,status_buffer);
 sprintf(status_buffer,"========================");
 outtextxy(10,20,status_buffer);

 test_cnt=0;
 no_of_test=0;
 do
  {

   if(cmd61[test_cnt].active==1)
   {
	no_of_test++;
	if(cmd61[test_cnt].length==16)
	{
	 reg_data=r16(test_cnt);
	 reg_data&=0x0000FFFF;
	}

	if(cmd61[test_cnt].length==32)
	{
	 reg_data=r32(test_cnt);
	}

	if(reg_data!=cmd61[test_cnt].init) {setcolor(RED);}

	sprintf(status_buffer,"0x%02X %s [%2d]=>%8lX, default=>%8lX",test_cnt,cmd61[test_cnt].name,cmd61[test_cnt].length,reg_data,cmd61[test_cnt].init);
	outtextxy(10,20+no_of_test*l_space,status_buffer);

	setcolor(YELLOW);
   }

   test_cnt++;
  }
 while(test_cnt<0xFF);

 fflush(stdin);
 sprintf(status_buffer,"Press any key to go back to main menu");
 outtextxy(10,420,status_buffer);
 sprintf(status_buffer,"=====================================");
 outtextxy(10,430,status_buffer);
 getch();
}

void wr_reg(void)
{
 unsigned int test_cnt;
 unsigned int no_of_test;
 unsigned long *r_ptr;
 unsigned long rs;
 long reg_data;
 char sb[60];
 int last_row;
 int user_in;
 long error,p_error;
 long ref;
 int reg_port;
 unsigned char key_in;
 int l_space=8;

 cleardevice();

 r_ptr=&rs;

 sprintf(sb,"ISP1362 HC Register Test");
 outtextxy(10,10,sb);
 sprintf(sb,"========================");
 outtextxy(10,20,sb);

 test_cnt=0;
 no_of_test=0;
 do
  {
   if(cmd61[test_cnt].active==1)
   {
	no_of_test++;
	sprintf(sb,"0x%02X %s, default=>%8lX",test_cnt,cmd61[test_cnt].name,cmd61[test_cnt].init);
	outtextxy(10,20+l_space*no_of_test,sb);
   }
   test_cnt++;
  }
 while(test_cnt<0xFF);

 gotoxy(50,4);
 printf("Register to test? (Hex)");
 gotoxy(50,5);
 scanf("%2x",&reg_port);

 error=0;
 p_error=0;
 test_cnt=0;

 fubar(1,0,10);

 do
  {
   p_error=error;

   gotoxy(50,5);

	if(cmd61[reg_port].length==16)
	{
	 printf("Writing 16bit %8lX to 0x%2X",(long)test_cnt,reg_port);
	 w16(reg_port,test_cnt);
	 reg_data=r16(reg_port);
	 reg_data&=0x0000FFFF;
	 fubar(0,test_cnt,0xFFFF);
	 if(reg_data!=test_cnt)
	 {

	  gotoxy(50,6);
	  printf("Reading       %8lX",reg_data);
	  gotoxy(50,7);
	  printf("Error =       %8X",error);
	  error++;
	 }
	}

	if(cmd61[reg_port].length==32)
	{
	 ref=test_cnt+0x5A5A0000+(((long)test_cnt)<<16);
	 printf("Writing 32bit %8lX to 0x%2X",ref,reg_port);
	 fubar(0,test_cnt,0xFFFF);
	 w32(reg_port, ref);
	 reg_data=r32(reg_port);

	 if(reg_data!=ref) {error++; }
	}

   gotoxy(50,6);
   printf("Reading       %8lX",reg_data);
   gotoxy(50,7);
   printf("Error =       %8X",error);
   gotoxy(50,9);
   printf("Press '1' to stop",error);

   key_in=read_key(0);

   if(p_error!=error) {key_in=getch();}
   test_cnt++;
  }
 while((test_cnt!=0)&(key_in!='1'));

 gotoxy(50,6);
 printf("Reading       %8lX",reg_data);
 gotoxy(50,7);
 printf("Error =       %8X",error);

 fflush(stdin);
 getch();
}

void wr_auto(char *logfile)
{
 unsigned int cnt;
 unsigned int no_of_test;
 unsigned long rs;
 long reg_data;
 int user_in;
 long error,p_error;
 long ref;
 int reg_port;
 unsigned char key_in;
 unsigned char buf[200];

 sprintf(buf,"\nISP1362 HC Register Test");
 strcpy(logfile,buf);
 sprintf(buf,"\n========================");
 strcat(logfile,buf);

 //Test HcScratch
 printf("\nTesting HcScratch Register...");
 sprintf(buf,"\nTesting HcScratch Register...");
 strcat(logfile,buf);

 cnt=0;
 error=0;
 do
  {
   w16(HcScratch,cnt);
   if((r16(HcScratch))!=cnt)
   {
	error++;
   }
   cnt++;
  }
 while(cnt<0xFFFF);

 sprintf(buf,", Total error = %8lX",error);
 strcat(logfile,buf);

 //Test HcDirectAddrLen
 printf("\nTesting HcDirectAddrLen Register...");
 sprintf(buf,"\nTesting HcDirectAddrLen Register...");
 strcat(logfile,buf);

 reg_data=0;
 error=0;
 do
  {
   w32(HcDirAddrLen,reg_data);
   if((r16(HcDirAddrLen))!=reg_data)
   {
	error++;
   }
   reg_data++;
  }
 while(reg_data<0xFFFF);

 sprintf(buf,", Total error = %8lX",error);
 strcat(logfile,buf);


}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -