liapunov
驱动牛犊
驱动牛犊
  • 注册日期2004-02-10
  • 最后登录2010-04-08
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1798回复:1

pxa270 在wince5.0下的应用程序直接访问物理地址

楼主#
更多 发布于:2010-04-03 11:48
小弟想在wince5.0下直接用应用程序访问物理地址,直接用VirtualAlloc函数分配800 0000对应的虚拟地址,同时也在应用程序下把gpio78配置成了ncs2,但是不管怎样,总是读不到数据,且连ncs2都打不到波形啊!不知道有没有谁做过类似的改装,给点建议吧,谢谢了!
liapunov
驱动牛犊
驱动牛犊
  • 注册日期2004-02-10
  • 最后登录2010-04-08
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-04-04 09:27
配置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就没反应呢?
游客

返回顶部