NRF51 firmware flash mit ST-Link und openocd

OP #7477942
Lesenswert?

Hallo zusammen,

ich versuche derzeit, Firmware auf einen NRF51822 zu flashen, und alle meine Versuche scheinen erfolglos zu sein. Ich scheitere am initialen Verbindungsaufbau. Ich verwende einen Beacon (siehe Anhang), an den ich Kabel an SWDCLK, SWDIO, GND und VDD gelötet habe. Anschließend habe ich diese Kabel an die entsprechenden Ports des Programmiergeräts angeschlossen (siehe Anhang). Zusätzlich habe ich eine Datei für die OpenOCD-Konfiguration erstellt:

1
#nRF51822 Target
2
source [find interface/stlink.cfg]
3

4
transport select hla_swd
5

6
set WORKAREASIZE 0x4000
7
source [find target/nrf51.cfg]

Ich versuche nun, eine Verbindung mit dem einfachen Befehl herzustellen:

1
openocd -f openocd.cfg

Die Ausgabe lautet wie folgt:

1
Open On-Chip Debugger 0.11.0
2
Licensed under GNU GPL v2
3
For bug reports, read
4
http://openocd.org/doc/doxygen/bugs.html
5
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
6
Info : Listening on port 6666 for tcl connections
7
Info : Listening on port 4444 for telnet connections
8
Info : clock speed 1000 kHz
9
Info : STLINK V2J29S7 (API v2) VID:PID 0483:3748
10
Info : Target voltage: 3.272873
11
Error: Unable to set adapter speed
12
Error: init mode failed (unable to connect to the target)

Wie man sieht, scheint die Verbindung vom Programmiergerät zum Chip nicht zu funktionieren. Die LED auf dem Board leuchtet kurz nach dem Einstecken auf, und ich verwende Linux, falls das relevant ist.

Da ich leider keine Erfahrung mit dem Chip oder seiner Programmierung habe und lediglich eine bin-Datei flashen möchte, sind meine Fragen: Muss ich noch etwas anderes tun, um die Firmware auf den Chip zu bekommen? Ist meine Programmierhardware korrekt, oder ist sie die falsche für den Chip? Gibt es noch andere Dinge zu beachten? Gibt es noch etwas anderes, das ich ausprobieren kann?

Vielen Dank für Eure Hilfe, Danny

Angehängte Dateien:
#7477950
Lesenswert?

Bei OpenOCD braucht man die Ausgaben vom Debug mode (option -d3 IIRC, ist eine Weile her hier).

Miss aber erstmal nach ob überhaupt 3,3V am VCC des Target anliegen.

Ist der NRF51x von einem "fertigen" Gerät? Dann müsste man den vermutlich erst recovern/unlocken. Braucht den Reset Pin.

Ansonsten nimmt man für das NordicSemi Zeuchs lieber JLink Debugger.

#7477956
Lesenswert?

es könnte auch sein das der Controller sofort in einen Sleep Mode geht wo er nicht per SWD zu erreichen ist. Dann probieren mit (langem) Tastendruck da raus zu kommen. Eventuell muss man auch auch in den Bootloader kommen, falls der nRF einen hat. Ich habe vor längerer Zeit jedenfalls mal so nRF51 mit STLink oder BMP programmiert bekommen.

OP #7477972
Lesenswert?

Vielen Dank für eure Antworten,

Bei OpenOCD braucht man die Ausgaben vom Debug mode (option -d3 IIRC,

ist eine Weile her hier).

Hab die Debugausgabe angehängt.

Die Verkabelung und Stromversorgung habe ich mehrmals geprüft und den Durchsatz gemessen. Das scheint alles zu stimmen. Es kommen auch ziemlich genau 3.3V an und die LED blinkt beim Einstecken kurz auf.

Ist der NRF51x von einem "fertigen" Gerät? Dann müsste man den

vermutlich erst recovern/unlocken. Braucht den Reset Pin.

Das ist tatsächlich ein "fertiges" Gerät, welches bereits eine Firmware drauf hat. Es muss aber lt. Hersteller einfach möglich sein, da eine andere SW aufzuspielen. Was muss ich mit dem Rest-Pin dann an dieser Stelle tun?

es könnte auch sein das der Controller sofort in einen Sleep Mode geht

wo er nicht per SWD zu erreichen ist. Dann probieren mit (langem) Tastendruck da raus zu kommen.

Guter Hinweis, die Standardsoftware des Beacon sendet kurz ein BT-Signal aus und geht dann wahrscheinlich in den Sleep-Modus. Der Beacon hat nur keine Taste, sondern nur die Pins aus dem ersten Anhang. Kann ich das irgendwie anders realisieren (z.B. Pins verbinden)?

Sorry, bin absoluter Anfänger und habe nicht wirklich viel Erfahrung mit so hardwarenaher Programmierung.

Angehängte Dateien:
Gast #7478053
Lesenswert?

Generell sind diese chinesischen ST-Link Klone "out of the" box zu OpenOCD kompatibel. Für die Software von ST muss man sie hingegen upgraden, danach gehen sie immer noch mit OpenOCD.

Was ich nicht weiß: Kann man die ST-Links überhaupt für "fremde" Mikrocontroller verwenden?

OP #7478097
Lesenswert?

Haste das TXT mal gelesen?

Der Adapter hängt sich beim Setzten des SWD Speed auf,

Ja, das stand aber auch schon im ersten Log: Unable to set adapter speed Ich war der Annahme, dass die Verbindung zwischen Chip und STLink nicht funktioniert und daher das Aushandeln der Geschwindigkeit nicht funktioniert.

Generell sind diese chinesischen ST-Link Klone "out of the" box zu

OpenOCD kompatibel. Für die Software von ST muss man sie hingegen upgraden, danach gehen sie immer noch mit OpenOCD.

Ja, das ist so ein Klon. Ich versuche das morgen mal mit der aktuellsten Software upzudaten (https://www.st.com/en/development-tools/stsw-link007.html) oder muss ich da eine andere nehmen?

Kann man die ST-Links überhaupt für "fremde"

Mikrocontroller verwenden?

Was meinst du mit "fremden" Microcontrollern? Den STLink-Clone oder den nrf51?

Danke erst einmal für eure Hilfe, ich werde morgen Rückmeldung geben.

Viele Grüße, Danny

Gast #7478126
Lesenswert?

Danny C. schrieb:

Ja, das ist so ein Klon. Ich versuche das morgen mal mit der aktuellsten Software upzudaten ... oder muss ich da eine andere nehmen?

Eigentlich updated die STM32 Cube IDE (und auch der STM32 Cube Programmer) das Ding automatisch, sobald man die Firmware auf den STM32 hochlädt oder debuggt. Hast du nicht eh schon eins der beiden Programme installiert?

Danny C. schrieb:

Was meinst du mit "fremden" Microcontrollern? Den STLink-Clone oder den nrf51?

Natürlich den nrf51. Nordic ist nicht ST.

OP #7478840
Lesenswert?

Es hat funktioniert! Habe mir den offiziellen Updater heruntergeladen, den ST-Link aktualisiert und es hat auf Anhieb geklappt. Der Chip wurde sofort gefunden und das Flashen hat getan.

Hast du nicht eh schon eins der beiden Programme installiert?

Nein, ich will ja nicht auf dem Chip programmieren, sondern nur eine Firmware flashen.

Vielen Dank für eure Hilfe.

Viele Grüße Danny

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren