Hallo Leute, ich habe seit einer Woche ein CC430F6137 Development Board von TI da ich mir vorgenommen habe etwas mit 6loWPAN rumzuspielen. Vorher wollte ich aber erstmal die Basic LED-Blink Beispiele durchmachen da ich noch nie mit dieser Plattform gearbeitet habe. Also erstmal mspgcc für Linux neu compiliert, was soweit auch gut lief. Eclipse hat es auch gemocht, so dass ich relativ bald das erste example für meinen CC430F6137 erstellen konnte. Das flashen mit mspdebug lief auch problemlos, mit folgendem output: Erasing... Programming... Writing 156 bytes to 8000... Writing 32 bytes to ff80... Laufen tut der Code aber nur wenn ich vorher noch per Hand folgende Befehle in mspdebug eingebe: mw 0xfffe 00 mw 0xffff 80 reset Ich habe diese Hex-Werte aus einer Binary welche mit TI's IDE erstellt wurde. Aus der Memory Map konnte ich herauslesen dass es sich bei den Adressen 0xfffe und 0xffff um den Reset-Vektor handelt. Ich verstehe jedoch nicht warum das per Hand machen muss wenn ich meine Quellen mit mspgcc übersetzte. Denn TI's Compiler macht dies automatisch wenn ich seine Binaries auf den Chip flashe. Wäre schön wenn jemand von euch Licht ins Dunkel bringen kann, ich bin jedenfalls überfragt. Beste Grüße, Valentin
Mit msp430 hab ich noch nie gearbeitet... Nach deinen Infos steht ab 0xff80 die Vektortabelle, und die wird offenbar nicht richtig initialisiert. Du must nur noch rausfinden, warum ;-) Wo kommt die Vektortabelle her (binutils, startupcode?) Wie kommt der Programmanfang dahin? Etc. Fehlende/falsche Optionen? msp430-ld verwendet anstatt msp430-gcc zum linken? Brauch man eigenes ld-Script oder spec-File...?
Könnte es sein, daß Du eine Debug-Version erzeugt hast, die nur unter Kontrolle des per JTAG steuernden Debugger lauffähig ist?
Ob Debug oder Release macht beim mspgcc eigentlich keinen Unterschied. Höchstens, wenn man unterschiedliche Compiler-Settings hat. Vom Windows mspgcc erzeugte Debug Binaries laufen auch stand-alone. Wenn der Vektor nicht passt, hast du wahrscheinlich die falsche -mmcu dem Compiler/Linker mitgegeben, oder aber der MSP430 wird gar nicht vom mspgcc unterstützt.
Hallo Leute, schonmal vielen Dank für die Antworten :-) @Johann: Die Vektortabelle wird über ein ld-Skript eingepflegt. Ich habe mir mal die von mspgcc verwendete und die von TI-Mitgelieferte angeschaut. Weiß aber nicht so recht wie ich die Unterschiede zu deuten habe um den Fehler zu beheben. Ich habe sie jedenfalls mal beide angehängt, memory.x ist vom mspgcc und lnk_cc430f637.x von TI. Mir ist jedoch eins noch aufgefallen. Die TI-Binary schreibt nur den Reset-Vektor in die Tabelle sonst nix, während die mspgcc Binary 32 Bytes einträgt. @Christian: Meine CC430F6137 MCU soll laut ChangeLog von der neuen mspgcc Version unterstützt werden. Jedenfalls meckert mspgcc nicht wenn ich ihm das -mmcu=cc430f6137 Flag mitgebe. Und ja ich erstelle im Moment noch Debug-Binaries. Beste Grüße, Valentin
Hallo Leute, okay nach einem kurzen Mailwechsel auf der mspgcc Mailing-List habe ich heraus finden können dass das Problem beim linker lag. Diesem musste ich auch explizit das "-mmcu=cc430f6137" flag mitgeben damit dieser die volle Vektortabelle erstellt. Nun funktioniert alles wie gewollt. Beste Grüße, Valentin
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.