La recommandation d’ARM et Altera est d’insérer une instruction de barrière mémoire avant d’envoyer des instructions DMASEV au processeur afin d’éviter que le contrôleur DMA signale une interruption avant la fin des transferts AXI.
Le pilote DMA HWlibs alt_dma.c est mis à jour avec une instruction de barrière mémoire ajoutée avant l’instruction DMASEV, comme indiqué ci-dessous.
si (send_evt)
{
si (état == ALT_E_SUCCESS)
{
statut = alt_dma_program_DMAWMB(programme) ;
}
si (état == ALT_E_SUCCESS)
{
d portables (« DMA[M->M] : Ajout d’événement ...\n » ;
statut = alt_dma_program_DMASEV (programme, evt) ;
}
}
La version mise à jour du pilote DMA HWlibs devrait être disponible dans la prochaine version de SoC EDS.