- added flashtest
git-svn-id: http://moon:8086/svn/mips@174 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
+10
-1
@@ -3,7 +3,7 @@ BOARD ?=ml402
|
||||
|
||||
include ../make/mips_app.mk
|
||||
|
||||
PROG-ml402 = $(addprefix $(BUILD_DIR)/, hello.elf testbench.elf test_irq.elf dhry.elf queens.elf stanford.elf paranoia.elf rmd160_test.elf Bessel.elf whet.elf phrasen.elf dttl.elf richards_benchmark.elf test_exception.elf life.elf r3.elf gunzip.elf basic_math.elf jman_patches.elf jman_patchmeshes.elf jman_polys.elf test_hpi.elf test_vga.elf test_fft.elf)
|
||||
PROG-ml402 = $(addprefix $(BUILD_DIR)/, hello.elf testbench.elf test_irq.elf dhry.elf queens.elf stanford.elf paranoia.elf rmd160_test.elf Bessel.elf whet.elf phrasen.elf dttl.elf richards_benchmark.elf test_exception.elf life.elf r3.elf gunzip.elf basic_math.elf jman_patches.elf jman_patchmeshes.elf jman_polys.elf test_hpi.elf test_vga.elf test_fft.elf flashtest.elf)
|
||||
PROG-denano = $(addprefix $(BUILD_DIR)/, hello.elf dhry.elf queens.elf stanford.elf paranoia.elf rmd160_test.elf Bessel.elf whet.elf phrasen.elf dttl.elf richards_benchmark.elf test_exception.elf testbench_denano.elf)
|
||||
PROG-sim = $(addprefix $(BUILD_DIR)/, hello.elf test_exception_sim.elf)
|
||||
|
||||
@@ -12,6 +12,15 @@ all: $(PROG-$(BOARD))
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR)
|
||||
|
||||
$(BUILD_DIR)/flashtest.elf: $(BUILD_DIR) flashtest.c
|
||||
$(CC) $(CFLAGS) -o $@ -O2 flashtest.c $(LIBS) >$@.map
|
||||
$(OBJDUMP) -d $@ > $@.dis
|
||||
$(OBJCOPY) $@ -O binary $@.bin
|
||||
$(OBJCOPY) -O srec $@ $@.srec
|
||||
$(FLASHGEN) $@.bin $(ENDIAN_FLAGS)
|
||||
cat $@.srec | $(PACKHEX) > $@.pack
|
||||
$(OBJCOPY) -O ihex -I binary $@.flash.bin $@.hex
|
||||
|
||||
$(BUILD_DIR)/test_fft.elf: $(BUILD_DIR) test_fft.c
|
||||
$(CC) $(CFLAGS) -o $@ -O2 fft.c test_fft.c $(LIBS) >$@.map
|
||||
$(OBJDUMP) -d $@ > $@.dis
|
||||
|
||||
+539
@@ -0,0 +1,539 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
#include <sys/times.h>
|
||||
#include <sys/time.h>
|
||||
#include <libsys.h>
|
||||
#include <cop0.h>
|
||||
#include <gpio.h>
|
||||
#include <irq.h>
|
||||
#include <mips_gfx.h>
|
||||
#include <mips_ps2.h>
|
||||
#include "cfiflash.c"
|
||||
|
||||
#define TEST16_ERROR -1
|
||||
|
||||
int IsEndianBig(void)
|
||||
{
|
||||
uint8_t *pBuf;
|
||||
uint32_t word;
|
||||
word = 0x12345678;
|
||||
pBuf = (uint8_t*)&word;
|
||||
if (((*pBuf+0) == 0x12) && (*(pBuf+1) == 0x34) && (*(pBuf+2) == 0x56) && (*(pBuf+3) == 0x78))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (((*pBuf+0) == 0x78) && (*(pBuf+1) == 0x56) && (*(pBuf+2) == 0x34) && (*(pBuf+3) == 0x12))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void PrintCPUinfo(void)
|
||||
{
|
||||
int result, rev_id;
|
||||
int cache_size, cache_line;
|
||||
int eb;
|
||||
|
||||
char *cpu_type_str[7] = {"invalid", "R2000", "R3000", "R6000", "R4000", "reserved", "R6000A"};
|
||||
|
||||
// Print Status register
|
||||
result = CP0_SR_read();
|
||||
|
||||
printf("--------------------------------------------------\n");
|
||||
printf("Status : %8.8X\n", result);
|
||||
|
||||
// Print Revision
|
||||
result = CP0_PRID_read();
|
||||
rev_id = (result >> 8) & 0xFF;
|
||||
printf("CPU type : MIPS ");
|
||||
if ((rev_id > 0) && (rev_id < 0x07))
|
||||
{
|
||||
printf(cpu_type_str[rev_id]);
|
||||
printf(" Rev. ");
|
||||
rev_id = result & 0xFF;
|
||||
printf("%d", rev_id);
|
||||
}
|
||||
else
|
||||
printf("Unknown");
|
||||
|
||||
eb = IsEndianBig();
|
||||
if (eb)
|
||||
printf(" [Big-endian]\n");
|
||||
if (!eb)
|
||||
printf(" [Little-endian]\n");
|
||||
if (eb < 0)
|
||||
printf(" [Unknown endian]\n");
|
||||
|
||||
cache_size = (result >> 16) & 7;
|
||||
cache_line = (result >> 19) & 7;
|
||||
printf("I-Cache : %d kBytes (%d Bytes per line)\n", 4*(int)pow(2.0, (double)(8+cache_size))/1024, 4*(int)pow(2.0, (double)(cache_line)));
|
||||
cache_size = (result >> 24) & 7;
|
||||
cache_line = (result >> 27) & 7;
|
||||
printf("D-Cache : %d kBytes (%d Bytes per line)\n", 4*(int)pow(2.0, (double)(8+cache_size))/1024, 4*(int)pow(2.0, (double)(cache_line)));
|
||||
printf("--------------------------------------------------\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
#define TEST_SIZE (16*1024*1024) // Bytes
|
||||
#define SMALL_TEST_SIZE (8192) // Bytes
|
||||
#define FLASH_SIZE (8*1024*1024) // Bytes
|
||||
|
||||
int Test16_MemTest(void)
|
||||
{
|
||||
int result, i, j, cnt, size;
|
||||
uint8_t *ram8 = NULL;
|
||||
uint16_t *ram16 = NULL;
|
||||
uint32_t *ram32 = NULL;
|
||||
uint32_t volatile *pFlashIO = (uint32_t*)SYS_FLASH_IO;
|
||||
uint32_t volatile *pFlashMem = (uint32_t*)SYS_FLASH_MEM;
|
||||
uint32_t volatile *pROM = (uint32_t*)0xBFC00000;
|
||||
uint32_t volatile *pVGA_src0 = (uint32_t*)SYS_VGA_BLIT_SRC0_ADDR;
|
||||
uint32_t volatile *pVGA_dst = (uint32_t*)SYS_VGA_BLIT_DST_ADDR;
|
||||
uint32_t volatile *pVGA_dimx_src0 = (uint32_t*)SYS_VGA_BLIT_SRC0_DIMX;
|
||||
uint32_t volatile *pVGA_dimx_dst = (uint32_t*)SYS_VGA_BLIT_DST_DIMX;
|
||||
uint32_t volatile *pVGA_nx = (uint32_t*)SYS_VGA_BLIT_NX;
|
||||
uint32_t volatile *pVGA_ny = (uint32_t*)SYS_VGA_BLIT_NY;
|
||||
uint32_t volatile *pVGA_ctrl = (uint32_t*)SYS_VGA_CTRL;
|
||||
uint32_t volatile *pVGA_moffs_0 = (uint32_t*)SYS_VGA_FB_FRONT;
|
||||
uint32_t volatile *pVGA_moffs_1 = (uint32_t*)SYS_VGA_FB_BACK;
|
||||
uint32_t volatile *pVGA_const_color = (uint32_t*)SYS_VGA_BLIT_COLOR;
|
||||
|
||||
|
||||
uint32_t *pSrc32, *pDst32;
|
||||
uint32_t start, end;
|
||||
uint32_t color_cycle[12] = {0x000000FF, 0x00808080, 0x0000FFFF, 0x00808080, 0x0000FF00, 0x00808080, 0x00FFFF00, 0x00808080, 0x00FF0000, 0x00808080, 0x00FF00FF, 0x00808080};
|
||||
|
||||
pSrc32 = (uint32_t*)calloc(TEST_SIZE/4,sizeof(uint32_t));
|
||||
pDst32 = (uint32_t*)calloc(TEST_SIZE/4,sizeof(uint32_t));
|
||||
|
||||
// Memtest BEGIN
|
||||
printf("Dump first 16 bytes of flash blocks\n");
|
||||
for (i=0; i < FLASH_SIZE; i += 0x40000)
|
||||
memdump((uint8_t*)(pFlashIO+i/4), 0, 16, 16);
|
||||
|
||||
printf("\n");
|
||||
|
||||
printf("SDRAM Memory Test\n");
|
||||
printf("Test size %d kByte\n\n", TEST_SIZE/1024);
|
||||
|
||||
ram8 = (uint8_t*)pDst32;
|
||||
printf("Zeroize SDRAM (memset)...");
|
||||
start = clock();
|
||||
memset(ram8, 0, TEST_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
printf("Zeroize SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE; i++)
|
||||
ram8[i] = (uint8_t)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
ram16 = (uint16_t*)pDst32;
|
||||
printf("Zeroize SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/2; i++)
|
||||
ram16[i] = (uint16_t)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
ram32 = (uint32_t*)pDst32;
|
||||
printf("Zeroize SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/4; i++)
|
||||
ram32[i] = (uint32_t)0;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
ram8 = (uint8_t*)pDst32;
|
||||
printf("Write SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE; i++)
|
||||
ram8[i] = (uint8_t)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
printf("Verify SDRAM (8-Bit access)...");
|
||||
start = clock();
|
||||
for (i=TEST_SIZE-1; i >= 0; i--)
|
||||
if (ram8[i] != (uint8_t)i)
|
||||
break;
|
||||
|
||||
end = clock();
|
||||
i++;
|
||||
if (i)
|
||||
{
|
||||
printf("failed\r\n");
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
ram16 = (uint16_t*)pDst32;
|
||||
printf("Write SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/2; i++)
|
||||
ram16[i] = (uint16_t)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
printf("Verify SDRAM (16-Bit access)...");
|
||||
start = clock();
|
||||
for (i=TEST_SIZE/2-1; i >= 0; i--)
|
||||
if (ram16[i] != (uint16_t)i)
|
||||
break;
|
||||
|
||||
end = clock();
|
||||
i++;
|
||||
if (i)
|
||||
{
|
||||
printf("failed\r\n");
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
|
||||
ram32 = (uint32_t*)pDst32;
|
||||
printf("Write SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (i=0; i < TEST_SIZE/4; i++)
|
||||
{
|
||||
ram32[i] = (uint32_t)i;
|
||||
}
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
printf("Verify SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (i=TEST_SIZE/4-1; i >= 0; i--)
|
||||
{
|
||||
if (ram32[i] != (uint32_t)i)
|
||||
break;
|
||||
}
|
||||
|
||||
end = clock();
|
||||
i++;
|
||||
if (i)
|
||||
{
|
||||
printf("failed\r\n");
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
printf("\n");
|
||||
printf("Small data test (size = %d kByte)\n", SMALL_TEST_SIZE/1024);
|
||||
printf("Write SDRAM (32-Bit access)...");
|
||||
ram32 = (uint32_t*)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_t)i;
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Verify
|
||||
printf("Verify SDRAM (32-Bit access)...");
|
||||
start = clock();
|
||||
for (j=0; j < TEST_SIZE/SMALL_TEST_SIZE; j++)
|
||||
for (i=SMALL_TEST_SIZE/4-1; i >= 0; i--)
|
||||
if (ram32[i] != (uint32_t)i)
|
||||
break;
|
||||
|
||||
end = clock();
|
||||
i++;
|
||||
if (i)
|
||||
{
|
||||
printf("failed\r\n");
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
|
||||
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*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
}
|
||||
for (i=1024; i < 4*65536; i *= 2)
|
||||
{
|
||||
printf("_GFX_copy32() (%d kByte)...", i/1024);
|
||||
start = clock();
|
||||
for (j=0; j < TEST_SIZE/i; j++)
|
||||
_GFX_copy32(pDst32, pSrc32, i/4);
|
||||
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
}
|
||||
// -------------------------------------------------------------------
|
||||
printf("\n");
|
||||
|
||||
printf("Memcpy() Flash(IO) => SDRAM \n");
|
||||
printf("Copying %d kBytes...", FLASH_SIZE/(1024));
|
||||
start = clock();
|
||||
memcpy(pDst32, (uint32_t*)pFlashIO, FLASH_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
printf("\n");
|
||||
|
||||
printf("Memcpy() Flash(MEM) => SDRAM \n");
|
||||
printf("Copying %d kBytes...", FLASH_SIZE/(1024));
|
||||
start = clock();
|
||||
memcpy(pDst32, (uint32_t*)pFlashMem, FLASH_SIZE);
|
||||
end = clock();
|
||||
printf("done (%.2f MByte/s)\n", (double)TEST_SIZE/(1024*1024*(double)(end-start)/CLOCKS_PER_SEC));
|
||||
printf("\n");
|
||||
|
||||
size = 0x2000;
|
||||
memcpy(pDst32, (uint32_t*)pROM, size);
|
||||
printf("Verify boot ROM...");
|
||||
for (i=size/4-1; i >= 0; i--)
|
||||
if (pDst32[i] != pROM[i])
|
||||
break;
|
||||
i++;
|
||||
if (i)
|
||||
{
|
||||
printf("failed\r\n");
|
||||
return TEST16_ERROR;
|
||||
}
|
||||
else
|
||||
printf("passed\r\n");
|
||||
|
||||
DCACHE_invalidate_all();
|
||||
printf("pFlashIO = %08X\n", pFlashIO);
|
||||
printf("pFlashMem = %08X\n", pFlashMem);
|
||||
printf("Verify FLASH(IO) <=> FLASH(MEM)...");
|
||||
for (i=0; i < FLASH_SIZE/4; i++)
|
||||
{
|
||||
if (pFlashIO[i] != pFlashMem[i])
|
||||
{
|
||||
printf("\nfailed at offset = %08X", i << 2);
|
||||
printf("\nfound %08X <=> %08X", pFlashIO[i], pFlashMem[i]);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
if (i != FLASH_SIZE/4)
|
||||
{
|
||||
printf("failed\n");
|
||||
memdump((uint8_t*)&pFlashIO[i], 0, 16, 256);
|
||||
memdump((uint8_t*)&pFlashMem[i], 0, 16, 256);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("passed\n");
|
||||
}
|
||||
|
||||
// memdump((uint8_t*)pSrc32, 0, 16, size);
|
||||
// memdump((uint8_t*)0x40000000, 0, 16, 1024);
|
||||
|
||||
// Memtest END
|
||||
// ----------------------------------------------------------
|
||||
free(pSrc32);
|
||||
free(pDst32);
|
||||
|
||||
sputs("\r\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void flash_print_info(flash_t *pFlash)
|
||||
{
|
||||
flash_info_t *pInfo = &pFlash->info;
|
||||
|
||||
printf("Base address = %08X\n", pFlash->pBase);
|
||||
printf("Endianess = %08X\n", pFlash->eb);
|
||||
|
||||
printf("Flash size = %08X\n", pInfo->flashsize);
|
||||
printf("Block size = %08X\n", pInfo->blocksize);
|
||||
printf("nblocks = %08X\n", pInfo->nblocks);
|
||||
printf("wbuf_size = %08X\n", pInfo->wbuf_size);
|
||||
printf("if_width = %08X\n", pInfo->if_width);
|
||||
printf("num_flash = %08X\n", pInfo->num_flash);
|
||||
}
|
||||
|
||||
void create_data(void *pData, size_t size)
|
||||
{
|
||||
uint8_t *pData8 = (uint8_t*)pData;
|
||||
|
||||
for (size_t i=0; i < size; i++)
|
||||
{
|
||||
int r = rand();
|
||||
pData8[i] = (uint8_t)r;
|
||||
}
|
||||
}
|
||||
|
||||
void flashtest(flash_t *pFlash)
|
||||
{
|
||||
flash_info_t *pInfo = &pFlash->info;
|
||||
|
||||
uint32_t addr = pInfo->blocksize;
|
||||
printf("--------------------------------------------\n");
|
||||
printf("CFI API\n");
|
||||
printf("--------------------------------------------\n");
|
||||
while(addr < pInfo->flashsize)
|
||||
{
|
||||
uint32_t result = cfi_block_is_locked(pFlash, addr/4);
|
||||
printf("cfi_block_is_locked(%08X) = %08X\n", addr, result);
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
result = cfi_block_erase(pFlash, addr/4);
|
||||
printf("cfi_block_erase(%08X) = %08X\n", addr, result);
|
||||
}
|
||||
addr += pInfo->blocksize;
|
||||
};
|
||||
|
||||
addr = pInfo->blocksize;
|
||||
size_t size = pInfo->blocksize;
|
||||
printf("--------------------------------------------\n");
|
||||
printf("Flash API\n");
|
||||
printf("--------------------------------------------\n");
|
||||
|
||||
srand(0x3101970);
|
||||
void *data = malloc(size);
|
||||
|
||||
while(addr < pInfo->flashsize)
|
||||
{
|
||||
uint32_t result = flash_erase(pFlash, addr, size);
|
||||
printf("flash_erase(%08X) = %08X\n", addr, result);
|
||||
if (result != 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
create_data(data, size);
|
||||
result = flash_program(pFlash, addr, data, size);
|
||||
printf("flash_program(%08X) = %08X\n", addr, result);
|
||||
if (result != 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
result = flash_verify(pFlash, addr, data, size);
|
||||
printf("flash_verify(%08X) = %08X\n", addr, result);
|
||||
if (result != 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
addr += pInfo->blocksize;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
int result, i, j, cnt, size;
|
||||
uint32_t volatile *pUART_baud = (uint32_t*)SYS_UART_BAUD;
|
||||
uint32_t volatile *pUART_stat = (uint32_t*)SYS_UART_STAT;
|
||||
uint32_t volatile *pGPIO = (uint32_t*)SYS_GPIO_0_DATA;
|
||||
uint32_t volatile *pReg_usec = (uint32_t*)SYS_TIMER_USEC;
|
||||
uint32_t volatile *pReg_sec = (uint32_t*)SYS_TIMER_SEC;
|
||||
uint32_t volatile *pSSRAM = (uint32_t*)SYS_SSRAM_IO;
|
||||
uint32_t volatile *pTim_ctrl = (uint32_t*)SYS_ITIM_CTRL;
|
||||
uint32_t volatile *pTim_stat = (uint32_t*)SYS_ITIM_STAT;
|
||||
uint32_t volatile *pTim0_cnt = (uint32_t*)SYS_ITIM0_CNT;
|
||||
uint32_t volatile *pTim0_cmp = (uint32_t*)SYS_ITIM0_CMP;
|
||||
uint32_t volatile *pTim1_cnt = (uint32_t*)SYS_ITIM1_CNT;
|
||||
uint32_t volatile *pTim1_cmp = (uint32_t*)SYS_ITIM1_CMP;
|
||||
uint32_t volatile *pVGA_cgcol = (uint32_t*)SYS_VGA_CGCOL;
|
||||
uint32_t *pFlashPicture = (uint32_t*)(SYS_FLASH_MEM + 0x00600000);
|
||||
|
||||
uint32_t volatile *pVGA_src0 = (uint32_t*)SYS_VGA_BLIT_SRC0_ADDR;
|
||||
uint32_t volatile *pVGA_dst = (uint32_t*)SYS_VGA_BLIT_DST_ADDR;
|
||||
uint32_t volatile *pVGA_dimx_src0 = (uint32_t*)SYS_VGA_BLIT_SRC0_DIMX;
|
||||
uint32_t volatile *pVGA_dimx_dst = (uint32_t*)SYS_VGA_BLIT_DST_DIMX;
|
||||
uint32_t volatile *pVGA_nx = (uint32_t*)SYS_VGA_BLIT_NX;
|
||||
uint32_t volatile *pVGA_ny = (uint32_t*)SYS_VGA_BLIT_NY;
|
||||
uint32_t volatile *pVGA_ctrl = (uint32_t*)SYS_VGA_CTRL;
|
||||
uint32_t volatile *pVGA_moffs_0 = (uint32_t*)SYS_VGA_FB_FRONT;
|
||||
uint32_t volatile *pVGA_const_color = (uint32_t*)SYS_VGA_BLIT_COLOR;
|
||||
uint32_t screen_res_x, screen_res_y, screen_fps;
|
||||
uint64_t *pBuf64_0, *pBuf64_1;
|
||||
time_t curr_date;
|
||||
struct tm *pDate, date;
|
||||
uint32_t start, end;
|
||||
char sel[80];
|
||||
struct timeval time_sec;
|
||||
uint32_t *pPic;
|
||||
|
||||
gpio_if_t gpio_if;
|
||||
|
||||
pPic = (uint32_t*)malloc(800*600*sizeof(uint32_t));
|
||||
memcpy(pPic, pFlashPicture, 800*600*sizeof(uint32_t));
|
||||
|
||||
size_t g_cnt = 1;
|
||||
|
||||
gpio_init(&gpio_if, SYS_GPIO_0_BASE);
|
||||
|
||||
*pVGA_cgcol = 0x00FFFFFF;
|
||||
|
||||
*pTim0_cnt = 0;
|
||||
*pTim1_cnt = 0;
|
||||
*pTim0_cmp = 0x40000;
|
||||
*pTim1_cmp = 100000000;
|
||||
*pTim_stat = (1 << 2) | (1 << 0);
|
||||
*pTim_ctrl = (3 << 2);
|
||||
|
||||
// *pUART_baud = 1;
|
||||
|
||||
setbuf(stdout, NULL);
|
||||
PrintCPUinfo();
|
||||
|
||||
gpio_write(&gpio_if, GPIO_0_MDIO_RST, GPIO_0_ALIGN_MDIO, GPIO_DATA_OFFSET, 1);
|
||||
sleep(100);
|
||||
gpio_write(&gpio_if, GPIO_0_MDIO_RST, GPIO_0_ALIGN_MDIO, GPIO_DATA_OFFSET, 0);
|
||||
|
||||
flash_t flash;
|
||||
flash_find(&flash, SYS_FLASH_IO);
|
||||
flash_print_info(&flash);
|
||||
flashtest(&flash);
|
||||
|
||||
printf("\n");
|
||||
|
||||
cnt = 0;
|
||||
do
|
||||
{
|
||||
gpio_write(&gpio_if, GPIO_0_MASK_LED, GPIO_0_ALIGN_LED, GPIO_DATA_OFFSET, cnt);
|
||||
|
||||
// printf("-------------------------------------------\n");
|
||||
// printf("-- Mem Test -------------------------------\n");
|
||||
// printf("-------------------------------------------\n");
|
||||
// result = Test16_MemTest();
|
||||
// if (IS_ERROR(result))
|
||||
// break;
|
||||
// printf("passed\n\n");
|
||||
|
||||
printf("Iteration %d: Passed\n", cnt);
|
||||
curr_date = time(NULL);
|
||||
pDate = gmtime(&curr_date);
|
||||
puts(asctime(pDate));
|
||||
cnt++;
|
||||
|
||||
// printf("V=%.17e\n", pow((double)cnt-1, (double)cnt));
|
||||
} while(0);
|
||||
|
||||
printf("End of program\n");
|
||||
|
||||
return 1;
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user