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.

info suplementaire par rapoort a la configue du firmware d origine version 157. l eeprom enfin sa zone memoire tongue (0x00000-0xfffff) elle est configure avec le cache active et le write back desactive. la zone memoire principale (0x0c000000-0x0c6fffff) on le cache et le writeback d active donc attention a cette zone mémoire. La zone systeme comprise entre (0x0c700000-0x0c7fffff) a le cache et le writeback de desactive enfin et pour finir la zone memoire pour les IO (0x14000000-0xe9ffffff) a le cache et le writeback de non active.

je ne sais pas si la configuration a changer suivant les nouveaux bios. Mais dans le cas d une gestion memoire custom une fois declare vaux bank memoire a savoir le 6 et le 7 qui sont specifique a la ram sans attribu, rien n empeche de configure certaine zone memoire pour des taches specifiques avec des attribues specifique afin d evite certain bug. sansung avais meme fait une update de sa configuration memoire avec la mmu dans ce sens. ( dispot dans un autre post ).
D'habitude pour un buffer lu en hard on désactive le cache non? Spas possible pour la gepette?
si mais faut regler ta zone memoire avec la mmu pour etre sur du resultat

#define CB (3<<2) //cache_on, write_back
#define CNB (2<<2) //cache_on, write_through
#define NCB (1<<2) //cache_off,WR_BUF on
#define NCNB (0<<2) //cache_off,WR_BUF off
#define AP_RW (0xff<<4) //supervisor=RW, user=RW // RW => read write
#define AP_RO (0xaa<<4) //supervisor=RW, user=RO // RO => read only

voicit les attribut de la mmu pour definir ta zone memoire tongue tu as le choix. et pour te repondre #define NCNB (0<<2) //cache_off,WR_BUF off ou #define NCB (1<<2) //cache_off,WR_BUF on. apres le pk du comment faut que je potace une peut tongue
pour info a ce qui ne save pas trop le write buffer est une zone memoire entre la memoire centrale et le cache servant de tampon en ecriture mais implique une zone a controler en cas de cache miss. Cache indique que les donnée passe par le cache avant d etre traite. Write back s est une update du cache jusqu a temps que toute les donnée soit en cache pour execute l instruction. write-throught faire l update de la memoire centrale ainsi que du cache en meme temps.

Je pense que s est les bonne definition mais si vous voyez que j ais fais une erreur ou que vous voulez affiné merci de poste il est vrai que cette aspet n est pas vraiment evident smile
oui c'est ça smile

dis,il marche pareil pour tous les ARM, le mmu de cet ARM?
je suppose pour les arm9 oui apres sauf cas d instruction suplementaire je pense que cela doit etre generique
il faut que je cherche dans les docs, en fait smile
ok j essaye de suivre lol
avatarvive la gp32 !!!!
lol rien je suppose qu il a pas tout suivit s est tout
progfr (./1) :
1°) instruction asm LDM ( load multiple) dans le cas d un loading de 2 variables qui ne sont pas dans zone cached(...)
Mouarf ! La GP32 pourrait prendre la succession de la Jaguar grin
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
bas s est pas la mort faut juste coller un dummy dans le pire des cas au faire attention a sa gestion memoire. mais il me semble que la jaguar a encore de l avance niveau bug hardware tongue gni