- better - more sphisticated
Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@628 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -49,7 +49,7 @@ void handler3(void)
|
||||
while((0x10 & *pUART_stat))
|
||||
{
|
||||
buffer[g_i] = (char)*pUART_data;
|
||||
_cg_putchar(buffer[g_i]);
|
||||
_putchar(0, buffer[g_i]);
|
||||
g_i = (g_i+1)%sizeof(buffer);
|
||||
}
|
||||
|
||||
@@ -517,6 +517,7 @@ int Test16_MemTest(void)
|
||||
UINT32 *ram32 = NULL;
|
||||
UINT32 volatile *pFlashIO = (UINT32*)sys_flash_io;
|
||||
UINT32 volatile *pFlashMem = (UINT32*)sys_flash_mem;
|
||||
UINT32 volatile *pROM = (UINT32*)0xBFC00000;
|
||||
|
||||
UINT32 *pSrc32, *pDst32;
|
||||
UINT32 start, end;
|
||||
@@ -551,6 +552,9 @@ int Test16_MemTest(void)
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
*/
|
||||
// ----------------------------------------------------------
|
||||
pSrc32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
pDst32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
|
||||
// Memtest BEGIN
|
||||
printf("Dump first 16 bytes of flash blocks\n");
|
||||
for (i=0; i < FLASH_SIZE; i += 0x40000)
|
||||
@@ -561,56 +565,47 @@ int Test16_MemTest(void)
|
||||
printf("SDRAM Memory Test\n");
|
||||
printf("Test size %d kByte\n\n", TEST_SIZE/1024);
|
||||
|
||||
ram8 = (UINT8*)calloc(TEST_SIZE,sizeof(UINT8));
|
||||
ram8 = (UINT8*)pDst32;
|
||||
printf("Zeroize SDRAM (memset)...");
|
||||
start = clock();
|
||||
memset(ram8, 0, TEST_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
free(ram8);
|
||||
|
||||
ram8 = (UINT8*)calloc(TEST_SIZE,sizeof(UINT8));
|
||||
printf("Zeroize SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE; i++)
|
||||
ram8[i] = (UINT8)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
free(ram8);
|
||||
|
||||
ram16 = (UINT16*)calloc(TEST_SIZE/2,sizeof(UINT16));
|
||||
ram16 = (UINT16*)pDst32;
|
||||
printf("Zeroize SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/2; i++)
|
||||
ram16[i] = (UINT16)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
free(ram16);
|
||||
|
||||
ram32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
ram32 = (UINT32*)pDst32;
|
||||
printf("Zeroize SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/4; i++)
|
||||
ram32[i] = (UINT32)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
free(ram32);
|
||||
|
||||
ram8 = (UINT8*)calloc(TEST_SIZE,sizeof(UINT8));
|
||||
ram8 = (UINT8*)pDst32;
|
||||
printf("Write SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE; i++)
|
||||
ram8[i] = (UINT8)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
printf("Verify SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
@@ -626,18 +621,16 @@ int Test16_MemTest(void)
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
free(ram8);
|
||||
|
||||
ram16 = (UINT16*)calloc(TEST_SIZE/2,sizeof(UINT16));
|
||||
ram16 = (UINT16*)pDst32;
|
||||
printf("Write SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/2; i++)
|
||||
ram16[i] = (UINT16)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
printf("Verify SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
@@ -653,12 +646,10 @@ int Test16_MemTest(void)
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
|
||||
free(ram16);
|
||||
|
||||
ram32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
ram32 = (UINT32*)pDst32;
|
||||
printf("Write SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/4; i++)
|
||||
@@ -667,7 +658,7 @@ int Test16_MemTest(void)
|
||||
}
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
printf("Verify SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
@@ -685,21 +676,19 @@ int Test16_MemTest(void)
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
|
||||
free(ram32);
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
printf("\n");
|
||||
printf("Small data test (size = %d kByte)\n", SMALL_TEST_SIZE/1024);
|
||||
printf("Write SDRAM (32-Bit access)...");
|
||||
ram32 = (UINT32*)calloc(SMALL_TEST_SIZE/4,sizeof(UINT32));
|
||||
ram32 = (UINT32*)pDst32;
|
||||
start = clock();
|
||||
for (j=0; j < TEST_SIZE/SMALL_TEST_SIZE; j++)
|
||||
for (i=0; i < SMALL_TEST_SIZE/4; i++)
|
||||
ram32[i] = (UINT32)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Verify
|
||||
@@ -718,21 +707,19 @@ int Test16_MemTest(void)
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1000*(end-start)));
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
|
||||
for (i=1024; i < 4*65536; i *= 2)
|
||||
{
|
||||
printf("Memcpy() (%d kByte)...", i/1024);
|
||||
start = clock();
|
||||
for (j=0; j < TEST_SIZE/i; j++)
|
||||
memcpy(pDst32, pSrc32, i);
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*(end-start)));
|
||||
}
|
||||
// -------------------------------------------------------------------
|
||||
free(ram32);
|
||||
printf("\n");
|
||||
|
||||
pSrc32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
pDst32 = (UINT32*)calloc(TEST_SIZE/4,sizeof(UINT32));
|
||||
|
||||
printf("Memcpy() SDRAM => SDRAM\n");
|
||||
printf("Copying %d kBytes...", TEST_SIZE/(2*1024));
|
||||
start = clock();
|
||||
memcpy(pDst32, pSrc32, TEST_SIZE/2);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(2*1000*(end-start)));
|
||||
printf("\n");
|
||||
|
||||
printf("Memcpy() Flash(IO) => SDRAM \n");
|
||||
@@ -740,7 +727,7 @@ int Test16_MemTest(void)
|
||||
start = clock();
|
||||
memcpy(pDst32, pFlashIO, FLASH_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)FLASH_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)FLASH_SIZE/(1024*(end-start)));
|
||||
printf("\n");
|
||||
|
||||
printf("Memcpy() Flash(MEM) => SDRAM \n");
|
||||
@@ -748,19 +735,14 @@ int Test16_MemTest(void)
|
||||
start = clock();
|
||||
memcpy(pDst32, pFlashMem, FLASH_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)FLASH_SIZE/(1000*(end-start)));
|
||||
printf("done (%.2f MByte/s)\n", (double)FLASH_SIZE/(1024*(end-start)));
|
||||
printf("\n");
|
||||
|
||||
free(pSrc32);
|
||||
free(pDst32);
|
||||
|
||||
size = 0x2000;
|
||||
pSrc32 = (UINT32*)0xBFC00000;
|
||||
pDst32 = (UINT32*)calloc(size,sizeof(UINT32));
|
||||
memcpy(pDst32, pSrc32, size);
|
||||
memcpy(pDst32, pROM, size);
|
||||
printf("Verify boot ROM...");
|
||||
for (i=size/4-1; i >= 0; i--)
|
||||
if (pDst32[i] != pSrc32[i])
|
||||
if (pDst32[i] != pROM[i])
|
||||
break;
|
||||
i++;
|
||||
if (i)
|
||||
@@ -771,8 +753,6 @@ int Test16_MemTest(void)
|
||||
else
|
||||
printf("passed\r\n");
|
||||
|
||||
free(pDst32);
|
||||
|
||||
printf("Verify FLASH(IO) <=> FLASH(MEM)...");
|
||||
if (!memcmp(pFlashIO, pFlashMem, FLASH_SIZE))
|
||||
printf("passed\r\n");
|
||||
@@ -787,6 +767,9 @@ int Test16_MemTest(void)
|
||||
|
||||
// Memtest END
|
||||
// ----------------------------------------------------------
|
||||
free(pSrc32);
|
||||
free(pDst32);
|
||||
|
||||
sputs("\r\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -854,9 +837,9 @@ int main (void)
|
||||
screen_res_x = *pVGA_resx;
|
||||
screen_res_y = *pVGA_resy;
|
||||
|
||||
*pVGA_cgcol = 0x00C0C0C0;
|
||||
*pVGA_cgcol = 0x0000C000;
|
||||
*pVGA_ctrl &= ~sys_vga_bit_msten;
|
||||
cg_clr_screen();
|
||||
clr_screen();
|
||||
|
||||
pBuf64 = (UINT64*)malloc(screen_res_x*screen_res_y*sizeof(UINT32));
|
||||
|
||||
@@ -939,6 +922,8 @@ int main (void)
|
||||
}
|
||||
}
|
||||
|
||||
Test16_MemTest();
|
||||
|
||||
interrupt_enable(7);
|
||||
interrupt_enable(3);
|
||||
*pTim_ctrl |= 3;
|
||||
|
||||
Reference in New Issue
Block a user