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 运行问题



各位专家好,我程序是如下编写的:core0配置DSP相应模块后 利用EDMA的方式 从外部DDR3读取数据到SL2 ,然后core0 和core1 对读进的数据同时进行分段处理 ,最后由core0上报结果 ,编译生成一个.out文件  利用仿真器下载到器件 程序中使用了IPC触发其他核对运行

现象1:core0 core1都下载.out文件时 ,不论先手动运行core0 再手动运行core1 ,还是先手动运行core1再手动运行core0,甚至将core0和core1 进行group后同时运行 ,绝大部分次数都能有结果上报打印输出

问题1:为什么大部分时间能有正确输出 ,但有时core0和core1像卡死了一样 ,要么没输出,要么一直等待对方信息,甚至跑飞?

现象2:将.out文件只下载到core0, 利用ccs5的 reset cpu将core1的PC设置到0x20B00000后,无论是先运行core1 还是同时运行,core0都一直卡在等待EDMA传输完成的那条语句上 ,查看SL2,也没有数据读进来,core1处于等待core0信号状态(正常现象)

问题2:为什么对core1进行复位后 core0的EDMA传输就不能传输了?不进行复位 下载.out就可以呢

  • 1. 卡死对的时候数据是否从DDR3搬到了SL2?你需要确定是core0还是core1的问题;

    2. core 1是否会对EDMA进行操作?

  • 1  对的时候 数据确实从DDR3搬到了SL2  ,无论怎么暂停然后运行哪个核,都能跑正确(说明握手正常),,卡死的时候 两个核要么互相等待对方的握手信号(没跑飞) ,要么又出现core0跑飞的情况,但是core1一直在等core0的握手,所以我觉得core0哪里有问题

    2  core1代码中没有对EDMA的操作 ,EDMA的配置 ,触发都在core0中运行

    综合以上两个问题  复位core1的CPU都会对 EDMA有影响  我怀疑core0哪里有问题 希望专家解答下 ,

  • 你可以从两个方向查一查你的代码是否存在问题,

    1. 为什么会出现两个核的死锁;

    2. 为什么会跑飞。

    这些问题没有办法通过论坛解决,只能通过JTAG调试看具体的代码运行。