banner
Centro notizie
Vasta esperienza e tecnologia avanzata

File system Pico Raspberry Pi e lettore di schede SD

May 06, 2023

Il Raspberry Pi Pico non dispone di alcuna memoria rimovibile, ma puoi utilizzare la memoria flash interna per leggere e scrivere file ed è facile aggiungere un lettore di schede SD. Mostriamo come farlo in MicroPython.

Questo è nuovo materiale che estende il nostro recente libro:

Acquista da Amazon.

Interessante anche:

File system Raspberry Pico

Il Pico ha 2 MB di memoria flash che viene utilizzata per memorizzare l'interprete MicroPython. Il resto della memoria viene convertito in un file system che puoi utilizzare dai tuoi programmi MicroPython.

La memoria flash è divisa in una serie di partizioni che contengono il sistema e i dati. A differenza di altre implementazioni di MicroPython, è disponibile solo la partizione dati, 1,6 MB, che viene automaticamente montata come root all'avvio del sistema. È possibile accedere a questa partizione utilizzando la funzione rp2.Flash() che restituisce un oggetto Partition che rappresenta la partizione dati.

Una volta che hai un'istanza di partizione puoi utilizzare uno dei seguenti metodi:

Questi metodi implementano sia i protocolli a blocchi semplici che quelli estesi definiti da os.AbstractBlockDev. Per Pico è implementato solo un sottoinsieme di comandi ioctl:

4 – Ottieni un conteggio del numero di blocchi, dovrebbe restituire un numero intero (arg non è utilizzato)

5 – Ottieni il numero di byte in un blocco, dovrebbe restituire un numero intero o Nessuno, nel qual caso viene utilizzato il valore predefinito di 512 (arg non è utilizzato)

6 – Cancella un blocco, arg è il numero del blocco da cancellare

Generalmente questi comandi sono di livello troppo basso per funzionare con una partizione e invece si desidera installare un file system in modo da poter lavorare in termini di file. Ma se vuoi davvero reinventare la ruota, allora puoi lavorare direttamente in termini di blocchi grezzi.

L'oggetto Flash è impostato in modo da isolarti dalle altre partizioni e i suoi numeri di blocco iniziano da zero. Quindi per scrivere alcuni dati per bloccare zero e rileggerli possiamo usare:

Per prima cosa smontiamo il file system in modo che non possa essere utilizzato. Se la partizione fosse lasciata montata, il file system potrebbe utilizzare il blocco che stiamo per utilizzare e sovrascriverlo. Successivamente otteniamo il numero di blocchi e la dimensione del blocco. Prima di poter scrivere nuovi dati su un blocco dobbiamo cancellarli utilizzando il comando ioctl 6. Dopodiché possiamo scrivere un numero qualsiasi di byte fino alla dimensione del blocco. Rileggere i dati è solo questione di impostare la lunghezza del buffer per specificare il numero di byte da leggere. Se lo provi scoprirai che abbiamo memorizzato "Hello World":

I byte oltre "Hello World" sono ciò che è già stato memorizzato nel blocco.