このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
1. インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル改訂履歴
2. ハード・プロセッサー・システムの概要
3. Cortex-A53 MPCore Processor
4. Cache Coherency Unit
5. System Memory Management Unit
6. システム・インターコネクト
7. ブリッジ
8. DMAコントローラー
9. オンチップRAM
10. ECC (エラー検出訂正) コントローラー
11. Clock Manager
12. システム・マネージャー
13. Reset Manager
14. ハード・プロセッサー・システムのI/Oピンの多重化
15. NANDフラッシュ・コントローラー
16. SD/MMCコントローラー
17. イーサネット・メディア・アクセス・コントローラー
18. USB 2.0 OTG Controller
19. SPIコントローラー
20. I2Cコントローラー
21. UARTコントローラー
22. 汎用I/Oインターフェイス
23. タイマー
24. ウォッチドッグ・タイマー
25. CoreSightのデバッグとトレース
A. ブートとコンフィグレーション
B. Accessing the Secure Device Manager Quad SPI Flash Controller through HPS
3.5.1. 例外レベル
3.5.2. 仮想化
3.5.3. メモリー管理ユニット
3.5.4. レベル1キャッシュ
3.5.5. レベル2メモリーシステム
3.5.6. スヌープ制御ユニット
3.5.7. 暗号化による拡張
3.5.8. NEONマルチメディア・プロセッシング・エンジン
3.5.9. 浮動小数点演算装置
3.5.10. ACEバス・インターフェイス
3.5.11. アボート処理
3.5.12. キャッシュ保護
3.5.13. 汎用割り込みコントローラー
3.5.14. 汎用タイマー
3.5.15. デバッグモジュール
3.5.16. キャッシュ・コヒーレンシー・ユニット
3.5.17. クロックソース
25.4.1. デバッグ・アクセス・ポート
25.4.2. CoreSight SoC-400タイムスタンプ・ジェネレーター
25.4.3. システム・トレース・マクロセル
25.4.4. トレースファネル
25.4.5. CoreSightのトレース・メモリー・コントローラー
25.4.6. AMBAトレース・バス・レプリケーター
25.4.7. トレース・ポート・インターフェイス・ユニット
25.4.8. NoCトレースポート
25.4.9. エンベデッド・クロス・トリガー・システム
25.4.10. エンベデッド・トレース・マクロセル
25.4.11. HPSのデバッグAPBインターフェイス
25.4.12. FPGAインターフェイス
25.4.13. デバッグクロック
25.4.14. デバッグのリセット
16.5.12.5. eMMCカードデバイスの代替ブート操作
次の図は、eMMCカードデバイスの代替ブート操作の実行に必要な一連の手順を示しています。詳細な手順については、フローチャートに従い説明します。
図 60. eMMCの代替ブート操作フロー†
- ソフトウェア・ドライバーは次の内容を確認します。†
- eMMCカードデバイスが代替ブート操作をサポートしているか (eMMCカードでBOOT_INFOビットが1に設定されている)。†
- カードデバイスのBOOT_SIZE_MULTおよびBOOT_BUS_WIDTHの値。これは、ブートプロセス時に使用されます。†
- ソフトウェアで次のビットを設定します。†
- intmaskレジスターの適切なビットを0にリセットし、割り込みのマスクを設定します。†
- ctrlレジスターのint_enableビットを1に設定します。ctrlレジスターの他のビットは0に設定する必要があります。†
注: インテルでは、rintstsレジスターおよびidstsレジスターに0xFFFFFFFFを書き込み、保留中の割り込みをクリアした後で、int_enableビットを設定することを推奨しています。内部DMAコントローラー・モードの場合、ソフトウェア・ドライバーでは、idintenレジスターの関連するフィールドすべてのマスクを解除する必要があります。†
- 受信したブートデータの転送に、ソフトウェア・ドライバーで内部DMAコントローラーを使用する必要がある場合は、次の手順を実行する必要があります。†
- 内部DMAコントローラーの送信シーケンスおよび内部DMAコントローラーの受信シーケンスの説明に従い記述子を設定します。†
- ctrlレジスターのuse internal DMAC (use_internal_dmac) ビットを1に設定します。†
- clkdivレジスターを使用してカードデバイスの周波数を400kHzに設定します。詳細は、クロックのセットアップを参照してください。カードクロックが動作していることを確認します。†
- カード・インターフェイスで少なくとも74カード・クロック・サイクルが確実に発生するまで待機します。†
- tmoutレジスターのdata_timeoutフィールドを、カードデバイスの合計アクセス時間 (NAC) に等しくなるように設定します。†
- blksizレジスターを0x200 (512バイト) に設定します。†
- bytcntレジスターを、カードデバイスのBOOT_SIZE_MULTの値で示されているとおりに、128Kバイトの倍数に設定します。 †
- fifothレジスターのrx_wmarkフィールドを設定します。しきい値の値は通常、512に設定することができます。これは、FIFOバッファー深さの半分です。†
- cmdargレジスターを0xFFFFFFFAに設定します。†
- cmdレジスターのフィールドを次のように設定し、コマンドを開始します。†
- start_cmd = 1†
- enable_boot = 1†
- expect_boot_ack†
- カードデバイスから開始の肯定応答パターンが想定される場合、expect_boot_ackを1に設定します。†
- カードデバイスから開始の肯定応答パターンが想定されない場合は、expect_boot_ackを0に設定します。†
- card_number = 0†
- data_expected = 1†
- cmd_index = 0†
- cmdレジスターの残りのビットを0に設定します。†
- カードデバイスから開始の肯定応答パターンが想定されない (expect_boot_ackが0に設定されている) 場合は、ステップ15に進みます。†
- Command Done割り込みを待機します。†
- このステップでは、開始の肯定応答パターンが想定される (ステップ11でexpect_boot_ackが1に設定されている) 場合の手順を示します。†
- コマンドの開始 (ステップ11) 後50ms以内にコントローラーからBoot ACK Received割り込みを受信しない場合は、開始パターンが受信されていません。ソフトウェア・ドライバーはブートプロセスを中止し、通常の検出から開始する必要があります。†
内部DMAコントローラー・モードがブートプロセスに使用されている場合、コントローラーは、Boot ACK Receivedのタイムアウト後に次のステップを行います。†
- DMA記述子が閉じられます。†
- idstsレジスターのcesビットが1に設定され、Boot ACK Receivedのタイムアウトを示します。†
- idstsレジスターのriビットは設定されません。†
- Boot ACK Received割り込みを受信している場合、ソフトウェア・ドライバーは、これに1を書き込むことでこの割り込みをクリアする必要があります。†
Boot ACK Received割り込み後0.95秒以内に、Boot Data Start割り込みをコントローラーから受信する必要があります。これが発生しない場合、ソフトウェア・ドライバーはブートプロセスを中止し、通常の検出から開始する必要があります。†
内部DMAコントローラー・モードがブートプロセスに使用されている場合、コントローラーは、Boot ACK Receivedのタイムアウト後に次のステップを行います。†
- DMA記述子が閉じられます。†
- idstsレジスターのcesビットが1に設定され、Boot Data Startのタイムアウトを示します。†
- idstsレジスターのriビットは設定されません。†
- Boot Data Start割り込みを受信している場合は、カードデバイスからブートデータを受信していることを示しています。DMAエンジンが内部DMAコントローラー・モードではない場合は、ソフトウェア・ドライバーはその後、rintstsレジスターのrxdr割り込みビットに基づき、コントローラーからのデータ読み出しを開始することができます。†
内部DMAコントローラー・モードの場合は、fifothレジスターのrx_wmarkフィールドで指定されているレベルに到達するとすぐに、DMAエンジンはFIFOバッファーからシステムメモリーへのデータ転送を開始します。†
- ソフトウェア・ドライバーは、SD/SDIO GO_IDLE_STATEコマンドを送信するようにコントローラーに指示することで、ブートプロセスを終了する必要があります。†
- cmdargレジスターを0にリセットします。†
- cmdレジスターのstart_cmdビットを1に設定し、その他のビットはすべて0に設定します。†
- カードからのブートデータの転送が正常に完了すると、次の割り込みが生成されます。†
- rintstsレジスターのcmdビットおよびdtoビット†
- idstsレジスターのriビット (内部DMAコントローラー・モードの場合のみ)†
- ブート肯定応答パターン (0b010) でエラーが発生した場合、またはEBEが発生した場合†
- コントローラーは、Boot ACK Received割り込みを生成しません。†
- コントローラーはBoot Data Startを検出し、Boot Data Start割り込みを生成します。†
- コントローラーは、ブートデータの受信を続けます。†
- Boot Data Start割り込みを受信すると、アプリケーションはブートプロセスを中断する必要があります。†
- 内部DMAコントローラー・モードの場合†
- ソフトウェア・ドライバーが、受信したブートデータに必要な記述子よりも多くの記述子を作成した場合、コントローラーでは余分な記述子を閉じません。†
- ソフトウェア・ドライバーが、受信したブートデータに必要な記述子よりも少ない記述子を作成した場合、コントローラーはDescriptor Unavailable割り込みを生成し、システムメモリーへのデータ転送をそれ以上行いません。†
- データブロック転送の間でNACに違反している場合、DRTO割り込みがアサートされます。それ以外にも、スタートビットまたはエンドビットに関連するエラーがある場合は、SBEまたはEBE割り込みも生成されます。†
- コマンドの開始 (ステップ11) 後50ms以内にコントローラーからBoot ACK Received割り込みを受信しない場合は、開始パターンが受信されていません。ソフトウェア・ドライバーはブートプロセスを中止し、通常の検出から開始する必要があります。†
- Command Done割り込みを待機します。†
- このステップでは、開始の肯定応答パターンが想定されない (step 11でexpect_boot_ackが0に設定されている) 場合の手順について示します。†
- コマンドの開始 (ステップ11) 後1秒以内にコントローラーからBoot Data Start割り込みを受信しない場合、ソフトウェア・ドライバーはブートプロセスを中止し、通常の検出から開始する必要があります。† 内部DMAコントローラー・モードの場合は、次の内容が行われます。†
- DMA記述子が閉じられます。†
- idstsレジスターのcesビットが1に設定され、Boot Data Startのタイムアウトを示します。†
- idstsレジスターのriビットは設定されません。†
- Boot Data Start割り込みを受信している場合は、ブートデータをカードデバイスから受信しています。DMAエンジンが内部DMAコントローラー・モードではない場合は、ソフトウェア・ドライバーはその後、rintstsレジスターのrxdr割り込みビットに基づき、コントローラーからのデータの読み出しを開始することができます。†
内部DMAコントローラー・モードの場合は、fifothレジスターのrx_wmarkフィールドで指定されているレベルに到達するとすぐに、DMAエンジンはFIFOバッファーからシステムメモリーへのデータ転送を開始します。†
- ソフトウェア・ドライバーは、SD/SDIO GO_IDLE_STATE (CMD0) コマンドを送信するようにコントローラーに指示することで、ブートプロセスを終了する必要があります。†
- cmdargレジスターを0にリセットします。†
- cmdレジスターのstart_cmdビットを1に設定し、その他のビットはすべて0に設定します。†
- カードからのブートデータの転送が正常に完了すると、次の割り込みが生成されます。†
- rintstsレジスターのcmdビットおよびdtoビット†
- idstsレジスターのriビット (内部DMAコントローラー・モードの場合のみ)†
- 内部DMAコントローラー・モードの場合†
- ソフトウェア・ドライバーが、受信したブートデータに必要な記述子よりも多くの記述子を作成した場合、コントローラーでは余分な記述子を閉じません。†
- ソフトウェア・ドライバーが、受信したブートデータに必要な記述子よりも少ない記述子を作成した場合、コントローラーはDescriptor Unavailable割り込みを生成し、システムメモリーへのデータ転送をそれ以上行いません。†
- コマンドの開始 (ステップ11) 後1秒以内にコントローラーからBoot Data Start割り込みを受信しない場合、ソフトウェア・ドライバーはブートプロセスを中止し、通常の検出から開始する必要があります。† 内部DMAコントローラー・モードの場合は、次の内容が行われます。†
eMMCカードデバイスの代替ブート操作は完了しています。†