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 从EMIF16读取数据的问题

各位专家好!

 

我现在需要从EMIF16读数据然后用EDMA传输,现在有以下几个问题:

 

1.外部数据存到EMIF16的时候是存在什么地方?EMIF16有内部缓冲区存数据吗?还是存在EMIFD[0:15]数据端口?

 

2.EDMAEMIF读取数据的时候应该是需要EMIF的相关地址作为源地址的,那么这个源地址是什么呢?是EMIF内部缓冲区的地址?还是EMIFD数据端口的地址?

 

3.EMIF16EDMADSP内部是怎么样的连接关系呢?EMIFD数据端口是否直接和EDMA连接?如果是这样的话,是否可以不需要知道EMIF的地址而直接从EMIFD数据端口将数据读到EDMA

 

4.EDMA读取数据的过程是否是在TPCC的控制下自动进行?需不需要什么前提?比如让EMIF读使能?

 

非常感谢!

  • 1. 通常EMIF16是外接SRAM或者Flash的,当数据写到EMIF16总线上时,数据会直接送到EMIFD的数据端口,内部不会缓存数据的;

    2. EMIF16在使用时就是memory map中的地址,只要对这些地址进行操作就行,6678上就是0x70000000~0x80000000之间的地址,具体情况参考数据手册

    3.EMIF16和EDMA都是通过内部的ternet 总线相连,由于该总线是多对多的,所以必须通过地址进行区分,必须通过配置EDMA的源地址或目的地址来访问EMIF16

    4.EDMA读取数据时需要配置TPCC对应的channel参数,并使能相关EDMA event, EMIF16对于EDMA来说就是一段地址空间而已,通常是要按照外接硬件来配置EMIF接口,如果没有外挂任何硬件,EDMA也能对EMIF进行读写,只是数据不对而已。

  • Zhan Xiang

    您好!

    关于第二个和第四个问题问题我还有点疑问:

    2.我查阅了6678的数据手册,上面memorymap的0x70000000~0x80000000这段地址对应的是EMIF16所连接的NAND FLASH,NOR FLASH和SRAM的地址,我如果以这段地址作为EDMA访问的源地址的话那EDMA岂不是从NAND FLASH,NOR FLASH和SRAM里面读取数据吗?这样读取的数据就应该不是从EMIFD数据端口读取吧?

    4.按你说的,我是不是只需要初始化EMIF16然后EDMA就能自动从里面读数据并传输?

    谢谢!

  • 你的理解有问题。。。EMIF是External Memory Interface缩写,它是一种DSP存储空间的拓展接口,不是存储设备,它的地址线和数据线都是以总线的形式连接到外部的NAND FLASH,NOR FLASH和SRAM,所以你读EMIF就是读外部这些设备。

    EDMA使用前要先进行配置。如专家 Zhan Xiang所说的步骤

  • Richard Zhang

    读EMIF就是读EMIF所连接的外部存储?那就是说当有数据到达EMIF的时候先存到这些存储器里面?然后在从这些存储器里面读?但Zhan Xiang不是说直接从EMIFD读取数据吗?如果是这样的话,那源地址不就是数据端口的地址?可memorymap里好像没提到数据端口的地址

  • EMIFD就是EMIF的数据总线,并不是单独的EMIF port。

  • Zhan Xiang

    如果从EMIFD读取数据的话,也就是应该将EMIFD的地址设为源地址,那这个源地址是多少呢?memorymap里的0x70000000~0x80000000这段地址里好像并没有EMIF数据总线的地址

    谢谢!

  • 你的理解还是有问题的,EMIF就是用来访问外部存储器的接口,只有外部接了存储器或满足对应时序的逻辑, 那么当DSP或EDMA访问EMIF在DSP片内的地址时,就能访问到EMFI外部的存储器或逻辑的数据。

  • Zhan Xiang

    非常感谢您的耐心解答!

    关于您在上面的回答我还有几个问题:

    1.EMIF在DSP的片内地址是多少?

    2如果数据到达EMIFD数据总线的话,应该是通过设置源地址来访问数据总线上的数据,那这个源地址是多少?

    3.如果不将数据从数据总线上读走的话,数据总线上的数据是否就会存到EMIF连接的外部存储器上?

    4.我看C6678的原理图上EMIF连接的是NANDFLASH,我如果直接将NANDFLASH的地址设为EDMA的源地址,那么EDMA能传输达到EMIF数据吗?

    非常感谢!

  • 1. EMIF的访问空间在DSP片内就是映射到了0x70000000~0x80000000,在外接存储器的时候,通过访问这些地址就能直接访问到外接存储器。

    2. 没看明白你的问题,EDMA有源地址和目的地址的要求,如果目的地址是EMIF,那么源地址可以是EDMA能访问的任何memory

    3.EMIF是用来连接外部存储器或者逻辑的,其数据线就是用来访问外部存储器或者逻辑,如果没有外接存储器,那么向EMIF写数据,写的数据就会丢失,如果外接的是flash等非易失性的memory,通常是要有一定的访问顺序才能将数据写入memory;如果是外接SRAM,那么就能直接将数据写入外部memory

    4.Nand flash和nor flash不同,数据和地址并不是一一对应的,需要通过软件来读取,EDMA无法直接访问NAND flash

  • 你好~Zhan Xiang

    我顺便问一下,如果EMIF挂接Nand flash,那么EMIF地址线悬空,只接DATA线,数据和地址线按时序复用。

    1.您说的利用软件来读取,这个软件是用户自己根据FLASH芯片时序开发的,还是TI有相应功能的软件库。

    2.如果使用EMIF外接的NAND FLASH引导程序能否实现,如何实现

  • Zhan Xiang

    您好!您上面的回答对我非常有用!

    1.关于第二个问题,我想问的是:由于0x70000000~0x80000000这段地址空间是EMIF外接的存储器NandFlash,NorFlash和SRAM的地址,如果访问这些地址的话访问的是EMIF的外接存储器,可是我想访问的是有数据的EMIF,那么地址应该是多少呢?

    2.按照您的第三个问题的回答,我是否可以这样理解:EMIF是不能存储数据的,实际上不存在对EMIF的访问,如果我想将数据写到EMIF的话,EMIF就必须有外接的Memory,而且写到EMIF的数据实际上是存到外接Memory里的,所以访问EMIF 的数据的时候其实就是要访问EMIF外接的Memory。

    谢谢!

  • Zhan Xiang

    您在第三个回答中说“如果没有外接存储器,那么向EMIF写数据,写的数据就会丢失”,这是否意味着数据一旦到达EMIF就立刻存到了外接的存储器上?但是如果没有外接存储器的话,数据不是一样可以到达数据总线EMIFD吗?怎么会丢失呢?另外,我是否可以在数据一到达数据总线EMIFD后就立即读走而不让数据存到外接存储器中?

    非常感谢!

  • 你好:

          我用DM368的EMIF与FPGA异步方式连接,EMIF的内部时钟为170M,我把setup、strobe还有hold都设置到了最小,为什么传输一个数据用的时间却是6个时钟周期呢?EMIF的输出时钟为内部时钟的一半,是不是EMIF的读写是按照输出时钟为基准的?