Wie kann man an einem geschützten Controller "rumspielen", zu dem keine Quellen oder Binärdaten vorliegen? Genauer: ich möchte einen GPIO schalten. Welche (kostenlose, freie) Software (für Windows oder Linux) lässt sich dazu verwenden, die das einigermaßen komfortabel ermöglicht? Gibt's da etwas, um die Hardware-Peripherie vom PC aus zu steuern und konfigurieren? Muss die CPU laufen, damit Änderungen an den Registern "aktiv" werden? Wenn ja, ließe sich dazu eine NOP-Firmware in den SRAM laden und starten, ohne die vorhandene Firmware im Flash zu verändern? Ich habe einen ST-Link-V2 (Klon), texane/stlink, OpenOCD, gdb-multiarch, EmBitz (das hat im Debug Mode einen System Registers view, erfordert m.W. aber die Programmdaten und Quellen).
Das müsste theoretisch über das JTAG/SWD Interface gehen. Ich habe die zugehörige Software allerdings noch nie ohne Quelltext benutzt - weiß nicht, wie das geht. Mein Bauchgefühl sagt, dass es irgendwie geht. Durchforste mal die Doku von OpenOCD.
Stefan M. schrieb: > Welche (kostenlose, freie) Software (für Windows oder Linux) lässt sich > dazu verwenden, die das einigermaßen komfortabel ermöglicht? Eclipse mit GNU-MCU-Eclipse Plug-in. Stefan M. schrieb: > Muss die CPU laufen, damit Änderungen an den Registern "aktiv" werden? Nein Stefan M. schrieb: > Wenn ja, ließe sich dazu eine NOP-Firmware in den SRAM laden und > starten, ohne die vorhandene Firmware im Flash zu verändern? Ja Stefan M. schrieb: > EmBitz (das hat im Debug Mode einen System Registers view, erfordert > m.W. aber die Programmdaten und Quellen). Sicher? Kann man nicht einfach eine leere Programmdatei verwenden? Auf jeden Fall ist es möglich den GDB auf der Konsole zu starten und direkt auf den Speicher zuzugreifen. Der braucht keine Programmdatei.
Ich benutze (zu den genannten Basis-Tools) Eclipse mit GNU-MCU Plugin. Da gibt es die Möglichkeit an allen (fast) Peripherie-Registern zu spielen. Mr Sommer war schneller ;-)
Stefan M. schrieb: > Wie kann man an einem geschützten Controller "rumspielen", zu dem keine > Quellen oder Binärdaten vorliegen? Hängt davon ab wie er geschützt ist. Wenn er auf Read protection Level 2 geschützt ist, ist der komplette Debug-Port (JTAG und SWD) abgeschaltet. Dann kannst Du Dich nicht mit dem Debugger verbinden und demnach auch keine GPIOs oder sonstwas verändern.
Ist alles möglich. Sieh dir dazu die Hilfe vom STM32CubeProgrammer an. Lesen/schreiben des Speichers oder der Core Register, bin Datei speichern, lesen oder ausführen ab Addr.
Stefan M. schrieb: > einem geschützten Controller "rumspielen" Wenn der ordentlich geschützt (geLOCKt) ist, dann kommt man vom JTAG/SWD nicht mehr an den Controller ran, ohne den Flash vorher zu löschen.
Danke, habe es hinbekommen mit OpenOCD: 1. Terminal openocd -f stlink-v2.cfg -f stm32f1x.cfg 2. Terminal telnet localhost 4444 und dort mww <addr> <word> http://www.openocd.org/doc/html/General-Commands.html Die Adressen (register boundary addresses) findet man im Reference Manual unter Memory Map, dazu kommt dann der Offset für das gewünschte Register - register map hilft weiter, ist aber auch beim jeweiligen Register angegeben.
Ggf auch die Clock der Peripherie einschalten!
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.