Ceci est ma première question ici :).vxWorks 6.8 mappage physique à la mémoire virtuelle
J'essaie de tout maintenant la carte mémoire physique à la mémoire virtuelle dans vxWorks 6.8 sans succès, Je suis en train d'utiliser la fonction « VMMap », mais en quelque sorte, il ne cesse de revenir avec:
errno = 0x30065 S_taskLib_NAME_NOT_FOUND .
mon code est:
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());
}
Toute aide sera très apprécier, grâce ,
Moshe.
Avez-vous déjà compris? Certaines fonctions de vxWorks ne définissent pas d'erreur lorsqu'elles échouent, vous pouvez donc le mettre à 0 avant d'appeler la fonction pour vérifier si l'errno provient vraiment de vmMap. –
Salut, oui je l'ai résolu, de la même façon pour les deux adresses (0x160 ... et 0x40E ....) dans le fichier syslib.c dans le BSP \t {/ * MAP GPIO */ \t (VIRT_ADDR) 0x40E00000,/* adresse virtuelle */ \t (PHYS_ADDR) 0x40E00000,/* adresse physique */ \t 0x1000, \t \t \t \t \t \t/* longueur, puis état initial: */ \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}, et virtuel avec la « taille d'allocation » nécessaire et, utilisé le pointeur à l'adresse demandée comme « plat », tout comme est avec les compensations nécessaires. –