This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 多路QDMA请求问题



我自己写的多核同时使用QDMA的程序能正常运行,但迁移到我的另一个工程中又出现问题。现象是我必须在提交QDMA请求后不断轮询检查中断信息,判断QDMA是否完成,再往后运行,否则,若是先运行一会我自己的程序则检查不到QDMA完成的标识,一直卡死在那里。而我的程序没有相关的系统调用,访问的是存放在共享上的数据与QDMA搬运的数据没有重叠,请问这是由什么导致的

  • 多个QDMA channel是独立的,可以在任意core上并行运行。按照你的说法运行例程是ok,说明功能是没问题,并且先运行例程在运行你的程序也是ok,check一下是否与PLL及DDR的配置有关,在你的代码中有初始化PLL及DDR没有。

  • 您好,这个问题已经解决,是由于我的粗心,我使用的参数从0开始,而DMA的参数设置应该从1开始,我按照例程之后继续分配,导致运行例程后能正常运行。

    现在遇到了新的问题,我自己写的多核同时使用QDMA的程序能正常运行,但迁移到我的另一个工程中又出现问题。现象是我必须在提交QDMA请求后不断轮询检查中断信息,判断QDMA是否完成,再往后运行,否则,若是先运行一会我自己的程序则检查不到QDMA完成的标识,一直卡死在那里。而我的程序没有相关的系统调用,访问的是存放在共享上的数据与QDMA搬运的数据没有重叠,请问这是由什么导致的,另外您说的PLL与DDR配置是什么。

  • QDMA这种数据搬移问题一般跟配置有关,建议在配置完启动前,先查看QDMA相关的配置是否正确,然后启动QDMA,再查看cnt等配置是否有更新。