dma_image.c

来自「MPC5200 BSP 支持ATA,USB, I2C,扩展网口」· C语言 代码 · 共 620 行 · 第 1/4 页

C
620
字号
	TASK_PCI_SWAP_TX_api->DRD[3]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrStartTDT) + 0x001cUL - vMemOffset);
	TASK_PCI_SWAP_TX_api->DRD[4]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrStartTDT) + 0x0024UL - vMemOffset);
	TASK_PCI_SWAP_TX_api->DRD[5]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrStartTDT) + 0x0028UL - vMemOffset);
	TASK_PCI_SWAP_TX_api->DRD[6]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrStartTDT) + 0x0030UL - vMemOffset);
	TASK_PCI_SWAP_TX_api->DRD[7]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrStartTDT) + 0x003cUL - vMemOffset);
	TASK_PCI_SWAP_TX_api->NumVar        = 12;
	TASK_PCI_SWAP_TX_api->var           = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrVarTab) - vMemOffset);
	TASK_PCI_SWAP_TX_api->NumInc        = 5;
	TASK_PCI_SWAP_TX_api->inc           = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_TX_api->PtrVarTab) + (4*24) - vMemOffset);
	TASK_PCI_SWAP_TX_api->AddrDstFIFO   = &(TASK_PCI_SWAP_TX_api->var[0]);
	TASK_PCI_SWAP_TX_api->IncrBytes     = (volatile sint16 *)&(TASK_PCI_SWAP_TX_api->inc[0])+1;
	TASK_PCI_SWAP_TX_api->AddrPktSizeReg = &(TASK_PCI_SWAP_TX_api->var[1]);
	TASK_PCI_SWAP_TX_api->IncrSrc       = (volatile sint16 *)&(TASK_PCI_SWAP_TX_api->inc[1])+1;
	TASK_PCI_SWAP_TX_api->AddrSCStatusReg = &(TASK_PCI_SWAP_TX_api->var[2]);
	TASK_PCI_SWAP_TX_api->Bytes         = &(TASK_PCI_SWAP_TX_api->var[3]);
	TASK_PCI_SWAP_TX_api->IterExtra     = &(TASK_PCI_SWAP_TX_api->var[4]);
	TASK_PCI_SWAP_TX_api->StartAddrSrc  = &(TASK_PCI_SWAP_TX_api->var[7]);
}


void init_dma_image_TASK_PCI_SWAP_RX(uint8 *taskBar, sint64 vMemOffset)
{
	uint8 *vMem_taskBar = (taskBar - vMemOffset);
	TASK_PCI_SWAP_RX_api->TaskNum       = 7;
	TASK_PCI_SWAP_RX_api->PtrStartTDT   = (volatile uint32 *)(vMem_taskBar + 0x00e0UL);
	TASK_PCI_SWAP_RX_api->PtrEndTDT     = (volatile uint32 *)(vMem_taskBar + 0x00e4UL);
	TASK_PCI_SWAP_RX_api->PtrVarTab     = (volatile uint32 *)(vMem_taskBar + 0x00e8UL);
	TASK_PCI_SWAP_RX_api->PtrFDT        = (volatile uint32 *)(vMem_taskBar + 0x00ecUL);
	TASK_PCI_SWAP_RX_api->PtrCSave      = (volatile uint32 *)(vMem_taskBar + 0x00f8UL);
	TASK_PCI_SWAP_RX_api->TaskPragma    = (volatile uint8  *)(TASK_PCI_SWAP_RX_api->PtrFDT)+3;
	TASK_PCI_SWAP_RX_api->NumDRD        = 6;
	TASK_PCI_SWAP_RX_api->DRD[0]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x0008UL - vMemOffset);
	TASK_PCI_SWAP_RX_api->DRD[1]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x0010UL - vMemOffset);
	TASK_PCI_SWAP_RX_api->DRD[2]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x0014UL - vMemOffset);
	TASK_PCI_SWAP_RX_api->DRD[3]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x001cUL - vMemOffset);
	TASK_PCI_SWAP_RX_api->DRD[4]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x0024UL - vMemOffset);
	TASK_PCI_SWAP_RX_api->DRD[5]        = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrStartTDT) + 0x0030UL - vMemOffset);
	TASK_PCI_SWAP_RX_api->NumVar        = 9;
	TASK_PCI_SWAP_RX_api->var           = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrVarTab) - vMemOffset);
	TASK_PCI_SWAP_RX_api->NumInc        = 4;
	TASK_PCI_SWAP_RX_api->inc           = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_SWAP_RX_api->PtrVarTab) + (4*24) - vMemOffset);
	TASK_PCI_SWAP_RX_api->AddrPktSizeReg = &(TASK_PCI_SWAP_RX_api->var[0]);
	TASK_PCI_SWAP_RX_api->IncrBytes     = (volatile sint16 *)&(TASK_PCI_SWAP_RX_api->inc[0])+1;
	TASK_PCI_SWAP_RX_api->AddrSrcFIFO   = &(TASK_PCI_SWAP_RX_api->var[1]);
	TASK_PCI_SWAP_RX_api->IncrDst       = (volatile sint16 *)&(TASK_PCI_SWAP_RX_api->inc[1])+1;
	TASK_PCI_SWAP_RX_api->Bytes         = &(TASK_PCI_SWAP_RX_api->var[2]);
	TASK_PCI_SWAP_RX_api->IterExtra     = &(TASK_PCI_SWAP_RX_api->var[3]);
	TASK_PCI_SWAP_RX_api->StartAddrDst  = &(TASK_PCI_SWAP_RX_api->var[6]);
}


void init_dma_image_TASK_GEN_DP_0(uint8 *taskBar, sint64 vMemOffset)
{
	uint8 *vMem_taskBar = (taskBar - vMemOffset);
	TASK_GEN_DP_0_api->TaskNum          = 8;
	TASK_GEN_DP_0_api->PtrStartTDT      = (volatile uint32 *)(vMem_taskBar + 0x0100UL);
	TASK_GEN_DP_0_api->PtrEndTDT        = (volatile uint32 *)(vMem_taskBar + 0x0104UL);
	TASK_GEN_DP_0_api->PtrVarTab        = (volatile uint32 *)(vMem_taskBar + 0x0108UL);
	TASK_GEN_DP_0_api->PtrFDT           = (volatile uint32 *)(vMem_taskBar + 0x010cUL);
	TASK_GEN_DP_0_api->PtrCSave         = (volatile uint32 *)(vMem_taskBar + 0x0118UL);
	TASK_GEN_DP_0_api->TaskPragma       = (volatile uint8  *)(TASK_GEN_DP_0_api->PtrFDT)+3;
	TASK_GEN_DP_0_api->NumDRD           = 4;
	TASK_GEN_DP_0_api->DRD[0]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x000cUL - vMemOffset);
	TASK_GEN_DP_0_api->DRD[1]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x0018UL - vMemOffset);
	TASK_GEN_DP_0_api->DRD[2]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x0024UL - vMemOffset);
	TASK_GEN_DP_0_api->DRD[3]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x002cUL - vMemOffset);
	TASK_GEN_DP_0_api->NumVar           = 9;
	TASK_GEN_DP_0_api->var              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrVarTab) - vMemOffset);
	TASK_GEN_DP_0_api->NumInc           = 8;
	TASK_GEN_DP_0_api->inc              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrVarTab) + (4*24) - vMemOffset);
	TASK_GEN_DP_0_api->Bytes            = &(TASK_GEN_DP_0_api->var[0]);
	TASK_GEN_DP_0_api->IncrBytes        = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[0])+1;
	TASK_GEN_DP_0_api->IterExtra        = &(TASK_GEN_DP_0_api->var[1]);
	TASK_GEN_DP_0_api->IncrDst          = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[1])+1;
	TASK_GEN_DP_0_api->IncrDstMA        = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[2])+1;
	TASK_GEN_DP_0_api->IncrSrc          = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[3])+1;
	TASK_GEN_DP_0_api->StartAddrDst     = &(TASK_GEN_DP_0_api->var[4]);
	TASK_GEN_DP_0_api->IncrSrcMA        = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[4])+1;
	TASK_GEN_DP_0_api->StartAddrSrc     = &(TASK_GEN_DP_0_api->var[5]);
}


void init_dma_image_TASK_GEN_DP_1(uint8 *taskBar, sint64 vMemOffset)
{
	uint8 *vMem_taskBar = (taskBar - vMemOffset);
	TASK_GEN_DP_1_api->TaskNum          = 9;
	TASK_GEN_DP_1_api->PtrStartTDT      = (volatile uint32 *)(vMem_taskBar + 0x0120UL);
	TASK_GEN_DP_1_api->PtrEndTDT        = (volatile uint32 *)(vMem_taskBar + 0x0124UL);
	TASK_GEN_DP_1_api->PtrVarTab        = (volatile uint32 *)(vMem_taskBar + 0x0128UL);
	TASK_GEN_DP_1_api->PtrFDT           = (volatile uint32 *)(vMem_taskBar + 0x012cUL);
	TASK_GEN_DP_1_api->PtrCSave         = (volatile uint32 *)(vMem_taskBar + 0x0138UL);
	TASK_GEN_DP_1_api->TaskPragma       = (volatile uint8  *)(TASK_GEN_DP_1_api->PtrFDT)+3;
	TASK_GEN_DP_1_api->NumDRD           = 4;
	TASK_GEN_DP_1_api->DRD[0]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x000cUL - vMemOffset);
	TASK_GEN_DP_1_api->DRD[1]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x0018UL - vMemOffset);
	TASK_GEN_DP_1_api->DRD[2]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x0024UL - vMemOffset);
	TASK_GEN_DP_1_api->DRD[3]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x002cUL - vMemOffset);
	TASK_GEN_DP_1_api->NumVar           = 9;
	TASK_GEN_DP_1_api->var              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrVarTab) - vMemOffset);
	TASK_GEN_DP_1_api->NumInc           = 8;
	TASK_GEN_DP_1_api->inc              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrVarTab) + (4*24) - vMemOffset);
	TASK_GEN_DP_1_api->Bytes            = &(TASK_GEN_DP_1_api->var[0]);
	TASK_GEN_DP_1_api->IncrBytes        = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[0])+1;
	TASK_GEN_DP_1_api->IterExtra        = &(TASK_GEN_DP_1_api->var[1]);
	TASK_GEN_DP_1_api->IncrDst          = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[1])+1;
	TASK_GEN_DP_1_api->IncrDstMA        = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[2])+1;
	TASK_GEN_DP_1_api->IncrSrc          = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[3])+1;
	TASK_GEN_DP_1_api->StartAddrDst     = &(TASK_GEN_DP_1_api->var[4]);
	TASK_GEN_DP_1_api->IncrSrcMA        = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[4])+1;
	TASK_GEN_DP_1_api->StartAddrSrc     = &(TASK_GEN_DP_1_api->var[5]);
}


void init_dma_image_TASK_GEN_DP_2(uint8 *taskBar, sint64 vMemOffset)
{
	uint8 *vMem_taskBar = (taskBar - vMemOffset);
	TASK_GEN_DP_2_api->TaskNum          = 10;
	TASK_GEN_DP_2_api->PtrStartTDT      = (volatile uint32 *)(vMem_taskBar + 0x0140UL);
	TASK_GEN_DP_2_api->PtrEndTDT        = (volatile uint32 *)(vMem_taskBar + 0x0144UL);
	TASK_GEN_DP_2_api->PtrVarTab        = (volatile uint32 *)(vMem_taskBar + 0x0148UL);
	TASK_GEN_DP_2_api->PtrFDT           = (volatile uint32 *)(vMem_taskBar + 0x014cUL);
	TASK_GEN_DP_2_api->PtrCSave         = (volatile uint32 *)(vMem_taskBar + 0x0158UL);
	TASK_GEN_DP_2_api->TaskPragma       = (volatile uint8  *)(TASK_GEN_DP_2_api->PtrFDT)+3;
	TASK_GEN_DP_2_api->NumDRD           = 4;
	TASK_GEN_DP_2_api->DRD[0]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x000cUL - vMemOffset);
	TASK_GEN_DP_2_api->DRD[1]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x0018UL - vMemOffset);
	TASK_GEN_DP_2_api->DRD[2]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x0024UL - vMemOffset);
	TASK_GEN_DP_2_api->DRD[3]           = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x002cUL - vMemOffset);
	TASK_GEN_DP_2_api->NumVar           = 9;
	TASK_GEN_DP_2_api->var              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrVarTab) - vMemOffset);
	TASK_GEN_DP_2_api->NumInc           = 8;
	TASK_GEN_DP_2_api->inc              = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrVarTab) + (4*24) - vMemOffset);
	TASK_GEN_DP_2_api->Bytes            = &(TASK_GEN_DP_2_api->var[0]);
	TASK_GEN_DP_2_api->IncrBytes        = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[0])+1;
	TASK_GEN_DP_2_api->IterExtra        = &(TASK_GEN_DP_2_api->var[1]);
	TASK_GEN_DP_2_api->IncrDst          = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[1])+1;
	TASK_GEN_DP_2_api->IncrDstMA        = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[2])+1;
	TASK_GEN_DP_2_api->IncrSrc          = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[3])+1;
	TASK_GEN_DP_2_api->StartAddrDst     = &(TASK_GEN_DP_2_api->var[4]);
	TASK_GEN_DP_2_api->IncrSrcMA        = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[4])+1;
	TASK_GEN_DP_2_api->StartAddrSrc     = &(TASK_GEN_DP_2_api->var[5]);
}


void init_dma_image_TASK_GEN_DP_3(uint8 *taskBar, sint64 vMemOffset)
{
	uint8 *vMem_taskBar = (taskBar - vMemOffset);
	TASK_GEN_DP_3_api->TaskNum          = 11;
	TASK_GEN_DP_3_api->PtrStartTDT      = (volatile uint32 *)(vMem_taskBar + 0x0160UL);
	TASK_GEN_DP_3_api->PtrEndTDT        = (volatile uint32 *)(vMem_taskBar + 0x0164UL);
	TASK_GEN_DP_3_api->PtrVarTab        = (volatile uint32 *)(vMem_taskBar + 0x0168UL);
	TASK_GEN_DP_3_api->PtrFDT           = (volatile uint32 *)(vMem_taskBar + 0x016cUL);
	TASK_GEN_DP_3_api->PtrCSave         = (volatile uint32 *)(vMem_taskBar + 0x0178UL);
	TASK_GEN_DP_3_api->TaskPragma       = (volatile uint8  *)(TASK_GEN_DP_3_api->PtrFDT)+3;
	TASK_GEN_DP_3_api->NumDRD           = 4;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?