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.

EMIF16进行数据传输如何对其进行配置

各位专家们好!

       请问利用EDMA3在EMIF和DDR3之间进行数据传输的时候,在程序中如何对EMIF进行正确的配置呢?由于我所用的C6678芯片的EMIF16和其他C6000系列的芯片的EMIF结构和寄存器都不一样,所以找不到可供参考的例子,请问能否提供EMIF16的参考配置程序呢?谢谢!

  • 您好,

    请参考附件C6678 EMIF测试例程,谢谢

    C6678_EMIF_test_package.zip
  • Andy Yin

       您好!您给的测试例程里面有两个C文件KeyStone_DDR_Init.c和/KeyStone_EMIF16_Init.c,请问我在利用EDMA从EMIF16往DDR3里传输数据的时候,如果就按照这两个文件分别对DDR和EMIF16进行初始化,是否就可以利用EDMA对它们进行访问并成功在它们之间进行数据的传输呢?谢谢!

  • Andy Lee

    是的,你测试中发现有什么问题吗

  • Thomas Yang

       您好!我看到KeyStone_DDR_Init.c这个文件里面对DDR的初始化分为4种情况:TCI6608_EVM_DDR_Init(float clock_MHz);TCI6618_EVM_DDR_Init(float clock_MHz);TCI6614_VDB_DDR_Init(float clock_MHz);TCI6614_Huawei_DDR_Init(float clock_MHz),这4种情况分别针对4种DSP型号,我现在用的是C6678,和以上4种型号都一样,这是不是意味着不能根据这个程序来配置呢?如果可以的话那应该用哪一种呢?谢谢!

  • Andy Yin

        我将您给的测试文件添加到新建的工程里面编译后,提示在C文件KeyStone_EMIF16_Init.c里有很多变量未定义,如下所示,我在程序中也确实找不到这些变量的定义,但是您给的例子里面是直接用的,请问是什么原因呢?是否是因为缺少某些头文件?谢谢!

    identifier "CSL_EMIF16_AWCCR_CE0WAIT_MASK" is undefined

    identifier "CSL_EMIF16_AWCCR_CE0WAIT_SHIFT" is undefined

    identifier "CSL_EMIF16_NANDFCTL_CE0NAND_MASK" is undefined

    identifier "CSL_EMIF16_NANDFCTL_CE0NAND_SHIFT" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGDEL_MASK" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGDEL_SHIFT" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGMDEN_MASK" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGMDEN_SHIFT" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGSIZE_MASK" is undefined

    identifier "CSL_EMIF16_PMCR_CE0PGSIZE_SHIFT" is undefined

  • 这是由于该代码使用的CSL库是基于的TCI6614的,里面定义的宏名称和6678中的定义不同,请根据6678的csl库进行修改即可。

  • 我在测试自己的EMIF16外界Norflash时也遇到了这个问题,报错:

    expression must have arithmetic or pointer type.

    indentifier "CSL_Emif16_CFG_REGS " is undefined.

    至于答复”这是由于该代码使用的CSL库是基于的TCI6614的,里面定义的宏名称和6678中的定义不同,请根据6678的csl库进行修改即可“——能否说的更详细点?直接举例说更好,非常感谢。

  • 在6678的csl中搜索CSL_Emif16Regs,这个是在6678中定义的emif寄存器结构体的名字,把代码中的相关定义换掉就可以了,还有一些宏,类似CSL_EMIF16_A0CR_SS_SHIFT,也要替换。

  • 请问C6678的csl库和其他C6000的csl库是不是一样的呢?还有就是C6678对应的lib文件应该在哪里去找呢?

  • 专家你好,

    我将csl宏定义更正,现在这部分没报错了(我将CE0改成CS2,这样对应正确么?比如CSL_EMIF16_AWCCR_CE0WAIT_SHIFT改成CSL_EMIF16_AWCCR_CS2WAIT_SHIFT,另外其他参数比如程序中的i也需要改么?)

    现在我的程序仍有错误,如下所示

    Description Resource Path Location Type
    identifier "DEVICE_EMIF_NAND_ALE_OFFSET" is undefined flash_nand.c /EMIF/src/FLASH line 456 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_CLE_OFFSET" is undefined flash_nand.c /EMIF/src/FLASH line 451 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_DATA_OFFSET" is undefined flash_nand.c /EMIF/src/FLASH line 465 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_DATA_OFFSET" is undefined flash_nand.c /EMIF/src/FLASH line 507 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_DATA_OFFSET" is undefined flash_nand.c /EMIF/src/FLASH line 526 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_TIMEOUT" is undefined flash_nand.c /EMIF/src/FLASH line 122 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_TIMEOUT" is undefined flash_nand.c /EMIF/src/FLASH line 149 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_TIMEOUT" is undefined flash_nand.c /EMIF/src/FLASH line 285 C/C++ Problem
    identifier "DEVICE_EMIF_NAND_TIMEOUT" is undefined flash_nand.c /EMIF/src/FLASH line 377 C/C++ Problem
    struct "<unnamed>" has no field "NFECCCE0" flash_nand.c /EMIF/src/FLASH line 615 C/C++ Problem

    但是比如我去源码中找,比如第一个提示错误NAND_ALE_OFFSET,因为调用了flash_nand.h, 所以是定义了的,能直接跳到

    #define NAND_ALE_OFFSET     DEVICE_EMIF_NAND_ALE_OFFSET, 但是为什么还会提示错误?

    谢谢解答。

  • 运行您给的这个C6678 EMIF测试例程,出现下面的错误时什么原因啊

    option --include_path is missing its parameter 'dir' 

  • 在include options 将相对路径改成绝对路径就好了

  • 您好,
    能提供C6657与FPGA或SRAM通信的例程吗?