怎么去确定RTOS中任务栈的大小和任务的优先级.

zizimolan   2007-1-24 10:49 楼主
大家好,怎么去确定一个任务的栈的大小和任务的优先级.比如在nucleus,rex或者threadX里面. 我是做手机开发的,这一方面一直没有想明白.是不是通过经验和实验和选择合适的栈的大小和任务的优先级呢. 比如先给新建的任务一个比较充裕的栈空间和估计的优先级,然后让任务在RTOS中跑起来,统计各种极限下栈的使用情况,和任务间的调度情况,最终修订栈的大小和优先级.   这是我的猜想,唯一可以自己做的东西让人给外包了.呵呵.

回复评论 (1)

一般如果是应用而且实时性不高的话,优先级不必太高,否则会抢占其他的实时性要求高的任务。至于栈的大小,个人觉得1K~5K就非常足够了(针对Nucleus而言),除非定义了很多变量和很深层次的调用,另外最好不要用递归。

例如,对于5K的Stack,理论上可以容纳5*1024/4=1280个32bit的变量。

在各个Function里,局部数组不要定义很大,例如

char m_buf[1024*5];就很危险。

个人一点的经验。

如果需要大的Buffer或者大的structure,应该用Malloc从系统堆上分配。

实验和经验还是最重要的。
点赞  2007-1-31 12:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复