打印
[技术问答]

为什么PDMA送出的数据内容,会发生位移现象?

[复制链接]
1000|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
当来源或目标的地址设为数组起始地址时,用户必须检查数组起始地址是否为字节(word)对齐。

以下例buffer起始地址为0x2000_0039,因内存排序为编译程序决定,会有非字节对齐的情况发生。

unsigned int test2;
unsigned char test1;
unsigned char buffer[100];



当PDMA来源或目标的地址设定成buffer(0x2000_0039),PDMA的硬件配置会以字节存取(0x2000_0038)。
假设使用PDMA加UART传送数据时,将会送出0x01, 0x03…,而不是从0X03开始传送。

针对内存放置为非对齐字节的状况,可以使用aligned (4),让数组对齐内存中的字节
unsigned char buffer[100] __attribute__ ((aligned (4)));
数组buffer的起始地址会以4个byte的方式对齐摆放。



当PDMA来源或目标的地址设定成buffer(0x2000_003C),已有字节对齐。假设使用PDMA加UART传送数据时,将会从0X03开始传送。

使用特权

评论回复
沙发
mutable| | 2022-2-25 09:39 | 只看该作者
应该不会吧,虽然用的少,但是用过的,没发现有这个问题

使用特权

评论回复
板凳
tpgf| | 2022-3-8 09:36 | 只看该作者
请问什么是PDMA啊

使用特权

评论回复
地板
qcliu| | 2022-3-8 10:02 | 只看该作者
每个数据都是这个现象吗

使用特权

评论回复
5
drer| | 2022-3-8 10:11 | 只看该作者
每次都是固定的位数吗

使用特权

评论回复
6
nawu| | 2022-3-8 10:19 | 只看该作者
是哪种对齐模式啊

使用特权

评论回复
7
zljiu| | 2022-3-8 10:28 | 只看该作者
是不是缓存读取有问题啊

使用特权

评论回复
8
tfqi| | 2022-3-8 10:40 | 只看该作者
普通模式发生偏移吗

使用特权

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

本版积分规则

544

主题

2316

帖子

4

粉丝