SDカード・トランスポータの作成(その13)

ChaNさんのFatFsを使おうと内容を熟読しています。各関数の説明とかアプリケーション・ノートサンプルが充実していてなかなか分りやすいですが、いざ使用しようとすると「?」な部分が出てきます。

用意されているのは以下の5つのファイルです。

 diskio.c
 diskio.h
 ff.c
 ff.h
 integer.h


先ず、何を設定すればいいのでしょうか?
アプリケーション・ノートを見ると、用途に応じて define定義の内容を変更するようです。定義自体は ff.h の中に記載されています。また、そこに各定義の概要がコメントで入っています。この辺は、アプリケーション・ノートに一覧で載せてもらえると使いやすいですね。漏れがあったりしたら大変ですし。設定する(できる)定義は以下のモノになります。右側に設定予定値を書いています。


 _WORD_ACCESS (1)
 _FS_READONLY (1)
 _FS_MINIMIZE (1)
 _FS_TINY
 _USE_STRFUNC (0)
 _USE_MKFS (0)
 _USE_FORWARD (0)
 _DRIVES (1)
 _MAX_SS (512)
 _MULTI_PARTITION (0)
 _CODE_PAGE (932)
 _USE_LFN (0)
 _MAX_LFN (255)
 _FS_REENTRANT (0)
 _TIMEOUT (1000)
 _SYNC_t (HANDLE)


今回の使用では、Read Onlyで、LFNはサポートせずです。用途としてはファイルの検索とファイル名取得、ファイルの先頭位置からの読み込み、前回読み込んだ続きの読み込みが出来ればOKです。また、処理時間優先なのでメディアへの余分なアクセスは避けたいところ。プライベート・セクタ・バッファを有効にしたいです。が、コレを有効にすると 512Byte のRAMが占有されてしまいます。共有セクタ・バッファと合わせると、1104Byte占有されます…。

今回使用する ATmega644P では RAM が 4KByte あります。ストリーム様に3重のバッファを確保したいので、それぞれに 1KByteを割り当てる予定でしたが、足りません。512Byte/バッファにするとRAM的には十分足りますが、3重にする意味が薄れてきます。悩み所です。

プライベート・セクタ・バッファは必要なのは分りますが、共有セクタ・バッファって私の使用用途的には全然必要ないと思うんですけど……むっ、むむむっ、必要ですね。アプリケーション・ノートには「セクタ・ミスアラインド・リード」としてセクタの先頭から途中までのアクセスに対しても一度、共有セクタ・バッファ(File I/O Buffer)が介入しています。ソースコードを見てみると、転送先のバッファに余裕があっても、1セクタ未満のアクセス部分は必ず共有セクタ・バッファを中継させる作りに成っています。「必要な部分だけバッファに書き込む」という仕様であるならこれで納得ですが、今回の場合、なるべく余分な処理が入ってほしくないので共有セクタ・バッファを中継させたくないのです。f_read()の第4引数に本来の書き込みサイズ(余分に書き込んだ部分を除く)を知らしてくれれば余分に書き込んでくれても一向にかまいません。

うぅん…んん……、作り変えますか。

先ずはそのままで構築して正常に情報の読み込みが出来る事を確認してから効率化への変更を行う事にします。

スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
01 | 2017/02 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

RaspberryPi ぺるけ Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD DAC FON2405E buildroot FM3ペリフェラル BeagleBoneBlack library FM3評価ボード ODROID-U2 mingw OpenGL TL-WR700N Edison bitbake KiCad VMware シングル FM4 ミニワッター 6N6P 計測 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter