Fermer2
progfrLe 27/07/2007 à 05:27
1°) instruction asm LDM ( load multiple) dans le cas d un loading de 2 variables qui ne sont pas dans zone cached, la 2eme variable ne sera charger correctement.

- solution est de faire intervenir une 3eme variable qui englobe les 2 premieres. exemple le bug "LDMIA r0,{r1,r2}" la correction "LDMIA r0,{r1,r2,r3}"
- en C le soucit est moindre car l instruction ldm est plus utilise dans le save /restore. mais verifier surtout si vos variable sont dans une zone cached surtout pour le frame buffer du lcd, pour le IIS " l audio tongue " ou encore pour vos buffer de data

2°) l usage excessif de l instruction STM/STR et de l ecriture en buffer dans une zone memoire cached. le bug ou plutot le soucit est que d utilise intencivement ces intructions ecrivent dans le buffer memoire qui est aussi utilise par le dma du lcd et du IIS. Du coup l appel du dma qui recherche les demande par le lcd ou le IIS attend et occupe le bus pour rien. ce qui fait que l on a des latence soit sur l affichage ou sur le sound( coupure ou crachat)

- utiliser ces instruction dans une zone memoire non cached car l ecriture en buffer n est pas active.
- dans le cas ou s est en zone cached essaye de limite ou de temporise ces instructions.
- sinon reconfigure par l intermediaire de la mmu cette zone memoire et desactiver le write buffer
- si dans le cas ou vous avez encore quelque soucit malgres ces quelques aides insere une instruction fantome exemple un ldm " voir plus haut tongue " pour tempere le probleme

3°) bug IIS FIFO le bug proviend du au bug en 2°) qui provoque des corruption de données

4°) il concerne le frame buffer du lcd ainsi ainsi que leur dma ( lecture, lecture/ecriture) dans une zone non-cacheable. si la zone memoire utiliser a pour attribu writeback elle se retrouve mise a jour moins rapidement ou si elle est en write- throught le dma ne pourra pas acceder au donne si les instructions STM/STR sont active car elle occuperont le cpu tout le temps.

- prendre la precaution de fournir au dma une zone memoire non-cacheable en la configurant avec la mmu.