Hallo, ich muss dieses Wochenende noch eine Schaltung mit dem TI LaunchPad aufbauen, und habe ein Problem bei der Programmierung. Ich habe funktionsfähigen C-Code kompiliert mit MSP-GCC in CodeBlocks mit -Os -mmcu=msp430g2553 -o DeadMan.c und msp430-objcopy -O ihex C:\Users\gradf_000\Desktop\DeadMan\DeadMan\obj\Release\DeadMan.o C:\Users\gradf_000\Desktop\DeadMan\DeadMan\obj\Release\DeadMan.hex als PostBuildStep. Der FET-Programmierer von Elprotronic meldet mit der erzeugten .hex dann "Data outside flash space". Wo liegt mein Fehler? Danke im Voraus, Felix
Gast
#3740784
Felix G. schrieb: > Der FET-Programmierer von Elprotronic meldet mit der erzeugten .hex dann > "Data outside flash space". Wo liegt mein Fehler? Der Fehler sagt, dass du versuchst Adressen anzusprechen die oberhalb deines Adressraum liegen. Wo dein Fehler kann ich naturgemäß nicht sagen, da dazu die Informationen nicht ausreichen. Es könnte z. B. sein, dass dein Programm (und damit dein Zielcode) zu lang geworden ist.
Gast
#3740801
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
und die .hex :
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Gast
#3740813
Sollte es nicht msp430-objcopy -O ihex C:\Users\gradf_000\Desktop\DeadMan\DeadMan\obj\Release\DeadMan.c ... heißen, wenn du das binary komischerweise in die Datei "DeadMan.c" schreibst.
Gast
#3740841
Leider nichts. Der Hex-Code bleibt gleich. Außerdem habe ich bemerkt, dass eine .exe erzeugt wurde (darin befindet sich kein hex-code).
Gast
#3740847
Vielleicht objcopy auf diese exe loslassen?
Felix schrieb: > #include <C:\Program Files\mspGCC\msp430\include\msp430g2553.h> Bei einem ordnungsgemäß installierten Compiler sollte der #include-Pfad korrekt gesetzt sein, so daß hier keine absolute Pfadangabe nötig ist. > #include <msp430g2553.h>
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Das liegt tatsächlich außerhalb des Flash-Adressraums. Beim 'G2553 liegt das Flash von 0xC000 - 0xFFFF, die obersten 64 Bytes sind die Interruptvektoren (0xFFC0 - 0xFFFF). Dieses Hex-File hier aber schreibt in der ersten Zeile 10 Bytes an die Adresse 0x0000, und mit der zweiten bis vierten Zeile 56 Bytes wieder an Adresse 0x0000.
Gast
#3740897
Okay, Pfad relativ include und lib ordner sind definiert. Aber immer noch die gleiche hex. Ich bin am verzweifeln....
Gast
#3740911
Hmmm, muss man dem Linker nicht auch den Typ mitteilen? Er setzt schließlich die Adressen ein. Fehlt nicht auch die Runtimelib? Das Ganze sieht im Ergebnis unfertig aus.
Gast
#3740937
Kannst du denn mit msp430-objdump -dSz xxx.x in einer Shell die einzelnen Dateien anschauen. Wenn ich bei mir mit avr-gcc aus
1 | |
2 | |
3 | |
4 | |
ein main.o und main.elf erzeuge, bekomme ich mit avr-objdump -dSz main.o
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
Zeugs, dass an Adresse 0 beginnt und nur das return 0 beinhaltet. Mit avr-objdump -dSz main.elf folgt
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
die Information, dass Startup- und Interruptcode in der main.elf stecken.
Gast
#3741014
Welche Optionen hast Du deinem Compiler und linker übergeben? Ich vermute, dass der Fehler da liegt.
Gast
#3741049
1 | |
2 | |
Was mich halt wundert, du schickst die Ausgabe (-o) nach DeadMan.c. Kannst du denn die DeadMan.o und DeadMan.exe hier hochladen? Der Versuch
1 | |
2 | |
3 | |
4 | |
zeigt auf, das gcc die Source-Datei überschreibt.
Gast
#3741489
>Fehlt nicht auch die Runtimelib? Das Ganze sieht im Ergebnis unfertig >aus. Ist ja auch kein Wunder, wenn er - vermutlich - gar nicht linkt (ausweislich des ersten Postings) und gleich das .o dem objcopy vorwirft... Da aber seine Angaben nur fragmentarisch sind... Und bleibt weg mit avr, das verwirrt den OP nur. Sinngemäss passt der Vorschlag von Marco S. aber.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.