Forum: Mikrocontroller und Digitale Elektronik NRF51 firmware flash mit ST-Link und openocd


von Danny C. (danny89)


Angehängte Dateien:

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

von Jim M. (turboj)


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.

von J. S. (jojos)


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.

von Danny C. (danny89)


Angehängte Dateien:

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.

von Jim M. (turboj)


Lesenswert?

Haste das TXT mal gelesen?

Der Adapter hängt sich beim Setzten des SWD Speed auf, der STLink 
braucht wohl eine andere (aktuellere?) Firmware damit er kompatibel zu 
OpenOCD wird.

von Stefan F. (Gast)


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?

von Harry L. (mysth)


Lesenswert?

˙ɟ uɐɟǝʇs schrieb:
> Was ich nicht weiß: Kann man die ST-Links überhaupt für "fremde"
> Mikrocontroller verwenden?

Nicht mit der ST-Firmware.

von Danny C. (danny89)


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

von Stefan F. (Gast)


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.

von Harry L. (mysth)


Lesenswert?

˙ɟ uɐɟǝʇs schrieb:
> 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.

Nein!
Der separate Updater wird aufgerufen.

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
> Der separate Updater wird aufgerufen.

Jedenfalls muss man den nicht extra downloaden. Wenn man die IDE schon 
benutzt hat, hat man auch schon das Update.

von Danny C. (danny89)


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

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
Noch kein Account? Hier anmelden.