各位工程师:我最近在6670开发板上利用自带的emacexample示例程序调试网口,出现了两个问题:
1、当程序设置为internal loopback,若不加载gel文件,程序可以跑通,但是数据会丢失部分,并且观察丢失的数据都是协议帧内容部分,协议头数据完整;当加载gel文件,数据正确。我试了下若将gel文件中配置pll1部分(这个设置6670 main pll为 983mhz)部分注释的话,数据也会丢失。请问是不是与dsp的mainpll值有关?
2、程序设置为external loopback,加载了gel文件,配置sgmii寄存器为auto negotiation,且为master模式,并且通过外接网线连到了外部电脑上,但程序运行时卡在检测 sgmii status寄存器 中link位状态那里,link一直为0,请问是什么原因?
Marvin Liang:
Hi,
无论哪种环回模式,都需要配置SoC main PLL/PA PLL,Gel里面有相关初始化过程,所以,你需要运行Gel进行初始化;如果你不想用Gel,必须将初始化过程移到程序中。
所谓的external loopback其实是需要你自己在SoC外部做环回,而这样的情况下, SGMII连接的是PHY, 必须是slave mode.
Billy smith:
回复 Marvin Liang:
谢谢,这个问题已经解决,我现在碰到两个新问题:1、在开发时,可以通过手动加载gel对dsp进行初始化,那么发布后,是不是只能通过写初始化程序对dsp进行初始化?2、测试网口的示例程序helloworld,是采用gel进行初始化硬件的,我自己写了一个初始化的程序,在test_ndk.cfg中将它配置在startup这个模块中执行,不手动去加载gel文件,每次连上仿真器load program后,核0都不会跳到main处,一直卡在那,处于running状态,请问这个是什么原因?
Andy Yin1:
回复 Billy smith:
您好,
可能是你写的初始化程序有问题,可以参考一下下面链接中的例程,这些例程都是将PLL及DDR的初始化集成在代码中,在加载后由程序完成初始化工作,不依赖于gel。
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
Billy smith:
回复 Andy Yin1:
您好,我配置的程序就是在这个基础上修改的,现在的问题是,我把配置程序配置在其他工程(这个工程所有的段都位于l2sram里,而helloworld示例程序的段有大部分分配在DDR3)的startup模块的firstfxn中,load program后,可以顺利进入main入口,而在helloworld这个示例程序中,load后,进不了main,一直显示running,我想是不是因为分配的段位于DDR3内,而将段分配到对应的DDR3地址时,emif接口还没初始化?所以DDR3不可访问,那如果是这样,怎么解决呢?请各位大神帮忙解答下,谢谢了!
seawolf:
回复 Billy smith:
我最近也遇到了跟你类似的问题,我用一个NDK的helloworld例程,在EVM6678的板子上能跑(加了gel文件),但是在自己的6678板子上将out文件load之后一直是running,进不到main函数内。不知道你后来是怎么解决的?
qian cui:
回复 Billy smith:
helloword这个程序我这里也会出现跳转不到main 的情况,求指导?
还有一个问题是运行helloword程序90%都会出现unable register the EMAC这个错误,请问是否有遇到,怎么解决的,谢谢?
yuanwen dong:
回复 seawolf:
Debug configuration 里面的 run to main选项打勾了没有?