ホームページ>H8をMacで>その5a・SDカード その後
その5a・SDカード その後
目次
目的と経緯
以下は、マイコンボードにSDカード・インターフェイスを追加した際の覚書です。
前回以降に分かったことや、やったことを記しておきます。
SDカードについて
前回読めなかったSDカードですが、相性?の要因を探ってみました。
注)このSDカードは、H8でマウントできないのみで、MacやPC、SDカードMP3プレーヤ等では普通に使えています。
<速度>
以前は特に規定はなかったようですが、最近では以下のように速度表示を行うことが推奨されるようになりました。(SDHCは必須)
Class 6 6MB/s 以上の書き込み速度
Class 4 4MB/s 以上
Class 2 2MB/s 以上
ダメだったカードはClass 2にも満たない低速カードですが、OKのカードとの差は僅かであり、これが決定的な原因とは考えづらいです。
<チップ>
使われているフラッシュメモリチップには、いくつかのバリエーションがあるようです。
・NAND/NOR
最近のは殆どNAND型。
・SLC (Single-Level-Cell)/MLC (Multi-Level-Cell)
消費電流に違いがあり、MLCで80〜100mA、SLCで60mA程度とのこと。
ただし、この種の情報は製品仕様には明記されないことが殆どなので、実際のところは調べようがありません。
<ハードウェア仕様>
SDカードの電源電圧は1.6〜3.6V、クロックは0〜25MHzで、特にクリティカルな要素はありません。
また、H8側はRxD2のhigh(min)が2Vなので、3.3Vでプルアップしておけば問題なさそうです。
動作中の電源電圧を測ってみましたが、3.3Vから目に見えてドロップしている様子はありませんでした。(もっとも、アナログ式のテスターなので、あまり正確ではありませんが。)
<フォーマット>
SDカードで多く使われるNAND型フラッシュメモリでは、書き込み前に消去を行わなければなりませんが、その最小単位が(一例を挙げると)書き込みが0.5Kbyte単位に対し、消去は16Kbyte単位と、大きく異なります。
そのため、FATの指し示す先が消去ブロック境界に一致するように区画設定と論理フォーマットを行わないと、書き込み速度の低下等が起きるそうです。
PCのフォーマットではこの辺が考慮されていないようですが、Panasonicのフォーマッタは考慮されているそうなので、フォーマットしてみました。結果はダメでした。(オプションも変えてみましたが効果なし。)
参考サイト(1):SD/SDHCメモリーカード フォーマットソフトウェアの配布...
<アクセス手順>
SDカードのマウントは、以下の手順で行われます。
1. イニシャライズ(MMCかSDかを判定する)
2. 電源電圧の通知と確認
3. カード内部の初期化
(以下、複数カードの判別など数ステップある模様だが詳細未調査)
データのRead/Writeが不安定というなら速度やフォーマットの関係も考えられますが、マウントできないというのは、アクセス手順のどこかでタイムアウトしている可能性が高いのではないか、という気がします。
結局、現時点ではどこに原因があるのかは、まだ見えてきていません。
SDカードについて(2)
前回のレポートでも触れましたが、47μFのパスコン(電解コンデンサ)を追加してみました。
追加方法は、既に配置済の0.1μFに(電解コンデンサは極性があるので、それに気をつけて)並列に接続するだけです。
品名 |
規格(型番) |
個数 |
購入店 |
備考 |
電解コンデンサ |
47μF |
2 |
千石電商B1F |
25V 品 |
これで実験してみましたが、結果は変わりありませんでした。(ダメはダメ、OKはOK。)
次に、FDBENCHでベンチマークをとってみました。
今回はダメなカード2枚と、比較の為にOKなカード1枚を対象に行いました。
結果は以下の通りです。
可否 |
カード |
Read Write |
Read |
Write |
Random Read |
Random Write |
○ |
AnyCard |
2,691 |
4,427 |
1,691 |
4,319 |
328 |
× |
Kingston |
3,713 |
4,440 |
4,528 |
4,413 |
1,472 |
× |
NHJ |
3,407 |
4,413 |
3,594 |
4,249 |
1,374 |
注)サイズは100MB。カードリーダはGreenHouse GH-CRSQ10-U2を使用
AnyCardの方は公称値を下回るという順当?な結果ですが、Kingston,NHJはWriteの値が異常に高く、特にKingstonは公称値どころかReadをも上回るという、ちょっとヘンな結果が出ています。(複数回で確認済)
原因がどこ(カード本体orカードリーダーorFDBENCH)にあるのかは定かではありませんが、AnyCardがまともな結果を出しているだけに、標準とは異なる「何か」がカード本体にあるのかもしれません。
あと、新たに2枚のSDカードをテストすることができましたが、いずれも問題なくマウントできました。
(以前作成した表に追加しておきました。)
以上の状況から、SDカードI/F追加の工作自体には問題なさそうなことが見えてきたため、この件はひとまず収束扱いとしたいと思います。
また、機会がありましたら、SDカードとのネゴシエーション関係について調べてみたいと思います。
SDカードについて(3)
先日、インターフェイス誌付録のボードにSDカードを接続しようとしている知人から、以下のサイトに「MMC/SDCの規格によると、これらの端子は50k〜100kΩでプルアップすべし」とある、と教えられました。
参考サイト(2):ELM - MMCの使いかた(端子処理と活線挿抜)
そこで、プルアップ抵抗を、10KΩから100KΩに交換してみました。
品名 |
規格(型番) |
個数 |
購入店 |
備考 |
抵抗アレー 4素子5P |
100KΩ |
1 |
千石電商B1F |
M5-1-104J |
カーボン抵抗 |
100KΩ |
1 |
千石電商B1F |
1/4W 品 |
これで実験してみましたが、結果は変わりありませんでした。(ダメはダメ、OKはOK。)
ということで、プルアップ抵抗値も不具合の原因ではありませんでした。
Mac-H8GUIについて
SDカードを利用できるようになって、より多くのファイルを手軽に扱えるようになりました。
開発後の初回テスト時等は、SDカードをMac側に繋いでコピーすればいいのですが、デバッグ途中での微調整のためのファイル再転送でも、いちいちカードを抜き差しするのは面倒です。
そこで、シリアル通信とtftp転送をGUIベースで行う(Winでいうところの)Explorerもどきを作成してみました。
名称は「Mac-H8GUI(仮称)」としました。
上段のグラフィカルな領域で、一通りのことはできるようにしてみました。
(実際は、下段に表示されるテキストベースのやり取りを視覚化しているだけですが)
現状出来ることは、以下の通りです。
・現在のディレクトリの内容表示
・ディレクトリの移動
・ファイルの転送(Macのデスクトップからドラッグ&ドロップでH8に転送)
・ファイルの削除
・実行ファイルの起動
・テキストファイルの内容表示(typeコマンドの発行)
なお、現状ではなぜか取りこぼしが多く、2ペインにしてテキストを同時に表示しているのは、動作不良時の確認のためだったりします。
>原因は、(プロンプトを含む最後の)転送ブロックを正しくバッファリングしていなかったためでした。
>今度は、起動直後に送ったコマンドの応答があったりなかったりという問題に悩まされています。
お世話になったサイト
有用なソフトウェアおよび貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)
参考サイト(1):SD/SDHCメモリーカード フォーマットソフトウェアの配布...
参考サイト(2):ELM - MMCの使いかた(端子処理と活線挿抜)
更新履歴
2007.09.03 SDカードについて(3)を追加。
2007.04.15 SDカードについて(2)を追加。
2007.04.04 新規作成
[Home]
[MacSoft]
[Donation]
[History]