m54455evb_sdram_test.c

来自「Freescale MCF5445evb 参考测试代码」· C语言 代码 · 共 66 行

C
66
字号
/*! * \file    m54455evb_sdram_test.c * \brief   Test the SDRAM interface on the M54455EVB (aka Jamaica) * \version $Revision: 1.1 $ * \author  Michael Norman */ #include "common.h"#include "m54455evb_fat.h"                static int test_data[] = {    0x00112233, 0x44556677, 0x8899AABB, 0xCCDDEEFF,    0x00001111, 0x22223333, 0x44445555, 0x66667777,    0x88889999, 0xAAAABBBB, 0xCCCCDDDD, 0xEEEEFFFF,    0x00000000, 0x11111111, 0x22222222, 0x33333333,    0x44444444, 0x55555555, 0x66666666, 0x77777777};/********************************************************************//*! * \brief   SDRAM Test * \return  0 if the tests was successful; non-zero otherwise */intsdram_test(void){	int i;    if (memtest_databus_32((uint32 *)SDRAM_ADDRESS)                   ||        memtest_databus_32((uint32 *)SDRAM_ADDRESS+1)                 ||        memtest_databus_32((uint32 *)SDRAM_ADDRESS+2)                 ||        memtest_databus_32((uint32 *)SDRAM_ADDRESS+3)                 ||        memtest_databus_32((uint32 *)(SDRAM_ADDRESS+SDRAM_SIZE/2))    ||        memtest_databus_32((uint32 *)(SDRAM_ADDRESS+SDRAM_SIZE/2)+1)  ||        memtest_databus_32((uint32 *)(SDRAM_ADDRESS+SDRAM_SIZE/2)+2)  ||        memtest_databus_32((uint32 *)(SDRAM_ADDRESS+SDRAM_SIZE/2)+3))        return 1;        if (memtest_addrbus_32((uint32 *) (SDRAM_ADDRESS+(SDRAM_SIZE/64*31)),                           SDRAM_SIZE/32))        return 2;            if (memtest_device_32((uint32 *) (SDRAM_ADDRESS+(SDRAM_SIZE/64*31)),                           SDRAM_SIZE/32))        return 3;    /* Clear a small portion of SDRAM */    for (i = 0; i < sizeof(test_data); i+=4)        *(uint32*)(SDRAM_ADDRESS + i) = 0;        /* burst from SRAM to SDRAM */    mcf5xxx_move_line((ADDRESS)&test_data[0], SDRAM_ADDRESS + 0);    mcf5xxx_move_line((ADDRESS)&test_data[4], SDRAM_ADDRESS + 16);    mcf5xxx_move_line((ADDRESS)&test_data[8], SDRAM_ADDRESS + 32);    mcf5xxx_move_line((ADDRESS)&test_data[12], SDRAM_ADDRESS + 48);    mcf5xxx_move_line((ADDRESS)&test_data[16], SDRAM_ADDRESS + 64);    for (i = 0; i < 80/4; i++)    {        if (test_data[i] != *(uint32 *)(SDRAM_ADDRESS + i*4))            return 4;    }        return 0;}/********************************************************************/

⌨️ 快捷键说明

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