Forum: Mikrocontroller und Digitale Elektronik STM32F100RB (discovery) geht nicht im Simulator


von rainer m (Gast)


Lesenswert?

Hallo,

ich versuche das STM32-Discovery Board auch im Simulator zu betreiben.
Über ST-Link funktioniert uVision4 auf der realen Hardware wunderbar.
Aber im Simulator lässt sich das Projekt nicht starten.
Die Fehlermeldung lautet:
*** error 65: access violation at 0x0000000C : no 'read' permission

PC ist übrigens auf 0 initialisiert.

Den Effekt habe ich auch mit den unter 
C:\keil\arm\boards\st\stm32-discovery mitgelieferten Beispielen.

Ist das ein bekanntes Problem, oder liegt es an meiner Version?

Ich habe
MDK-Lite        V4.22a
SARMCM3.DLL     V4.22a
DARMSTM32.DLL   V1.63.0.0 bzw.
DCM.DLL         V1.3.0.0

Oder brache ich bestimmte Parameter?

Ich habe schon einiges probiert - allerdings ohne Erfolg.

Vielen Dank
rainer

von STM32User (Gast)


Lesenswert?

Hallo Rainer,

versuche es mit einem Initialization File unter
Options for Target (Simulator Seite).

Inhalt:

/* 128k flash */
map 0x08000000,  0x08020000 READ EXEC

/* 8k ram */
map 0x40000000,  0x40002000 READ WRITE

/* register */
map 0x40000000,  0x40030000 READ WRITE

xPSR=0x01000000
SP=0x20000B70
PC=0x0800026C

Evt. musst du die Adressen für den PC und SP noch anpassen.

Gruß

von rainer m (Gast)


Lesenswert?

Hallo,

vielen Dank für die schnelle Antwort.

Der Zugriffsfehler auf den Peripheriebereich sind jetzt weg.
Allerdings ist das Hauptproblem noch immer da.

In der Interrupt-Vektor-Tabelle steht am Anfang der Reset-Vektor und der 
initiale Stackpointer. Die IVT liegt auf Adresse 0x08000000.
Mit  _WDWORD(0xE000ED08, 0x08000000) wird auch das Vektorregister dahin 
initialisiert.

Mit
   sp = _RDWORD(0x08000000)
   pc = _RDWORD(0x08000004)
erfolgt diese Initialisierung auch beim ersten Start des Debuggers.
D.h. die Vektortabelle ist korrekt aufgebaut.

Beim späteren RESET wird dies allerdings nicht mehr ausgeführt. PC zeugt 
dann auf 0, was natürlich zu Problemen führt.

Beim debuggen mit STLink auf der Hardware werden beim RESET die Register 
SP und PC richtig initialisiert.

Grüße
rainer

von STM32User (Gast)


Lesenswert?

Die Device-Simulation wird von Keil nicht für alle Derivate und
nie vollständig gepflegt.

Inbesondere der STM32F100RB

http://www.keil.com/dd/chip/5086.htm

ist so ein Kandidat. Gegebenfalls hilft es auf einen anderen Controller
umzusteigen (2.Projekt) z.B. auf den STM32F103RB, der simuliert sich 
besser:

http://www.keil.com/dd/chip/4231.htm

Gruß

von rainer m (Gast)


Lesenswert?

Hallo,
vielen Dank für den Hinweis.

Dann werde ich mal die beiden Kandidaten vergleichen und die Adressliste 
vergleichen. Wenn diese abwärtskompatibel ist, dann reicht mir das 
vollkommen.

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.