硬件平台:自研的C6678信号处理板卡,网络相关的硬件设计与EVM板一致。
板卡上DDR3的PLL配置为800MHz,不同于EVM板的1333MHz,其中涉及到两个参数的设置:PLL1_M和PLL1_D。参考GEL文件中的说明,在800MHz时应该设置PLL1_M=11,PLL1_D=0;
基于helloworld例程,修改了涉及到初始化的一些函数,并未使用原例程中的platform_init函数。然后将cfg文件中一些段的定义改为如下图所示:
原程序中是利用
这个函数实现网络协议栈的构建与工作。但是好像此时建立的是一个Net Server,而在项目中需要构建一个Net Client,因此在NetworkIPAddr函数最后加入了一个函数dtask_tcp_client_echo(),根据SOCKET编程方法实现了一个Net Client。
问题:多数情况下,网络能够与Net Server建立网络链接实现数据
通信,而且能够长时间正常工作。
问题1:在初始化完成的时候,有一句printf(“C6678 Init Done.n”);发现在第一次上电时,在CCS中Console的界面中printf的内容无法正常打印,出现[c66x_0] ( 这种输出结果;函数中也包含了
;另一种情况,在上电运行过几次后,每次经过system reset之后,有时候会出现无任何打印结果的情况,此时的程序总会进入一个错误,会在res_mgr_init_cppi函数中的这一步出错。只要能够看到[c66x_0] C6678 Init Done. 网络才能成功的建立(有时候会有问题2的情况)。
最终会在Console中打印出一些heapmem out of memory,malloc 0:0:0之类的信息;
问题2:在Console观察到程序执行完成,IP也成功配置,但是无法ping通,发现此时仿真器无法暂停,会报错:Core is hung……Use more reliable JTAG之类,此时只能system reset才能重新加载程序执行。
什么情况会导致上述两种错误发生呢?最近需要实现该程序的SPI BOOT,发现有时候会BOOT不成功,后来在仿真器测试的时候发现了上述两种情况。DDR3的配置我也检查过,在出错时,PLL1_M和PLL1_D也配置正确。
请教各位大牛,求解答!万分感谢!