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:
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.
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
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
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.
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.
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 ;)
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.
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?
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...?
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.
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 :)
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?
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
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!
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!
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 ;)
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!
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 ...
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? ;)