imx28 DMA is blocked

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

imx28 DMA is blocked

779件の閲覧回数
liuxing
Contributor II

when I want to transfer 4 bytes data to HW_LCDIF_DATA register.

the command structure is set as follows:

pVBufAdjVirtAddr->pNext = (mem_dma_cmd_t *)(nVBufAdjPhysAddr+sizeof(mem_dma_cmd_t));
pVBufAdjVirtAddr->DmaCmd.U = (BF_APBH_CHn_CMD_XFER_COUNT(4) |
(BF_APBH_CHn_CMD_CMDWORDS(0) |
BF_APBH_CHn_CMD_WAIT4ENDCMD(1) |
BF_APBH_CHn_CMD_SEMAPHORE(0) |
BF_APBH_CHn_CMD_IRQONCMPLT(0) |
BF_APBH_CHn_CMD_CHAIN(1) |
BF_APBH_CHn_CMD_COMMAND(BV_APBH_CHn_CMD_COMMAND__DMA_READ)));
pVBufAdjVirtAddr->pDMABuffer = (void *)(Addr+i*4);
pVBufAdjVirtAddr++;
nVBufAdjPhysAddr += sizeof(mem_dma_cmd_t);

however,the transfer may be blocked.The HW_LCDIF_DATA is not changed.

I dump some registers(DDK_APBH_CHANNEL_LCDIF):

HW_APBH_CHn_DEBUG1_RD 0x01200008

HW_APBH_CHn_DEBUG2_RD 0x00040000

HW_APBH_CHn_BAR_RD 0x43B7F004

HW_APBH_CHn_CURCMDAR_RD 0x44768000

HW_APBH_CHn_NXTCMDAR_RD 0x44768010

HW_APBH_CHn_CMD_RD 0x00040006 

HW_APBH_CHn_SEMA_RD 0x00010000

ラベル(1)
0 件の賞賛
返信
1 返信

716件の閲覧回数
igorpadykov
NXP Employee
NXP Employee

Hi xing

may be useful to look at apbh and lcdif baremetal examples in i.MX28 OBDS

Lab and Test Software (1)
On-Board Diagnostic Suit for the i.MX28(REV 1)

i.MX28 Evaluation Kit | NXP 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 件の賞賛
返信