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

📄 gf-indirec.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:

#include <stdio.h>

typedef unsigned char      U8;  /* 0 to 255                                */
typedef unsigned short     U16; /* 0 to 65535                              */
typedef unsigned long      U32; /* 0 to 65535                              */
typedef signed char        S8;  /* -128 to 127                             */
typedef signed short       S16; /* -32768 to 32767                         */
typedef float              F32; /* IEEE Single Precision (S1E8M23)         */
typedef double             F64; /* IEEE Double Precision (S1E11M52)        */




#define GF5500_CS_BASE		0x04000000
#define REMAP_A2    		0x00400000
void GF5500_WriteReg(U32 index ,U16 data);
void GF5500_WriteMem(U32 index ,U16 data);
U16  GF5500_ReadReg(U32 index);
U16  GF5500_ReadMem(U32 index);
volatile U16 dataww;
main_gf_test()
{
	dataww=0;
	GF5500_WriteReg(0x0 ,0x08);
	dataww = GF5500_ReadReg(0x0);
	GF5500_WriteReg(0x48 ,0xf);
	dataww = GF5500_ReadReg(0x48);
	dataww = GF5500_ReadReg(0x4c);

	GF5500_WriteReg(0x22000 ,0x08);
	dataww = GF5500_ReadReg(0x22084);
	printf(" read back data = 0x%.4x \n",dataww);
	dataww = GF5500_ReadReg(0x22086);
	printf(" read back data = 0x%.4x \n",dataww);

}

void GF5500_WriteReg(U32 index ,U16 data)
{
	U16	Addr1=0,Addr2=0;
	U16	*pointer_index;
	U16	*pointer_data;
	
	Addr1 = (U16)(index << 1) | 0x1 ;
//	Addr2 = (U16)(index >> 13 ) | 0x3;
	pointer_index = (U16 *)(GF5500_CS_BASE + REMAP_A2); // A2 = 1
//	mmp_trace("CS_Addr = 0x%08x ,  Addr1 =0x%.4x , Addr2 =0x%.4x\n",pointer_index,Addr1,Addr2 );
	*pointer_index = Addr1;
//	*pointer_index = Addr2;		
	pointer_data = (U16 *)GF5500_CS_BASE ;
	*pointer_data = data ;
//	mmp_trace(" data =0x%.4x \n",data);	
}

void GF5500_WriteMem(U32 index ,U16 data)
{
	U16	Addr1=0,Addr2=0;
	U16	*pointer_index;
	U16	*pointer_data;
	
//	mmp_trace("index =0x%08x ,data =data \n",index,data);
	Addr1 = (U16)(index << 1);
//	Addr2 = (U16)(index >> 13 ) | 0x2;
	pointer_index =(U16 *)(GF5500_CS_BASE + REMAP_A2); // A2 = 1
//	mmp_trace("CS_Addr = 0x%08x ,  Addr1 =0x%.4x , Addr2 =0x%.4x\n",pointer_index,Addr1,Addr2 );
	*pointer_index = Addr1;
//	*pointer_index = Addr2;		
	pointer_data = (U16 *)GF5500_CS_BASE ;
	*pointer_data = data ;
//	mmp_trace(" data =0x%.4x \n",data);	
}

U16 GF5500_ReadReg(U32 index)
{
	U16	Addr1=0,Addr2=0;
	U16	*pointer_index;
	U16	*pointer_data;
	U16	data=0;
	
	Addr1 = (U16)(index << 1) | 0x1 ;
//	Addr2 = (U16)(index >> 13 ) | 0x3;
	pointer_index =(U16 *)( GF5500_CS_BASE + REMAP_A2 ); // A2 = 1
//	mmp_trace("CS_Addr = 0x%08x ,  Addr1 =0x%.4x , Addr2 =0x%.4x\n",pointer_index,Addr1,Addr2 );
	*pointer_index = Addr1;
//	*pointer_index = Addr2;		
	pointer_data = (U16 *)GF5500_CS_BASE ;
	data  = *pointer_data;
//	mmp_trace(" data =0x%.4x \n",data);
	return data;
}

U16 GF5500_ReadMem(U32 index )
{
	U16	Addr1=0,Addr2=0;
	U16	*pointer_index;
	U16	*pointer_data;
	U16	data=0;
	
	Addr1 = (U16)(index << 1);
//	Addr2 = (U16)(index >> 13 ) | 0x2;
	pointer_index = (U16 *)(GF5500_CS_BASE + REMAP_A2); // A2 = 1
//	mmp_trace("CS_Addr = 0x%08x ,  Addr1 =0x%.4x , Addr2 =0x%.4x\n",pointer_index,Addr1,Addr2 );
	*pointer_index = Addr1;
//	*pointer_index = Addr2;		
	pointer_data =(U16 *)GF5500_CS_BASE ;
	data  = *pointer_data;
//	printf(" data =0x%.4x \n",data);
	return data;
}

⌨️ 快捷键说明

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