8.5.9.1.2 Boot Procedure, SDMA Mode
- Configure SDMMC:
a. Set the data bus width using SDMMC_HC1R.DW and SDMMC_HC1R.EXTDW according to BOOT_BUS_WIDTH in the Extended CSD Register (see “Embedded MultiMedia Card (e.MMC) Electrical Standard 4.51” ).
b. Select the speed mode (SDMMC_HC1R.HSEN or SDMMC_MC1R.DDR) according to BOOT_MODE in the Extended CSD Register.
c. Set the SDCLK frequency according to the selected speed mode.
d. If the Boot Acknowledge is sent by the e.MMC device (BOOT_ACK = 1 in the Extended CSD Register), set the Boot Acknowledge Enable to 1 (SDMMC_MC1R.BOOTA = 1).
e. Enable interrupt on Boot Acknowledge Received (SDMMC_NISTER.BOOTAR = 1 and SDMMC_NISIER.BOOTAR = 1).
f. Set the e.MMC Command Type to BOOT (SDMMC_MC1R.CMDTYP = 3).
g. Set SDMMC_TMR to read multiple blocks for the e.MMC device (SDMMC_TMR.MSBSEL = 1 and SDMMC_TMR.TDSEL = 1).
h. Select the SDMA transfer (SDMMC_TMR.DMAEN = 1 and SDMMC_HC1R.DMASEL = 0).
i. Write the SDMA system address where the boot data will be copied (SDMMC_SSAR.ADDR).
j. Optional: select the Auto CMD method (SDMMC_TMR.ACMDEN). Note: Auto CMD23 cannot be used with SDMA.
k. Set the block size to 512 bytes (SDMMC_BSR.BLKSIZE = 512).
l. Set the required number of read blocks (SDMMC_BCR.BLKCNT). SDMMC_TMR.BCEN must be set to 1.
- Write SDMMC_CR = 20(hexa) to set the e.MMC in Boot Operation mode.
- Wait for interrupt on Boot Acknowledge Received (BOOTAR).
- The user can copy the boot data sequentially as soon as the BRDRDY flag is asserted.
- When the data transfer is completed, the boot operation must be terminated by setting SDMMC_MC2R.ABOOT to ‘1’.