TI中文支持网
TI专业的中文技术问题搜集分享网站

仿真 BIOS 多任务程序 增加for循环次数就出现程序跑飞,复位会出现ccs软件死机

 

工程背景:

采用的是C6678      8核DSP,工程中含有两个任务TASK1   与TASK2   ,TASK1在core0中运行,TASK2   在core1~core7中运行,核间通过message通信,core0作为主核,通过向其他core发送message信息控制core1~core7执行相应程序。

for循环在core0中。程序性能优化设成 3级,代码大小优化级别没设置

 

 

问题描述:

1.for(i=0;i<NUM;i++),增大  NUM出现程序跑飞,点击暂停按钮,发生CCS软件死机

尝试的方法:

1.增加stack的大小,问题没有解决

2.程序性能优化设成 3级,代码大小优化也设置成3级,运行通过,问题解决,但是同样的代码运行时间由原来的0.13ms 变成0.4ms ,程序运行效果严重下降,因为项目要求较高的 实时性,所以此方法无法满足要求。

 

 

问题猜想:

我个人认为是堆或栈溢出,或者代码写的太乱,请大神们指点,谢谢!

 

把CMD文件,cfg文件,map文件发给大家,请下载帮忙分析一下!、

错误截图,请大家帮忙解决,谢谢!

 

Andy Yin1:

for循环保护什么样的处理,消息发送是在for循环中么?有没有可能是消息没有释放导致内存耗尽?

不加-o3优化时没有问题?简化一下for循环中的处理,排查定位出问题的具体代码位置。

Jack Dong:

回复 Andy Yin1:

for 循环内是各种函数调用,消息发送也是再for 循环中进行的。core0发送的消息作为控制指令,通知core1-core7核做相应输的算法处理,。问消息是如何释放的?消息释放用到什么函数?

Jack Dong:

回复 Andy Yin1:

速度优化设为3级,代码优化没有设置,无法通过,

速度优化与代码优化同时设为3级时,可以运行通过。但是软件仿真执行时间增加了3倍

Jack Dong:

回复 Andy Yin1:

你好 ,Andy Yin1我把错误截图,cfg文件、cmd文件、map文件上传到这个帖子的上了,请您帮忙分析一下,急求,谢谢!!

Jack Dong:

回复 Andy Yin1:

大神  问题发了一个多星期了  怎么没有人解答呢   是问题太难了  还是已经回家过年了???????

Andy Yin1:

回复 Jack Dong:

1 去掉消息发送,增大循环次数,测试看看是否由于增加发送次数消息未释放导致的内存泄露;

2 关于消息释放请参考安装之后ipc_3_00_00_16\docs下面的IPC user guide。

3 将for循环中调用的函数与for循环放在不同的file,for循环使用-o0优化,其他的函数所在文件用-o3优化测试,这样也不会影响性能。

Jack Dong:

回复 Andy Yin1:

你好  感谢您的回答!

优化等级不是在工程属性里面设置的吗?

如何设置“for循环使用-o0优化,其他的函数所在文件用-o3优化测试”,让不同代码具有不同的优化等级?

Andy Yin1:

回复 Jack Dong:

可以在工程或文件属性中修改优化等级,可以右击工程在属性中修改整个工程的属性,也可以右击文件修改特定文件的属性。

赞(0)
未经允许不得转载:TI中文支持网 » 仿真 BIOS 多任务程序 增加for循环次数就出现程序跑飞,复位会出现ccs软件死机
分享到: 更多 (0)