ここから本文です
Dr.Kikkie (KIKI) : 不許無断天才|免責:本稿を真に受けて損害があっても知らん。

書庫全体表示

苦悶式SDカード 4.7a

この時期、毎年寒くなるとこまめに風邪をひいたりして体調を崩します。ようやく戻ってきたのでハナシの続きを。って、どこまで話したっけ?状態。
 
あ、そうそうMSXの汎用ポートにSDカードをつないで、SPIモードでアクセスしようとしているところです。
で、ハードウエアはさて置き、電気的に接続できたとしてソフトウエアを書きかけたのでした。
しかし、いくつかの分からないところが出てきて調査に戻ったのであります。
 
分からないところの第一点は、「初期化」の部分です。
大雑把には
に書いたとおりでいいかと思いますが、細かいところで、SDカードは<CMD0>→<CMD1>でいいのか? <CMD0>→<ACMD41>としないと受け付けられないのか? という疑問があります。
<ACMD41>というのは、SDC専用の初期化開始コマンドで、アプリケーション特化コマンドの<CMD55>をアタマに付けて、<CMD55>→<ACMD41>として使います。
elm-chan さんの「MMC/SDC使いかた」
にフローがありました。
 
イメージ 1
 
・・・場合分けが多いですね。アセンブラ止めてC言語にしようかな?(・∀・;)
でも、既にMMCは身近には売ってないし「2GBまで」と宣言しちゃったから、<CMD55>→<ACMD41>しか選択肢はない・・・という判断でいいのだろうか?
 
「SASIバス用SD/MMCアダプタ」という興味深いモノを開発してらっしゃる方がいました。先行して「SASIバス用FCアダプタ」にトライしたがナゾの不具合で一旦中断、SD/MMCアダプタに再トライされたものです。
この「SASI HDD用I/F」の MSX用はぼくも持っていまして、肝心の32MB HDDがクラッシュしたのがしばらくMSXを離れていた直接の原因でもあります。
さて、このサイトで興味深い記述をみつけました。
 
(ここから引用)
「その他も含めて、SDカードアクセスのバスライン初期化に際してうまくいかない原因を調べてみたところ、ざっとこれだけのものがありました。
  • CMD1で初期化しようとしている。ACMD41を使用するべき。
    (1chip MSXにて、SDカードでもCMD1を受け付けることがわかっているので、意外と可能性は低いです)
  • 電源のパスコンがない。
  • DinとDoutにプルアップがない。
  • 使用できる範囲外の電源電圧を供給している。
  • GNDが弱いか接続もれ。
  • 各コマンド終了直後、CS='H'状態で8クロックのダミークロックが必要。
…正解は最後のやつでした。文献なんかを読んでもあまりこんなこと書いてないみたいな気がするのですが、これで一発で動作しました。それどころか、昔1chip MSX版MZ-700でロジックを変更して以降初期化できなくなった8MBのSDカードもあっさり初期化できるようになりました。おお、これは1chip MSXにも反映せねばなりませんな。
今まで動いていたのは…偶然か。」(引用ここまで)
 
・・・いろいろと面白いですねえ。「1chip MSXにて、SDカードでもCMD1を受け付けることがわかっている」とか「1chip MSX版MZ-700」とか。
 
で、<CMD1>でいいなら、これで行きます。ほいで、「各コマンド終了直後、CS='H'状態で8クロックのダミークロックが必要」、これ行きます。
ただし、ぼくが参照しいているテキスト「フラッシュ・メモリ・カードの徹底研究」(2006年CQ出版)には、「ダミー・クロック送信時の/CSは”H”でも”L”でもかまいません」とあります(95頁)。「どっちでもいい」というのが困るんですよね。/CS='H'で行きます。フロー先頭の「74クロック以上のダミーコード」の部分で「/CS='H'」とあるのと整合的です。先頭ではDIも'H'なのねん。「苦悶式SDカード 4」の「/CS=Lで統一」は撤回。
 
フローを参照しておきながらアレですが、なるべく一本道で行きたいのです。フローチャートでいうと「MMC Ver.3」に至る道ですね。一歩前進したのか後退したのか分かりませんが、とにかく少し疑問の部分が整理できました。ダメだったら、またそのとき考えます。
 
フローに記載はありませんが、SDカードからのレスポンスを待っている部分にタイムアウトも必要だと思います。苦悶式SDカード 4では「100ms」と書いていますが「数100ms」かかることもあるらしい。大容量SDだと1秒かかることも。でも、「対象は2GBまで」と宣言したので「数100ms」のタイムアウトで考えます。(本日これまで。)

  • 顔アイコン

    むーん、フローを見るとコマンドの流れがよくわかりますね。細かな処理(エラーやタイムアウトなど)を含めば、かなり面倒なことが予想されます。

    >1chip MSX版MZ-700

    お〜、そんなところまで調査の手が及んでいたとは、本気度が伺えます。

    >アセンブラ止めてC言語にしようかな

    ここは悩ましいとことですね。たとえば、ライブラリをC言語で作成し、動作を確認後、Z80アセンブラに移植する手も石橋をたたいて渡る方式です。

    やっぱり時代はSPIですね。悔い改めることにします(笑)。

    [ dotallcafe ]

    2014/12/31(水) 午前 1:08

  • 顔アイコン

    ども〜^^
    フローを拝見して、流れがだいぶ整理できました。
    ただ、このまま進んでもFATの実装は難しそうです。
    興味本位を満足させたら、インテリジェントなSDスロットを
    考えるのが現実的かなと思い始めています。

    ファイル・ハンドリングしようと思ったら、
    DOSの基礎的な命令を自分で実現しないといけません。
    ちょっと無理っぽいですね(・∀・)♪

    [ KIKI ]

    2014/12/31(水) 午前 7:41

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 29 30

過去の記事一覧

最新のコメント最新のコメント

すべて表示

kik**41010
kik**41010
非公開 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!
ふるさと納税サイト『さとふる』
お米、お肉などの好きなお礼品を選べる
毎日人気ランキング更新中!

その他のキャンペーン

みんなの更新記事