Bonjour à tous et merci à ceux qui prendront le temps de lire ce post.
Je travaille actuellemnt sur un projet Linux embarqué dont la cible est un MPC8313. La version du noyau est 2.6.21.
Dans le cadre de ce projet, je doit mettre en place le DMA dans un driver de gestion du local bus.
Fonctionnement :
Après réception d'une interruption sur IRQ3, je lance un transfert de données depuis le local bus vers un espace alloué dans la RAM ( malloc avec GFP_DMA).
réception d'une IT toute les 15 à 30 ms, et transfert de 20 Koctets.
Le buffer utilisé doit être en accès unique pendant le transfert, utilisation d'une liste circulaire de buffer.
L'adresse source est fixe et doit être auto-incrémentée, l'adresse destination variable et auto-incrémentée.
Le DMA doit être réservé au driver pendant toute la durée de fonctionnement du système.
Le transfert doit géré par le driver (configuration, lancement et traitement apres reception de l'interruption DMA).
J'ai essayé de l'utilisé via la configuration des registres du micro.
Registres DMAMR et DMASR mais le transfert ne se lance jamais.
Je n'ai pas non plus vraiment saisi le mode de configuration du DMA via l'API fournie dans les sources linux, dma-mapping.
Quelqu'un aurait des informations sur la mise en place du DMA, un site plutot précis sur son utilisation.
Merci par avance pour votre aide.
Partager