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

📄 sdram.c

📁 SDRAM的程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include "melody.h"

// Define SDRAM Length (current is 64MB)
//#define SDRAM_SIZE 0x4000000 
// Define SDRAM Length (current is 48MB)
#define SDRAM_SIZE 0x3000000

#define SDRAM_START 0x08000000

void main()
{
	FILE 	 *fp;
	int 	 dwLen = 0;
	volatile DWORD *pWalk = (volatile DWORD *)SDRAM_START;
	DWORD    i = 0;
	
	printf("SDRAM Test Begin!\r\n");
	
	// ONE DWORD TEST
    if (*pWalk == 0)
    {
        *pWalk = 0xFFFFFFFF;
        if (*pWalk != 0xFFFFFFFF)
        {
            printf("Failed!\r\n");
            printf("Address: 0x%08x, Write: 0xFFFFFFFF, Read: 0x%08x\r\n", pWalk, *pWalk);
            goto EXIT;
        }
    }
    else
    {
        *pWalk = 0x0;
        if (*pWalk != 0)
        {
            printf("Failed!\r\n");
            printf("Address: 0x%08x, Write: 0x00000000, Read: 0x%08x\r\n", pWalk, *pWalk);
            goto EXIT;
        }
    }
	
	/*********** Initialize SDARM **************/
	printf("Initialize SDRAM to zero...");
    while (dwLen < SDRAM_SIZE)
    {
        *pWalk++ = 0;
        dwLen += 4;
    }
    printf("OK\r\n");
    
    /*********** Decrease Verify ***************/
    printf("Begin Decrease Verify!\r\n");
    // Write Data
    i = 0xFFFFFFFF;
    dwLen = 0;
    pWalk = (volatile DWORD *)SDRAM_START;
    while (dwLen < SDRAM_SIZE)
    {
        *pWalk++ = i;
        dwLen += 4;
        i--;
    }
    
    // Verify Data
    i = 0xFFFFFFFF;
    dwLen = 0;
    pWalk = (volatile DWORD *)SDRAM_START;
    while (dwLen < SDRAM_SIZE)
    {
        if (*pWalk != i)
        {
            printf("Decrease Verify failed!\r\n");
            printf("First Error location, Address: 0x%08x, Write: 0x%08x, Read: 0x%08x\r\n", pWalk, i, *pWalk);
            goto EXIT;
        }
        pWalk++;
        dwLen += 4;
        i--;
    }
    printf("Decrease OK!\r\n");
    
    /************ Increase Verify ***************/
    printf("Begin Increase Verify!\r\n");
    // Write Data
    i = 0;
    dwLen = 0;
    pWalk = (volatile DWORD *)SDRAM_START;
    while (dwLen < SDRAM_SIZE)
    {
        *pWalk++ = i;
        dwLen += 4;
        i++;
    }
    
    // Verify Data
    i = 0;
    dwLen = 0;
    pWalk = (volatile DWORD *)SDRAM_START;
    while (dwLen < SDRAM_SIZE)
    {
        if (*pWalk != i)
        {
            printf("Increase Verify failed!\r\n");
            printf("First Error location, Address: 0x%08x, Write: 0x%08x, Read: 0x%08x\r\n", pWalk, i, *pWalk);
            goto EXIT;
        }
        pWalk++;
        dwLen += 4;
        i++;
    }
    printf("Increase OK!\r\n");
    
EXIT:
	printf("SDRAM Test End!\r\n");	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -