DMA MEM<->MEM Enoncé polling novembre 2014 J.Callot L.Piedfort
objectif Utiliser un canal DMA pour faire un transfert d’une zone mémoire vers une autre zone mémoire On fera le test de fin de transfert sur DMA_done novembre 2014 J.Callot L.Piedfort
Travail à effectuer Etudier le chapitre DMA du user manual (&22) Utiliser le canal 4 du DMA pour faire le transfert d’un texte: const uint8_t SourceData[] = {"Hello World\r\n"}; vers l’adresse en SRAM: 0x20000800 On vérifiera le transfert dans la fenêtre mémoire du debugger Envoyer le contenu de la zone destination sur un HyperTerminal en utilisant les fonctions écrites dans le TP serial en polling novembre 2014 J.Callot L.Piedfort
Remarque Il faut bien comprendre la notion de minor loop et de major loop Minor loop: ce qui peut être fait sans besoin de réarmer le transfert Dans le cas d’un transfert mémoire à mémoire, on peut utiliser minor loop de la taille du transfert car la mémoire est toujours prête Dans le cas d’un périphérique la minor loop doit être de la taille d’un transfert élémentaire (ex 1 octet pour le sérialiseur) car il faudra attendre entre 2 transferts que le périphérique soit prêt novembre 2014 J.Callot L.Piedfort
Remarque Pour éviter les problèmes rencontrés avec le compilateur pour les registres de type écriture d’un 1 pour faire le « clear » des possibilités hardware on été crées à cet effet. C’est à travers des registres spécifiques que l’on effectuera des« set » et des « clear » de certains registres. novembre 2014 J.Callot L.Piedfort
Accès au TCD On peut accéder à 2 bits particuliers d’un TCD a travers des registres spéciaux: SSBR permet de positionner le bit de start d’un TCD CDSBR permet de resetter le bit de done d’un TCD novembre 2014 J.Callot L.Piedfort
Principaux points à étudier pour le TP Rechercher l’adresse du TCD du canal 4 du DMA Le TCD est à resetter au démarrage, puis à initialiser Resetter la zone mémoire destination avant de lancer le transfert novembre 2014 J.Callot L.Piedfort