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

📄 ram_test.c

📁 uboot底层驱动
💻 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 + -