Hallo, mir zerhaut es immer mein Programm ab einer bestimmten Größe, obwohl ich den vorhandenen SRAM von 96Kb noch lange nicht ausgereizt habe. (STM32F401RE) Meine MapFile zeigt:
1 | Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00000680, Max: 0x00018000, ABSOLUTE) |
2 | |
3 | Base Addr Size Type Attr Idx E Section Name Object |
4 | |
5 | 0x20000000 0x00000004 Data RW 257 .data delay.o |
6 | 0x20000004 0x00000004 Data RW 432 .data stm32f4xx_hal.o |
7 | 0x20000008 0x00000014 Data RW 1037 .data system_stm32f4xx.o |
8 | 0x2000001c 0x00000060 Zero RW 1156 .bss c_w.l(libspace.o) |
9 | 0x2000007c 0x00000004 PAD |
10 | 0x20000080 0x00000200 Zero RW 1027 HEAP startup_stm32f401xe.o |
11 | 0x20000280 0x00000400 Zero RW 1026 STACK startup_stm32f401xe.o |
Mein Stack ist 0x400 groß, obwohl mein Idx 1026 ist! (0x400 = 1024). Dadurch wird mein Stackpointer (Register 15) schon unter der Base von 0x20000000 initialisiert. Ich weiß nicht, warum mein Stack nicht automatisch vergrößert wird. Platz genug ist ja. Jemand eine Idee? Ich arbeite mit Keil v5. Zu sagen sei noch, ich programmiere in c++, ich hoffe, dadurch habe ich nicht etwas übersehen? Die ganzen HAL-Treiber von STM sind ja c klassen. Danke, Grüße