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.

从DDR到L2的数据移动,是不是要使用IDMA?

L2没有到外部DDR的总线,是不是必须要使用IDMA

  • IDMA只能用在片上内存之间传输。以及CFG总线配置外设.

    DSP CPU与外部是通过MDMA的。

    建议再看一下sprufk5a文档。

  • IDMA不能搬移内部和外部Memory之间的数据。
    processors.wiki.ti.com/.../AM1x_SoC_Level_Optimizations
  • sprufk5a中只有一个Arbitration Control Register的说明,这个MDMA的使用,通过什么配置地址呢?
  • 那么使用什么方式呢,MDMA么?有没有例程呢
  • MDMA只是一个总线端口,没有配置这一说。
    你为什么要关心这些呢?你具体的应用是啥?
  • 数据采集的数据量比较大,都放在了DDR上,计算时,想通过DMA转移到L2上,进行计算,发现DMA的方式无法转移到L2上,固有此疑问。

    之前禁用cache,再通过idma把code转换到L1P中(试过,但不知道是idam的配置问题,还是什么,也无法实现),但是code是在ddr上,这时,idma按现在的说法“IDMA只能用在片上内存之间传输。以及CFG总线配置外设”,是不是也无法实现?
  • user3688025 said:
    数据采集的数据量比较大,都放在了DDR上,计算时,想通过DMA转移到L2上,进行计算,发现DMA的方式无法转移到L2上,固有此疑问。

    DMA可以搬到L2的。

    user3688025 said:
    但是code是在ddr上,这时,idma按现在的说法“IDMA只能用在片上内存之间传输。以及CFG总线配置外设”,是不是也无法实现?

    IDMA不能访问DDR。

  • 这里的地DMA是不是EDMA3,我使用EDMA进行转移时,L2中的数据并没有更改,全是0.而从ddr到ddr的转移是可以的,两都的区别也只是目标地址的不同吧。

    code 要可以转移到L1P中,前提是,code要是IDMA可以进行访问到的地方,也就是L2上才可以,其他的地址上的code不可以,或者可以转移两次,由DDR到L2,再由L2到L1P。
  • user3688025 said:
    这里的地DMA是不是EDMA3,我使用EDMA进行转移时,L2中的数据并没有更改,全是0.而从ddr到ddr的转移是可以的,两都的区别也只是目标地址的不同吧。

    是EDMA3。是不是L2的地址搞错了,EDMA访问的L2地址是从0x1180 0000开始,不是从0x0080 0000开始。

    user3688025 said:
    code 要可以转移到L1P中,前提是,code要是IDMA可以进行访问到的地方,也就是L2上才可以,其他的地址上的code不可以,或者可以转移两次,由DDR到L2,再由L2到L1P。

    这也是没有办法的办法。

    你可以做个二级boot跑在DDR上,或SHARERAM上,,在二级boot里把Cache disable,把应用程序搬到相应的片上内存位置,再跳到应用程序。