继解决SDIO 4位总线的读写问题后,当前涉及到DMA的写操作问题。
1.当我把写数据缓冲区定义在函数内部时(位于栈),假设缓冲区首地址为pucBuf。当我向DMA写函数传递pucBuf,pucBuf + 1,pucBuf + 2,pucBuf + 3这四个值作为写缓冲区地址时,总是能将写地址之前的数据写入。比如,pucBuf[512] = {0xaa,0xbb,0xcc,0xdd,0xee,0},当我把0xcc的地址pucBuf + 2作为写缓冲首地址传送给DMA时,0xaa和0xbb这两项也会被写进SD卡。
2.当我把写数据缓冲区定义在函数外部时(位于全局区),发现第一个数据之前会被补0写进SD卡。比如,pucBuf[512] = {0xaa,0xbb,0xcc,0xdd,0xee,0},当我把pucBuf传递给DMA作为写缓冲的首地址时,实际写入SD卡的数据为{0x00,0xaa,0xbb,0xcc,0xdd,0xee,0}。
请大家探讨指教。 |