Forum: Mikrocontroller und Digitale Elektronik nRF51822 flashen mit ST-Link V2 und OpenOCD


von ktfk (Gast)


Lesenswert?

Hallo
Ich möchte mit OpenOCD und ST-Link V2 unter Windows 10 einen nRF51822 
Board flashen.
Eine Verbindung mit ST-Link V2 war schon mehrmals vorhanden,
bleibt aber immer irgendwo an fehlerhaften Befehlen hängen.
Ich habe Tagelang alles ausprobiert und das ganze Internet durchsucht.

Kann mir jemand sagen mit welchen Befehl ich direkt
ohne GDB und ohne Telnet ein hex file flashen kann.

Im nachbar Thread hatte ich auch schon gefragt und dann auch nur eine 
Verbindung zu ST-Link V2 hinbekommen
Beitrag "Arduino Custom Firmware für Fitness Armband mit NRF52"

Gruß

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> bleibt aber immer irgendwo an fehlerhaften Befehlen hängen.

Genauer würde sicher helfen.
Ich hatte die gleiche Kombi vor längerer Zeit unter Linux laufen.

Vielleicht braucht es mal ein richtiges Full erase?

von pegel (Gast)


Lesenswert?

https://www.youtube.com/watch?v=BzTcqwFI1m4

Ist für Linux, aber der Mann hat viele Videos zum Thema.
Könnte auch was für Win dabei sein.

von softwerker (Gast)


Lesenswert?

Den Hinweis von openocd 'Do not enable UICR APPROTECT' hast du 
hoffentlich befolgt...

von Philipp K. (philipp_k59)


Lesenswert?

Wieso nicht das Originale Nordic Uploadtool wenn es nur eine Hexdatei 
ist?

von ktfk (Gast)


Lesenswert?

Hallo
Vielen Dank für eure Antworten.

softwerker schrieb:
> Den Hinweis von openocd 'Do not enable UICR APPROTECT' hast du
> hoffentlich befolgt...

Ich habe immer nur einen hex file flash Befehl gesendet und vorhin
konnte mein Smartphone eine BT Verbindung aufbauen, was aber
bedeutet das im Speicher nur das Programm drin gewesen sein kann
was beim kauf schon da drin war, und das völlig unverändert seit dem 
Kauf!
Neu geflasht kann ich Ausschließen.

@pegel
Das Video hatte ich mir vor ein paar Tagen Angehört bei niedrigster 
Auflösung also
nicht gesehen, weil ich zur Zeit nur eine begrenzte mobile Internet 
Verbindung habe!

Dieser Befehl z.B.:
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg "program 
C:\bootloader.hex verify reset"; "shutdown";

ergibt folgendes in gekürzter Form
C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg "program C:\bootloader.hex 
verify reset"; "shutdown";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
        http://openocd.org/doc/doxygen/bugs.html
Unexpected command line argument: program C:\bootloader.hex verify 
reset;

Philipp K. schrieb:
> Wieso nicht das Originale Nordic Uploadtool wenn es nur eine
> Hexdatei
> ist?

Kenne ich nicht vielleicht zu Aufwändig. Ich habe nur einen ST-Link V2 
und 3,3V Arduinos
Ich brauche eigentlich nur den richtigen flash Befehl!
Die meisten Leute verwenden in dem Fall auch OpenOCD.

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg "program
> C:\bootloader.hex verify reset";

müsste da nicht ein -c rein?

... -f target/nrf51.cfg -c "program C:\bootloader.hex verify reset"; ...

von Philipp K. (philipp_k59)


Lesenswert?

ktfk schrieb:
> openocd -f
> interface/stlink-v2.cfg -f target/nrf51.cfg "program C:\bootloader.hex
> verify reset"; "shutdown";

so geht das auch nicht..

vielleicht eher so:
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:\bootloader.hex verify reset"; "shutdown";

Kein Plan also ich flashe mit der Original Software von Nordic, da kann 
man auch die Firmware neu flashen..

von ktfk (Gast)


Lesenswert?

@pegel
Das Video werde ich nochmal prüfen

@Philipp K.
Das Nordic Uploadtool kann ich mir noch Alternativ in ein
paar Tagen ansehen wenn ich mit OpenOCD nicht weiter komme.

pegel schrieb:
> ktfk schrieb:
>> openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg "program
>> C:\bootloader.hex verify reset";
>
> müsste da nicht ein -c rein?
>
> ... -f target/nrf51.cfg -c "program C:\bootloader.hex verify reset"; ...

Ich habe das -c raus genommen weil ich dachte es deaktiviert
die PC Rückmeldungen auf genau den Befehl davor.
welche Funktion hat -c eigentlich?

von pegel (Gast)


Lesenswert?

1
-c, --command <cmd>
2
    Add the command <cmd> to a list of commands executed on server startup. Note that you will need to explicitly invoke init if the command requires access to a target or flash.

von ktfk (Gast)


Lesenswert?

pegel schrieb:
> ktfk schrieb:
>> openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg "program
>> C:\bootloader.hex verify reset";
>
> müsste da nicht ein -c rein?
>
> ... -f target/nrf51.cfg -c "program C:\bootloader.hex verify reset"; ...

Ich hatte das -c wohl wo anders entfernt also nicht an dieser Stelle.

Ich habe das jetzt nochmal mit -c Getestet aber gleiches Ergebnis
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:\bootloader.hex verify reset"; "shutdown";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:\bootloader.hex verify reset"; "shutdown";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
        http://openocd.org/doc/doxygen/bugs.html
Unexpected command line argument: shutdown;

von ktfk (Gast)


Lesenswert?

Das -c hat doch was bewirkt.
Ich bin damit etwas weiter gekommen.

von pegel (Gast)


Lesenswert?

Vielleicht braucht das "shutdown;" auch noch ein -c, oder sollte in der 
vorigen Zeichenkette enthalten sein.

von ktfk (Gast)


Lesenswert?

nochmal ohne shutdown;
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:\bootloader.hex verify reset";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:\bootloader.hex verify reset";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to 
interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To 
override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
Info : clock speed 1000 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.249304
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Stlink adapter speed set to 950 kHz
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
** Programming Started **
Error: couldn't open Cootloader.hex
embedded:startup.tcl:439: Error: ** Programming Failed **
in procedure 'program'
in procedure 'program_error' called at file "embedded:startup.tcl", line 
504
at file "embedded:startup.tcl", line 439

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> Cootloader.hex

???

von ktfk (Gast)


Lesenswert?

Der PC hat selber C:\bootloader.hex nochmal wiederholt als Bestätigung 
und dann

Error: couldn't open Cootloader.hex

Geantwortet.
Befehl nochmal gesendet aber wieder

Error: couldn't open Cootloader.hex

von pegel (Gast)


Lesenswert?

Er interpretiert wohl das \B falsch.

leg die bootloader.hex an besten in dein Benutzerverzeichnis, wechsele 
dort hin, starte openocd von dort und gib die Datei ohne Pfad an.

Notfalls noch den openocd Pfad zu PATH hinzufügen.

von pegel (Gast)


Lesenswert?

\b = Backstep ?
Würde den Doppelpunkt verschwinden lassen.

von ktfk (Gast)


Lesenswert?

Ich hatte gerade keine Zeit zum schreiben

Ich habe das hex file jetzt nach Dokumente kopiert + umbenant zu X.hex 
und nochmal getestet mit und ohne Doppelpunkt
aber immer noch ähnliche Fehlermeldungen
Der Doppelpunkt hat das C in Cootloader.hex Verursacht.

pegel Danke für deine Hilfe, das hat mich jetzt schon viel weiter 
gebracht
auch ein Danke an Philipp K. und softwerker

Ich muss für Heute erstmal Schluss machen.
Morgen kann ich dann weiter testen

Grüße

von Johannes S. (Gast)


Lesenswert?

und mit forward slash '/' in den Dateinamen? Ich hatte auch schon 
unterschiedlich kompilierte OOCD Versionen die das jeweils anders haben 
wollten.

von ktfk (Gast)


Lesenswert?

Hallo
Ich habe eben nochmal weiter getestet mit C:/X.hex startet der flash 
Prozess aber mit Error.

cd C:\Program Files\OpenOCD-20200114-0.10.0\bin

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "program C:/X.hex verify 
reset";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to 
interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To 
override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
Info : clock speed 1000 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.249967
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Stlink adapter speed set to 950 kHz
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
** Programming Started **
Info : nRF51822-QFAA(build code: H0) 256kB Flash, 16kB RAM
Info : Flash write discontinued at 0x000007c0, next section at 
0x00001000
Warn : Adding extra erase range, 0x000007c0 .. 0x000007ff
Error: flash write algorithm aborted by target
Error: timed out while waiting for target halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x0001193e msp: 0x200039c8
Error: error waiting for target flash write algorithm
Error: Failed to write to nrf5 flash
Error: error writing to flash at address 0x00000000 at offset 0x00000000
embedded:startup.tcl:439: Error: ** Programming Failed **
in procedure 'program'
in procedure 'program_error' called at file "embedded:startup.tcl", line 
504
at file "embedded:startup.tcl", line 439


Hier steht das ein nrf51 mass_erase Befehl vor dem flashen dieses 
Problem lösen soll
https://devzone.nordicsemi.com/f/nordic-q-a/6918/programming-nrf51822-with-openocd-and-stlink-v2-issues


openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "nrf51 
mass_erase";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "nrf51 mass_erase";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to 
interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To 
override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
Error: The 'nrf51 mass_erase' command must be used after 'init'.


openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c init -c "nrf51 
mass_erase";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c init -c "nrf51 
mass_erase";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to 
interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To 
override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
Info : clock speed 1000 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.248372
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Stlink adapter speed set to 950 kHz
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Listening on port 3333 for gdb connections
Info : nRF51822-QFAA(build code: H0) 256kB Flash, 16kB RAM
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections

ab hier habe ich OpenOCD mit dem Taskmanager beendet

Nach dem letzten flash Versuch konnte ich nichts mehr in die Console 
eingeben
weil OpenOCD auf den start einer tcl oder Telnet Verbindung wartet und 
jede Eingabe in die Console blockiert
Ich musste OpenOCD mit dem Taskmanager beenden.

Der letzte Befehl war also auch nicht korrekt und nur von mir schnell 
zusammen gebastelt,
deswegen suche ich jetzt im Internet erstmal nach den richtigen 
Befehlen.

von ktfk (Gast)


Lesenswert?

Beim letzten Befehl fehlt vielleicht wieder -c
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c init -c "nrf51 
mass_erase";

so das "nrf51 mass_erase"; nicht Ausgeführt wurde und statt dessen genau 
dieser Befehl Interpretiert wurde

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg

Genau diese Befehl hatte auch bei meinen Tests vor ein par Tagen den 
Effekt
das OpenOCD auf eine tcl oder Telnet Verbindung wartet

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd

Nein, genau anders herum.

Ich meinte in den Ordner wechseln, in dem sich die hex Datei befindet, 
damit diese ohne Pfad angegeben werden kann.

openocd kann ruhig mit pfad aufgerufen werden, da das keine Probleme 
bereitet.

von ktfk (Gast)


Lesenswert?

Ich habe den ersten Befehl aus den ersten Beitrag von mir Heute 11:52
nochmal unverändert gesendet und der nRF51822 wurde diesmal Vollständig
Erfolgreich Geflasht aber OpenOCD hat danach wieder auf eine tcl oder
Telnet Verbindung gewartet und wurde von mir mit dem Taskmanager 
beendet.
Vielleicht fehlt noch der "shutdown"; Befehl am Ende oder ein andere 
Befehl.

cd C:\Program Files\OpenOCD-20200114-0.10.0\bin

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset";

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "program C:/X.hex verify 
reset";
Open On-Chip Debugger 0.10.0 (2020-01-14) 
[https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to 
interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To 
override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The 
results might differ compared to plain JTAG/SWD
Info : clock speed 1000 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.251459
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Stlink adapter speed set to 950 kHz
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0xfffffffe msp: 0xfffffffc
** Programming Started **
Info : nRF51822-QFAA(build code: H0) 256kB Flash, 16kB RAM
Info : Flash write discontinued at 0x000007c0, next section at 
0x00001000
Warn : Adding extra erase range, 0x000007c0 .. 0x000007ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Info : Flash write discontinued at 0x0001b4d8, next section at 
0x0003b000
Warn : Adding extra erase range, 0x0001b4d8 .. 0x0001b7ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x0003ed8c .. 0x0003efff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x10001000 .. 0x10001013
Warn : Adding extra erase range, 0x10001018 .. 0x100013ff
** Programming Finished **
** Verify Started **
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
** Verified OK **
** Resetting Target **
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections

von Johannes S. (Gast)


Lesenswert?

aber das ist dann doch ok, da könnte sich der gdb mit verbinden und dann 
kann man Befehle senden.
Oder 'reset run' als oocd command, statt nur 'reset'.

von ktfk (Gast)


Lesenswert?

pegel schrieb:
> ktfk schrieb:
>> C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd
>
> Nein, genau anders herum.
>
> Ich meinte in den Ordner wechseln, in dem sich die hex Datei befindet,
> damit diese ohne Pfad angegeben werden kann.
>
> openocd kann ruhig mit pfad aufgerufen werden, da das keine Probleme
> bereitet.

Ein Missverständnis

cd C:\Program Files\OpenOCD-20200114-0.10.0\bin

muss immer für den OpenOCD Programm Start Ausgefürt werden wenn man die 
Console öffnet
Für z.b.: unerfahrene Anfänger habe ich jetzt bloss alle Komandos 
Aufgelistet.

Johannes S. schrieb:
> aber das ist dann doch ok, da könnte sich der gdb mit verbinden
> und dann
> kann man Befehle senden.
> Oder 'reset run' als oocd command, statt nur 'reset'.

Ich werde das alles noch testen

Das könnte der richtige Befehl sein
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset"; "shutdown";

Ich war hier die ganze Zeit hauptsächlich eigentlich nur mit
Beitrag schreiben beschäftigt (Dokumentieren),
deswegen mach ich erstmal Pause vielleicht bis Morgen

von Johannes S. (Gast)


Lesenswert?

habe auch nochmal nachgesehen, nur 'reset' macht 'reset run'. Habe schon 
lange nix mehr mit oocd gemacht, BMP ist besser und einfacher. Kann man 
auf dem PC laufen lassen und STLink2/3 nutzen wie U. Bonnes schon öfter 
schrieb oder in ein BluePill flashen für eine standalonge debug probe.

von ktfk (Gast)


Lesenswert?

Dieser Befehl Funktioniert leider nicht
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset"; "shutdown";

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> cd C:\Program Files\OpenOCD-20200114-0.10.0\bin
>
> muss immer für den OpenOCD Programm Start Ausgefürt werden wenn man die
> Console öffnet

Deshalb mein Vorschlag mit der Windows PATH Systemvariable.
Wenn dort: C:\Program Files\OpenOCD-20200114-0.10.0\bin
angehängt wird, lässt sich openocd von überall ohne Pfad aufrufen.

von ktfk (Gast)


Lesenswert?

pegel schrieb:
> ktfk schrieb:
>> cd C:\Program Files\OpenOCD-20200114-0.10.0\bin
>>
>> muss immer für den OpenOCD Programm Start Ausgefürt werden wenn man die
>> Console öffnet
>
> Deshalb mein Vorschlag mit der Windows PATH Systemvariable.
> Wenn dort: C:\Program Files\OpenOCD-20200114-0.10.0\bin
> angehängt wird, lässt sich openocd von überall ohne Pfad aufrufen.

Stimmt jetzt fällt mir das auch wieder ein!

von pegel (Gast)


Lesenswert?

Das nennt sich bei Win "Umgebungsvariablen"

Da gibt es Systemvariablen/Path da würde das hinzufügen auf jeden Fall 
funktionieren und Benutzervariablen/PATH bei der ich nicht sicher bin.

von pegel (Gast)


Lesenswert?

Nach Änderung der Variablen, bitte Neustart nicht vergessen.

von ktfk (Gast)


Lesenswert?

> Das nennt sich bei Win "Umgebungsvariablen"
Ich weiß, das hatte ich auch alles Gelernt und bloß etwas Vergessen!
Aber gut das du das hier noch Angesprochen hast.

Ich müsste als nächstes erstmal selber herausfinden wie ich den
OTA Bootloader mit der Arduino IDE Verwenden kann, und
ob der OTA Bootloader überhaupt jetzt im Controller ist.

Das Flashen muss dann auch noch wiederholbar und
Zuverlässig klappen und darf keine Glückssache sein.

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> Arduino

Da bin ich komplett raus ....

von ktfk (Gast)


Lesenswert?

@pegel
Wieso?

von pegel (Gast)


Lesenswert?

Andere Welten, nicht meine.

von pegel (Gast)


Lesenswert?

Meine Umgebung war Linux, eclipse und openocd.
Habe dann aber die BT Aktivitäten eingestellt, mangels Handy.

von ktfk (Gast)


Lesenswert?

Achso

> Habe dann aber die BT Aktivitäten eingestellt, mangels Handy.
Die nRF52 und nRF51 können aber auch zwischen einander Komunizieren
und mit PC, Notebook, Handy und Smartphone.

oder meintest du was anderes?

von ktfk (Gast)


Lesenswert?

In der Vergangenheit. Ach so

von Christopher J. (christopher_j23)


Lesenswert?

ktfk schrieb:
> Dieser Befehl Funktioniert leider nicht
> openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program
> C:/X.hex verify reset"; "shutdown";

Probiers stattdessen mal mit
1
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program C:/X.hex verify reset exit"
und lass das "shutdown" weg.

von pegel (Gast)


Lesenswert?

ktfk schrieb:
> Die nRF52 und nRF51 können aber auch zwischen einander Komunizieren

Theoretisch schon, dachte ich auch mal.
Ich hatte auch die QFAA Variante, die hat dafür zu wenig Speicher, 
jedenfalls für die zu der Zeit aktuelle Firmware.

Meine Idee war damals mehrere "Schlüsselfinder" mit LED und Piepser als 
Liste auf einem Win10 Tablet darzustellen/auszuwählen.
Eine Rückmeldung "Batterie schwach" oder "außer Reichweite" sollte auch 
dabei sein.

Aber schon um die BT Parameter zu testen gab es nur Handy Apps.

von ktfk (Gast)


Lesenswert?

Christopher J. schrieb:
> Probiers stattdessen mal mitopenocd -f interface/stlink-v2.cfg -f
> target/nrf51.cfg -c "program C:/X.hex verify reset exit"
> und lass das "shutdown" weg.

toll Danke der Befehl funktioniert noch besser!
nach dem reset exit kann ich sofort weitere Befehle
eingeben und brauche jetzt kein Taskmanager mehr zum beenden.

Allerdings hat der Befehl 2 mal Funktioniert (mit init + nrf51 
mass_erase vorweg genau wie bei mir gestern)
und 2 mal nicht Funktioniert (ohne init + nrf51 mass_erase vorweg)
Der gekürzt Fehlversuch ohne init + nrf51 mass_erase vorweg

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset exit"

** Programming Started **
Info : nRF51822-QFAA(build code: H0) 256kB Flash, 16kB RAM
Info : Flash write discontinued at 0x000007c0, next section at 
0x00001000
Warn : Adding extra erase range, 0x000007c0 .. 0x000007ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0x000007c0
Info : Flash write discontinued at 0x0001b4d8, next section at 
0x0003b000
Warn : Adding extra erase range, 0x0001b4d8 .. 0x0001b7ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0x000007c0
Warn : Adding extra erase range, 0x0003ed8c .. 0x0003efff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0x000007c0
Warn : Adding extra erase range, 0x10001000 .. 0x10001013
Warn : Adding extra erase range, 0x10001018 .. 0x100013ff
Error: The chip was not pre-programmed with SoftDevice stack and UICR 
cannot be erased separately. Please issue mass erase before trying to 
write to this region
Error: failed erasing sectors 0 to 0
** Programming Failed **
shutdown command invoked

C:\Program Files\OpenOCD-20200114-0.10.0\bin>

Wenn ich ein init + nrf51 mass_erase Befehl vorher sende dann 
Funktioniert dein Befehl

Alles gekürzt
openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c init -c "nrf51 
mass_erase"; -c "reset exit"

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c "program 
C:/X.hex verify reset exit"

C:\Program Files\OpenOCD-20200114-0.10.0\bin>openocd -f 
interface/stlink-v2.cfg -f target/nrf51.cfg -c "program C:/X.hex verify 
reset exit"
** Programming Started **
Info : nRF51822-QFAA(build code: H0) 256kB Flash, 16kB RAM
Info : Flash write discontinued at 0x000007c0, next section at 
0x00001000
Warn : Adding extra erase range, 0x000007c0 .. 0x000007ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Info : Flash write discontinued at 0x0001b4d8, next section at 
0x0003b000
Warn : Adding extra erase range, 0x0001b4d8 .. 0x0001b7ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x0003ed8c .. 0x0003efff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x10001000 .. 0x10001013
Warn : Adding extra erase range, 0x10001018 .. 0x100013ff
** Programming Finished **
** Verify Started **
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
** Verified OK **
** Resetting Target **
shutdown command invoked

C:\Program Files\OpenOCD-20200114-0.10.0\bin>

Das hatte so mit dem init + nrf51 mass_erase Befehl vorher senden 2 mal 
Funktioniert

Flashen geht nicht ohne nrf51 mass_erase und nrf51 mass_erase nicht
ohne init das hat OCD gestern ganz klar so mitgeteilt

Error: The 'nrf51 mass_erase' command must be used after 'init'.

und ganz wichtig hier
Error: The chip was not pre-programmed with SoftDevice stack and UICR 
cannot be erased separately. Please issue mass erase before trying to 
write to this region

Also erst init + nrf51 mass_erase und dann SoftDevice
flashen und dann den Bootloader oder so ähnlich, ich weiß es gerade 
nicht?

Oder waren die erfolgreichen Flash Versuche schon ausreichend?

von ktfk (Gast)


Lesenswert?

Ich habe nochmal kurz etwas kombiniert

openocd -f interface/stlink-v2.cfg -f target/nrf51.cfg -c init -c halt 
-c "nrf51 mass_erase"; -c "program C:/X.hex verify reset exit"

** Programming Started **
Info : Flash write discontinued at 0x000007c0, next section at 
0x00001000
Warn : Adding extra erase range, 0x000007c0 .. 0x000007ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Info : Flash write discontinued at 0x0001b4d8, next section at 
0x0003b000
Warn : Adding extra erase range, 0x0001b4d8 .. 0x0001b7ff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x0003ed8c .. 0x0003efff
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000001e msp: 0xfffffffc
Warn : Adding extra erase range, 0x10001000 .. 0x10001013
Warn : Adding extra erase range, 0x10001018 .. 0x100013ff
** Programming Finished **
** Verify Started **
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0xfffffffc
** Verified OK **
** Resetting Target **
shutdown command invoked

C:\Program Files\OpenOCD-20200114-0.10.0\bin>

Der Befehl hat 3 mal hintereinander sofort Funktioniert.
Vielleicht habe ich den gesuchten flash Befehl jetzt gefunden.

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.