TOP > 電子部品 > SDカード > Flash使用量

FatFs Flash使用量、ぷちFatFs

(2019.6.13作成)

 ChaN氏の作成されているファイルシステム-FatFsは電子工作でSDカードを使うためにはとても便利なツールですが、STM32F103C8T6基板こちらで公開している関数群を使用して実装すると大きなFlash領域を占有してしまいました。

 

 そこでこのページでは各機能を実装した場合にどの程度のFlash領域を使用したか実例を示してみようと思います。またさらにChaN氏が同時に公開されている小型マイコン向けのファイルシステム ぷちFatFsを使用した場合のFlash使用量についても紹介してみようと思います。

 なおこの記事の最後に今回使用したライブラリとサンプルファイルをダウンロードできるリンクを置いていますので、合わせてご確認ください。

ぷちFatFs

 ぷちFatFsは上述のように小型マイコン向けに作成されているため使用に当たっては以下のような厳しい?制約があります。

  • ファイルの作成はできません
  • ファイルサイズを拡大することができません
  • ファイルの書き込みはセクタ境界(512byte)から開始する必要があります

などです。このためテストする前には事前にPCなどでファイルを作成し、SDカードに保存しておく必要があります。

 ご参考までにPythonで任意のサイズの空ファイルを作成するスクリプトを以下に示します。下の例では1024バイトの空ファイルを作成します。

import numpy as np
zero = np.zeros((1024), dtype=np.byte)
with open("Petit.bin", "wb") as f:
    f.write(zero)

Flash使用量

 STM32F103C8T6基板を使用して、いろいろと条件を変えてビルドを行いました。その結果を下に示します。なおベースとして用いたコードはこちらのサンプルコードです。

  RTC 文字操作 Debugビルド  Releaseビルド 
 FatFs    47.2kB 72% 36.0kB 55%
× 46.7kB 71% 36.5kB 56%
× 35.6kB 54% 25.9kB 40%
× × 34.7kB 53% 26.7kB 41%
Petit FatFs × × 26.7kB 41% 16.8kB 26%

 簡単に実験条件を示すと、RTCを有効にする際はRTCペリフェラルを用いるとともにFF_FS_NORTC=1として設定しています。また文字操作とはFF_USE_STRFUNCスイッチを0, 1にそれぞれ設定しています。

 上記の通りPetit FatFs を用いるとFlashの使用量はずいぶん小さくなります。しかしFatFsを用いたとしてもRTCの使用をやめるだけで随分とFlashの使用量が削減されることがわかります。

 このことからFlashなどに本当に余裕がないときはPetit FatFsを使用するのがよいと思いますが、まずはRTCを使用しないなど必ずしも必要でない機能を削減することでFlashの容量を削減するのがよいのではないかと思いました。

 ちなみにRTCを使用したらFlash容量が激増する理由ですが、時間計算にCのtime.hをインクルードしているからかもしれませんが未検証です。

テスト環境ダウンロード

 上記テストを行ったサンプルプログラムとSDカード操作クラスはこちらからダウンロードしていただけます。またRTCやGPIOなど基本的なペリフェラルを操作するクラスはこちらからダウンロードしていただけます。

コメント: 0