1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個贊
void memory_test(void)
{
int i;
UINT32T data;
int memError=0;
UINT32T *pt;
// memory test
uart_printf("\nMemoryTest(%xh-%xh):WR\n", _RAM_STARTADDRESS+0xe00000,
(_ISR_STARTADDRESS&0xf0ff0000)); /*打印出內(nèi)存測試函數(shù)所覆蓋地址1-地址2的范圍*/
//memory write
pt=(UINT32T*)(_RAM_STARTADDRESS+0xe00000);/*指針pt指向地址1*/
while((UINT32T)pt<(_ISR_STARTADDRESS&0xf0ff0000))
{
/*向內(nèi)存地址中不斷寫入其地址值的內(nèi)容
假設(shè)現(xiàn)在地址是0x2000 1000這個地方寫上一個叫做0x2000 1000的值
再在地址是0x2000 1004這個地方寫上一個叫做0x2000 1004的值
以此類推
*/
*pt=(UINT32T)pt;
pt++;
}/*全部寫完*/
//MEMORY READ
uart_printf("MemoryTest(%xh-%xh):RD\n", _RAM_STARTADDRESS+0xe00000,
(_ISR_STARTADDRESS&0x0f0ff0000));/*打印出需要讀取內(nèi)容的地址范圍,地址1-地址2*/
//uart_printf("\b\bRD");
pt=(UINT32T*)(_RAM_STARTADDRESS+0xe00000);/*用指針pt指向地址1*/
/*將地址1-地址2的內(nèi)容依次以32位取出*/
while((UINT32T)pt<(_ISR_STARTADDRESS&0xf0ff0000))
{data=*pt;/*取出pt指針?biāo)赶虻刂返膬?nèi)容*/
if(data!=(UINT32T)pt)/*判斷該內(nèi)容是否為其地址值*/
{memError=1;
uart_printf("\b\bFAIL:0x%x=0x%x\n",i,data);/*不等,則測試失敗*/
break;}
pt++;}
if(memError==0)
uart_printf("\n\b\bO.K.\n");}/*地址1-地址2中的內(nèi)容全為其地址值,測試成功*/
- 1 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報(bào)