vxWorks 6.8将物理内存映射到虚拟内存

这是我的第一个问题:)。 我一直在尝试将物理内存映射到vxWorks 6.8中的虚拟内存,但没有成功, 我正在尝试使用“vmMap”函数但不知何故它保持返回: errno = 0x30065 S_taskLib_NAME_NOT_FOUND。 我的代码是:
int page_size=0;
PHYS_ADDR GPIO_BASE_VIRTUAL_ADDR = 0x40E00000;
VIRT_ADDR VIRTUAL_ADDR=0;

page_size =vmPageSizeGet();
if((VIRTUAL_ADDR = (VIRT_ADDR)memalign(page_size,page_size*2))==NULL)// allocate 2 pages 
{
    printf("error in memalign() errno = 0x%xn",errnoGet());
}

if(vmMap(NULL,VIRTUAL_ADDR,GPIO_BASE_VIRTUAL_ADDR,(page_size*2))== ERROR )
{
    printf("Error mapping memory errno = 0x%x%n",errnoGet());
}
任何帮助将非常感激, 谢谢, 卡察夫。     
已邀请:
我看到你很久以前就已经解决了这个问题,但我想我会留下一些面包屑,因为其他任何人都可能会在昏暗的地方绊倒这种方式。遥远的未来.. 除非您正在进行RTP,否则您的MMU很可能甚至不会翻译地址。即,如果在物理地址空间中出现了某些内容,例如0x7fc00400,您可以简单地将该值转换为指针并使用它。
*((short *) 0x7fc00400) = foo; // write 16 bits!
是的,现在建议(ab)以这种方式使用指针几乎是亵渎,但我要指出,如果你正在使用vxworks内核空间代码,那么你实际上是在裸机上,为什么不呢?     

要回复问题请先登录注册