引用: 引用 3 楼 hiproz 的回复:
VirtualAlloc+VirtualCopy,同时查一下地址的合法性,确认是可以访问的地址
配置ncs2的代码如下
void ConfgnCS2()
{
BOOL RetValue = TRUE;
IOPreg * v_pIOPregs;
v_pIOPregs = (IOPreg *)VirtualAlloc(0, sizeof (IOPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pIOPregs == NULL)
{
ERRORMSG(1,(TEXT("For IOPregs : VirtualAlloc failed!\r\n")));
RetValue = FALSE;
}
else
{
v_pIOPregs = (IOPreg *)0xA4500064;//IOP_BASE;//0xB1600000;
}
if (!RetValue)
{
if (v_pIOPregs)
{
VirtualFree((PVOID) v_pIOPregs, 0, MEM_RELEASE);
}
v_pIOPregs = NULL;
}
//Congfig GPIO78 as nCS2
v_pIOPregs->GAFR2 &= ~(3 << 28);
v_pIOPregs->GAFR2 |= 3 << 28;
}
分配内存的代码如下:
void InitMem()
{
BOOL RetValue = TRUE;
v_pMEMreg = (MEMreg *)VirtualAlloc(0, sizeof (MEMreg), MEM_COMMIT, PAGE_READWRITE);
if (v_pMEMreg == NULL)
{
ERRORMSG(1,(TEXT("For MEMregs : VirtualAlloc failed!\r\n")));
RetValue = FALSE;
}
else
{
v_pMEMreg = (MEMreg *)(MEMCS2_BASE+CACHED_TO_UNCACHED_OFFSET);//0x96B00000;
}
if (!RetValue)
{
if (v_pMEMreg)
{
VirtualFree((PVOID) v_pMEMreg, 0, MEM_RELEASE);
}
v_pMEMreg = NULL;
}
}
小弟以前做2440的时候,就是这样把GPIO配置成功的啊,怎么270就没反应呢?