CFカードの相性

SH7750RのPCMCIAインタフェース+Linux-2.6.34(or Linux-2.6.30)でCFカードを使用しています。
以前のカードでは問題なくアクセス出来たのが、最近のカードではscsiドライバーやataドライバーが組み込めない物が殆どです。
最近のものでもアクセス出来る物があるのでタイミングは問題ないと思われますが、カードメーカーの担当者からは、「カードのコントローラによるものと思われる」と言う回答があるのですが、SH側にも何か問題はないのでしょうか?
Parents
  • デバッグしていてやっと分かりました。

    まず、タイミングですが、CISなどカードの内容は正常に読めますので、問題ないと思います。

    組み込みLINUXだけなのか、/drivers/ata/pata_pcmcia.cにpcmcia_devices[]と言うテーブルがあります。そこに対応するカードのマニュファクチャIDとカードIDが登録されています。
    この2つのIDに合わないカードは蹴られてしまいます。

    次に、ATAコマンドのIdentify Device(0xEC)コマンドを書き込んだ後のステータスを読むと、DRQが落ちないカードはタイムアウトで蹴られてしまいます。

    この2つが問題でした。
    ですからSH7750Rの問題では無かったです。
    2番目のDRQは対応に苦慮しています。
  • 解決しました。

    某CFカードメーカーの技術者のご協力により、問題が分かりました。

    /CEと/IORの信号で、/IORが立ち上がるタイミングと同じタイミングで/CEも立ち上がっているのが原因でした。

    PCR(PCMCIA CONTROL REGISTER)に0x0000を設定していました。これを0x0011にすると、これまで試験した数社の10枚のカード全てが上手く行きました。

  • さらに、別の原因も分かりました。

  • さらに、別の原因も分かりました。

    セクタを選択するコマンドを書き込んだ後の、CFカードの応答に問題がありました。

    コマンドを書き込んでも直ぐにDRQが'1'になりません。そのためカードエラーと判断していました。

    そこで、DRQが'!'になるまで待って、コマンド終了フラグを設定すると、上手く行きました。

    コントローラのバージョンアップで、こんなタイミングも変わってしまっていましたとは。

Reply
  • さらに、別の原因も分かりました。

    セクタを選択するコマンドを書き込んだ後の、CFカードの応答に問題がありました。

    コマンドを書き込んでも直ぐにDRQが'1'になりません。そのためカードエラーと判断していました。

    そこで、DRQが'!'になるまで待って、コマンド終了フラグを設定すると、上手く行きました。

    コントローラのバージョンアップで、こんなタイミングも変わってしまっていましたとは。

Children
No Data