Forum: Mikrocontroller und Digitale Elektronik STM32 Boot0 Problem


von Sonke A. (soeni)


Angehängte Dateien:

Lesenswert?

Hallo,

bei den STM32 kann man ja über Boot0 sagen, ob er aus dem Systemmemory 
oder auf dem FLASH booten soll.

Wenn BOOT0 auf VCC liegt, bootet er aus dem Systemmemory. So lässt sich 
per JTAG was flashen. Verständlicherweise kann das Programm so jedoch 
nicht starten, da im Linkerscript die Adressen des Flashs stehen und der 
PC ja auf den Systemmemory zeigt.

Wenn BOOT0 auf GND liegt, also aus dem Flash gestartet werden soll, 
bekomme ich per JTAG keine Verbindung mehr zum Controler.

Ich nutze OpenOCD mit nem GDB (Codesourcery)

Hat jemand ne Idee, woran das liegen kann?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Wahrscheinlich hat das Programm die JTAG Pins umbelegt. Probiere mal die 
JTAG Verbindung bei gedrückten RESET herzustellen.

Evt ist auch das Programm lesegeschützt und JTAG hat damit Probleme.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

OpenOCD hat spezielle Befehle für den STM32, schaue da mal in der Doku 
von OpenOCD nach, die MÜSSEN ausgeführt/genutzt werden.

PS: Boot0 kann man immer auf GND lassen.
Der Compiler muss das Programm auf Adresse 0x00000000 linken.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?


von sonke (Gast)


Lesenswert?

Das Programm läuft auf dem evalboard wunderbar.
Die Hardware ist selber entwickelt und der stm ist neu.

Aber der systemmemory ist doch ein anderer apeicherbereich.
Ich will.ja das Programm aus dem Flash starten.

Warum geht es denn per jtag wenn boot0 auf 1 liegt, wenn es auf 0 liegt 
aber nicht?

Wie gesagt openocd erkennt mit boot0 auf gnd nicht mal die Anzahl der 
breakpoints.

Was verstehst du unter Programm ist lesegeschutzt?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

> Was verstehst du unter Programm ist lesegeschutzt?
Siehe Doku unter Schreib-/Leseschutz

von sonke (Gast)


Lesenswert?

Vielen dank für das zitieren der doku. Lesen kann ich selber.
Wie ich bereits s grien ist der Chip neu. Warum sollte also ein 
Lärmschutz implementiertsein, zumal ich ja den Flash schreiben.und lesen 
kann. Nur halt im falschen bootmode

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

In der oben gezeigten Demo funktioniert es mit dem OpenOCD.
Der OpenOCD benötigt alle JTAG Anschlüsse SWD ging damals nicht.
Jetzt nutze ich den Segger J-LINK-EDU und der geht noch viel besser als 
OpenOCD.

Versuche doch mittels
Telnet >> OpenOCD >> Olimex >> STM32
die Befehle von OpenOCD mal von Hand ein zu geben.

von sonke (Gast)


Lesenswert?

Wie gesagt, auf dem evalboard funktioniert openocd, ich vermute nen 
hardwarefehler

Boot0 = 1 Flashen und lesen geht. Loslaufen nicht. ( klar weil 
linkerfile Adressen.usw.)
Boot0 = 0 keine Verbindung zum stm also auch kein flashen

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Dann nehme einen Piepser und überprüfe jeden Pin vom Prozessor bis in 
das JTAG Interface.

von sonke (Gast)


Lesenswert?

Hab ich gemacht. Was hat denn das jtag mit boot0 zu tun. Ein mal 
funktioniert jtag doch richtig. Warum sollte denn das jtag dann falsch 
angeschlossen sein?

von Simon H. (simi)


Lesenswert?

Versuch mal folgendes: Nimm das Flash-Tool der STM Utilities und 
versuche, den STM32 zu löschen Und zwar so:

Power up, und dann SOFORT auf "löschen" drücken.

Frag mich jetzt nicht, warum, aber das hat bei mir schön öfter mal 
geholfen, wenn der STM32 nach dem Download einer verhunzten SW 
"störrisch" wurde und keine Verbindung möglich war.
Ich habe allerdings über SWD verbunden.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wenn das mit dem Demo-Board funktioniert und mit dem Selbstbau-Board 
nicht und Du hast die Protection Register des STM's nicht manipuliert 
dann gibt es exakt 3 Möglichkeiten:

1. Der Prozessor hat nicht an allen VCC und AVCC /GND Pins 
Strom/Spannung oder die Spannung ist falsch.
2. Den Prozessor hast Du kaputt gelötet
3. Ein Fehler in der Verdrahtung zwischen Prozessor und JTAG Stecker.

Suche und finde das.

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.