📄 gf-indirec.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 + -