Gast
#364291
Hallo, ich habe ein kleines Programm für den AT90S2313 geschrieben mit dem GCC v3.4.1, der Bestandteil von WinAVR 20040720 ist. Mir ist durchaus klar, dass es nicht unbedingt sinnvoll ist, für so einen kleinen µC gleich einen C-Compiler anzuwerfen, aber es ging so wesentlich schneller und das war mir wichtig. Jedenfalls ist mir dabei aufgefallen, dass der GCC für diesen µC falschen Code erzeugt (siehe Anhang). Der Befehl im roten Kasten sowie der nachfolgende Befehl dienen zum initialisieren des Stackpointers. Problem ist nur, dass der Stackpointer des 90S2313 nur aus einem Register besteht ($3D), Register $3E ist "reserved" und sollte lt. Datenblatt S. 84 niemals beschrieben werden ("Reserved I/O memory addresses should never be written."). Die Konsequenz aus diesem fehlerhaften Code ist, dass der Simulator von VMLAB z. B. an dieser Stelle mit einer Fehlermeldung einfach abbricht, so wie es eigentlich sein sollte. Weiter scheint AVR Studio dies komplett zu ignorieren, es meckert an keiner Stelle. Ich wollte das hier nur mal kurz erwähnen. Der fehlerhafte Code funktioniert in meiner Anwendung zwar problemlos, bin jedoch trotzdem auf einen anderen Compiler umgestiegen, der das richtig macht. Gruß Thorsten
