This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于修改Mcsdk下的Helloworld例程后执行出现的异常问题,急!



硬件平台:自研的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] ( 这种输出结果;函数中也包含了<stdio.h>;另一种情况,在上电运行过几次后,每次经过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也配置正确。

 请教各位大牛,求解答!万分感谢!

  • 1. 在demo板上测试例程能通过么;

    2 没有使用platform init,那使用的是哪些代码进行pll及DDR的初始化的,建议你先对板卡进行memory测试,包含LL2, SL2及DDR的测试,可以使用如下STK中的memory test例程进行DDR测试,主要需要根据你们板卡上使用的DDR颗粒及layout更新生成DDR控制器配置参数。

    STK:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

    DDR spreadsheet:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/53384.aspx

    在保证memory测试通过后,再将代码或数据放在DDR。你也可以尝试将你的mcsdk helloworld例程中所以的数据都定义在LL2及SL2测试一下。