Bien vu, les volatiles c'est toujours le mot clé qu'on oublie...
D'ailleurs c'est marrant, c'est le genre de problème qu'on ne
rencontre jamais sur PC, pourtant, il me semble que préciser volatile
est souvent nécessaire lorsque c'est une variable modifiée dans une
interruption.

Je commite ça à l'occaz.

Olivier

On Sun, Jan 21, 2007 at 01:14:57PM +0100, christoph wrote:
> 
> 
> Salut
> 
> j'ai eu un probleme avec une UART qui fsait planter un printf.
> en gros, quand le buffer etait plein, freeze du uart0_send.
> 
> j'ai mis un temps certain, voir un certain temps, que cela ne se 
> produisait que quand j'activais le niveau d'optimisation -O3.
> 
> Ensuite j'ai cherche en vain la cause en essayant de debugger avec le 
> JTAG, mais insight est assez imbittable, et ne fait pas trop ce qu'on 
> lui demande.
> 
> J'ai fini par trouver la cause du probleme :
> 
> http://cvs.droids-corp.org/cgi-bin/viewcvs.cgi/aversive/modules/comm/uart/uart.c?r1=1.33.2.2&r2=1.33.2.3&pathrev=b_tof
> 
> quelques volatiles qui manquaient.
> 
> 
> j'ai aussi commite un nouveau programme de test :
> 
> http://cvs.droids-corp.org/cgi-bin/viewcvs.cgi/aversive/modules/comm/uart/test/main.c?revision=1.15.8.3&view=markup&pathrev=b_tof
> 
> 
> avec l'uart non corrigee, cela sortait :
> "
> x0x1x2x3x4x5x6x7x8x9
> Uart
> "
> puis plantait, car le buffer de 4 cars etait arrivee a saturation et la 
> boucle d'attente avait ete optimisee par GCC en while(1).
> 
> 
> 
> Il serait judicieux de commiter uart.c et test/main.c dans le main, non ?
> 
> 
> a++
> 
> tof, debugger de la mort
> 
> 
> _______________________________________________
> Avr-list mailing list
> Avr-list@droids-corp.org
> CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive
> WIKI : http://wiki.droids-corp.org/index.php/Aversive
> DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/
> BUGZILLA : http://bugzilla.droids-corp.org
> COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog

_______________________________________________
Avr-list mailing list
Avr-list@droids-corp.org
CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive
WIKI : http://wiki.droids-corp.org/index.php/Aversive
DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/
BUGZILLA : http://bugzilla.droids-corp.org
COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog

Répondre à