banner
Centro de notícias
Vasta experiência e tecnologia avançada

Sistema de arquivos Raspberry Pi Pico e leitor de cartão SD

May 06, 2023

O Raspberry Pi Pico não possui nenhum armazenamento removível, mas você pode usar sua memória flash interna para ler e gravar arquivos e é fácil adicionar um leitor de cartão SD. Mostramos como fazer isso no MicroPython.

Este é um novo material que estende nosso livro recente:

Compre na Amazon.

Também de interesse:

Sistema de arquivos Raspberry Pico

O Pico tem 2 MB de memória flash que é usada para armazenar o interpretador MicroPython. O restante da memória é convertido em um sistema de arquivos que você pode usar em seus próprios programas MicroPython.

A memória flash é dividida em várias partições que armazenam o sistema e os dados. Ao contrário de algumas outras implementações do MicroPython, apenas a partição de dados, 1,6 MB, está disponível e é montada automaticamente como root quando o sistema inicializa. Você pode obter acesso a esta partição usando a função rp2.Flash() que retorna um objeto Partition representando a partição de dados.

Depois de ter uma instância de partição, você pode usar qualquer um dos seguintes métodos:

Esses métodos implementam os protocolos de bloco simples e estendido definidos por os.AbstractBlockDev. Apenas um subconjunto de comandos ioctl é implementado para o Pico:

4 – Obtenha uma contagem do número de blocos, deve retornar um número inteiro (arg não é utilizado)

5 – Obtém o número de bytes em um bloco, deve retornar um número inteiro ou None, caso em que o valor padrão de 512 é usado (arg não é usado)

6 – Apagar um bloco, arg é o número do bloco a apagar

Geralmente, esses comandos são de nível muito baixo para funcionar com uma partição e, em vez disso, você deseja instalar um sistema de arquivos para poder trabalhar em termos de arquivos. Mas se você realmente deseja reinventar a roda, pode trabalhar diretamente em termos de blocos brutos.

O objeto Flash é configurado para isolá-lo das outras partições e seus números de bloco começam em zero. Então, para escrever alguns dados no bloco zero e lê-los de volta, podemos usar:

Primeiro desmontamos o sistema de arquivos para que não possa ser usado. Se a partição foi deixada montada, o sistema de arquivos pode usar o bloco que estamos prestes a usar e sobrescrevê-lo. Em seguida, obtemos o número de blocos e o tamanho do bloco. Antes de podermos escrever novos dados em um bloco, temos que apagá-los usando o comando ioctl 6. Depois disso, podemos escrever qualquer número de bytes até o tamanho do bloco. A leitura dos dados é apenas uma questão de definir o comprimento do buffer para especificar o número de bytes a serem lidos. Se você tentar isso, descobrirá que armazenamos "Hello World":

Os bytes além de "Hello World" são o que já foi armazenado no bloco.