打印

关于SDIO DMA (uint32_t *)指针传输数据缓存区的4个字节问题?

[复制链接]
3608|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YPLD|  楼主 | 2011-1-7 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SD_Error SD_ReadBlock(uint32_t addr, uint32_t *readbuff, uint16_t BlockSize)
上述函数数据存放缓存区uint32_t *readbuff  是4字节的,如果给的地址不是4的整数倍读取的数据会出错.
如:
SD_ReadBlock( 0, (uint32_t *)&buffer[2] , 512)    //  出错
SD_ReadBlock( 0, (uint32_t *)&buffer[4] , 512)    //  正确
有什么办法可以避免上面情况?
沙发
wjc3k| | 2011-1-8 11:07 | 只看该作者
典型的字节对齐问题。  DMA操作上要考虑的。

使用特权

评论回复
板凳
seawwh| | 2011-1-9 23:51 | 只看该作者
建议使用下面的编译控制语句
#pragma data_alignment=4

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

11

帖子

0

粉丝