Forum: Compiler & IDEs Erste Schritte mit nRf51822/51422


von Micha W. (cysign)


Lesenswert?

Hallo zusammen,

ich versuche bereits seit über einer Woche vergeblich einen nRF51422 
(kompatibel mit nRF51422) mit einem Blink-Beispiel zu flashen, um per 
Status-Low-Current-LED (hierzu muss ich den High-DriveMode auf Pins 12 
und 13 aktivieren) zu verifizieren, dass des Flashen geklappt hat.

Einerseits weiß ich nicht, ob mein Blink-Beispiel wirklich funktioniert, 
andererseits weiß ich nicht, ob der Upload funktioneirt.

Als Toolchain nutze ich VisualStudio 15 Community mit der 30-Tage 
Testversion von VisualGDB. Beim Testen (Debug-Settings, Test 
OpenOCD-Settings) bekomme ich folgende Ausgabe:
1
C:\Users\cysig\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -c "adapter_khz 1000" -f interface/ftdi/jtag-lock-pick_tiny_2.cfg -c "transport select swd" -f target/nrf51.cfg -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"
2
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
3
Licensed under GNU GPL v2
4
For bug reports, read
5
  http://openocd.org/doc/doxygen/bugs.html
6
adapter speed: 1000 kHz
7
Info : FTDI SWD mode enabled
8
swd
9
cortex_m reset_config sysresetreq
10
adapter speed: 1000 kHz
11
Info : clock speed 1000 kHz
12
Info : SWD DPIDR 0x0bb11477
13
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
14
nrf51.cpu: target state: halted
15
target halted due to debug-request, current mode: Thread 
16
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48
17
VisualGDB_OpenOCD_Ready
18
Info : accepting 'telnet' connection on tcp/4444
19
shutdown command invoked
20
Info : dropped 'telnet' connection

Da Breakpoints erkannt werden, gehe ich eigentlich davon aus, dass die 
Kommunikation über meinen Debugger, ein jTag Lock-Pick Tiny2 (das war 
erstmal ein Treiberkrampf...den ich nur mit Zadig lösen konnte) per SWD, 
funktionieren sollte.

Auch bei der Auswahl des Chips, dem nRF51422_XXAA bin ich mir ziemlich 
sicher, dass es sich hier um keine falsche Einstellung handelt. Ich 
verwende das Modul N550M8cc von Dynastream. Hierauf ist ein 
nRF51422-CEAA, V3 mit 16KB Ram verbaut, welcher problemlos mit der 
entsprechenden Bluetooth-Firmware beschrieben werden können sollte 
(51822=Bluetooth only, 51422=kompatibel mit ANT (vorinstalliert) und 
Bluetooth).




Alternativ zu diesem Modul habe ich ein nRF51822-Modul aus Asien, auf 
dem µC selbst steht: n51822 QFACA1 1526DA.
Weitere Infos hierzu sind mir leider nicht bekannt.



Da ich sowohl was Arm, als auch was VisualStudio und VisualGDB anbelangt 
Neulich bin, verzweifle ich langsam an den Versuchen, den Chip zu 
flashen.

Aktuell überlege ich mit einen ST-Link V2 zu bestellen, da ich vermute, 
dass es Probleme mit dem jTag Lock Pick Tiny2 gibt (nicht so weit 
verbreitet, auch wenns laut Beschreibung eigentlich ein interessantes 
Stück Hardware sein sollte).


Gibts hier vielleicht einen VisualGDB-Guru oder einen 
nRF51-Spezialisten, der mir auf die Sprünge helfen kann?
Sobald ich mit meiner blinkenden LED die Funktion der Toolchain und das 
Flashen an sich verifizieren kann, komme ich sicherlich selbst weiter.

von hp-freund (Gast)


Lesenswert?

Willst Du bei Win und irgend welchen Testversionen bleiben?

Wenn nicht, ich hatte schon einmal auf eine, wie ich finde, sehr gute 
Video Tutorial Reihe bezüglich nRF51822 verwiesen:

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

von Micha W. (cysign)


Lesenswert?

Leider muss ich gezwungenermaßen grade bei Windows bleiben, da ich 
einige Tools wie Cubase, Illustrator und Photoshop nutze (und teuere 
Lizenzen gekauft habe - eine Alternative zu diesen Tools unter Linux 
gibts für mich leider nicht).
Für eine Dual-Boot-Option ist meine SSD leider zu klein.

Die Testversion kann ja für ein paar Taler auch in eine Vollversion 
umgewandelt werden - wenn sie denn macht, was sie soll ;)


Aus deinem Video konnte ich nun die richtige Ausführung meines 
nRF51822-Chips entnehmen und im VisualGDB-Projekt selektieren.

Leider hat das auch nicht geholfen, um den µC richtig zu beschreiben

: Bearbeitet durch User
von hp-freund (Gast)


Lesenswert?

Es kommt sicher darauf an wie komfortabel Du es haben willst.
Den gcc und openocd gibt es auch für Win.

Es reicht auch ein normaler Texteditor für die Quelltexte.
Oder auch eclipse, wird im video später eingerichtet.

In den ca. 20 video Folgen ist sehr viel nützliches was auch nicht 
unbedingt OS Abhängig ist.

von hp-freund (Gast)


Lesenswert?

Micha W. schrieb:
> Leider hat das auch nicht geholfen, um den µC richtig zu beschreiben

Dann ist es sicher eine gute Idee den openocd mit -d3 für mehr Infos 
aufzurufen um zu sehen wo es hakt.

von Micha W. (cysign)


Lesenswert?

Ich habe nun als Output folgendes von OpenOCD erhalten:
1
Error: failed erasing sectors 0 to 124
2
Error: flash_erase returned -4
3
nrf51.cpu: target state: halted
4
target halted due to debug-request, current mode: Thread 
5
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48
6
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
7
Licensed under GNU GPL v2
8
For bug reports, read
9
        http://openocd.org/doc/doxygen/bugs.html
10
Info : FTDI SWD mode enabled
11
swd
12
cortex_m reset_config sysresetreq
13
adapter speed: 1000 kHz
14
Info : clock speed 1000 kHz
15
Info : SWD DPIDR 0x0bb11477
16
Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
17
nrf51.cpu: target state: halted
18
target halted due to debug-request, current mode: Thread 
19
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48
20
VisualGDB_OpenOCD_Ready
21
Info : accepting 'gdb' connection on tcp/53307
22
Info : nRF51822-QFAC(build code: A1) 256kB Flash
23
nrf51.cpu: target state: halted
24
target halted due to debug-request, current mode: Thread 
25
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48
26
nrf51.cpu: target state: halted
27
target halted due to debug-request, current mode: Thread 
28
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48
29
Error: Cannot erase protected sector at 0x0
30
Error: failed erasing sectors 0 to 124
31
Error: flash_erase returned -4
32
nrf51.cpu: target state: halted
33
target halted due to debug-request, current mode: Thread 
34
xPSR: 0xc1000000 pc: 0x00012b98 msp: 0x20001c48


Auch habe ich gelesen, dass mal ggf. die Lockbits setzen muss, um den 
Chip beschrieben zu können.
Ich mach mich dann mal auf die Suche nach Infos dazu ;)

von hp-freund (Gast)


Lesenswert?

Micha W. schrieb:
> Error: Cannot erase protected sector at 0x0

Ich glaube im Zusammenhang mit nrf51 habe ich etwas von einem patch für 
openocd gelesen.

von hp-freund (Gast)


Lesenswert?

Geht wohl in diese Richtung:

https://sourceforge.net/p/openocd/tickets/112/

von hp-freund (Gast)


Lesenswert?

Probiere einfach mal die Weihnachtsversion:

https://sourceforge.net/projects/openocd/files/openocd/0.10.0-rc1/

von Micha W. (cysign)


Lesenswert?

Nicht so einfach... VisualGDB zieht sich seine eigene Version von 
OpenOCD runter. Ich muss mal schauen, wie ich das da hinfummeln kann.

Ansonsten müsste es doch auch so gehen, dass ich irgendwie in 
VisualStudio mit VisualGDB kompiliere, aber per CLI das ganze per 
OpenOCD flashe?

von hp-freund (Gast)


Lesenswert?

Unter Win habe ich das noch nie gemacht, in Linux starte ich openocd 
einfach ein einem anderen Konsolenfenster und fertig.

von Jim M. (turboj)


Lesenswert?

Micha W. schrieb:
> Status-Low-Current-LED (hierzu muss ich den High-DriveMode auf Pins 12
> und 13 aktivieren) zu verifizieren, dass des Flashen geklappt hat.

Nö. Normal drive reicht für LEDs aus, wenn Du nicht grade im prallen 
Sonnenlicht arbeitest.

> Aktuell überlege ich mit einen ST-Link V2 zu bestellen

Ganz blöde Idee. Bestelle Dir lieber eins der Dynastream SDKs, da ist 
ein funktioierender JLink Light mit drin. Der ermöglich das Unlocken mit 
dem Nordic nrfGo Studio.

Die Dynastrem Module werden gelockt und mit ANT+ Software ausgeliefert, 
neuere Batches enthalten aber einen Bootloader - allerdings ebenfalls 
ANT+.

Ich sehe aber eine "nrf51 mass_erase" funktion für NRF51 flash, die auch 
in Deiner OpenOCD Version verfügbar sein müsste.


Micha W. schrieb:
> Nicht so einfach... VisualGDB zieht sich seine eigene Version von
> OpenOCD runter. Ich muss mal schauen, wie ich das da hinfummeln kann.

Binary suchen und als Admin neue Binaries (eventuell mit DLLs) drüber 
braten. Wo ist das Problem...?

von hp-freund (Gast)


Lesenswert?

Jim M. schrieb:
> Ich sehe aber eine "nrf51 mass_erase" funktion für NRF51 flash, die auch
> in Deiner OpenOCD Version verfügbar sein müsste.

Hast Recht.
Die habe ich glatt vergessen bzw. verdrängt.
Das habe ich auch zuerst machen müssen.

von Micha W. (cysign)


Lesenswert?

Hey, super Infos!

Wie ewrden die Lockbits denn gesetzt?

Mit einem "nrf51 mass_erase" werden die dann einmalig gelöscht und sind 
so lange deaktiviert, bis ich die explizit wieder setze?

Spannend, dass ihr euch mit der Materie so gut auskennt :)

von hp-freund (Gast)


Lesenswert?

Micha W. schrieb:
> bis ich die explizit wieder setze?

Ich kann jetzt ohne Einschränkung flashen.
Deshalb vermutlich nicht mehr daran gedacht :-(

von Micha W. (cysign)


Lesenswert?

Mein erster Fortschritt seit Tagen.
Den nRF51822 habe ich geflasht bekommen und einen low/high-Toggle 
initiiert.

Jetzt versuche ich das selbe beim nRF51422.
Ich habe OpenOCD per Win10-SuperShell gestartet und konnte mich auch per 
Telnet (hier nutze ich Putty) verbinden.
1
Open On-Chip Debugger
2
> nrf51 mass_erase
3
nRF51822-CEAA(build code: C0) 256kB Flash
4
Target not halted
5
6
> halt
7
Halt timed out, wake up GDB.
8
timed out while waiting for target halted

Irgendwie mag der nRF51422 nicht ganz auf das lauschen, was ich ihm 
erzähle.

Kann ich den nrf51 mass_erase auch irgendwie anderst ausführen? 
Vielleicht zeitgleich mit dem Aufruf von OpenOCD?

: Bearbeitet durch User
von hp-freund (Gast)


Lesenswert?

Versuch mal:

reset halt

von Micha W. (cysign)


Lesenswert?

Danke, da bin ich auch grade drauf gekommen:
1
> reset halt
2
nrf51.cpu: target state: halted
3
target halted due to debug-request, current mode: Thread
4
xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
5
> nrf51 mass_erase
6
>


Danke für euere Hilfe!

Ich werd jetzt versuchen mit dem jTag Lock-Pick Tiny 2 weiter zu kommen 
;)

von Olaf (Gast)


Lesenswert?

Ich nutze die Teile sowohl unter Linux wie Winbloed und kann sie 
normalerweise mit dem J-Link problemlos flashen/debuggen.

Aber auch ich hatte schonmal einen der gelockt war und wo man erst die 
Lockbits loeschen muss. Fuer J-Link wird es hier ganz gut erklaert:

https://bitknitting.wordpress.com/2015/09/25/finally-the-ladybug-blue-lite-can-blink/


Olaf

von jimbob (Gast)


Lesenswert?

Micha W. schrieb:
> Alternativ zu diesem Modul habe ich ein nRF51822-Modul aus Asien, auf
> dem µC selbst steht: n51822 QFACA1 1526DA.
> Weitere Infos hierzu sind mir leider nicht bekannt.

Das ist doch die 32KB-RAM-Variante. Wo hast Du die her?
Ich habe gerade Module bestellt, die sind mit dem QFAA bestückt, der hat 
leider nur 16KB.

Hast Du da einen Link?
Danke und guten Rutsch!

von Micha W. (cysign)


Lesenswert?

Sorry, ich hab grade meine kompletten eBay- und Aliexpress-Accounts 
durchsucht und nichts gefunden :(

Sonst schreib die Händler einfach an, bevor du orderst ;)

Viel Spaß beim Basteln auch im neuen Jahr!

von Micha W. (cysign)


Lesenswert?

Da sucht man stundelnang vergeblich mehrere Seiten eBay- und 
Aliexpress-Bestellungen ab...um dann zwei Tage später beim Schreiben 
einer Rezension auf Amazon zufällig festzustellen, dass man dort 
geordert hatte:

https://www.amazon.de/dp/B00SSSZX7Q/ref=cm_cr_ryp_prd_ttl_sol_20

PIXNOR Waveshare BLE4.0 Bluetooth 2.4G Wireless Modul nRF51822 Wireless 
Communication Board (blau)

Ich hoffe, das hilft ;)

von hp-freund (Gast)


Lesenswert?

Laut Beschreibung aber nur:

-256kB flash 16kB RAM.

Ist wohl ein Glücksspiel.

von Micha W. (cysign)


Lesenswert?

Es ist doch oft so, dass die günstigen Anbieter aus Asien selbst nicht 
wissen, was sie verkaufen ;)
Hauptsache viel und günstig...

Ich hab mal ne Weile versuche ein HM-10 mit TI CC2540 zu bekommen. Ich 
hab bestimmt bei 6 verschiedenen Händlern bestellt - und immer was der 
CC2541 drauf.
Klar, gab zumindest das Geld zurück..aber wochenlang gewartet hab ich 
dennoch, um das Projekt hinterher aufzugeben.

Aber glücklicherweise bin ich dadurch dann beim nRF51 gelandet, der viel 
besser zu meinen Bedürfnissen passt!

von hp-freund (Gast)


Lesenswert?

Ich habe meine von hier:
ebay 272428220791

das waren die QFAA also 16k RAM.

Das wäre ein schönes Projekt für nRF51822:
https://www.youtube.com/watch?v=0L-zfQSA9tc

Sollte allerdings ein Jahr und nicht nur 9 Tage laufen.
Wenn CR2032 oder Akku leer werden sollte es sich auch melden.
Ich habe auch irgendwo runde nRF Platinen in der Größe von CR2032 
gesehen, da braucht dann nur noch ein Piezo dran.

Schauen wir mal ...

von hp-freund (Gast)


Lesenswert?

https://www.alibaba.com/product-detail/iBeacon-Tag-Nordic-NRF51822-bluetooth-low_60478718741.html

Scheint aber als ob nicht mal Pins für den Piezo da sind.
Auch der G-Sensor ist "optional".

von Micha W. (cysign)


Lesenswert?

Und schwupps, muss ich diesen Thread nochmal ausgraben.

Ich bin es von den mir bisher bekannten Mikrokontrollern gewohnt, dass 
der Code anfängt zu laufen, sobald ich meinem µC Strom gebe.

Beim nRF51 schaff ichs aber nur den Code laufen zu lassen, wenn ich das 
Debugging starte.

Wie heißen denn die passenden Suchbegriffe dafür? ;)

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.