Ich verwende beim STM32F103VB die FLASH-Schreibbefehle und
habe die STM PM0075-Dokumentation schon hoch und runtergelesen.
Der Flash bleibt leer.
------------------------------------------------
1
#include"stm32f10x.h" //this file is from the STM CMSIS folder
------------------------------------------------
Ausgabe:
FLASH->WRPR: 0xFFFFFFFF, FLASH->OBR: 0x3FFFFFC, RCC->CR: 0x03035883
wr: Addr: 0x0800F004 (0x1234)
FLASH->SR: 0x0020, FLASH->CR: 0x0001
rd: Addr: 0x0800F004 (0xFFFF)
Bedeutung:
Zeile1 sagt "no write protection"
Zeile3 sagt "unlocked, writing was successfull"
Zeile4 aber die Zelle ist leer!
Beim Arduino-Mapleboard funktioniert die entsprechende Library tadellos.
Bei mir fehlt noch irgendeine Vorbedingung, irgendein Register.
Weiß jemand, welches?
Nur weil du den Flash entsperrst kannst du noch lange nicht wie bei
einem RAM darauf schreiben. Benutze doch einfach die FLASH-Befehle der
ST-Periph-Library und schon wird sich dein Problem lösen. Oder schaue
doch einfach mal dort rein, welche Bits du noch setzt/rücksetzen und
abfragen musst bevor du wirklich was schreiben kannst.
Letztlich sehe ich bei dir nicht, dass du nach dem Unlock auch die
entsprechende Page löscht bevor du sie wieder beschreibst. Der Unlock
alleine langt ev. nicht aus.
Danke für die Tipps, aber mein Problem liegt noch weit vor der
EEPROM-Emulation. Ich kann nichtmal ein Halfword in den Flash schreiben.
Die STM-Libraries habe ich natürlich intensivst durchforstet. Die machen
exakt das, was oben schon steht, kein Quarz, keine PLL keine andernen
Register nichts. Der STM32F101VB meldet ja nichtmal einen Schreibfehler,
wenn die Ziel-Zelle 0xFFFF enthält, - andernfalls meckert er schon.
Auf meiner Plattform nutzen ich IMMER den internen RS232-Bootloader.
Verändert der etwas, was ein JTAG-Upload nicht verändert?
Gelöst!
Man darf keine -0,6V (Diodenflussspannung) an den /RST pin anlegen. Bei
-0.3V geht es.
Mein Problem war offenbar ein HW-Problem, das ausschließlich beim
Programmieren des Flashes auffällt, dem Bootloader aber offenbar nichts
ausmacht und auch sonst keine Funktion behindert.
Die korrigierte Bootloader-Beschaltung findet Ihr hier:
http://www.firefly-power.de/ARM/sloadhost.html
> Für die Programmierung mit der obigen Beschaltung gibt es ein schönes> Windows-Programm hier: http://www.er-forum.de
Da wird man zu einem Shop umgeleitet. Hast du den Originallink?
Mape schrieb:> Gelöst!>> Man darf keine -0,6V (Diodenflussspannung) an den /RST pin anlegen. Bei> -0.3V geht es.>> Mein Problem war offenbar ein HW-Problem, das ausschließlich beim> Programmieren des Flashes auffällt, dem Bootloader aber offenbar nichts> ausmacht und auch sonst keine Funktion behindert.>> Die korrigierte Bootloader-Beschaltung findet Ihr hier:> http://www.firefly-power.de/ARM/sloadhost.html
Sicher, dass der /NRST-Pin gemeint ist?
Die geänderte Schaltung enthält einen Hinweis auf den Boot0-Pin ?!?