Part Number:CC2652RB
Hi Ti:
我看到很多地方和 stack size 相关,想问一下以下设置都有什么区别:
我想请问一下上面的设置都表示什么意思呢?
而我通过 TI 官方文档对 stack size 进行输出,结果如下:
实际值和上面的设置值都不一样,请问这些值都要怎么理解呢?
Kevin Qiu1:
第一个是CCS编译的stack,第二个是默认的system stack,第三个是任务的stack
上面的stack是RTOS中的概念,每个任务都有对应的stack size,用来存放变量等
junde deng 说:实际值和上面的设置值都不一样,请问这些值都要怎么理解呢?
任务程序越大,stack size也就越大
具体的你可以查下stack的概念和使用方法
,
junde deng:
Kevin Qiu1 说:第二个是默认的system stack,第三个是任务的stack
那下面两张图中的 stack 分别表示的是哪种stack呢
我看到说可以减小 ROV 中未使用的 stack,也就是上面 stackSize 为 768 的区域,我该在哪里修改呢?
,
Kevin Qiu1:
代码中的基本都是task stack
junde deng 说:也就是上面 stackSize 为 768 的区域,我该在哪里修改呢?
当前任务实际的stack size,修改下面宏定义
#define SP_TASK_STACK_SIZE 2048
,
junde deng:
谢谢 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_SIZE2048// define in icall_addrs.h #define ICALL_TASK_STACK_SIZES { 4096 }而问题中 .cfg 文件中 1024 栈的设置,可以在 ROV 中的 Hwi 中查看,这是一个 system stack,具体功能参考以下说明:
而下图中的 256,表示的是 “C system" 栈大小。。。