LoginSignup
0
2

More than 5 years have passed since last update.

SPIFFSの設定ガイドを日本語訳(意訳)

Last updated at Posted at 2019-02-04

はじめに

これはpellepl/SPIFFSConfigure spiffsを翻訳(意訳)したものです。
SPIFFSはMITライセンスで配布されています。

SPIFFSとは、マイコンにSPI接続されたSPIフラッシュにファイルシステム載せられるものです。
通常、SPIフラッシュにはアドレスにデータを格納するRawなデバイスでしかありませんが、
ファイルシステムを用いることで、fopenreadなどのモダンなファイル操作関数が使えるようになります。
本ガイドは、SPIFFSを任意のプラットフォームに移植する際のガイドを日本語意訳したものです。

pellepl/SPIFFS

Copyright (c) 2013-2017 Peter Andersson (pelleplutt1976gmail.com)
Released under the MIT license
https://github.com/pellepl/spiffs/blob/master/LICENSE

ファイルシステム構造

はじめに、使おうとしているSPIフラッシュの大きさ、そのページサイズ(以後、物理ページサイズ)とセクター/ブロックサイズ(以後、物理ブロックサイズ)を知る必要があります。これらはデータシートから見つけることができます。

これを用いて、最初に大体どれくらいのSPIフラッシュの領域をspiffsに与えるか決める必要があります。

次にspiffsの論理ブロックサイズを決定する必要があります。
これは物理ブロックサイズの整数倍である必要があります。あなたのフラッシュメモリが4kB,16kBまたは64kBの物理ブロックサイズならば、論理ブロックサイズはnを整数とし、n*4kB,n*16kBまたはn*64kBになります。最も一般的なのは論理ブロックサイズをいくつかの物理ブロックサイズの総量と同じにセットすることです。ファイルシステムサイズのは論理ブロックサイズの整数倍になります。

それではspiffsの論理ページサイズを定義しましょう。これは論理ブロックサイズは論理ページサイズの整数倍にしなければいけないことと関係しています。あなたはおそらくフラッシュを効率よく利用するためにブロックあたり複数(>16)のページにしたいでしょう。一つの論理ページはspiffsにおける最も小さなデータ保持要素です。

64kBの論理ブロックサイズと決定し、256バイトを論理ページサイズとして使いると、256個の論理ページが1つの論理ブロックあたりに作り出されます。もし1バイトをフラッシュのspiffsのファイルに格納しようとすると、少なくとも1つの論理ページが使われます。また、一般的には物理ページサイズと論理ページサイズを同じにします。論理ページを大きくするとHALレイヤーのコードの記述が増えるため、物理ページサイズを超えないようにします。

それぞれのブロックとページにはいくつかのメタデータが来ます。そのため、すごく非常に小さいページまたはブロックはデータ/メタデータ率が極端に低くなります。非常に大きなページサイズはフラッシュの多くの領域を非利用にしてしまうでしょう。また、大量のページを持つとspiffsに多くの読み込みをさせるため遅くなります。

以上はすべて、どんな種類のファイルを通常格納し、どんなパフォーマンスを要求するのかに依ります。

はじめは、最も簡単に論理ページ/ブロックのサイズを物理ページ/ブロックのサイズに合わせることです。それが動いた後に必要に応じて実験できます。論理ブロックまたは論理ページのサイズを変更すると、ファイルシステムの構造が変わるので再フォーマットが必要になることに気をつけてください。

ビルド時設定

すべてのビルド時設定はspiffs_config.hにあります。

以下書いてます

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2