⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem_test.c

📁 DM642的内存测试
💻 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 + -