Accueil » Ressources » Blog » Accès Mémoire Dynamique

Accès Mémoire Dynamique

Introduction

DMA, ou Accès Mémoire Dynamique, est une fonctionnalité présente sur certains microcontrôleurs permettant le déplacement de données de manière indépendante du processeur central (CPU). Cela libère le CPU qui peut ainsi effectuer d’autres tâches, ce qui augmente la quantité totale de travail que le système peut accomplir simultanément.

Le DMA peut déplacer des données d’une région mémoire à une autre, de la mémoire à un périphérique, ou d’un périphérique à la mémoire.

DMA mémoire vers périphérique

Un exemple de copie de données de la mémoire vers un périphérique est le cas où une grande quantité de données doit être transmise via un périphérique de communication (tel qu’un UART). Sans DMA, le CPU devrait soit se « bloquer » pendant la transmission des données (ce qui se ralentirait généralement la transmission en fonction de la vitesse du protocole de communication), soit utiliser des interruptions pour gérer la transmission (ce qui ajouterait des traitements supplémentaires liés à la commutation de contexte d’interruption).

Cet exemple ne prend en compte que le cas où il n’y a qu’une seule transmission de données qui doit se produire simultanément. En règle générale, le DMA peut traiter plusieurs flux de données en même temps (selon l’implémentation particulière du microcontrôleur).

DMA du périphérique vers la mémoire

Le DMA du périphérique vers la mémoire est similaire : les données peuvent être lues à partir d’un périphérique de communication (tel qu’un UART) et copiées dans une mémoire tampon pendant que le CPU est occupé à effectuer d’autres tâches. En plus de libérer le CPU pour effectuer d’autres travaux, cela garantit également que les données de communication ne sont pas perdues parce que le CPU était occupé par une autre tâche et n’était pas dans une section de code prête à traiter les données reçues.

Encore une fois, cela est particulièrement utile lorsque plusieurs dispositifs peuvent communiquer simultanément (pensez à 5 ou 10!). Le DMA peut être utilisé pour mettre en mémoire tampon chacune de leurs communications de manière parfaite et sans possibilité de perte de données, jusqu’à ce que le CPU exécute une section de code prête à traiter les données reçues. Alors que certains microcontrôleurs incluent un petit tampon de réception dans le périphérique de communication, avec le DMA, le tampon de réception peut être rendu arbitrairement grand, limité uniquement par la RAM disponible.

Un autre exemple du DMA du périphérique vers la mémoire peut être l’échantillonnage de signaux analogiques via un convertisseur analogique-numérique (ADC). Dans cet exemple, un minuteur est configuré pour déclencher l’échantillonnage ADC sur un ou plusieurs canaux à des intervalles définis. Au fur et à mesure que l’échantillonnage se produit, les lectures sont automatiquement transférées vers des tampons de mémoire via le DMA. Un flux DMA distinct peut ensuite copier ces tampons vers une autre zone mémoire pour que le CPU exécute des algorithmes de traitement du signal numérique (DSP). Enfin, un autre flux DMA peut être utilisé pour transférer le signal traité vers le convertisseur numérique-analogique (DAC) du microcontrôleur (mémoire-vers-périphérique). Le CPU est alors libre de consacrer tout son temps à l’exécution d’algorithmes DSP intensifs, sans perdre de temps à gérer l’ADC, la copie de mémoire ou le DAC.

Pour la réception de données, certains microcontrôleurs prennent en charge des tampons DMA circulaires, tandis que d’autres prennent en charge des tampons ping-pong, où la réception de données alterne entre deux sections de mémoire (l’auteur de cet article préfère les tampons circulaires, les considérant comme plus efficaces et plus faciles à coder).

Conclusion

Pour un programmeur inexpérimenté, le DMA peut sembler intimidant, mais une fois que vous avez investi du temps pour l’utiliser une fois, vous disposez d’un modèle de code qui peut être facilement utilisé dans d’autres projets et qui peut considérablement améliorer la qualité de votre projet et/ou la complexité du projet que votre microcontrôleur peut gérer.

Les modèles de simulation de Proteus VSM admettent des opérations DMA avec le monde réel. Ceci vous permet d’écrire et de teste un firmware DMA directement dans la simulation.

Voir également notre page consacrée à la Simulation VSM pour microcontrôleurs : « À propos de la simulation pour micro ».


Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

Retour en haut