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

📄 au1000_memtest.c

📁 一个专门针对mips的bootloader程序源代码
💻 C
字号:
#include <pb1000.h>
#include <stdio.h>
#include <sys_api.h>

void au1000_memtest()
{
	unsigned int x, y, z;

	unsigned int *ptr;

	unsigned int addr[30] = { 
						0xA0000C00, 0xA0001200, 0xA0002100, 0xA0004080, 0xA0008040, 0xA0010020,
						0xA0020000, 0xA0040000, 0xA0080000, 0xA0100500, 0xA0200280, 0xA0400140,
						0xA0d000A0, 0xA1280050, 0xA1940020, 0xA2000C00, 0xA2001200, 0xA2002100,
						0xA2004080, 0xA2008040, 0xA2010020, 0xA2020000, 0xA2040000, 0xA2080000,
						0xA2100500, 0xA2200280, 0xA2400140, 0xA2d000A0, 0xA3280050, 0xA3940020 
						};

	
	unsigned int pattern[21][8] = {

		0x88888888, 0x99999999, 0xAAAAAAAA, 0xBBBBBBBB, 0xCCCCCCCC, 0xDDDDDDDD, 0xEEEEEEEE, 0xFFFFFFFF,
		0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555,
		0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA,
		0x66666666, 0x99999999, 0x66666666, 0x99999999, 0x66666666, 0x99999999, 0x66666666, 0x99999999,
		0x99999999, 0x66666666, 0x99999999, 0x66666666, 0x99999999, 0x66666666, 0x99999999, 0x66666666,
		0xCCCCCCCC, 0x33333333, 0xCCCCCCCC, 0x33333333, 0xCCCCCCCC, 0x33333333, 0xCCCCCCCC, 0x33333333,
		0x33333333, 0xCCCCCCCC, 0x33333333, 0xCCCCCCCC, 0x33333333, 0xCCCCCCCC, 0x33333333, 0xCCCCCCCC,
		0x77777777, 0x88888888, 0x77777777, 0x88888888, 0x77777777, 0x88888888, 0x77777777, 0x88888888,
		0x88888888, 0x77777777, 0x88888888, 0x77777777, 0x88888888, 0x77777777, 0x88888888, 0x77777777,
		0x11111111, 0xEEEEEEEE, 0x11111111, 0xEEEEEEEE, 0x11111111, 0xEEEEEEEE, 0x11111111, 0xEEEEEEEE,
		0x22222222, 0xDDDDDDDD, 0x22222222, 0xDDDDDDDD, 0x22222222, 0xDDDDDDDD, 0x22222222, 0xDDDDDDDD,
		0x44444444, 0xBBBBBBBB, 0x44444444, 0xBBBBBBBB, 0x44444444, 0xBBBBBBBB, 0x44444444, 0xBBBBBBBB,
		0x0000FFFF, 0xFFFF0000, 0x0000FFFF, 0xFFFF0000, 0x0000FFFF, 0xFFFF0000, 0x0000FFFF, 0xFFFF0000,
		0xFFFF0000, 0x0000FFFF, 0xFFFF0000, 0x0000FFFF, 0xFFFF0000, 0x0000FFFF, 0xFFFF0000, 0x0000FFFF,
		0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F,
		0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0, 0x0F0F0F0F, 0xF0F0F0F0,
		0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000,
		0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF,
		0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000,
		0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF,
		0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000

		};

	unsigned int temp[8];

	DISP_STR("SDRAM THRASH\n");

	for(x=0;x<30;x++)
	{
		
		ptr = (unsigned int *) addr[x];

		for(z=0;z<8;z++)
		{
			temp[z] = ptr[z];
		}

		for(y=0; y<21; y++)
		{
			for(z=0;z<8;z++)
			{
				ptr[z] = pattern[y][z];
			}

			ptr = (unsigned int *) addr[x];

			asm("	.set mips3\n"
				"	cache 0x11,0(%0)\n"
				"	.set mips0\n"
				:: "g"(ptr) );

			for(z=0;z<8;z++)
			{

				if(ptr[z] != pattern[y][z])
					DISP_STR("MEMTHRASH ERROR");
				else
					ptr[z] = temp[z];


			}

		}
	}

}





⌨️ 快捷键说明

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