微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > dm642,edma搬运测试失败。。。。求助

dm642,edma搬运测试失败。。。。求助

时间:10-02 整理:3721RD 点击:

复制代码

最近刚刚开始学习dm642,使用edma中遇到一个问题,下面是描述:
      一个edma搬运数据的程序段,放在一个工程A中,可以用。但是转到工程B中,edma搬运用不了了。然后我将两个程序的build option 以及bios设置,头文件都写成一样的了,但是edma在工程B中还是用不了,,,我贴下代码,求大神帮忙!(两个工程都用了bios)
1.包含edma初始化及cpu触发函数等的一个c文件。

  1. #include
  2. #include

  3. unsigned int TESTSRC[32]=
  4. {
  5. 0x12345678,0x87654321,0x12345678,0x87654321,
  6. 0x12345678,0x87654321,0x12345678,0x87654321,
  7. 0x12345678,0x87654321,0x12345678,0x87654321,
  8. 0x12345678,0x87654321,0x12345678,0x87654321,
  9. 0x12345678,0x87654321,0x12345678,0x87654321,
  10. 0x12345678,0x87654321,0x12345678,0x87654321,
  11. 0x12345678,0x87654321,0x12345678,0x87654321,
  12. 0x12345678,0x87654321,0x12345678,0x87654321,
  13. };
  14. unsigned int TESTDST[32]=
  15. {
  16. 0x00000000,0x00000000,0x00000000,0x00000000,
  17. 0x00000000,0x00000000,0x00000000,0x00000000,
  18. 0x00000000,0x00000000,0x00000000,0x00000000,
  19. 0x00000000,0x00000000,0x00000000,0x00000000,
  20. 0x00000000,0x00000000,0x00000000,0x00000000,
  21. 0x00000000,0x00000000,0x00000000,0x00000000,
  22. 0x00000000,0x00000000,0x00000000,0x00000000,
  23. 0x00000000,0x00000000,0x00000000,0x00000000,
  24. };

  25. static EDMA_Handle hEdmaNewApply;

  26. void TEST_One_Edma()
  27. {
  28.         unsigned int i;
  29.         Uint32 disi=0;
  30.         Uint32 tcc,src;
  31.         EDMA_Handle hEdma;
  32.         EDMA_Config cfgEdma;  


  33.         tcc=EDMA_intAlloc(-1);
  34.         assert(tcc != -1);
  35.         hEdma = EDMA_open(tcc,EDMA_OPEN_RESET);
  36.         assert(hEdma != EDMA_HINV);
  37.     hEdmaNewApply=hEdma;
  38.         /** Make EDMA parameters OPT **/
  39.         cfgEdma.opt=EDMA_OPT_RMK(
  40.                                 EDMA_OPT_PRI_LOW, //MEDIUM
  41.                                 EDMA_OPT_ESIZE_32BIT,
  42.                                 EDMA_OPT_2DS_YES,
  43.                                 EDMA_OPT_SUM_INC,
  44.                                 EDMA_OPT_2DD_YES,
  45.                                 EDMA_OPT_DUM_INC,
  46.                                 EDMA_OPT_TCINT_NO,//(i== EVT_Y ? EDMA_OPT_TCINT_YES:EDMA_OPT_TCINT_NO),//only event Y generate interrupt
  47.                                 EDMA_OPT_TCC_OF(8),
  48.                                 EDMA_OPT_TCCM_OF(0),
  49.                                 EDMA_OPT_ATCINT_NO,
  50.                                 EDMA_OPT_ATCC_OF(0),
  51.                                 EDMA_OPT_PDTS_DISABLE,
  52.                                 EDMA_OPT_PDTD_DISABLE,
  53.                                 EDMA_OPT_LINK_NO,//NOTE!
  54.                                 EDMA_OPT_FS_YES );//array sync
  55.         cfgEdma.src = (Uint32) TESTSRC;                                                                       
  56.         cfgEdma.cnt = EDMA_CNT_RMK(1,4);//dchan->numLines-1               
  57.         cfgEdma.dst = (Uint32) TESTDST;
  58.         cfgEdma.idx = EDMA_IDX_RMK(0,0);//pitch               
  59.         cfgEdma.rld = EDMA_RLD_RMK(0,0);               
  60.         /** Configure EDMA parameters **/
  61.         EDMA_config(hEdma,&cfgEdma);

  62.         EDMA_disableChannel(hEdma);       
  63.         EDMA_clearChannel(hEdma);         
  64.         EDMA_enableChannel(hEdma);

  65.    

  66. }


  67. void Trigger_the_testEDMA()
  68. {
  69.         Uint32 src,dst;
  70.         Uint32 *P,*P1;       
  71.         static Uint8 ii=0;


  72.     P=TESTSRC;
  73.         P1=TESTDST;

  74.         ii++;
  75.         if(ii>=4)
  76.         ii=0;
  77.         for(src=0;src
  78. #include
  79. #include
  80. #include
  81. #include
  82. #include "dm642param.h"


  83. void main()
  84. {
  85.         CSL_init();
  86. TEST_One_Edma();
  87. }

复制代码

然后会在一个task中一直调用Trigger_the_testEDMA()这个函数。

各位大神,小弟已经纠结了5天了,谁来帮帮忙!非常感谢!

看看看看看看看看,看看看看看看看看

请问现在您还在弄dm642的板子没,不知道你现在会不会dsp和fpga的通信

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top