Tug of DMA
A data processing pipeline uses DMA1 to copy sensor sample batches into a processing buffer (memory-to-memory). The firmware receives a batch ID ('A', 'B', or 'C') over UART, kicks off a DMA transfer for that batch, computes an XOR checksum of the processing buffer, and reports it back.
For each batch command the firmware reports one line in the form: BATCH_<id>:0x<checksum>\n where <checksum> is the XOR of the four words the DMA copied for that batch, printed as eight uppercase hex digits.
The DMA is wired up correctly and genuinely carries each batch into the buffer. But the checksums that come back are wrong, or drift between runs of the exact same command sequence — as if the CPU sometimes reads the buffer before it reflects what the DMA engine actually wrote there.