📄 memorytest.c
字号:
#include <stdio.h>
#include "common.h"
#define _PRINTF_OUT_
// #define _PRINT_OUT_
U8 _gMSG_OUT=0;
U32 _gErrorMemoryU8;
U32 _gErrorMemoryU16;
U32 _gErrorMemoryU32;
U32 _gErrorMemoryAddress;
U32 MemoryErrorU8(U32 Address)
{
#ifdef _PRINTF_OUT_
printf("\nMemory Access Error at Address=0x%08x", Address);
#endif
_gErrorMemoryU8=1;
return Address;
}
U32 MemoryErrorU16(U32 Address)
{
#ifdef _PRINTF_OUT_
printf("\nMemory Access Error at Address=0x%08x", Address);
#endif
_gErrorMemoryU16=1;
return Address;
}
U32 MemoryErrorU32(U32 Address)
{
#ifdef _PRINTF_OUT_
printf("\nMemory Access Error at Address=0x%08x", Address);
#endif
_gErrorMemoryU32=1;
return Address;
}
U32 MemoryErrorAddress(U32 Address)
{
#ifdef _PRINTF_OUT_
printf("\nMemory Access Error at Address=0x%08x", Address);
#endif
_gErrorMemoryAddress=1;
return Address;
}
void MemoryFillU8(U32 StartAddress, U32 ByteSize, U8 Pattern)
{
U32 i;
for(i=0; i<ByteSize; i++)
{
*(volatile P_U8)(StartAddress+i)=Pattern;
if((i&0xFFFFF)==0)
printf("F");
}
}
void MemoryWriteU8(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
U8 TempRead;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
// TempRead=(*(P_U8)(0x8000000)); // Read Access to SDRAM
*(volatile P_U8)(i)=j;
#ifdef _PRINTF_OUT_
if((i&0x000FFFFF)==0)
printf("W");
#endif
k++;
j++;
i++;
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
}
U32 MemoryReadU8(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
U8 tmp;
U8 TempRead;
_gErrorMemoryU8=0;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
// TempRead=(*(P_U8)(0x8000000)); // Read Access to SDRAM
tmp=(*(volatile P_U8)(i));
#ifdef _PRINTF_OUT_
if((i&0x000FFFFF)==0)
printf("R");
#endif
if(tmp != ((U8)j))
MemoryErrorU8(i);
k++;
j++;
i++;
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
return _gErrorMemoryU8;
}
U32 MemoryTestU8(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
_gErrorMemoryU8 = 0;
MemoryWriteU8(StartAddress, ByteSize, StartNumber, PageSizeByte);
MemoryReadU8(StartAddress, ByteSize, StartNumber, PageSizeByte);
return _gErrorMemoryU8;
}
void MemoryWriteU16(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
*(P_U16)(i)=j;
k+=2;
j++;
i+=2;
if((i&0x000FFFFF)==0)
printf("W");
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
}
void MemoryReadU16(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
U16 tmp;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
tmp=(*(P_U16)(i));
if(tmp != j)
MemoryErrorU16(i);
k+=2;
j++;
i+=2;
if((i&0x000FFFFF)==0)
printf("R");
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
}
U32 MemoryTestU16(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
_gErrorMemoryU16=0;
MemoryWriteU16(StartAddress, ByteSize, StartNumber, PageSizeByte);
MemoryReadU16(StartAddress, ByteSize, StartNumber, PageSizeByte);
return _gErrorMemoryU16;
}
void MemoryWriteU32(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
*(P_U32)(i)=j;
k+=4;
j++;
i+=4;
if((i&0x000FFFFF)==0)
printf("W");
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
}
void MemoryReadU32(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
U32 i, j, k;
U32 tmp;
i=StartAddress;
k=0;
j=StartNumber;
while(i<(StartAddress+ByteSize))
{
tmp=(*(P_U32)(i));
if(tmp != j)
MemoryErrorU32(i);
k+=4;
j++;
i+=4;
if((i&0x000FFFFF)==0)
printf("R");
if(k>=PageSizeByte)
{ k=0;
j=StartNumber;
}
}
}
U32 MemoryTestU32(U32 StartAddress, U32 ByteSize, U32 StartNumber, U32 PageSizeByte)
{
_gErrorMemoryU32=0;
MemoryWriteU32(StartAddress, ByteSize, StartNumber, PageSizeByte);
MemoryReadU32(StartAddress, ByteSize, StartNumber, PageSizeByte);
return _gErrorMemoryU32;
}
void MemoryWriteAddress(U32 StartAddress, U32 ByteSize)
{
U32 i;
i=StartAddress;
while(i<(StartAddress+ByteSize))
{
*(volatile P_U32)(i)=i;
i+=4;
if((i&0xFFFFF)==0)
printf("W");
}
}
U32 MemoryReadAddress(U32 StartAddress, U32 ByteSize)
{
U32 i;
U32 tmp;
i=StartAddress;
while(i<(StartAddress+ByteSize))
{
tmp=(*(volatile P_U32)(i));
if(tmp!=i)
MemoryErrorAddress(i);
i+=4;
if((i&0xFFFFF)==0)
printf("R");
}
}
U32 MemoryTestAddress(U32 StartAddress, U32 ByteSize)
{
_gErrorMemoryAddress=0;
MemoryWriteAddress(StartAddress, ByteSize);
MemoryReadAddress(StartAddress, ByteSize);
return _gErrorMemoryAddress;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -