?? ram_test.c
字號:
#include "my_printf.h"#define READ_REG(addr) (*((volatile char *)(addr)))#define WRITE_REG(addr, data) (*((volatile char *)(addr)) = (data))#define READ_REGl(addr) (*((volatile int *)(addr)))#define WRITE_REGl(addr, data) (*((volatile int *)(addr)) = (data))int ERR = 0;int addr_test(int addr_base, int addr_end){ int i = 0; for (; i<(addr_end-addr_base); i += 4) WRITE_REGl(addr_base+i, addr_base+i); for (i=0; i<(addr_end-addr_base); i += 4) if ( (addr_base + i) != READ_REGl(addr_base + i) ) { my_printf("addr bus error\n\r"); ERR = 1; return 1; } ERR = 0;} void sdram_test(int addr_base, int addr_end){ int i = 0; ERR = 0; //do { for (; i<=addr_end-addr_base; ) { WRITE_REG(addr_base+i, 0x55); WRITE_REG(addr_base+i+1, 0xaa); if ( READ_REG(addr_base+i) != 0x55 ) { //if ( READ_REG(addr_base+i) == 0xff ) //{ // addr_test(addr_base, i+1); // if ( 1== ERR ) // return 1; // my_printf("sdram 0x%x\r\n", i+1); // return 0; //} //else ERR = 1; } WRITE_REG(addr_base+i, 0xaa); WRITE_REG(addr_base+i+1, 0x55); if ( READ_REG(addr_base+i) != 0xaa ) ERR = 1; if ( 1==ERR) { my_printf("sdram or data bus error\r\n"); //return 1; } //if ((i%(1024*1024)) == 0) // my_printf("i = %d\n\r", i/(1024*1024)); i++; } addr_test(addr_base, addr_end); if ( ERR == 0) { my_printf("sdram test ok!\n\r"); // return 0; } // return 1; //} while (1);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -