Forum: Mikrocontroller und Digitale Elektronik STM32 im Flash debuggen


von Samuel C. (dragonsam)


Lesenswert?

Guten Tag alle zusammen,

ich arbeite zurzeit mit einem STM32F407. Um den Flash zu schonen debugge 
ich diesen im RAM, was auch wunderbar funktioniert. Jedoch schaffe ich 
es nicht mehr, ganz normal den Flash zu nutzen. Er startet immer alte 
Programme.

Kann mir jemand sagen, was ich wie einstellen muss, dass die Programme 
an der richtigen Stelle im Flash landen und ausgeführt werden?

Mein Speicher ist wie folgt eingeteilt:
MEMORY
1
{
2
SECTOR0  (rx) : ORIGIN = 0x08000000, LENGTH = 16K
3
FEEPROM  (rx) : ORIGIN = 0x08004000, LENGTH = 32K
4
    ROM (rwx) : ORIGIN = 0x0800C000, LENGTH = 976K
5
    RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
6
  CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
7
}

In den Release-Einstellungen in den Build-options habe ich folgendes:
Policy: Use target settings
Linker script: stm32f407vg_flash.ld
Stack size: 0x0200
Heap size 0x0200

Im Interface (Target Settings) ist nur "Run to main()" aktiviert.

Der ST-Link ist folgendermaßen konfiguriert:
Interface: swd
Vector table start: 0x08000000
Reset Type: System
Nur "Load program" und "Vector table relocation" sind aktiviert.


Vielen Dank schonmal.

Edit: Entschuldigung, ich nutze Em::Blocks 2.30

von Samuel C. (dragonsam)


Lesenswert?

Ok, Problem gelöst. Ich habe vergessen, die ISR-Vektoren auch in Sektor0 
zu schreiben:
1
.isr_vector :
2
{
3
    KEEP(*(.isr_vector))
4
    *(.text.SD*)
5
    *(.text.*Handler)
6
} >SECTOR0

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
Noch kein Account? Hier anmelden.