banner
Centre d'Information
Vaste expérience et technologie de pointe

Système de fichiers Raspberry Pi Pico et lecteur de carte SD

May 06, 2023

Le Raspberry Pi Pico n'a pas de stockage amovible, mais vous pouvez utiliser sa mémoire flash interne pour lire et écrire des fichiers et il est facile d'ajouter un lecteur de carte SD. Nous montrons comment le faire en MicroPython.

C'est du nouveau matériel qui prolonge notre livre récent :

Achetez sur Amazon.

Intéressant aussi :

Système de fichiers Raspberry Pico

Le Pico dispose de 2 Mo de mémoire flash qui sont utilisés pour stocker l'interpréteur MicroPython. Le reste de la mémoire est converti en un système de fichiers que vous pouvez utiliser à partir de vos propres programmes MicroPython.

La mémoire flash est divisée en plusieurs partitions qui contiennent le système et les données. Contrairement à certaines autres implémentations de MicroPython, seule la partition de données, 1,6 Mo, est disponible et elle est automatiquement montée en tant que racine lorsque le système démarre. Vous pouvez accéder à cette partition en utilisant la fonction rp2.Flash() qui retourne un objet Partition représentant la partition de données.

Une fois que vous avez une instance de Partition, vous pouvez utiliser l'une des méthodes suivantes :

Ces méthodes implémentent à la fois les protocoles de blocs simples et étendus définis par os.AbstractBlockDev. Seul un sous-ensemble de commandes ioctl est implémenté pour le Pico :

4 - Obtenir un décompte du nombre de blocs, doit renvoyer un entier (arg n'est pas utilisé)

5 - Obtenir le nombre d'octets dans un bloc, doit renvoyer un entier, ou Aucun, auquel cas la valeur par défaut de 512 est utilisée (arg n'est pas utilisé)

6 – Effacer un bloc, arg est le numéro du bloc à effacer

Généralement, ces commandes sont de niveau trop bas pour fonctionner avec une partition et vous souhaitez plutôt installer un système de fichiers afin de pouvoir travailler en termes de fichiers. Mais si vous voulez vraiment réinventer la roue, vous pouvez travailler directement en termes de blocs bruts.

L'objet Flash est configuré de manière à vous isoler des autres partitions et ses numéros de bloc commencent à zéro. Donc, pour écrire des données dans le bloc zéro et les relire, nous pouvons utiliser :

Nous démontons d'abord le système de fichiers afin qu'il ne puisse pas être utilisé. Si la partition restait montée, le système de fichiers pourrait utiliser le bloc que nous sommes sur le point d'utiliser et l'écraser. Ensuite, nous obtenons le nombre de blocs et la taille du bloc. Avant de pouvoir écrire de nouvelles données dans un bloc, nous devons l'effacer à l'aide de la commande ioctl 6. Après cela, nous pouvons écrire n'importe quel nombre d'octets jusqu'à la taille du bloc. La lecture des données consiste simplement à définir la longueur du tampon pour spécifier le nombre d'octets à lire. Si vous essayez cela, vous constaterez que nous avons stocké "Hello World":

Les octets au-delà de "Hello World" sont tout ce qui était déjà stocké dans le bloc.