我看到 CCS 在调试时有一个可用的堆栈使用窗口。 将鼠标悬停在任何任务上时、似乎会显示"x out of 6108 bytes"、尽管我的任务是使用不同的堆栈大小(例如2048字节)创建的。
我还创建了2个使用相同线程函数的 CAN 处理线程。
/*使用默认值初始化属性结构*/
pthread_attr_init (&can0Attrs);/*设置优先级、分离状态和堆栈大小属性*/
priParam.sched_priority = 1;
retc = pthread_attr_setschedparam (&can0Attrs、&priParam);
retc |= pthread_attr_setdetachstate (&can0Attrs、pthread_create_detached);
retc |= pthread_attr_setstacksize (&can0Attrs、THREADSTACKSIZE * 2);
如果(retc!= 0)
{
/*无法设置属性*/
while (1){}
}静态 uint16_t can0Bus = 0;
retc = pthread_create (&canThread0、&can0Attrs、canThreadFn、(void *)&can0Bus);
如果(retc!= 0)
{
/* pthread_create()失败*/
while (1){}
}/*使用默认值初始化属性结构*/
pthread_attr_init (&can1Attrs);/*设置优先级、分离状态和堆栈大小属性*/
priParam.sched_priority = 1;
retc = pthread_attr_setschedparam (&can1Attrs、&priParam);
retc |= pthread_attr_setdetachstate (&can1Attrs、pthread_create_detachstate);
retc |= pthread_attr_setstacksize (&can1Attrs、THREADSTACKSIZE * 2);
如果(retc!= 0)
{
/*无法设置属性*/
while (1){}
}静态 uint16_t can1Bus = 1;
retc = pthread_create (&canThread1、&can1Attrs、canThreadFn、(void *)&can1Bus);
如果(retc!= 0)
{
/* pthread_create()失败*/
while (1){}
}
这似乎符合预期、但堆栈使用窗口只有一个函数名称"canThreadFn"的条目-每个线程没有一个。
它列出的用法也似乎太高-它当前显示1540、而调用 Task_stat (Task_self)、&statbuf);并在我的线程函数报告1176中打印 statbuf.used。
TIA
Jim