インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

16.5.8.1.2. 再開

データの転送を再開するには、次の内容を実行します。
  1. カードが転送状態に入っていないことを確認します。これにより、バスがデータの転送に使用可能であることを確認します。
  2. カードが切断状態の場合は、SD/SDIO SELECT/DESELECT_CARDコマンドを使用してカードを選択します。カードのステータスは、IO_RW_DIRECTまたはIO_RW_EXTENDEDコマンドの応答として取得することができます。
  3. 再開する機能でデータ転送の準備が整っていることを確認します。この状態は、カードのオフセット0x0FにあるCCCRの対応するRF<n> フラグを読み取ることで特定します。 RF<n> = 1の場合は、この機能でデータ転送の準備が整っています。
    注: RF<n> フラグの詳細に関しては、SD Associationのウェブサイトで提供されているSDIO Simplified Specification Version 2.00を参照してください。
  4. 転送を再開するには、IO_RW_DIRECTコマンドを使用し、CCCRのFSxビット (カードのオフセット0x0Dにあるビット3:0) の機能番号を書き込みます。IO_RW_DIRECTコマンドのコマンド引数を形成し、それをcmdargレジスターに書き込みます。次の表にビットの値を示します。
    表 153.  RESUMEコマンドのcmdargビットの値
    ビット 内容

    31

    R/Wフラグ

    1

    30:28

    機能番号

    CCCRアクセスの場合は0

    27

    RAWフラグ

    リード・アフター・ライトの場合は1

    26

    Don't care

    -

    25:9

    レジスターアドレス

    0x0D

    8

    Don't care

    -

    7:0

    書き込みデータ

    再開する機能番号

  5. ブロックサイズの値をblksizレジスターに書き込みます。データは、このブロックサイズの単位で転送されます。
  6. バイトカウント値をbytcntレジスターに書き込みます。データの合計サイズ、すなわち転送する残りのバイトを指定します。データの処理はソフトウェアの責任です。

    転送における保留中のバイト数を特定するには、transferred CIU card byte countレジスター (tcbcnt) を読み取ります。この値を合計転送サイズから差し引き、転送する残りのバイト数を計算します。

  7. ブロック転送での操作と同様に、cmdレジスターに書き込みます。cmdレジスターに書き込みが行われると、コマンドが送信され、機能はデータの転送を再開します。詳細は、単一ブロックまたは複数ブロックの読み出しおよび単一ブロックまたは複数ブロックの書き込みを参照してください。
  8. SDIOカードデバイスのResume Data Flag (DF) を読み取ります。DFフラグは次のように解釈します。
    • DF=1 - 機能には転送するデータがあり、機能またはメモリーの再開後すぐにデータの転送を開始します。
    • DF=0 - 機能には転送するデータがありません。データ転送が読み出しの場合、コントローラーはデータを待機します。データのタイムアウト期間が経過すると、コントローラーはデータのタイムアウト・エラーを発行します。