Part Number:TMS320C6678Other Parts Discussed in Thread:SYSBIOS
在6678上运行sysbios出现异常问题:
首先创建一个基本的RTSC工程,将工程平台设置为:
将其中的cfg文件配置为:
BIOS.heapSize = 0x8000;
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
var tsk0 = Task.create('&tsk0_func');
tsk0.instance.name = "tsk0";
tsk0.stackSize = 0x8000;
在程序的main函数中调用:BIOS_start();
此时如果是单核运行程序,则不会出现任何问题,如果用3个核运行程序,相当于每个核都在main函数中调用BIOS_start()启动一个tsk0,则有时会有一个核运行崩溃,提示“E_stackOverflow”错误;将堆栈扩大设置为tsk0.stackSize = 0x10000,不能解决问题;将heap扩大,BIOS.heapSize = 0x10000也不能解决问题。而就机理分析,因为把heap和stack都放在了L2SRAM,而各核L2SRAM都是独立的,所以应该单核和多核运行没有区别才对,出错原因不明确。
问题2:
在程序中调用Hwi_create创建一个硬中断;同样也遇到上述问题类似情况,如果多核都调用了Hwi_create则会有一个核运行崩溃,提示“E_stackOverflow”错误;此时将heap扩大,BIOS.heapSize = 0x10000,可以暂时解决问题,运行似乎正常了。但如上所述因为把heap和放在了L2SRAM,而各核L2SRAM都是独立的,所以应该单核和多核运行没有区别才对,出错原因不明确。于此同时还存在另一个问题,可能跟运行时序有关,有时一个核仍然会在调用Hwi_create时偶尔崩溃,但并不是提示stackOverflow错误而是类似于地址访问异常错误:“A_align:Request align is not a power of 2” 出错原因不明确。
望解答以上两个问题,非常感谢!!
Nancy Wang:
我这边试了一下task例程,没有出现崩溃的现象,再对比看一下配置,内存分配部分应该是没有问题的。
5086.task_TMS320C6678.zip
,
user6549373:
感谢回复,应该是分配的任务空间不足导致内存溢出。