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?
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.
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.
Hier gibt es auch ein BlinkLed Demo von mir: http://www.mikrocontroller.net/articles/STM32_Eclipse_Installation#Downloads
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?
> Was verstehst du unter Programm ist lesegeschutzt?
Siehe Doku unter Schreib-/Leseschutz
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
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.
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.