您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 链式DMA疑惑
本帖共有1115个阅读者
发表帖子 发表投票 回复主题
链式DMA疑惑
qwert115599(论坛新手)
qwert115599
头衔:社区公民
帮派:无帮无派
帖数:11
金钱:212
积分:16
注册时间:2012/3/6
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
链式DMA疑惑
请问版主,对于链式DMA,假设有4组 descriptor block,当第1组传递完成后,将DMAEN清除,停止DMA,然后过了一段时间后,我在将DMAEN使能,开始DMA传送,请问这次开始是继续上次的传送,也就是从第2组descriptor block开始传递么?还是整个链式DMA都重新开始了?

我觉得是重新开始了,因为在第一个时刻采集的图片1,跟最后一个时刻采集的图片2完全一样,说明这两张图片并不是两个时刻采集的样本。。。不知道我理解的对不起。。。

如果我想暂停DMA,而不是停止,那么要通过什么方式呢?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/21 18:52:36
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

应该是从头开始传,你可以打开VDSP菜单下,寄存器中DMA配置的寄存器。当DMA关闭使能后,原配置值是否有变动,再次使能后会按照寄存器的配置值运行。

好像没有DMA暂停的机制。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/22 9:57:25
qwert115599(论坛新手)
qwert115599
头衔:社区公民
帮派:无帮无派
帖数:11
金钱:212
积分:16
注册时间:2012/3/6
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
andy哥,您看我这个程序刚编译完,还没初始化,怎么DMA REGISTER就有初值了呢?


上传的图片
  201211221592930.jpg [ 68.14 KB 589×393 ] (缩略时请点击查看原图)

 


还有就是,链式DMA定义如下:

struct des{
struct des * des_ptr;
volatile uint8_t (*start_addr)[];
volatile uint16_t dma_cfg;
volatile uint16_t xcnt;
volatile uint16_t xmod;
volatile uint16_t ycnt;
volatile uint16_t ymod;
};
typedef struct des des_struct;
//初始化链表:
des_struct des1 = {
&des2,
sFrame0,  
0x7900 |  DI_EN | WNR | WDSIZE_16| DMA2D,
720,
2,
288,
2};

des_struct des2 = {
&des1,
sFrame0+1,
0x7900 |  DI_EN | WNR | WDSIZE_16| DMA2D,
720,
2,
288,
2};

void Init_PPI_DMA(des_struct * Des)
{
*pPPI_CONTROL =  FLD_SEL | PACK_EN   ;
*pPPI_FRAME = 625;
sync();

//connect PPI to DMA channel 0
*pDMA0_PERIPHERAL_MAP = 0x0;
*pDMA0_NEXT_DESC_PTR = Des;  //DMA描述符链表的起点
*pDMA0_CONFIG =  0x7900 | DI_EN | WNR | WDSIZE_16| DMA2D  ;
ssync();

}//end Init_PPI

Init_PPI_DMA(&des1);
enable_PPI_DMA();
后,能进入到DMA中断,但是缓存中没有数据,查看DMA寄存器发现没有完成和运行标,如下:


上传的图片
  2012112215262230.jpg [ 86.15 KB 584×468 ] (缩略时请点击查看原图)

 


但是如果把上面红色的0x7900改为0x7400,只改这一个地方,程序就能跑了,真不知道是为什么,请问andy哥遇到过这样的情况么?我的链表明明就是9个元素,为什么NSIZE=9不行,NSIZE=4就可以了呢???十分不解。。。



上传的图片
  201211221530230.jpg [ 70.03 KB 499×466 ] (缩略时请点击查看原图)

 


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/22 15:30:54
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

编译后有值,是否是你上一次运行残留的值?

你的描述符只有7个,你写9个描述符大小,肯定会出错。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/23 15:06:51
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159184 Call, 1 Queries, Processed in 0.078125 second(s),