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.

6678开发板的EMDA例子的若干问题



大家好,在6678开发板上运行C:\ti\pdk_C6678_1_0_0_19\packages\ti\csl\example\edma中的EDMA的例子时,有以下疑问:

1:在pingpong这个测试函数下,是不是先将srcBuff1和srcBuff2的值初始化为0-255,当执行完EDMA的搬移之后,dstBuff1和dstBuff2的值会变为0-255?

2.当初始化之后,我打开memory browser 看到srcBuff1如下:

可是当运行完EDMA的搬移之后,dstBuff1的内存如下

为什么会发生这种情况呢?不是应该dstBuff1和srcBuff1相等的吗?

  • 代码中有相应的函数Verify_Transfer验证最终结果是否正确,可以查看打印结果,如果结果不对,可以跟踪调试一下。

  • 你好 Andy

    当我执行Verify_Transfer函数后,显示的结果是成功的,但是在我执行函数Verify_Transfer,单步跟踪时发现,在执行完以下语句后

        /* Invalidate the cache before verification */
        /* Disable Interrupts */
        key = _disable_interrupts();
        CACHE_invL1d ((void *)srcBuff, 512, CACHE_WAIT);
        CACHE_invL2 ((void *)srcBuff, 512, CACHE_WAIT);
        CACHE_invL1d ((void *)dstBuff, 512, CACHE_WAIT);
        CACHE_invL2 ((void *)dstBuff, 512, CACHE_WAIT);
        _mfence();
        /* Re-enable Interrupts. */
        _restore_interrupts(key);

    srcBuff1和dstBufff1都变成了在这种结果

    然后,在srcBuff1和dstBuff1做比较时,两者是相等的,请问这部分语句是什么意思呢?还有就是srcBuff1和dstBuff1中的值到底是哪样的?谢谢

  • 您好,

    涉及到cache一致性的问题,具体请阅读相应手册,有如下方法保证查看的数据一致。

    1. 在查看srcBuf时将memory browser的L1D Cache及L2 Cache勾去掉,保证查看源地址的数据;

    2. 在对srcbuf初始化后添加维护cache一致性的代码cache_wbL1D及cache_wbL2保证数据写到时间地址;

    3. 修改srcBuf存放到L2,这样就不需要手动维护cache一致性。

  • Andy Yin

    您好!

    您上面提到的方法是否只用其中一个就可以保证cache的一致性?

    另外,如何修改buff存放到L2呢?

    谢谢!

  • 您好,最近在论坛里看到好多关于cache一致性的问题,“涉及到cache一致性的问题,具体请阅读相应手册”,你所说的相应手册,可以给个链接么?或者号码

  • 你好,你可以参考SPRUGY8.pdf。这是66X的cache 用户手册