32 #include "chip_5023BC.h" 35 #define RAM_SIZE (128*1024) //256K, EDAC is ON 37 #define RAM_START 0x20000000 38 #define RAM_END (0x20000000+RAM_SIZE - 1) 41 #define START_ADR (RAM_START + PROGRAM_SIZE) //Увеличиваем на размер исполняемой программы, с небольшим запасом 44 #define START_ADR RAM_START 46 #error program load configuration is undefined 50 #define END_ADR RAM_END 56 #define TYPE unsigned int 57 #define PATTERN_F 0xFFFFFFFF 58 #define PATTERN_0 0x00000000 63 #define TYPE unsigned short 64 #define PATTERN_F 0xFFFF 65 #define PATTERN_0 0x0000 70 #define TYPE unsigned char 71 #define PATTERN_F 0xFF 72 #define PATTERN_0 0x00 75 #error memory read mode is undefined 84 void ReportError(
unsigned int code,
unsigned int adr,
unsigned int val1,
unsigned int val2)
101 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
108 #define TEMP (START_ADR + RAM_SIZE/32 - 1) //END_ADR 133 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
135 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
141 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
147 for(
unsigned int adr=
END_ADR-3; adr>=START_ADR; adr-=
INC)
153 for(
unsigned int adr=
END_ADR-3; adr>=START_ADR; adr-=
INC)
159 for(
unsigned int adr=
END_ADR-3; adr>=START_ADR; adr-=
INC)
172 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
175 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
176 if (*(
TYPE*)adr != value)
186 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
187 *(
TYPE*)adr = ~value;
189 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
198 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
201 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
205 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
208 for(
unsigned int adr=START_ADR; adr<=
END_ADR; adr+=
INC)
216 #define TEST_CONST1 0xAAAAAAAA 217 #define TEST_CONST2 0x55555555 218 #define MEMORY_EXPOSURE_TIME 1000000 220 unsigned char mem_test_state = 0;
221 unsigned int test_const;
223 if (mem_test_state++)
231 unsigned int errors_count = 0;
237 for (
unsigned int adr = START_ADR; adr <
END_ADR; adr+=4)
239 *(
unsigned int*)adr = test_const;
255 for (
unsigned int adr = START_ADR; adr <
END_ADR; adr+=4)
257 if (*(
unsigned int*)adr != test_const)
259 ReportError(11, adr, test_const, *(
unsigned int*)adr);
261 unsigned int val = *(
unsigned int*)adr;
262 for (
unsigned char pos = 0; pos<32; pos++)
263 if ( ((val >> pos) & 1) != ((test_const >> pos) & 1) )
271 if (errors_count > 0)
276 for (
unsigned int adr = START_ADR; adr <
END_ADR; adr+=4)
278 *(
unsigned int*)adr = 0;
286 cerr = ((CMN_REG_t*)
CMN_REG)->EDAC_INT_MEM_CERR_CNT;
287 ferr = ((CMN_REG_t*)
CMN_REG)->EDAC_INT_MEM_FERR_CNT;
307 PRINT(
" Memory test - start\n");
309 PRINT(
" (Reduced version)\n");
315 PRINT(
" chess test\n");
318 PRINT(
" counter test\n");
321 PRINT(
" running 0 and running 1 test\n");
324 PRINT(
" march test\n");
327 PRINT(
" galloping test\n");
340 PRINT(
" Test result - OK\n");
345 PRINT(
" Errors total count = ");
347 PRINT(
"\n Test result - FAILED\n");
void ReportError(unsigned int code, unsigned int adr, unsigned int val1, unsigned int val2)
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с отладочным выводом...
#define PRINT(...)
Макросы для использования отладочного выхода
volatile unsigned int w_adr
#define MEMORY_EXPOSURE_TIME
unsigned char ErrorsDetected
volatile unsigned int r_adr
#define CMN_REG
Указатель на структуру CMN_REG.
volatile unsigned int iterations