Forum: Mikrocontroller und Digitale Elektronik Pico gelöscht - wie?


von Peter N. (alv)


Lesenswert?

Hi

Ich experimentiere mit Raspberry Pi Pico und PicoMite.

Ich habe es jetzt schon mehrfach geschafft den Source im Pico zu 
löschen, und weiß nicht wie.
Manchmal kam vorher eine Fehlermeldung "invalid address - resetting", 
aber jetzt geht es auch ganz ohne Fehlermeldung...

Was könnte der Pico mir übelnehmen?

Den Source irgendwie wiederholen geht wohl nicht?

Wie kann ich den Source (mittels PuTTY) auf den PC übertragen?

von Andreas B. (bitverdreher)


Lesenswert?

Peter N. schrieb:
> Was könnte der Pico mir übelnehmen?

Schlechte Stromversorgung z.B.

von Peter N. (alv)


Lesenswert?

Andreas B. schrieb:
> Peter N. schrieb:
>> Was könnte der Pico mir übelnehmen?
>
> Schlechte Stromversorgung z.B.

Die läuft über USB aus dem PC, und Stromausfall sollte der Source im 
Flash doch überstehen. PicoMite übersteht es ja auch.

von olaf (Gast)


Lesenswert?

> Was könnte der Pico mir übelnehmen?

Dein Programm koennte es beim Absturz schaffen die Loeschroutine
im Rom aufzurufen die gebraucht wird um ueber USB neue Daten
reinzuflashen.


Olaf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter N. schrieb:
> Andreas B. schrieb:
>> Peter N. schrieb:
>>> Was könnte der Pico mir übelnehmen?
>> Schlechte Stromversorgung z.B.
> Die läuft über USB aus dem PC
Also doch: schlechte Stromversorgung.

> Die läuft über USB aus dem PC
Im Zweifelsfall mit lausigem Kabel und wackliger Buchse.

> und Stromausfall sollte der Source im Flash doch überstehen.
Im Flash ist kein Sourcecode. Da drin ist das reine Compilat.

olaf schrieb:
> die Loeschroutine im Rom aufzurufen
Da muss nicht mal eine Löschroutine aufgerufen werden. Es reicht aus, 
wenn durch dumme Zufälle die Ladungspumpe zum Löschen eingeshaltet wird. 
Frag mal einen alten gestandenen Atmel-Anwender, ob ihm was zur 
EEPROM-Adresse 0 einfällt...

von Norbert (Gast)


Lesenswert?

Lothar M. schrieb:
>> Die läuft über USB aus dem PC
> Also doch: schlechte Stromversorgung.

Tja, wenn da nicht noch (auf der Pi Pico Platine) ein kompletter 5.0V 
auf 3.3V Regler dahinter wäre.
Wenn die PC Stromversorgung so dermaßen schlecht wäre, würde der PC wohl 
kaum laufen.

von J. S. (jojos)


Lesenswert?

es gibt zwar durchaus schlechte USB Kabel, aber so ein Pico (alleine) 
zieht ja nicht soviel wie z.B. der ESP wo das eher ein Problem sein 
kann.
Ich würde auch auf ein Software Problem tippen, das z.B. der Speicher 
voll läuft und ein Reset ausgelöst wird wenn dann der Stack kaputt 
geschrieben wird. Kann man freien Speicher zyklisch ausgeben lassen?

von Rene K. (xdraconix)


Lesenswert?

Hast du den Bootloader vom Flash gelöscht?! Wie ist denn der BOOTSEL 
geroutet? Geht dieser direkt auf den Flash Baustein?

Normalerweise kommst du an den UF2 Bootloader vom Flash garnicht ran 
bzw. kannst diesen gar nicht überschreiben - da dieser fest eingebrannt 
ist.

von Steve van de Grens (roehrmond)


Lesenswert?

Peter N. schrieb:
> Stromausfall sollte der Source im Flash doch überstehen

Flash Speicher reagieren ziemlich empfindlich auf instabile 
Stromversorgung, auch wenn in dem Moment nur lesen zugegriffen wurde.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Norbert schrieb:
> Wenn die PC Stromversorgung so dermaßen schlecht wäre, würde der PC wohl
> kaum laufen.
Das mit "wacklige Buchse" und "schlechtem Kabel" hast du zur Kenntnis 
genommen?

> Tja, wenn da nicht noch (auf der Pi Pico Platine) ein kompletter 5.0V
> auf 3.3V Regler dahinter wäre.
Der hilft auch nichts, wenn die Spannung sporadisch unter 3V sinkt.

Peter N. schrieb:
> Ich habe es jetzt schon mehrfach geschafft den Source im Pico zu löschen
Und wie? Da sollte dir ja irgendwann mal eine Gemeinsamkeit im Ablauf 
auffallen. Oder machst du das nach dem Motto: "Man kann einen Fehler 
nicht oft genug wiederholen, bis man ihn perfekt beherrscht!"

> Wie kann ich den Source (mittels PuTTY) auf den PC übertragen?
Lies mal dort: 
https://blog.usedbytes.com/2021/12/pico-serial-bootloader/

: Bearbeitet durch Moderator
von Christian (Gast)


Lesenswert?

Lothar M. schrieb:

> Lies mal dort:
> https://blog.usedbytes.com/2021/12/pico-serial-bootloader/

Er braucht doch nur die Boottaste drücken, dann meldet sich der Pico als 
Laufwerk beim PC an. Die zu flashende Datei rüberschieben fertig.

von m.n. (Gast)


Lesenswert?

Lothar M. schrieb:
> Im Flash ist kein Sourcecode. Da drin ist das reine Compilat.

Wenn sich nichts geändert hat, liegt im Flash der Interpreter und das 
Anwendungsprogramm im RAM. Das Anwendungsprogramm kann man auf eine 
SD-Karte schreiben und wieder laden.

Die ganzen "klugen" Ratschläge wegen schlechter Stromversorgung sind 
frei erfunden. Norbert hat es bereits erklärt:
> Tja, wenn da nicht noch (auf der Pi Pico Platine) ein kompletter 5.0V
> auf 3.3V Regler dahinter wäre.

@TO: Mag sein, daß PicoMite irgendwo instabil läuft, aber den Fehler 
mußt Du wohl noch öfter bekommen müssen und mehr Anhaltspunkte sammeln.
Auf jeden Fall solltest Du den Quellcode auf einer SD-Karte sichern.

von Norbert (Gast)


Lesenswert?

Lothar M. schrieb:
> Das mit "wacklige Buchse" und "schlechtem Kabel" hast du zur Kenntnis
> genommen?
Ja klar, das kam von dir und nicht vom TE.
Nichts davon hat der TE erwähnt.

> Der hilft auch nichts, wenn die Spannung sporadisch unter 3V sinkt.
Dann würde er komplett abschmieren und die Terminal Verbindung zum PC 
abbrechen.
Auch davon hat der TE nichts geschrieben.

von m.n. (Gast)


Lesenswert?

Norbert schrieb:
>> Der hilft auch nichts, wenn die Spannung sporadisch unter 3V sinkt.
> Dann würde er komplett abschmieren und die Terminal Verbindung zum PC
> abbrechen.

Der Schaltregler auf der Platine arbeitet sogar schon ab 1,8 V.
Schönes Teil - zumindest in dieser Beziehung ;-)

von Rene K. (xdraconix)


Lesenswert?

m.n. schrieb:
> Wenn sich nichts geändert hat, liegt im Flash der Interpreter und das
> Anwendungsprogramm im RAM. Das Anwendungsprogramm kann man auf eine
> SD-Karte schreiben und wieder laden.

Nein, wie kommst du darauf?! Welcher Interpreter denn? Der Pico hat 
einen Off-Chip Flash und einen internal ROM, welcher einen fest 
gebrannten UF2 Bootloader hat. Das ist im grunde ein normaler Cortex M0.

EDIT:
Natürlich ein internes ROM und nicht Flash...

Im übrigen bootet der RP2040 zuerst vom QPI Flash. Wenn sich dort nach 
0,5sec nix meldet bootet er vom ersten SPI, meldet sich dort ebenso 
nichts, bootet er von USB - so das man mit PicoTool direkt ohne flash 
booten kann.

Und vom SRAM: sollte er von SPI oder Serial oder USB booten (nicht QPI), 
lädt er sich die ersten 256byte in den RAM, führt dort einen CRC aus um 
die Daten zu validieren und booteten dann von der Startadresse, aber 
nicht aus dem RAM sondern vom Flash, Serial, EEPROM oder USB oder 
whatever.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

der TO hat PicoMite drauf, was wohl ein Basic Interpreter ist. Und da 
kann man schon irgendwie in einen Kaltstart mit Löschen rein kommen.

von Rene K. (xdraconix)


Lesenswert?

J. S. schrieb:
> der TO hat PicoMite drauf, was wohl ein Basic Interpreter ist. Und
> da
> kann man schon irgendwie in einen Kaltstart mit Löschen rein kommen.

Ahhhh... danke für die Info :-D Gut okay... da hab ich das natürlich 
falsch interpretiert.

von Peter N. (alv)


Lesenswert?

Wacklige Kabel und Buchse: Der Pico ist noch neu und um das USB-Kabel 
aus der Pico-Buchse zu ziehen, muß ich mich schon anstrengen.

VSYS habe ich nochmal extra mit einen 1000µF-Elko abgestützt.

m.n. schrieb:
> @TO: Mag sein, daß PicoMite irgendwo instabil läuft, aber den Fehler
> mußt Du wohl noch öfter bekommen müssen und mehr Anhaltspunkte sammeln.
> Auf jeden Fall solltest Du den Quellcode auf einer SD-Karte sichern.

2* ist es (mit der Fehlermeldung) auf 2 verschiedenen Picos aufgetreten, 
als ich das Beispielprogramm aus dem PicoMite-Manual zur Abfrage von 
IR-FBs ausprobiert hatte, beim Abspeichern mit F1 im Editor.
Da habe ich einen Fehler im internen IR-Dekoder vermutet.

Dann ist es nochmal aufgetreten, als ich mit MMEdit rumprobiert habe 
(das hatte aber noch gar keine serielle Verbindung zum Pico).

Lothar M. schrieb:
>> und Stromausfall sollte der Source im Flash doch überstehen.
> Im Flash ist kein Sourcecode. Da drin ist das reine Compilat.

Ich habe kein Compilat. Im Pico läuft PicoMite, ein Interpreter für 
MMBasic.
Das Source ist dann der Basic-Code, der ist auch im Pico.

Christian schrieb:
> Er braucht doch nur die Boottaste drücken, dann meldet sich der Pico als
> Laufwerk beim PC an. Die zu flashende Datei rüberschieben fertig.

PicoMite ist bereits geflasht.

m.n. schrieb:
> Wenn sich nichts geändert hat, liegt im Flash der Interpreter und das
> Anwendungsprogramm im RAM. Das Anwendungsprogramm kann man auf eine
> SD-Karte schreiben und wieder laden.

Ist das Ram nichtflüchtig? Wenn nicht, dann liegt der Source auch im 
Flash, denn er übersteht auch Trennung von der Versorgungsspannug.

Der Flash wird auch nicht vollständig gelöscht, denn PicoMite ist 
weiterhin funktionstüchtig drin.

Nur der Basicsource ist weg.

Eine SD-Karte habe ich (noch) nicht dran.

Lothar M. schrieb:
>> Wie kann ich den Source (mittels PuTTY) auf den PC übertragen?
> Lies mal dort:
> https://blog.usedbytes.com/2021/12/pico-serial-bootloader/

Ich will ja micht im Bootloader rumpfuschen, sondern nur der Sourcetext 
aus dem Pico auslesen und auf dem PC abspeichern.

von m.n. (Gast)


Lesenswert?

Peter N. schrieb:
> Ist das Ram nichtflüchtig? Wenn nicht, dann liegt der Source auch im
> Flash, denn er übersteht auch Trennung von der Versorgungsspannug.

Das RAM ist "flüchtig", wird aber auf jeden Fall benötigt und das 
Programm zu edieren. Kann und muß wohl sein, daß es irgendwann auch ins 
Flash geschrieben wird.
Vermutlich läuft da etwas falsch.

von Matthias 🟠. (homa)


Lesenswert?

Peter N. schrieb:
> Der Flash wird auch nicht vollständig gelöscht, denn PicoMite ist
> weiterhin funktionstüchtig drin.
>
> Nur der Basicsource ist weg.
>
> Eine SD-Karte habe ich (noch) nicht dran.

Ich weiß ja nicht welche Version Du nutzt, aber die aktuelle PicoMite 
firmware V5.07.06 ist recht stabil. Zudem hat diese ein internes 
Laufwerk als A:/ im Flash. Die Speicher-Slots sind reduziert auf 5!
Eine externe SD wird dort ab sofort als Laufwerk B:/ angesprochen.

Du solltest deinen Code als in einem SLOT speichern: flash save 1
dann: flash list
und: flash load 1

oder aber: save "mycode.bas"
und dann: files
mit: load "mycode.bas"

um das Flash-Laufwerk zu nutzen!

Ach so und der Befehl: new
löscht den Programmspeicher! Evtl. ist das dein Problem?!

: Bearbeitet durch User
von Peter N. (alv)


Lesenswert?

Matthias 🟠. schrieb:
> Ich weiß ja nicht welche Version Du nutzt, aber die aktuelle PicoMite
> firmware V5.07.06 ist recht stabil.

Ich habe hier ein V5.07.04.uf2 auf Platte. Wahrscheinlich ist das auf 
dem Pico.

Matthias 🟠. schrieb:
> Ach so und der Befehl: new
> löscht den Programmspeicher! Evtl. ist das dein Problem?!

Den habe ich weder eingegeben, noch im Programm benutzt.

Matthias 🟠. schrieb:
> Du solltest deinen Code als in einem SLOT speichern: flash save 1
> dann: flash list
> und: flash load 1

Mit den Slots habe ich noch etwas Verständnisprobleme.
Sind die wie Laufwerke zu betrachten, oder wie verschiedene 
Programmspeicher, auf die man den Interpreter umschalten kann?

von Matthias 🟠. (homa)


Lesenswert?

Peter N. schrieb:
> Mit den Slots habe ich noch etwas Verständnisprobleme.
> Sind die wie Laufwerke zu betrachten, oder wie verschiedene
> Programmspeicher, auf die man den Interpreter umschalten kann?

Du startest den PicoMite.

Peter N. schrieb:
> Dann ist es nochmal aufgetreten, als ich mit MMEdit rumprobiert habe
> (das hatte aber noch gar keine serielle Verbindung zum Pico).

Und verbindest dich mit diesem via Tera Term oder sonstigem 
Terminalprogramm! Dort siehst Du ein Prompt (ggf. Enter drücken).

Mit EDIT kommst du in dem Editor und kannst das aktuelle Programm 
editieren. (Das alles läuft jetzt bereits auf dem Pico!)
F1=SAVE (verläst den Editor) und F2=RUN (incl. vorherigem SAVE) beenden 
beide den Editor. Einmal kommt der Prompt beim andern wird das Programm 
ausgeführt.
JETZT kann der PicoMite ruhig Strom losgemacht werden! Der 
Programmspeicher ist nach dem Neustart immer noch vorhanden SOLANGE du 
keine neue Firmware (uf2-Datei) auf den Pico aufspielst ODER den Befehl 
NEW nutzt.

Besser ist aber dieses aktuelle Programm in einen SLOT zu sichern bzw. 
auf der Flashdisk zu speichern. Siehe Beitrag oben.

Danach kannst Du ein NEW machen und der EDIT_or ist leer. Ein FLASH LOAD 
SlotNr lädt das Programm wieder.
So klappen auch Programmwechsel. Und auch ggf. ein Autostart via OPTION 
... steht aber alles in der Anleitung ... 
https://geoffg.net/picomite.html
Auch als "Benutzerhandbuch V5.07.03 ins Deutsche übersetzt von Stefan 
Hoch"
hier aber noch die Version nur mit SLOTs ohne die Flashdisk! Aber wenn 
angeschlossen mit SD.

Viel Erfolg.

PS Vor einem Firmwareupdate solltest Du Deine Programme auf SD sichern 
oder mit XMODEM in Tera Term auf den PC übertragen

: Bearbeitet durch User
von Peter N. (alv)


Lesenswert?

Alo sind die Slots sowas wie Laufwerke..

Matthias 🟠. schrieb:
> PS Vor einem Firmwareupdate solltest Du Deine Programme auf SD sichern
> oder mit XMODEM in Tera Term auf den PC übertragen

Wie funktioniert das mit XModem? Der Pico bemängelt dabei die fehlende 
SD-Karte.

Funktioniert XModem auch mit PuTTY? Bei TeraTerm habe ich auch keine 
XModem-Funktion gefunden...

von David P. (devryd)


Lesenswert?

Ist nicht ganz der gleiche use case, aber ich hatte das gleiche Problem 
mal mit circuitpython. Hier wurde der Programmcode gelöscht, wenn kurz 
nach boot die Stromversorgung getrennt wurde. Hier lag es an einem Bug 
in Circuitpython. Stromversorgung scheint zwar bei dir nicht das Problem 
zu sein, aber vlt ist auch irgendwo in PicoMite das problem.

von Matthias 🟠. (homa)



Lesenswert?

Hi Peter,

also Putty und XMODEM ist nach meinem Kenntnisstand nicht. Aber Tera 
Term auf jeden Fall.
Um das Problem mit der SD-Karte zu umgehen kannst Du den 
Programmspeicher senden, einfach ohne Dateiname.
Beim Empfangen ebenfalls, ABER der Programmspeicher wird dann 
ÜBERSCHRIEBEN. Vorher also in einem SLOT sichern. SLOT und Flashdisk 
sind nicht das Gleiche! In einem Slot kannst Du keine Dateioperationen 
durchführen.
Am besten holst Du Dir die neue Version.

Achso und erst XMODEM SEND dann im Menü EMPFANGEN und den Speicherort 
auf dem PC angeben.
Zurück erst XMODEM RECEIVE und dann im Menü SENDEN und die zu sendende 
Datei auf dem PC auswählen.

Viel Erfolg.
Matthias

: Bearbeitet durch User
von Peter N. (alv)


Lesenswert?

Das neue PicoMite habe ich schon drauf.
Im den Bugfixes wurde auch der Absturz bei der IR-Funktion erwähnt.
Damit ist der Neustart erklärt. Erkärt zwar nicht das Löschen des 
Sources, aber vielleicht war der Neustart ja ziemlich "tief"...

Gibts für die internen Laufwerke (A: B:) auch sowas wie ein 
"dir"-Befehl?

: Bearbeitet durch User
von Matthias 🟠. (homa)


Lesenswert?

files

Lies doch mal das Handbuch :-)

von Peter N. (alv)


Lesenswert?

Matthias 🟠. schrieb:
> Lies doch mal das Handbuch :-)

Mach ich doch, aber das ist leider nicht besonders systematisch 
aufgebaut...

Im Kapitel Flash-Slots steht zwar, wie man Dateien speichern und laden 
kann, aber nicht, wie man den Inhalt anzeigt.

Weitere Beispiele:
Wie man einzelne GPIOs schaltet, steht bei SetPin und Pin.
Wie man mehrere GPIOs zusammenfaßt und ausgibt, steht an anderer Stelle 
unter "Port" (muß man da jeden GPIO einzeln mit SetPin konfigurieren, 
oder gibts da auch einen zusammenfassende Befehl?). Wie man Port als 
Eingang nutzt, habe ich noch nicht gefunden...

Einen Befehl zur Pulslängenmessung eines GPIOs hatte ich schonmal 
gefunden und benutzt, war durch das Pico-löschen dann aber weg.

Im Handbuch finde ich bei der Pinbeschreibung eine Menge zu Zähl-, 
Frequenz-, usw. Eingängen, woanders auch den Ausgangsbefehl "Pulse". Der 
damit verwandte Eingangsbefehl "PulsIn" steht wieder ganz woanders 
(hinter "Pixel", also nichtmal alphabetisch).

Wenn es wenigstens Verweise auf verwandte Befehle gäbe...

von Peter N. (alv)


Lesenswert?

Nächste blöde Frage:

Der Pico hat ja 2 GPIOgruppen Für SPI.
Andererseits heißt es auch, ich kann die SPI-Leitungen auf beliebige 
GPIOs legen. Stimmt das? Wenn ja, wieso die SPI-GPIOs?

von Matthias 🟠. (homa)



Lesenswert?

Hallo Peter,

blöde Fragen gibt es nicht. Vorab das ganze ist auch nur mein Hobby.
Also die Festlegung kommt vom Hersteller.
Ich habe Dir mal das offizielle Pinout und das aus dem PicoMite Handbuch 
gegenübergestellt.

Wie Du siehst sind diese Gruppen durch die Hardware vorgegeben. Freie 
Wahl insofern das Du zwei SPI in Hardware nutzen kannst und diese im 
vorgegebenen Rahmen der Hardware frei zuordnen kannst. Das heißt aber 
nicht völlig freie Pin-Auswahl.

Peter N. schrieb:
> Mach ich doch, aber das ist leider nicht besonders systematisch
> aufgebaut...
> ...
> Wenn es wenigstens Verweise auf verwandte Befehle gäbe...

Da stimme ich 100% zu!

Gruß Matthias

: Bearbeitet durch User
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.