■電子工作をはじめて最初のころにGPSロガーを作ったことがあって、その時SDカードアクセスのライブラリを作ったことがあった。ただ、その時はATmegaのSRAMだけをワーキングメモリに使っていて、いろいろ制約が厳しかった。SDカードは512バイト単位で読み書きする都合上、GPS出力の書き込みバッファに512バイトを2面置いて、それだけで1K。ATmegaのSRAMは大きくても4Kなので、アプリケーションにしわ寄せがいってしまう。それと、SDは扱えてもSDHCには対応できていなかった。
今回はI2CでEEPROMを使えるようになったし、FATやディレクトリエントリをローカルにバッファしたまま書き込みバッファも持てるし、だいぶ楽になる。もっと早く手を出しておけばよかった。
SDHCを対象として、SPIの初期化コマンドを送るようにプロトを作成。最初はデジカメに使っていたPanasonic製のSDHCをターゲットにしていて、それではデジカメが使えないのでと安いSDHC(Radius)を買ってきたら、これが全く動かない。
調べてみるとこちらのプロトの作りが甘くて、SDAの規格に合わせてきちんと作ると応答がありました。ただ、それでもいくつかのステータス確認コマンド(CMD10, ACMD13)に応答が出てこず、それがプロトの作り方によるものなのか、そういうカードなのかは解らず。とりあえずFAT32のブートセクタやFAT、ディレクトリエントリが読み出せることが解ったのでそれはひとまず置いておくことにした。
ロギング用途なので、POSIX互換のライブラリに仕立てるつもりは無論なく、読み書きができれば良いレベル。ディレクトリパースができればいいくらいで。
Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.