I came across this Engineering Bulletin for the MPC5200 by accident.
It isn't referenced from anywhere on the Freescale site that I, Freescale's or Google's searches can find. I expect it to be referenced from the MPC5200 paget.
The document is here:
http://cache.freescale.com/files/microcontrollers/doc/eng_bulletin/EB711.pdf
it doesn't explicitly state what mask versions it applies to, or even if it applies to the MPC5200 or MPC5200B (it says "MPC5200(b)").
It contains:
Freescale Semiconductor
Engineering Bulletin
Document Number: EB711
Rev. 0, 05/2009
MPC5200(b) ATA MDMA, UDMA
Functionality
BestComm Setup Recommendations
by: Peter Kardos
Application Engineer, Roznov
The ATA functionality is limited and problematic when
DMA modes are used with data cache and instruction
cache enabled.
The malfunction is demonstrated by corrupted and/or
missing data in the buffer. Corrupted data in the read
buffer is either bit shifted or is “missing” and replaced by
0x0 or 0xFF. Amount of the corrupted data during
transfer is DMA-mode and speed dependent. To avoid
these faults, the following workaround must be applied
and is recommended for other peripheral buffers as well
to improve reliability and system stability (PCI memory
window, PCI mapping, Local plus bus, and so on).
1. Set appropriate peripheral FIFO size and granularity to one or more.
2. Set the buffer that is stored in the memory to not cacheable. If you are using more peripherals with
BestComm, the easiest way is to create a memory segment.
The following figure shows an example of this setup and the code to be used in CodeWarrior. The image
was taken from the MPC5200(b) Quick Start utility that can be downloaded from Freescale website
www.freescale.com.
These recommendations should be applied in operating systems like Linux and VxWorks as well.
Just came across this old post.
The described problem must be related to some code, not to the silicon.
My SDMA (aka "bestcomm") code works quite well at ATA66 (udma). There is a problem
occuring at times but it does not result in lost data, just in locked up ATA
interface; an ATA rerun handles it OK. Since this occurs rarely (once or twice a
minute if both ATA and Ethernet transfer at top speed in parallel), this
is no performance issue (takes just some coding to solve).
This ATA data corruption on MPC5200 definitely belongs in the errata, along with details of when it happens.