Hi,
inzwischen habe ich das Problem dadurch "umgangen", daß ich nun
tatsächlich einen ersten Wurf gebaut habe, um new() minimal zu
implementieren.
Dazu habe ich einen kleinen Teil aus der core_cm3.c und dem Code für
_sbrk() verwendet (siehe Anhang: mini_cpp.cpp).
Das Linken damit klappt. Ein Code wie:
1 | int main(void)
|
2 | {
|
3 | int* g1 = new int;
|
4 | *g1 = 34;
|
5 |
|
6 | int* g2 = new int;
|
7 | *g2 = 898;
|
8 | [..]
|
läßt sich damit korrekt compilieren und ausführen (im Debugger geprüft).
Weitere Tests müssen natürlich folgen.
Irritierend:
1. In Eclipse Galileo läßt sich mit dem Debugger arm-none-eabi-gdb.exe
(Version 4.5.1) mit dem JLink EDU nicht arbeiten (Fehlermeldungen), nach
dem Übergang auf die CodeSourcery Version 4.4.1 klappte das durchaus
(bei absolut gleichem Setup des HW Debugging).
2. Wenn ich den arm-none-eabi-g++/gcc zum Linken einsetze (Version
4.4.1) , klappt das Linken, wie beschrieben. Ein Linken mit
arm-none-eabi-ld klappt auf spektakuäre Weise nicht : Der Linker
erzeugt keine elf-Datei, liefert auch keinen Fehler- er macht einfach
nichts.. (??). Es sieht dann so aus - der Fehler wird erst im zweiten
Befehl offenbar:
1 | make all
|
2 | ..linking
|
3 | arm-none-eabi-ld -v -o elf/main.elf obj/main.o obj/system_stm32f10x.o obj/startup_stm32f10x.o obj/stm32f10x_rcc.o obj/stm32f10x_gpio.o obj/mini_cpp.o -TSTM32F10x_512k_64.ld -nostartfiles
|
4 | GNU ld (Sourcery G++ Lite 2010q1-188) 2.19.51.20090709
|
5 | arm-none-eabi-objdump -S elf/main.elf > elf/main.lst
|
6 | c:\Entwicklung\CodeSourcery\bin\arm-none-eabi-objdump.exe: 'elf/main.elf': No such file
|
7 | make: *** [target] Error
|
Grüße
schnack