Mit dem IAR Embedded Workbench (aktuelle Vollversion 1.26 mit Dongle, Handbüchern usw.) habe ich einige Probleme wie das manchmal noch 2 kB an Daten verwendet werden können und manchmal nicht einmal 200 B; und bei einer Funktion habe ich das Phänomen, das wenn ich einige überflüssige (weil nicht verwendete) Wertzuweisungen auskommentiere, dies zu einem Absturz führt. Das Löschen vom Release-Verzeichnis vor jedem Compilieren hilft auch kaum weiter, so das ich etwas besseres für MSP430 F149 suche. Kann mir jemand etwas besseres empfehlen oder zumindest mal kurz schreiben was für Erfahrungen es mit Alternativen wie GCC Toolchain gibt?
Ich benutze MSP430GCC/Ultraedit und C-Spy zum flashen und bin eigentlich zufrieden damit...
Hallo, ich benutze seit ungefähr einem Jahr den angesprochenen C-Compiler von der Firma IAR, "IAR Embedded Workbench". Die geschilderten Fehler traten bei mir in dieser langen Zeit noch nicht auf. Wenn bei der Aktivierung des Dongle alles richtig verlaufen ist und die Einstellungen unter "Project" -> "Options..." richtig sind, dürfte es eigentlich keine nennenswerten Probleme geben. Einen besseren C-Compiler zu finden, der den gleichen Funktionsumpfang hat dürfte sehr schwierig sein. Bis dann Jens www.SynaSys.de
Zur Erläuterung: ich arbeite an einem alten Projekt weiter, von dem ich alle Optionen übernommen habe (bis auf die Pfade, die ich anpassen musste). Konkret ist das Problem mit dem Absturz folgender Code in einer Switch-Anweisung: case 4: newsample = ADC12MEM1; goto CCommon; case 5: newsample = ADC12MEM2; goto CCommon; case 7: newsample = ADC12MEM4; goto CCommon; case 8: newsample = ADC12MEM5; goto CCommon; case 10: newsample = ADC12MEM7; goto CCommon; case 11: newsample = ADC12MEM8; goto CCommon; case 13: newsample = ADC12MEM10; goto CCommon; case 14: newsample = ADC12MEM11; CCommon: break; Die Variable newsample wird anschließend nicht verwendet, so das deshalb dieser Code durch den folgenden ersetzt wurde, in dem die goto-Anweisung durch break ersetzt ("ingelined") wurde: case 4: break; case 5: break; case 7: case 7: break; case 8: break; case 10: break; case 11: break; case 13: break; case 14: break; Obwohl sich dadurch außer der Codegröße nichts ändern sollte stürzt der Code jedoch reproduzierbar ab und das anscheinend schon bei der ersten Ausführung. Dazu kommt noch das CSpy manchmal nicht will; zu ca. 10% kommt meist "Target not found" und manchmal hilft dann nur ein Reset (des MC). Ausserdem ist es so, dass das >>2, das ich zum schnellen Teilen durch 4 verwende, manchmal korrekt ausgeführt wird und manchmal (bzw. nur an manchen Stellen im Code, auch wenn immer gleiche Datentypen verwendet werden) nicht. Sieht so aus, als müsste ich auf mspgcc umsteigen. Gibt es hier Interessenten für eine IAR Embedded Workbench Vollversion mit Dongle, Update (auf Vers. 1.26)?
Ich glaube kaum, daß Dir ein anderer Compiler die Arbeit abnehmen kann, die Stelle zu suchen, wo der Fehler sitzt. Aus meiner Erfahrung liegen Abstürze selten an dem Code, den man neu hinzugefügt hat und als den Schuldigen vermutet. Sondern es sind die Routinen, die man als absolut bombensicher einstuft und als letzte verdächtigt. Wenn Du allerdings vermutest, daß wirklich der Compiler den Mist baut, dann schau doch einfach im erzeugten Assemblerlisting nach, ob der Code stimmt. Peter
Hallo, ich glaube an dieser Stelle währe eine kleine Einführung in C erforderlich. Also die "switch case"-Anweisung in Verbindung mit einer "goto"-Anweisung einfach unverzeilich. Zum ersten generell in C ohne irgendwelche Sprünge arbeiten, C ist eine Hochsprache die im gegensatz zu ASM ohne "goto" auskommt !!! Zum zweiten, so sieht die "switch case"-Anweisung richtig aus: switch (value) { case 1: /* ... tue etwas ...*/ break; case 2: /* ... tue etwas ...*/ break; /*...*/ default: /* ... tue etwas ...*/ break; } Ohne Dir nahe zuteten, wenn der gesamte Quellcode so aussieht, dann wirst Du keinen richtigen C-Compiler für Deine Zwecke finden. Im Internet befinden sich sehr viele gute Scripte zum Thema C (z.B. unter www.netzmafia.de). Wieviel soll die IAR Embedded Workbench Vollversion mit Dongle, Update (auf Vers. 1.26) kosten (Info bitte per Email)? Bis dann Jens www.SynaSys.com
Also der Code stammt nicht von mir und das goto wollte ich ja rausnehmen. Mit dem goto läuft es problemlos, wenn ich es rausnehme (mit den ungenutzten cases) hängt der MC, wenn ich es wieder reinsetze läuft es wieder usw.. Das ist also reproduzierbar und definitiv dieser Code (die beiden obigen Abschnitte), denn sonst habe ich nichts geändert! Das habe ich auch an mehreren Tagen (u. reboots) ausprobiert und immer reproduzieren können. In C programmiere ich seit über 10 Jahren und mit dem gcc habe ich u. a. Kernel-Space-Gerätetreiber geschrieben, so das das nicht das Problem ist. Als Preis dachte ich an ungefähr 1000 EUR, aber das ist noch kein Angebot, denn erstmal muss ich sehen ob das Projekt nach Portierung auf MSP430GCC richtig funktioniert und ob mein Chef das freigibt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.