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.

CC2652RB: CCS 中的栈大小设置

Part Number: CC2652RB

Hi Ti:

我看到很多地方和 stack size 相关,想问一下以下设置都有什么区别:

    

我想请问一下上面的设置都表示什么意思呢?

而我通过 TI 官方文档对 stack size 进行输出,结果如下:

实际值和上面的设置值都不一样,请问这些值都要怎么理解呢?

  • 第一个是CCS编译的stack,第二个是默认的system stack,第三个是任务的stack

    上面的stack是RTOS中的概念,每个任务都有对应的stack size,用来存放变量等

    实际值和上面的设置值都不一样,请问这些值都要怎么理解呢?

    任务程序越大,stack size也就越大

    具体的你可以查下stack的概念和使用方法

  • 第二个是默认的system stack,第三个是任务的stack

    那下面两张图中的 stack 分别表示的是哪种stack呢

      

    我看到说可以减小 ROV 中未使用的 stack,也就是上面 stackSize 为 768 的区域,我该在哪里修改呢?

  • 代码中的基本都是task stack

    也就是上面 stackSize 为 768 的区域,我该在哪里修改呢?

    当前任务实际的stack size,修改下面宏定义

    #define SP_TASK_STACK_SIZE                  2048

  • 谢谢 kevin.

    通过 ROV 工具调试,我发现如下结果:

    其中 768 的栈是在 .cfg 文件定义的 Idle task 任务栈

    Task.idleTaskStackSize = 768;

    而 2048 和 4096 的栈分别是 simple_peripheral task 和 ICall task 定义的任务栈

    // define in simple_peripheral_oad_onchip.c
    #define SP_TASK_STACK_SIZE     2048
    
    // define in icall_addrs.h
    #define ICALL_TASK_STACK_SIZES { 4096 }

    而问题中 .cfg 文件中 1024 栈的设置,可以在 ROV 中的 Hwi 中查看,这是一个 system stack,具体功能参考以下说明:

      

    而下图中的 256,表示的是 “C system" 栈大小。。。