项目中需要向FPGA寄存器中写入N×1Byte的数据,所以想用EDMA来实现,通过看CSL库提供的历程以及手册,在手动触发情况下,发现A类传输使用TCC链接事件本身每次1Byte与AB类传输触发一次事件传输BCNT个1Byte,均可以达到想要的效果。
但是问题来了,程序跑在片上RAM中可以正常运行,但是跑在DDR上就会有丢数的情况出现,
做了个试验,在SYSBIOS的平台文件中,将L1和L2均设置成0KB,跑在DDR上的话测试就可以通过,感觉像是程序跑得慢一些就可以……
通过手册以及GEL文件的配置,PLL1的DIV1会分给DDR,分配了300M,因为手册中写到需要配到工作时钟的2X;
没找到EDMA的时钟怎么配置,难道是PLL0的DIV2吗?
这两个东西要怎么配置才可以很好的合作呢????想不太明白……
Tony Tang:
见下2图:
jian pan2:
回复 Tony Tang:
前几天试了一下,发现并不是时钟的问题,我将EDMA访问的数据放到L2RAM上就可以正常传输,但是放到DDR上就会有问题,看到一个文章,http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/48987.aspx,里边你们TI的同事和提问者讨论到cache的一致性问题,看的不是太明白。
我现在想问的就是,
1.如果我的数据还是想放在DDR上,有什么办法可以让EDMA正常工作,在手动触发EDMA传输之前还需要做哪些操作?
2.如果EDMA传输对DDR上的数据有这类问题的话,那么我攻城的代码&数据都编到DDR上的话是否还会有其他的问题呢?对于DDR的访问,读写测试都是正常的!