根据我们需要,现在工程需要开4个线程,分别为ICall_createRemoteTasks(); stack_size是默认值1000。GAPRole_createTask(); stack_size设置为768。
SDITask_createTask(); stack_size设置为752。 multi_role_createTask(); stack_size设置为950。
因为原来串口驱动部分是跟我们应用程序一同放在multi_role_createTask(); 线程中的,但是发现串口效率很低,只有0.7K/S所有,怀疑是不是因为跟应用程序同线程导致的,所以我们参考SDI_uart,重新开了一个线程专门来处理uart数据,但是目前发现,随着一条新线程的开启,芯片会跑死。请帮忙协助分析下原因。
请问这个stack_size的值最大为多少,参考dev.ti.com/…/cc2640/memory_management.html#system-stack发现该值最大为1024?那这个1024是值每个线程可以设置这么大还是总共就这么大?
user4961268:
没人知道么?
Viki Shi:
回复 user4961268:
1024这个值可以修改,具体大小是根据你的task需要占用多少决定。
参见BLE software developer guide——Ensure the task has a minimum task stack size of 512 bytes of predefined memory. At a minimum, each stack must be large enough to handle normal subroutine calls and one task preemption context. A task preemption context is the context that is saved when one task preempts another as a result of an interrupt thread readying a higher priority task. Using the TI-RTOS profiling tools of the IDE, the task can be analyzed to determine the peak task stack usage.