이것은 내 첫 번째 질문입니다 :).vxWorks 6.8에서 가상 메모리로 실제 매핑
지금 성공하지 Vx 웍스 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%x\n",errnoGet());
}
if(vmMap(NULL,VIRTUAL_ADDR,GPIO_BASE_VIRTUAL_ADDR,(page_size*2))== ERROR)
{
printf("Error mapping memory errno = 0x%x%\n",errnoGet());
}
어떤 도움은 매우, 감사
모세 감사 할 것이다.
아직 알아 냈습니까? 일부 vxWorks 함수는 실패 할 때 errno를 설정하지 않으므로 errno가 실제로 vmMap에 있는지 확인하기 전에 함수를 호출하기 전에 0으로 설정할 수 있습니다. –
안녕, 그래 나는 BSP \t {/ * MAP GPIO */ 에서의 sysLib.c 파일 (.... 0x160 ... 그리고 0x40E) 같은 방식으로 모두 주소를, 그것을 해결 \t (VIRT_ADDR) 0x40E00000/* 가상 어드레스 */ \t (PHYS_ADDR) 0x40E00000/물리 어드레스 * */ \t가 0x1000, \t \t \t \t \t \t/* 길이 후 초기 상태 */ \t VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE, \t VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT \t}, 필요한 "할당 크기"와 및 가상하고, 이 필요한 오프셋 (offset) 인 것처럼 "평면"으로 요청 된 주소로 포인터를 사용했다. –