ADSP-21535 Blackfin的Mem DMA高速通信
BITSET?R7?0?? //设置R7的最低位为1,表示
准备启动写DMA
W?P5? = R6? //将R6和R7的低16位写入
两个配置寄存器中,真正启动DMA
W?I0? = R7.L?
DMA_WAIT? //等待DMA结束
R6 = W?P1?? //根据写描述子块第一个字的
最高位判断描述子块的所有权
cc = bittst?R6?15??
IF cc JUMP DMA_WAIT? //如果为1,表示还在DMA
状态,继续判断,等待
RTS?
.align 4? //在L2空间范围内定义两个
描述子块,要求4个字节对齐
.BYTE2 RAM_READ?5??
.align 4?
.BYTE2 RAM_WRITE?5??
值得注意的是,在上述DMA例程中,笔者使用了查询等待方式,但中间完全可以插入其他指令,例如DSP还可以同时作双乘加和两次32位取数。只要不访问正在DMA读写的地址区域,没有任何影响。这意味着,在系统DMA的同时,DSP可以同时进行其他操作,这一点对于提高DSP的效率至关重要。
4 各种内存空间的DMA访问指标测试及分析
根据以上配置,笔者对ADSP-21535的DMA性能进行了比较详尽的测试。测试数据如表1所示。
表1 21535的DMA实测数据
注:测试环境-DSP核心时钟300MHz,系统时钟120MHz,SDRAM为PC133标准。样本采样:各15次
从表1中的实测数据可以看出,DMA的速度均在18.7M双字/秒以上,最高速度达46.9M双字/秒,可以满足工程中高速采集的需要。从表中数据可以得出以下结论:
(1)DMA双向速度不对称,将源地址和目的地址交换后,速度会发生变化;
(2)低速向高速区域传输时,要比反向传输快;
(3)同类区域DMA一般比区域之间DMA要慢。如L1 DMA到L1,比L1 DMA到L
《ADSP-21535 Blackfin的Mem DMA高速通信(第4页)》