工具/软件:TI-RTOS
您好!
我尝试使用 DSP/BIOS、DPS/BIOS 5.42、CSL 3.08和 CCS7 (Linux)启用 DMA HWI。
我几乎检查了所有内容+浏览了论坛、基本上我无法使 DMA 生成中断。
重要提示:我目前正在尝试内存到内存 DMA 传输、而不是 IO (尚未...)
因此,基本上,HWI 在.cfg 文件中被正确定义:
VAR HwiDMA = bios.HWI.instance("HWI_INT8");
hwiDMA["fxn"]= prog.extern ("DMA_HWI");
HwiDMA.useDispatcher = 1;
bios.HWI_INT8.interruptMask0 ="自";
bios.HWI_INT8.interruptMask1 ="自";
使用调试器(ezDSPC55板)运行时、我可以看到:
-所有 DMA 配置寄存器都包含合理的值(使用 DMA0CHO)。
dma0ch0tcr2具有 EN 和 INTEN 集
DMAIER 设置了所有位
-正确设置地址和长度参数。
如果我在 dispatcher_isr8地址放置一个 BP,我永远不会在那里停止,尽管我已验证计时器(由 RTOS 使用)调度程序是否正确步进。
除调试器之外、我还检查了 IPVD 寄存器是否为矢量保留了正确的地址。 INTM 位被禁用.... 但我认为这是因为调试器已停止(我是对的吗?)。 无论如何、DSP/BIOS 调度程序应该处理这个问题(来自 doc ..)。
因此、基本而言、我无法确定要检查的其他内容。 此外、我正在尽可能使用 CSL 代码、我还深入探讨了它、一点也不奇怪。
我的代码在主代码中初始化 DMA、但保留 INT (DMAEVENT)禁用。 然后,在我的任务中,我启用 DMA 中断( IRQ_ENABLE (DMA_EVENT);)并执行一个 DMA_START()....
有没有人建议我会犯什么错误?
谢谢、
Jacques