banner
ニュース センター
豊富な経験と高度な技術

Raspberry Pi Pico File System & SD Card Reader

May 06, 2023

Raspberry Pi Pico には取り外し可能なストレージがありませんが、内部フラッシュ メモリを使用してファイルの読み書きができ、SD カード リーダーを簡単に追加できます。 MicroPython でそれを行う方法を示します。

これは、私たちの最近の本を拡張する新しい資料です。

アマゾンから購入してください。

こちらも興味深い:

Raspberry Pico ファイル システム

Pico には、MicroPython インタプリタの保存に使用される 2MB のフラッシュ メモリが搭載されています。 残りのメモリは、独自の MicroPython プログラム内から利用できるファイル システムに変換されます。

フラッシュ メモリは、システムとデータを保持する多数のパーティションに分割されています。 MicroPython の他の実装とは異なり、1.6MB のデータ パーティションのみが使用可能であり、システムの起動時に自動的にルートとしてマウントされます。 データ パーティションを表す Partition オブジェクトを返す rp2.Flash() 関数を使用して、このパーティションにアクセスできます。

パーティションのインスタンスを取得したら、次のいずれかの方法を使用できます。

これらのメソッドは、os.AbstractBlockDev で定義された単純なブロック プロトコルと拡張されたブロック プロトコルの両方を実装します。 Pico には ioctl コマンドのサブセットのみが実装されています。

4 – ブロック数のカウントを取得し、整数を返す必要があります (引数は未使用)

5 – ブロック内のバイト数を取得します。整数を返すか、デフォルト値の 512 が使用される場合は None を返します (arg は使用されません)。

6 – ブロックを消去します。arg は消去するブロック番号です。

一般に、これらのコマンドはパーティションを操作するには低レベルすぎるため、代わりにファイル システムをインストールしてファイルに関して作業できるようにする必要があります。 しかし、本当に車輪を再発明したい場合は、生のブロックに関して直接作業することができます。

Flash オブジェクトは、他のパーティションから隔離されるように設定されており、そのブロック番号は 0 から始まります。 したがって、ブロック 0 にデータを書き込み、それを読み戻すには、次のように使用できます。

まず、ファイル システムをアンマウントして、使用できないようにします。 パーティションがマウントされたままの場合、ファイル システムはこれから使用するブロックを使用し、それを上書きする可能性があります。 次にブロック数とブロックサイズを取得します。 新しいデータをブロックに書き込む前に、ioctl コマンド 6 を使用してブロックを消去する必要があります。これ以降は、ブロック サイズまで任意の数のバイトを書き込むことができます。 データを読み戻すには、バッファの長さを設定して、読み込むバイト数を指定するだけです。これを試してみると、「Hello World」が保存されていることがわかります。

「Hello World」以降のバイトは、ブロックにすでに格納されているものです。