1

EMMC の読み取り/書き込みの問題が発生しています。Omap35x で EMMC ドライバーを作成しようとしています。emmc カードと omap の両方を初期化した後、カードは tran 状態になりました。読み取りおよび書き込みコマンドが成功しません。これが私がやったことです:

  1. CMD0 を送信 (MMCHS_CMD = 0x00000000 MMCHS_ARG = 0xf0f0f0f0)
  2. ビジー状態で CMD1 を送信 (MMCHS_CMD = 0x01020000 MMCHS_ARG = 0x40FF8080)
  3. CMD2 を送信 (MMCHS_CMD = 0x02090000 MMCHS_ARG = 0x00000000)
  4. CMD3 を送信 (MMCHS_CMD = 0x031a0000 MMCHS_ARG = 0x00010000) 応答 = 0x500 Ident State
  5. m_regs->MMCHS_CON &= ~0x00000001;
  6. CMD9 を送信 (MMCHS_CMD = 0x009090000 MMCHS_ARG = 0x00010000)
  7. CMD13送信 ステータス確認 (MMCHS_CMD = 0x0D1a0000 MMCHS_ARG = 0x00010000) レスポンス = 0x700
  8. CMD7 を送信 (MMCHS_CMD = 0x071a0000 MMCHS_ARG = 0x00010000) 応答 = 0x700
  9. Tran Stateではありませんが、CMD6(MMCHS_CMD = 0x061A0000 MMCHS_ARG = 0x03B90100)Response = 0x800 10.CMD 16を送信するクロックをセットします。応答 = 0x900

上記の手順の後、コマンド CMD24 (MMCHS_CMD = 0x182A0002 MMCHS_ARG = 0x00000001 および MMCHS_BLK = 0x00000200) を送信しようとしましたが、Omap は MMCHS_STAT_BWR に正常に入力され、512 バイトのデータを送信しました。オシロスコープを使用してデータ ラインを介して送信されるデータを観察できますが、TC/DTO をポーリングしているときに、データ タイムアウトを示す MMCHS_STAT から 0x108111 を受け取りました。コマンドに対する応答 0x900 を受信できます。

読み取りのために、CMD17(MMCHS_CMD = 0x112A0012 MMCHS_ARG = 0x00000001 および MMCHS_BLK = 0x00000200) を送信します。コマンドに対する応答 0x900 も受信できます。Omap は MMCHS_STAT_BRR に正常に入力されましたが、データ ラインを介して送信されるデータを確認できませんでした。

私が行った手順で問題が見つかった場合、またはそれを機能させるための例がある場合はお知らせください。

4

1 に答える 1

0

デフォルトの速度で読み書きしようとしたことがありますか? 手順 9. をスキップできます。手順 10. でクロックを 48 MHz に変更せずに、もう一度やり直してください。

また、ステップ 9 で高速モードに切り替える CMD6 の応答では、READY_FOR_DATA のビットが準備できていません。eMMCがデータの準備ができているかどうかを確認するために、CMD13を追加できると思います。eMMC の容量が 2GB 以上の場合、step10 で CMD16 を送信する必要はありません。大容量 eMMC はデフォルトでセクター モードです。

データタイムアウトの制限値は? 私の実験では、一部の eMMC は応答後 8 ミリ秒を超えて最初のデータを送信します。

于 2014-12-08T01:27:54.160 に答える