📄 mem_test.c
字号:
#include <csl.h>
#include <stdio.h>
#include <csl_cache.h>
Uint32 memfill( unsigned int *pStart, unsigned int len, int* val );
Uint32 memfill32( unsigned int *pStart, unsigned int len, unsigned int val );
void mem_test();
//int test_value = 0xff55ff55;
//unsigned char test_value[40] = {0x3a,0x4a,0x5a,0x6a,0x7a,0xa7,0xa6,0xa5,0xa4,0xa3,0x3a,0x4a,0x5a,0x6a,0x7a,0xa7,0xa6,0xa5,0xa4,0xa3,0x3a,0x4a,0x5a,0x6a,0x7a,0xa7,0xa6,0xa5,0xa4,0xa3,0x3a,0x4a,0x5a,0x6a,0x7a,0xa7,0xa6,0xa5,0xa4,0xa3};
int test_value[10] = {0x55555555,0x5a5a5a5a,0xa5a5a5a5,0x55aa55aa,0xaa55aa55,0x55a555a5,0x555a555a,0xaa5aaa5a,0xaaa5aaa5,0xaaaaaaaa};
int add_base = 0x80000000;
//int add_size = 1024*1024*32;
int add_size = 1024*1024;
void main()
{
CSL_init();
CACHE_clean(CACHE_L2ALL, 0, 0);
CACHE_setL2Mode(CACHE_128KCACHE);
CACHE_enableCaching(CACHE_EMIFA_CE00);
CACHE_enableCaching(CACHE_EMIFA_CE01);
}
void mem_test()
{
Uint32 tmp = 0;
int num = 0;
#if 0
printf("test memory region,start address is 0x%x,len is 0x%x\n",add_base,add_base,add_size,add_size);
tmp = memfill( (unsigned int*)add_base, add_size, test_value );
if (tmp == 0)
printf("the region test sucess\n");
else
printf("mistake happened\n");
add_base += (1024*1024);
if(add_base >= 0x82000000)
{
add_base = 0x80000000;
}
#endif
while(1)
{
printf("test memory region,start address is 0x%x,len is 0x%x\n",add_base,add_size);
tmp = memfill( (unsigned int*)add_base, add_size, test_value );
if (tmp == 0)
printf("the region test sucess\n");
else
printf("mistake happened\n");
add_base += (1024*1024);
if(add_base >= 0x82000000)
{
add_base = 0x80000000;
printf("Now check again!\n");
}
//CACHE_clean(CACHE_L2ALL, 0, 0);
}
}
Uint32 memfill( unsigned int *pStart, unsigned int len, int* val )
{
unsigned int i;
unsigned int n = 0;
unsigned int check;
unsigned int errorcount = 0;
unsigned int *p,*q;
p = pStart;
len = len/4;
/* Write Pattern */
for ( i = 0; i < len; i++ )
{
q = p;
*p = val[n];
check = *q;
if(check != val[n])
{
printf("error!The uncorrect address is %x,write value:%x,read value:%x\n",p,val[n],check);
errorcount++;
}
else
{
//printf("Add:%x,Val:%x\n",p,val[n]);
}
n++;
p++;
if (n >= 10)
n = 0;
}
return errorcount;
}
Uint32 memfill32( unsigned int *pStart, unsigned int len, unsigned int val )
{
unsigned int i;
unsigned int errorcount = 0;
unsigned int *p;
p = pStart;
len = len/4;
/* Write Pattern */
for ( i = 0; i < len; i++ )
{
*p = val;
p++;
}
p = pStart;
/* Read Pattern */
for ( i = 0; i < len; i++ )
{
if ( *p != val )
{
errorcount++;
printf("error:the value we read is not what we write\n");
// break;
}
val++;
p++;
}
return errorcount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -