English
Language : 

K60P100M100SF2RM Datasheet, PDF (1656/1809 Pages) Freescale Semiconductor, Inc – K60 Sub-Family Reference Manual
Initialization/application of SDHC
last block is not transferred. On the other hand, if it is within the last block that the CRC
error occurs, an auto CMD12 will be sent by the SDHC. In this case, the driver shall re-
send or re-obtain the last block with a single block transfer.
52.6.3.5.2 Internal DMA error
During the data transfer with internal simple DMA, if the DMA engine encounters some
error on the system bus, the DMA operation is aborted and DMA error interrupt is sent to
the host system. When acknowledged by such an interrupt, the driver shall calculate the
start address of data block in which the error occurs. The start address can be calculated
by either:
1. Read the DMA system address register. The error occurs during the previous burst.
Taking the block size, the previous burst length and the start address of the next burst
transfer into account, it is straight forward to obtain the start address of the corrupted
block.
2. Read the BLKCNT field of the block attribute register. By the number of blocks left,
the total number to transfer, the start address of transfer, and the size of each block,
the start address of corrupted block can be determined. When the BCEN bit is not
set, the contents of the block attribute register does not change, so this method does
not work.
When a DMA error occurs, it is recommended to abort the current transfer by means of a
CMD12 (for multi block transfer), apply a reset for data, and re-start the transfer from the
corrupted block to recover from the error.
52.6.3.5.3 ADMA error
There are three kinds of possible ADMA errors. The transfer, invalid descriptor, and
data-length mismatch errors. Whenever these errors occur, the DMA transfer stops and
the corresponding error status bit is set. For acknowledging the status, the host driver
should recover the error as shown below and re-transfer from the place of interruption.
1. Transfer error: Such errors may occur during data transfer or descriptor fetch. For
either scenario, it is recommended to retrieve the transfer context, reset for the data
part and re-transfer the block that was corrupted, or the next block if no block is
corrupted.
1656
K60 Sub-Family Reference Manual, Rev. 6, Nov 2011
Freescale Semiconductor, Inc.