Hi,
We have encountered problem to using the McASP of AM335x.
When the system is heavily loaded, Output data of McASP be lost by using the AFIFO and EDMA.
Configuration details:
McASP
- 4 serial output
- 8 bit burst transfer mode
- Use AFIFO(WNUMEVT=4、WNUMDMA=4)
EDMA(PaRAM configuration)
EDMA BaseAddress+0x4100
(OPT) : 0x80100004
(SRC) : 0x8C638E80
(BCNT|ACNT) : 0x00040001
(DST) : 0x46000000
(DSTBIDX|SRCBIDX) : 0x00000020
(BCNTRLD|LINK) : 0x0000FFFF
(DSTCIDX|SRCCIDX) : 0x00000001
(Rsvd|CCNT) : 0x00000020
We experimented by preparing the output data of the following fixed values.
1byte x 32frame x 4serial port = 128byte output data
(Serial Port0[MCA0_AXR0]): 0x00, 0x01, 0x02, 0x03, ... 0x1C, 0x1D, 0x1E, 0x1F
(Serial Port1[MCA0_AXR1]): 0x20, 0x21, 0x22, 0x23, ... 0x3C, 0x3D, 0x3E, 0x3F
(Serial Port2[MCA0_AXR2]): 0x40, 0x41, 0x42, 0x43, ... 0x5C, 0x5D, 0x5E, 0x5F
(Serial Port3[MCA0_AXR3]): 0x60, 0x61, 0x62, 0x63, ... 0x7C, 0x7D, 0x7E, 0x7F
When the system is NOT heavily loaded, the above data are output correctly from each serial port.
However when the system is heavily loaded, Not correctly data output from the serial port by missing the part of the data.
For example, each serial port output the following data at a problem occurs in the second frame.
1frame 2frame 3frame 4frame ... 29frame 30frame 31frame 32frame
(Serial Port0[MCA0_AXR0]): 0x00, No data output, 0x21, 0x22, ... 0x3B, 0x3C, 0x3D, 0x3E
(Serial Port1[MCA0_AXR1]): 0x20, No data output, 0x41, 0x42, ... 0x5B, 0x5C, 0x5D, 0x5E
(Serial Port2[MCA0_AXR2]): 0x40, No data output, 0x61, 0x62, ... 0x7B, 0x7C, 0x7D, 0x7E
(Serial Port3[MCA0_AXR3]): 0x60, No data output, 0x02, 0x03, ... 0x1C, 0x1D, 0x1E, 0x1F
EDMA is not a transfer error condition, the problem does not occur when not using the AFIFO even when the system is heavily loaded.
so, we think the AFIFO has H/W issue.
We found a similar problem in the AM437x errata.
[Advisory 16 McASP: McASP to EDMA Synchronization Level Event Can Be Lost(SPRZ408B)]
Does this errata also applies to AM335x?
Best regards,
H.U