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