Eclipse und OpenOCD funktionieren nur, wenn ich die MCU auf Discovery Board programmiere

Ich möchte eine STM32F030-MCU mit Eclipse, OpenOCD und ST-Link programmieren und debuggen. Ich habe ein STM32F4 Discovery Board, das einen ST-Link-Debugger enthält.

Die Programmierung der STM32F4 MCU auf dem Discovery Board funktioniert sehr gut. Ich verwende Eclipse, OpenOCD und den ST-Link (ST-Link ist eigentlich auf dem Board). Mit dieser IDE-Konfiguration sollte ich meiner Meinung nach in der Lage sein, andere STM-Mikrocontroller zu programmieren, die sich auf verschiedenen PCBs befinden (natürlich nachdem ich sie miteinander verbunden und die Jumper ausgeschaltet habe, um das Ziel auszuwählen).

Mein Problem ist: Ich möchte eine STM32F030 MCU programmieren. Wenn ich diese MCU an den ST-Link anschließe, sagt "STM32 ST-Link Utility", dass die Verbindung in Ordnung ist, also denke ich, ich sollte in der Lage sein, sie zu programmieren. Aber wenn ich versuche, es zu programmieren, zeigt Eclipse immer die gleiche Fehlermeldung: "Quit (Erwartetes Signal SIGINT, wenn das Programm fortgesetzt wird) - Ausnahmebedingung auf fd 0 erkannt - Fehler auf stdin erkannt"

Wahrscheinlich liegt das Problem an den Einstellungen meiner IDE, aber ich habe keine Ahnung, was es sein könnte. Wie ist es möglich, dass ich die MCU des Discovery Boards programmieren kann, aber ich kann dasselbe nicht mit einer anderen MCU tun?

Hast Du eine Idee?

Haben Sie in Ihrem Eclipse-Projekt und den OpenOCD-Einstellungen die richtige Ziel-MCU eingestellt? Manchmal müssen Sie auch die richtige Flash-Routine für das Ziel auswählen (ich bin mit OpenOCD nicht vertraut, es ist nur ein häufiges Problem beim Wechseln zwischen Zielen).
Hinweis für andere, die möglicherweise das gleiche Problem haben: Bevor Sie den eingebetteten ST-Link mit einem anderen Board verbinden, vergewissern Sie sich, dass die richtigen Jumper getrennt sind – siehe das Benutzerhandbuch des nucleo/...-Boards für Details.

Antworten (1)

@Arsenal hat Recht. OpenOCD benötigt eine Board-spezifische Konfigurationsdatei, die in Ihrem Fall wahrscheinlich für einen STM32F4 ist. Überprüfen Sie in der Debug-Konfiguration die Registerkarte Debugger Ihres OpenOCD-Debuggers und ändern Sie die Konfigurationsdatei unter Andere Optionen, damit sie zu Ihrem Board passt.

Geben Sie hier die Bildbeschreibung ein

Sie können die vorhandenen/verfügbaren Konfigurationsdateien in den folgenden Verzeichnissen überprüfen:

\openocd-0.9.0\tcl\target

\openocd-0.9.0\tcl\board

Für einen STM32F030 sollte die board/stm32f0discovery.cfg funktionieren (für einen STM32F303RET6 hat die board/stm32f3discovery.cfg für mich gut funktioniert), aber es gibt auch eine target/stm32f0x.cfg- Datei, wenn Sie es versuchen möchten.