RT,我参考Keystone Lib编写的PLL初始化,DDR3初始化函数,另外编写了EDMA数据传输函数,在EVM6678板卡上测试时没有问题的;
当在我们自己的板卡上时,就会出现程序跑飞的情况,跑飞的位置不确定,怀疑是PLL初始化的问题,可是查询PLL status寄存器好像也都没有什么问题,DDR初始化貌似也通过了,就是经常会跑飞(No symbols are defined for 0xxxxxxx),程序无法再运行。
我是新手,刚刚入门,请问各位大神在刚刚用6678时是否也遇到相关的问题?后面如何解决的?请求指导!谢谢!
Andy Yin1:
不同的板子,需要根据输入时钟源修改PLL配置使其工作在规范的时钟范围;对DDR而言,同样需要根据输入时钟源修改PLL相关系数,并需要根据所选的SDRAM型号及相关DDR layout参数重新生成新的DDR配置寄存器参数。
PLL主要是修改PLLM及PLLD,参考STK: http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
DDR 表格:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/53384.aspx
Xiao Ma1:
回复 Andy Yin1:
Andy Yin1 ,您好!非常感谢您的回答!
对于PLL和DDR初始化部分均已经参考keystone lib和手册进行了修改,PLL和DDR初始化应该问题不大。
我的程序大致是:
PLL初始化
1.DDRPLL初始化
2.DDR初始化
3.中断初始化
4.EDMA初始化
5.核写整个DDR
6.核读出校验
7.挂EDMA中断
8.多次启EDMA从DDR3读数据到MSM
9.结束
今天在测试时,发现步骤8,EDMA若不挂中断,阻塞式传输,则不会跑飞;若挂中断,则会跑飞,还没来得及查是中断哪里出了问题,请问 Andy Yin1
,凭您的经验,可能是哪里的原因引起的?谢谢!