📄 rwreg.c
字号:
if(error)
cprintf("test dma endpoint register failed/partial passed\r\n");
else
cprintf("test dma endpoint register passed\r\n");
}
void test_scratch(void)
{
unsigned int i=1, j;
unsigned char error=0, key;
while(i)
{
ISP1581_SetDataToChipRam(i);
// outport(0x36a, 00);
j = ISP1581_GetDataFromChipRam();
// outport(0x36a, 00);
if(j != i)
{
cprintf("test scratch register failed, write = %x, read = %x, \r\n", i, j);
error = 1;
key = key2go();
if(key == 0x1b)
return;
}
else
cprintf("test scratch register passed, %x \r\n", i);
if(i == 0x8000)
{
key = key2go();
if(key == 'r')
i = 1;
else if(key == 'g')
return;
else
i <<= 1;
}
else
i <<= 1;
}
if(error)
cprintf("test scratch register failed/partial passed\n");
else
cprintf("test scratch register passed\n");
}
void test_testmode(void)
{
unsigned char i=1, j, error = 0, key;
while(i)
{
ISP1581_SetTestMode(i);
j = ISP1581_GetTestMode();
if(j != i)
{
cprintf("test testmode register failed, write = %x, read = %x, \r\n", i, j);
key2go();
error = 1;
if(key2go() == 'g')
return;
}
i <<= 1;
}
if(error)
cprintf("test testmode register failes/partial passed\r\n");
else
cprintf("test testmode register passed\r\n");
}
unsigned char key2go(void)
{
unsigned char key;
#ifdef debug
debug_out(debug_code_waitkey);
#endif
key = 0;
cprintf("\rpress 'G' skip, 'C' next, 'R' repeat. 'ESC' Quit\r");
while(key != 'g' && key != 'G' \
&& key != 'c' && key != 'C' \
&& key != 'r' && key != 'R' \
&& key != 0x1b \
)
{
if(bioskey(1))
key = (bioskey(0)&0xff);
// cprintf("key=%x, ", key);
}// error been read
if(key == 'g' || key == 'G')
return 'g';
else if(key == 'c' || key == 'C')
return 'c';
else if(key == 0x1b)
return 0x1b;
else
return 'r';
}
unsigned char key2break(void)
{
unsigned char key;
key = 0;
if(bioskey(1))
key = (bioskey(0)&0xff);
if(key == 0x1b) // 'ESC" pressed.
return true;
else
return false;
}
void bus_direction(void)
{
unsigned char go = 1;
unsigned short i= 1;
while(go)
{
outport(0x368, i);
if (i == 0x8000)
i = 1;
else
i <<= 1;
cprintf("%x,",i);
if(key2break())
return;
}
}
void test_poweronvalue(void)
{
unsigned char cb, cbd, i;
unsigned short cs, csd, j;
textattr(0x07);
cprintf("\rStart to test register default value \r\n");
cprintf("Address byte ");
cb = ISP1581_GetAddress();
cbd = 0;
PrintResult(cb, cbd);
cprintf("mode ");
cb = ISP1581_GetMode();
cbd = 0x0;
PrintResult(cb, cbd);
cprintf("Interrupt Config ");;
cb = ISP1581_GetIntConfig();
cbd = 0xfc;
PrintResult(cb, cbd);
cprintf("Interrupt EN High ");
cs = ISP1581_GetIntEnableHigh();
csd = 0;
PrintResults(cs, csd);
cprintf("Interrupt EN Low ");
cs = ISP1581_GetIntEnableLow();
csd = 0;
PrintResults(cs, csd);
cprintf("Interrupt Reg High ");
cs = ISP1581_ReadInterruptRegisterHigh();
csd = 0;
PrintResults(cs, csd);
cprintf("Interrupt Reg Low ");
cs = ISP1581_ReadInterruptRegisterLow();
csd = 0;
PrintResults(cs, csd);
cprintf("Endpoint Index ");
cb = ISP1581_GetEPIndex();
cbd = 0;
PrintResult(cb, cbd);
cprintf("EP Short Packet ");
cs = ISP1581_CheckShortPKT();
csd = 0;
PrintResult(cs, csd);
cprintf("Device ID ");
cs = ISP1581_ReadChipID();
csd = 0x1581;
PrintResults(cs, csd);
cprintf("Frame Number ");
cs = ISP1581_ReadCurrentFrameNumber();
csd = 0;
PrintResults(cs, csd);
cprintf("Scratch Register ");
cs = ISP1581_GetDataFromChipRam();
csd = 0;
PrintResults(cs, csd);
cprintf("Test Mode ");
cb = ISP1581_GetTestMode();
cbd = 0;
PrintResult(cb, cbd);
cprintf("Skip DMA command & unlock command\r\n");
cprintf("DMA Counter High ");
cs = ISP1581_GetDMACounterHigh();
csd = 0;
PrintResults(cs, csd);
cprintf("DMA Counter Low ");
cs = ISP1581_GetDMACounterLow();
csd = 0;
PrintResults(cs, csd);
cprintf("DMA Config register ");
cs = ISP1581_GetDMAConfig();
csd = 0;
PrintResults(cb, cbd);
cprintf("DMA Hardware ");
cb = ISP1581_GetDMAHDCfg();
cbd = 0;
PrintResult(cb, cbd);
cprintf("DMA Strober Timing ");
cb = ISP1581_GetDMAStrobeTiming();
cbd = 0;
PrintResult(cb, cbd);
cprintf("DMA Interrupt Reg ");
cs = ISP1581_GetDMAInt();
csd = 0;
PrintResults(cs, csd);
cprintf("DMA Interrupt Enable ");
cs = ISP1581_GetDMAIntMask();
csd = 0;
PrintResults(cs, csd);
cprintf("DMA Endpoing Number ");
cb = ISP1581_GetDMAEP();
cbd =0;
PrintResult(cb, cbd);
cprintf("DMA State Byte ");
cs = ISP1581_GetDMAState();
csd = 0;
PrintResults(cs, csd);
key2go();
cprintf("\rStart to test task files register default value \r\n");
j = 0x1f0;
while(j <= 0x3f7)
{
cbd = 0;
cprintf("TaskFile Register %03x ", j);
cb = ISP1581_GetTaskFile(j);
PrintResult(cb, cbd);
if(j < 0x1f7)
j++;
else if(j == 0x1f7)
j = 0x3f6;
else
j++;
}
key2go();
cprintf("\rStart to test endpoint register default value \r\n");
i = 0;
for(i=0; i<= 0xf;i++)
{
if(i == 0)
{ IndexEPReg(i + 0x20);
key2go();
}
IndexEPReg(i);
key2go();
}
return;
}
void IndexEPReg(unsigned char epindex)
{
unsigned char i, cb, cbd, cs, csd;
textattr(0x06);
cprintf("SetEP Index is ");
textattr(0x07);
ISP1581_SetEPIndex(epindex);
i = ISP1581_GetEPIndex();
PrintResult(i, epindex);
cprintf("Control Function ");
outport(aport, rega_epctlfc);
cb = inport(dport);
cbd = 0;
PrintResult(cb, cbd);
cprintf("Data Lenght ");
outport(aport, rega_dcount);
cs = inport(dport);
csd = 0;
PrintResult(cs, csd);
cprintf("Data Port ");
outport(aport, rega_dport);
cs = inport(dport);
csd = 0;
PrintResult(cs, csd);
cprintf("EP Max Pkt Length ");
outport(aport, rega_epmaxsize);
cs = inport(dport);
csd = 0;
PrintResult(cs, csd);
cprintf("EP Type ");
outport(aport, rega_eptype);
cs = inport(dport);
csd = 0;
PrintResult(cs, csd);
return;
}
void PrintResult(unsigned char cb, unsigned char cbd)
{
if(cb == cbd)
cprintf("%02x", cb);
else
{
textattr(0x85);
cprintf("%02x", cb);
textattr(0x07);
}
cprintf(" %x \r\n", cbd);
return;
}
void PrintResults(unsigned short cs, unsigned short csd)
{
if(cs == csd)
cprintf("%04x", cs);
else
{
textattr(0x85);
cprintf("%04x", cs);
textattr(0x07);
}
cprintf(" %x \r\n", csd);
return;
}
void regtest(void)
{
cprintf("Perform chipid test!\r");
test_chipid();
cprintf(" \r");
cprintf("Perform address enable register test!\r");
test_addren();
cprintf(" \r");
cprintf("Perform enpoint type test!\r");
test_eptype();
cprintf(" \r");
cprintf("Perform endpoint max size test!\r");
test_epmaxsize();
cprintf(" \r");
cprintf("Perform mode register test!\r");
test_mode();
cprintf(" \r");
cprintf("Perform interrupt config test!\r");
test_intcfg();
cprintf(" \r");
cprintf("Perform interrupt mask test!\r");
test_intmask();
cprintf(" \r");
cprintf("Perform dma endpoint test!\r");
test_dmaep();
cprintf(" \r");
cprintf("Perform data counter test!\r");
test_dcount();
cprintf(" \r");
cprintf("Perform dma counter test!\r");
test_dmacount();
cprintf(" \r");
cprintf("Perform dma configuration test!\r");
test_dmacfg();
cprintf(" \r");
cprintf("Perform dms hardware config test!\r");
test_dmahdcfg();
cprintf(" \r");
cprintf("Perform dma interrupt mask test!\r");
test_dmaintmask();
cprintf(" \r");
cprintf("Perform dma endpoint number test!\r");
test_dmaep();
cprintf(" \r");
cprintf("Perform scratch test!\r");
test_scratch();
cprintf(" \r");
cprintf("Perform testmode register test!\r");
test_testmode();
cprintf(" \r");
return;
}
void softreset_1581(void)
{
unsigned char i=0,j,k;
cprintf("SOFT RESET ISP1581, *&%$#@!_+(*");
for(i = 0; i <15; i++)
{
for(j = 0; j < 255; j++)
{
for(k = 0; k < 255; k++)
{}
}
cprintf(".");
}
cprintf("RESET OK!\r\n");
}
void hardware_reset(void)
{
unsigned char i=0,j,k;
cprintf("HARDWARE RESET ISP1581, !@@#%$#@!!@@#$!_^");
outport(ctlport, 0x0);
for(i = 0; i <17; i++)
{
for(j = 0; j < 255; j++)
{
for(k = 0; k < 255; k++)
{}
}
cprintf(".");
if(i == 14)
outport(ctlport, ctlportb_hdreset);
}
cprintf("RESET OK!\r\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -