查看PG-021知道,AXI DMA采用小端对齐,即高字节放在高地址,低字节放在低地址。在做AD7989数据采集时,要完成如下要求:
(1) AD采回的数据打包,一个packet包含1020个采集点(32位),接着用4个字(4Byte)来描述包的信息,包括通道号、块号(相当于packet号)、trig信号的位置(每个packet至多有一个trig信号)、crc校验码。
(2) 将每个packet的通过AXI DMA传送到DDR3中。
在做各部分时,发现了如下现象,当时没想明白,后来懂了。我们知道,AXI DMA在接收Stream Data时是这样做的(S2MM -- RxSetup()):
1) 配置DMA
XAxiDma_Config *Config;
Config = XAxiDma_LookupConfig(DMA_DEV_ID);
if (!Config)
{
xil_printf("No config found for %d\r\n", DMA_DEV_ID);
return XST_FAILURE;
}
/* Initialize DMA engine */
XAxiDma_CfgInitialize(&AxiDma, Config);
2) 设置DMA接收数据通道,启动DMA接收数据:RxSetup()
XAxiDma_BdRing *RxRingPtr;
XAxiDma_Bd *BdPtr;
XAxiDma_Bd *BdCurPtr;
int BdCount;
int FreeBdCount;
u32 RxBufferPtr;
RxRingPtr = XAxiDma_GetRxRing(&a