WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La technique de transfert DMA

( Télécharger le fichier original )
par Imen Nasr
Ecole supérieure des communications de Tunis - ingénieur en télécommunication 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3.1.3. La fonction WaitForDMADone

Cette fonction a pour objectif de synchroniser le transfert DMA et le traitement au niveau du processeur.

Extern_Buff

Intern_Buff1

Intern_Buff2

Output_Buf

Traitement

Ci-dessous est le code source de cette fonction :

Il arrive parfois que le processeur termine le traitement avec que la procédure d'échange DMA n'arrive à sa fin. Dans ce cas il faut occuper le processeur à vérifier si le transfert est terminé et ce en examinant le troisième bit du registre MDMA_D0_IRQ_STATUS. Il est mis à 0 si le canal DMA est en repos et à 1 sinon.

3.2. L'implémentation de la logique Ping Pong

Le but est de mettre en place un traitement de test qui emploie la technique Ping Pong.

8

Selon le schéma précédent, le transfert DMA se fait à partir d'une source externe « Extern_Buf » vers deux buffers internes « Intern_Buf1 » et « Intern_Buf2 ». A chaque fois que l'un des buffers est rempli, le processeur utilise les données qui y sont stockées pour effectuer son traitement et envoyer la sortie vers autre buffer externe. En appliquant la logique Ping Pong, le canal DMA transfère une partie des données vers le premier buffer, ces dernières sont traitées ensuite par le processeur. Parallèlement à ce traitement, le canal DMA effectue un deuxième transfert de données vers le deuxième buffer qui seront exploitées par le processeur. Cette procédure se répète jusqu'à ce que le transfert total soit terminé.

Afin de ne pas tomber dans le cas où le processeur ait terminé sont traitement de l'un des buffers et demande l'accès vers l'autre avant que le transfert vers celui-ci ne soit achevé on utilise la fonction WaitForDMADone pour assurer la synchronisation.

Ci-dessous le code source complet de l'implémentation du transfert DMA avec la technique Ping Pong.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand