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.

[参考译文] MSP432E411Y-BGAEVM:TI RTOS CCS 堆栈使用问题。

Guru**** 633805 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1060487/msp432e411y-bgaevm-ti-rtos-ccs-stack-usage-issues

器件型号:MSP432E411Y-BGAEVM

我看到 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    您使用的是 TI-RTOS 还是 FreeRTOS?

    您是否还从 ROV (RTOS 对象视图)查看? 下面是 TI-RTOS 基础知识中的系统概览。 (只有在调试视图中才能找到 TOOLs->ROV)

    此致、

    Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用的是 TI-RTOS。

    感谢您的 ROV 指针、这看起来非常有用。

    由于 ROV 包含"任务"下的所有堆栈信息、我想  CCS 堆栈使用窗口已经过时了-不过、奇怪的是、是否 有办法使其提供正确的信息?

    再次感谢

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="500257" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1060487/msp432e411y-bgaevm-ti-rtos-ccs-stack-usage-issues/3925864#3925864"]我想  CCS 堆栈使用窗口已过时

    CCS 中的"Stack Usage"视图 根据 每个函数分配的堆栈大小和程序的调用树提供静态最坏情况堆栈使用情况。

    在调试程序时不提供运行时的动态堆栈使用。