Le 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.

Le 27/07/2007 à 06:26
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 ).
Le 27/07/2007 à 07:53
D'habitude pour un buffer lu en hard on désactive le cache non? Spas possible pour la gepette?
Le 27/07/2007 à 14:15
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
Le 27/07/2007 à 14:47
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
Le 27/07/2007 à 15:43
oui c'est ça smile

dis,il marche pareil pour tous les ARM, le mmu de cet ARM?
Le 27/07/2007 à 15:55
je suppose pour les arm9 oui apres sauf cas d instruction suplementaire je pense que cela doit etre generique
Le 27/07/2007 à 16:26
il faut que je cherche dans les docs, en fait smile
Le 27/07/2007 à 17:20
ok j essaye de suivre lol
avatarvive la gp32 !!!!
Le 27/07/2007 à 18:37
lol rien je suppose qu il a pas tout suivit s est tout
Le 27/07/2007 à 20:46
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
Le 27/07/2007 à 21:02
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