📄 ram_test.c
字号:
#include "excalibur.h"#include "sys.h"void ram_loop(){ Uint8 *charptr; Uint32 y; while (1) { for (y=0,charptr = na_sram;y<na_sram_size;y++) { *charptr = 0; *charptr = 0xFF; *charptr = 0x0; *charptr = 0x55; *charptr = 0x0; *charptr++ = 0xAA; } //printf("Checking bytes\n"); for (charptr=na_sram,y=0;y<na_sram_size;y++) { na_led_port->np_piodata = y >> 12; if (*charptr != 0xAA) { printf("Error found (stress): Read back %X, should be 0xAA at offset %X\n",*charptr,y); return; } *charptr++; //*charptr++ = 0; } }}void ram_test(){ volatile Uint8 *charptr; volatile Uint16 *intptr; volatile Uint32 *longptr; volatile Uint32 x; volatile Uint32 y; volatile Uint8 data[257]; printf("Code is executing from %X\n",nasys_program_mem); /* Execute ram test only if executing from onchip ram */ if ((Uint32) nasys_program_mem == na_onchip_ram_base) { printf("Executing from onchip ram, starting ram test\n"); } else { printf("Executing from SRAM, no ram test required\n"); return; } /***************** START RAM TESTING **********************/ //Fill up data array printf("Filling up 257 byte data array with 0x55 0xAA 0xFF\n"); for (x=0;x<257;x++) { if (x == 0) data[x]=0x55; else if (data[x-1] == 0x55) data[x]=0xAA; else if (data[x-1] == 0xAA) data[x]=0xFF; } printf("Byte-wide, single-write RAM test\n"); //Writing bytes printf("Writing bytes to RAM\n"); charptr = na_sram; for (x=0,y=0;y<na_sram_size;y++) { *charptr++ = data[x++]; if (x==257) x=0; } printf("Checking bytes\n"); charptr = na_sram; for (x=0,y=0;y<na_sram_size;y++,x++) { if (x==257) x=0; if (data[x] != *charptr) { printf("Error found (byte): Read back %X, should be %X at offset %X\n",*charptr,data[x],y); //return 0; } *charptr++; } ////////////////////////////////////////////// printf("Filling up 257 byte data array with 0xFF 0x55 0xAA\n"); for (x=0;x<257;x++) { if (x == 0) data[x]=0xFF; else if (data[x-1] == 0xFF) data[x]=0x55; else if (data[x-1] == 0xAA) data[x]=0xAA; } printf("Int-wide, single-write RAM test\n"); printf("Writing bytes to RAM\n"); intptr = na_sram; for (x=0,y=0;y<na_sram_size;y+=2) { *intptr++ = (Uint16) data[x++]; if (x>=257) x=0; } printf("Checking bytes\n"); intptr = na_sram; for (x=0,y=0;y<na_sram_size;y+=2,x++) { if (x>=257) x=0; if ((Uint16) data[x] != *intptr) { printf("Error found (int): Read back %X, should be %X at offset %X\n",*intptr,(short int) data[x],y); exit(0); return; } *intptr++; } /////////////////////////////////////////////// printf("Filling up 257 byte data array with 0xAA 0xFF 0x55\n"); for (x=0;x<257;x++) { if (x == 0) data[x]=0xAA; else if (data[x-1] == 0xAA) data[x]=0xFF; else if (data[x-1] == 0xFF) data[x]=0x55; } printf("Long-wide, single-write RAM test\n"); printf("Writing bytes to RAM\n"); longptr = na_sram; for (x=0,y=0;y<na_sram_size;y+=4) { *longptr++ = (Uint32) data[x++]; if (x>=257) x=0; } printf("Checking bytes\n"); longptr = na_sram; for (x=0,y=0;y<na_sram_size;y+=4,x++) { if (x>=257) x=0; if ((Uint32) data[x] != *longptr) { printf("Error found (long): Read back %X, should be %X at offset %X\n",*longptr,(unsigned long) data[x],y); exit(1); } *longptr++; } ///////////////////////////////////////////////////// printf("Performing shorted address-line check\n"); printf("Clearing ram\n"); for (y=0,charptr = na_sram;y<na_sram_size;y++) { *charptr++ = 0; } printf("Writing values and checking if cleared first\n"); for (y=0,charptr = na_sram;y<na_sram_size;y++) { if (*charptr != 0) { printf("Error found (shorted): Read back %X, should be 0 at offset %X\n",*charptr,y); } *charptr++ = 0xFF; } }int main(){ ram_test(); /* Go to continuous loop */ printf("Running continuous ram test\n"); ram_loop(); return 0; } /* end main */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -