本人初学DSP,学习的是TMS320VC5402, 最近两周一直在研究DMA控制传送数据这块,遇到比较棘手的问题就是关于DSP存储器空间映射,感觉脑子里面一直没理清,写CMD老是有问题,有几个问题想请教一下各位前辈:
1)用CSS做软件仿真的时候存储器空间如何分配的?只考虑片内存储器资源的映射吗?会有外部存储扩展一说吗?
2 ) DMA传送能不能软件仿真呢?
3)我实现了数据存储器到数据存储器的DMA传送,但是始终没实现程序存储器到数据存储器的DMA传送,程序老是报错,我觉得是CMD文件编写的问题,错误基本上是关于存储器映射的问题,我把程序贴上来, 恳请大家帮我看看那里写的有问题,帮我解决一下 ,不胜感激!
下面是源文件- ********************程序存储器到数据存储器的DMA传送(子库寻址不带自动递增)***********************
- .title "DMA2.asm"
- .mmregs
- .include "reg.h"
- ; .global buffer, length
- .bss x, 16
- .def _init_dmac
- .data
- table: .word 1,2,3,4,5,6,7,8,9,10
- .text
- _init_dmac:
- STM DMSRCP,DMSA ;设置源程序页1
- STM #1h,DMSDN
- STM DMSRC0,DMSA ;设置源地址为8000h
- STM #8000h,DMSDN ;程序空间地址18000h的低16位
- STM DMDST0,DMSA ;设置目的地址为80h
- STM #3000h,DMSDN
- STM DMCTR0,DMSA ;设置传送次数为Ah次
- STM #(5h-1),DMSDN
- STM DMSFC0,DMSA ;设置同步事件和帧计数寄存器
- STM #0000000000000000b,DMSDN
- STM DMMCR0,DMSA ;设置传送方式控制寄存器
- STM #0000000100000101b,DMSDN
- STM #0000000100000001b,DMPREC ;设置通道优先级和使能控制寄存器
- end B end
- .end
下面是CMD文件- -o DMA2.out
- -m DMA2.map
- -e _init_dmac
- MEMORY
- {
- PAGE 0:
- EPROM : org=1700h, len=100h
- DEPROM: org=18000h, len=20h
- PAGE 1:
- SPRAM : org=0060h, len=20h
- DARAM : org=3000h, len=20h
- }
- SECTIONS
- {
- .text: >EPROM PAGE 0
- .bss : >DARAM PAGE 1
- .data: >DEPROM PAGE 0
- }
|