Forum: Mikrocontroller und Digitale Elektronik STM32&Keil Cannot access Memory Fehler


von Pepe (Gast)


Lesenswert?

Hallo.
Hab ein Problem, was ich mir nicht erklären kann:

Verwende Keil 5.23 & STM32F405 mit CAN1. CMSIS 4.5.0 & STM32F4xx_DFP 
1.0.8.
Habe eine Setup-Routine für den CAN1 geschrieben. Habe folgende 4 lokale 
Vars in Verwendung:

void canSetup(void)
{
  int i;
  GPIO_InitTypeDef GPIO_InitStructure;
  CAN_InitTypeDef CAN_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  CAN_FilterInitTypeDef CAN_FilterInitStructure;

  ... eigentlicher Init Code ....
}

Wenn ich nun mit Debugger starte (Ctrl-F5) und mit F5 laufen lasse, 
erhalte ich im Command-Fenster "Cannot access memory" und im Disassembly 
lauter "0000 movs r0,r0". Wenn ich allerdings mit F10 bis zur while 
(1)-Schleife in main.c im Einzelschritt durchgehe, kann ich die 
Anwendung danach laufen lassen.

Vertausche ich allerdings die Reihenfolge der Vars wie unten, geht 
wieder alles wie erwartet.

void canSetup(void)
{
  int i;
  CAN_InitTypeDef CAN_InitStructure; (getauscht)
  GPIO_InitTypeDef GPIO_InitStructure; (getauscht)
  NVIC_InitTypeDef NVIC_InitStructure;
  CAN_FilterInitTypeDef CAN_FilterInitStructure;

  ... eigentlicher Init Code ....
}

Hab jetzt schon mehrmals gegen geprüft. Auch schon PC & Hardware 
komplett ausgeschaltet. Hab immer das gleiche Verhalten.

Hat da jemand eine Ahnung was dahinter steckt? Das Verhalten macht mich 
gerade etwas nachdenklich...

Vielen Dank.
Pepe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hast Du Dir mal angesehen, wie groß diese vier Strukturen sind, und das 
mit der Größe des Stacks abgeglichen?

von Pepe (Gast)


Lesenswert?

Stacksize ist 1024. Und die 4 Structs haben insgesamt 38 Byte. Sollte 
also kein Thema sein.

Außerdem kann ich mir nicht erklären, warum die Reihenfolge der Structs 
was ausmacht.

Hab das Ganze jetzt noch auf einem anderem PC ausprobiert und habe dort 
das gleiche Ergebnis. Die eine Reihenfolge funktioniert, die andere 
macht beim Starten Probleme.

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.