Danke erstmal.
Also:
im map-file sieht es so aus, dass ".text" auf 0x08000000 und ".data" auf
0x20000000 gemappt wird. Sollte eigentlich richtig sein.
This is a required field schrieb:
> Für CM3 muss eine Compileroption, die die Codeerzeugung steuert,
> angegeben werden -> Codesourcery gcc.pdf.
ich compile im Moment mit:
1 | O0 -std=gnu99 -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -mcpu=cortex-m3 -mthumb -g -ggdb
|
ich hab auch mal versucht "-march=arm7" dazuzuschreiben. Das verträgt
sich aber mit "-mcpu=cortex-m3 -mthumb" nicht. Ich werd mir dieses
"Codesourcery gcc.pdf" mal anschauen.
This is a required field schrieb:
> Es empfiehlt sich ein Embedded-ARM Plugin zu benutzen, z.B. von Zylin
> oder von Sourceforge.
ich habe das Plugin "GNU ARM C/C++ Development Support" installiert.
This is a required field schrieb:
> Konkret: Welchen JTAG Debugger (HW und Softw)?
> Wie initialisierst Du den?
> Wie lädst Du den Code auf Dein Board?
ich flashe über die Kommandezeile mit:
1 | openocd -f /usr/share/openocd/scripts/interface/jlink.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c init -c "reset halt" -c "flash probe 0" -c "flash write_image erase /home/daniel/workspace/simple_Test/Debug/simple_Test.hex" -c "reset run" -c exit
|
zum Debuggen starte ich OpenOCD mit:
1 | openocd -f /usr/share/openocd/scripts/interface/jlink.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg
|
Initialisierung macht eclipse mit:
1 | monitor soft_reset_halt
|
2 | monitor wait_halt
|
3 | monitor poll
|
4 | monitor flash probe 0
|
5 | monitor stm32f1x mass_erase 0
|
6 | monitor flash write_bank 0 main.bin 0
|
7 | monitor soft_reset_halt
|
8 | thbreak main
|
9 | continue
|
Oliver J. schrieb:
> Schau dir mal die Befehlsbreite an. Alles 32-Bit. Das spricht nicht
> dafür, dass Thumb2 Code generiert wurde. Das ist wahrscheinlich 32-Bit
> ARM-Code, welchen der CortexM3 nicht ausführen kann.
das mit der Befehlsbreite, könnte alle meine Probleme erklären. Das
makefile wird von Eclipse generiert:
1 | ################################################################################
|
2 | # Automatically-generated file. Do not edit!
|
3 | ################################################################################
|
4 |
|
5 | -include ../makefile.init
|
6 |
|
7 | RM := rm -rf
|
8 |
|
9 | # All of the sources participating in the build are defined here
|
10 | -include sources.mk
|
11 | -include src/subdir.mk
|
12 | -include STM32F10x_StdPeriph_Driver/src/subdir.mk
|
13 | -include DeviceSupport/ST/STM32F10x/startup/gcc_ride7/subdir.mk
|
14 | -include DeviceSupport/ST/STM32F10x/subdir.mk
|
15 | -include CoreSupport/subdir.mk
|
16 | -include subdir.mk
|
17 | -include objects.mk
|
18 |
|
19 | ifneq ($(MAKECMDGOALS),clean)
|
20 | ifneq ($(strip $(C_DEPS)),)
|
21 | -include $(C_DEPS)
|
22 | endif
|
23 | ifneq ($(strip $(ASM_DEPS)),)
|
24 | -include $(ASM_DEPS)
|
25 | endif
|
26 | ifneq ($(strip $(S_UPPER_DEPS)),)
|
27 | -include $(S_UPPER_DEPS)
|
28 | endif
|
29 | endif
|
30 |
|
31 | -include ../makefile.defs
|
32 |
|
33 | # Add inputs and outputs from these tool invocations to the build variables
|
34 | SECONDARY_FLASH += \
|
35 | simple_Test.hex \
|
36 |
|
37 | SECONDARY_LIST += \
|
38 | simple_Test.lst \
|
39 |
|
40 | SECONDARY_SIZE += \
|
41 | simple_Test.siz \
|
42 |
|
43 |
|
44 | # All Target
|
45 | all: simple_Test.elf secondary-outputs
|
46 |
|
47 | # Tool invocations
|
48 | simple_Test.elf: $(OBJS) $(USER_OBJS)
|
49 | @echo 'Building target: $@'
|
50 | @echo 'Invoking: ARM Sourcery Linux GCC C Linker'
|
51 | arm-none-eabi-gcc -T"/home/daniel/workspace/simple_Test/stm32_flash.ld" -Xlinker --gc-sections -Wl,-Map,simple_Test.map -mcpu=cortex-m3 -mthumb -g -ggdb -o "simple_Test.elf" $(OBJS) $(USER_OBJS) $(LIBS)
|
52 | @echo 'Finished building target: $@'
|
53 | @echo ' '
|
54 |
|
55 | simple_Test.hex: simple_Test.elf
|
56 | @echo 'Invoking: ARM Sourcery Linux GNU Create Flash Image'
|
57 | arm-none-eabi-objcopy -O ihex simple_Test.elf "simple_Test.hex"
|
58 | @echo 'Finished building: $@'
|
59 | @echo ' '
|
60 |
|
61 | simple_Test.lst: simple_Test.elf
|
62 | @echo 'Invoking: ARM Sourcery Linux GNU Create Listing'
|
63 | arm-none-eabi-objdump -h -S simple_Test.elf > "simple_Test.lst"
|
64 | @echo 'Finished building: $@'
|
65 | @echo ' '
|
66 |
|
67 | simple_Test.siz: simple_Test.elf
|
68 | @echo 'Invoking: ARM Sourcery Linux GNU Print Size'
|
69 | arm-none-eabi-size --format=berkeley simple_Test.elf
|
70 | @echo 'Finished building: $@'
|
71 | @echo ' '
|
72 |
|
73 | # Other Targets
|
74 | clean:
|
75 | -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) simple_Test.elf
|
76 | -@echo ' '
|
77 |
|
78 | secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE)
|
79 |
|
80 | .PHONY: all clean dependents
|
81 | .SECONDARY:
|
82 |
|
83 | -include ../makefile.targets
|
Eigentlich dachte ich, dass die Compileroption "-mthumb" dafür sorgt,
dass der richtige Befehlssatz verwendet wird. Wie kann es sein, dass da
32-Bit-Code rauskommt?