編寫S3C2440總線方式控制的流式驅動程序問題
我想用nGCS2作片选,LDADDR0-LDADDR7作地址线,LDDATA0-LDDATA7作数据线进行CPLD的读写数据.于是我定义了下面的结构体:
#define NGCS2_BASE 0XA4000080
#define NGCS2_PHY_BASE 0x10000080
///定义CPLD控制寄存器地址
typedef struct {
unsigned int gCSSLTAABC;
unsigned int gCSSLTBABC;
unsigned int gCSENTA;
unsigned int gCSENTB;
unsigned int gCSSLP;
unsigned int gCSADSOURCE;
}CPLD_CONTEXT;
volatile CPLD_CONTEXT *g_CPLDReg;
然后用VirtualAlloc()和VirtualCopy()进行内存地址映射和邦定 如下:
g_CPLDReg = (volatile CPLD_CONTEXT*)VirtualAlloc(0, sizeof(CPLD_CONTEXT), MEM_RESERVE, PAGE_NOACCESS);
b_CPLDREG=VirtualCopy((PVOID)g_CPLDReg,(PVOID)NGCS2_BASE, sizeof(CPLD_CONTEXT), PAGE_READWRITE|PAGE_NOCACHE);
编译后下载驱动到平台,运行时提示VirtualCopy()调用失败.
我不知道問題到底出在哪?
急昐高手指點.!