各位工程师好,我有几个问题想请教一下,如下:
现在我的NDK helloworld例程通过gel文件的配置,是能跟PC端通信的。
1、我在target configuration里头把引用gel文件去掉,想用EVM_init这个函数来初始化硬件,就跟PC端连不通了,ping也ping不通,我把EVM_init函数和gel文件进行的初始化进行了对比,确认它们都进行了一样的初始化,另外把EVM_init放在了main函数的最开始或者是通过cfg配置为Startup.lastFxns.$add('&EVM_init');结果都还是一样的。想请问一下是什么原因?
2、带SYSBIOS的这个工程和普通的不带RTOS的工程的bootloader是一样的流程吗?
Nancy Wang:
void EVM_init(){platform_init_flags sFlags;platform_init_config sConfig;/* Status of the call to initialize the platform */int32_t pform_status;
/** You can choose what to initialize on the platform by setting the following* flags. Things like the DDR, PLL, etc should have been set by the boot loader.*/memset( (void *) &sFlags, 0, sizeof(platform_init_flags));memset( (void *) &sConfig, 0, sizeof(platform_init_config));
sFlags.pll = 0; /* PLLs for clocking */sFlags.ddr = 0; /* External memory */sFlags.tcsl = 1; /* Time stamp counter */#ifdef _SCBP6618X_sFlags.phy = 0; /* Ethernet */#elsesFlags.phy = 1; /* Ethernet */#endifsFlags.ecc = 0; /* Memory ECC */
sConfig.pllm = 0; /* Use libraries default clock divisor */
pform_status = platform_init(&sFlags, &sConfig);
请问看到的是以上贴出来的代码吗?有没有将需要初始化的部分flag置1。
Nancy Wang:
bootloader流程是一样的。
user4257905:
回复 Nancy Wang:
都置1了呢,pll,ddr以及ecc都置为了1,sFlags.pllm还是保持为0 。
user4257905:
回复 Nancy Wang:
首先,我把sFlags.pll ,sFlags.ddr,sFlags.ecc 都设置为了1,然后我在target configuration里头把引用gel文件,也调用了evm_init函数,只要evm_init函数里面的platform_init函数里的任何配函数进行了配置,都会导致ping不通。
就是我把整个platform_init函数里其他所有的语句都注释掉,只剩下configSerdes函数,也会导致ping不通,只留下其他的函数也是一样的。所以我觉得不是某个参数配置有问题,这种现象搞得我毫无头绪,能麻烦帮忙看看嘛。
Nancy Wang:
回复 user4257905:
把platform_init中的configSerdes替换成GEL文件中的configSGMIISerdes试试看。
user4257905:
回复 Nancy Wang:
我仔细对过,我这两个配置是完全一致的,结果还是一样的。
就是我在工程里添加了一个hwi的硬件中断,这个中断是EMACRXINT,在这个中断服务函数里设置断点,我用gel文件配置时,就是一直在进中断服务函数,然后全速运行的时候就是可以与上位机通信的,可以ping通。
但是换成Evm_Init初始化,或者是之前不带操作系统时写的外设初始化程序,这个EMACRXINT的中断服务函数就再也不进去了,而且ping也ping不通了,感觉就是EMAC模块就没收到数据了。
我现在就完全没头绪,也没辙的感觉,这个问题困扰好久了,麻烦您再帮我想想,万分感谢!
user4257905:
回复 Nancy Wang:
还有,就是用虽然跑NDK跟上位机通信不了了,但是不掉电,加载不带操作系统的GE的工程师可以和上位机通信的。但是再加载用gel文件初始化的带NDK的工程依然和上位机ping不通,除非掉电重启,否则带NDK的工程就是跟上位机就连不通了。