Any detected error results in the AXI CDMA gracefully halting. Per AXI4 protocol, all AXI transfers that have been committed with accepted address channel transfers must complete the associated data transfer. Therefore, the AXI CDMA completes all committed AXI4 transfers before setting the CDMASR.IDLE bit. When the CDMASR.IDLE bit is set to 1, the AXI CDMA engine is truly halted.
The pointer to the descriptor associated with the errored transfer is updated to the CURDESC_PNTR register. On the rare occurrence that more than one error is detected, only the CURDESC_PNTR register for one of the errors are logged. To resume operations, a reset must be issued to the AXI CDMA either by a hardware reset or by writing a 1 to the CDMACR.Reset bit.
The following is a list of possible errors:
•DMAIntErr – CDMA Internal Error indicates that an internal error in the AXI DataMover was detected. This can occur under two conditions. First, for the DataMover MM2S and S2MM channels, it can occur when a BTT = 0 is written to the primary AXI DataMover command input. This happens if a transfer descriptor is fetched and executed with the CONTROL word having the BTT field = 0.
•DMASlvErr – CDMA Slave Error occurs when the slave to or from which data is transferred responds with a SLVERR.
•DMADecErr – CDMA Decode Error occurs when the address request is targeted to an address that does not exist.
•SGIntErr – Scatter Gather Internal Error occurs when a BTT = 0. This error only occurs if a fetched descriptor already has the Complete bit set. This condition indicates to the AXI CDMA that the descriptor has not been processed by the CPU, and therefore is considered stale.
•SGSlvErr – Scatter Gather Slave Error occurs when the slave to or from which descriptors are fetched and updated responds with a SLVERR.
•SGDecErr – Scatter Gather Decode Error occurs when the address request is targeted to an address that does not exist.
Note: Scatter Gather error bits are unable to be updated to the descriptor in remote memory. They are only captured in the associated channel CDMASR where the error occurred.