JeDay (30.11.2005 01:34, просмотров: 854)
uCOS-II. Как точно расчитать размер стека задач ? Юзаю ATMEGA128.
Вот так запускаю задачу:
OSTaskStkSize = 240;
OSTaskStkSizeHard = 64;
OSTaskCreateExt(Task_Start,
(void *)0,
(OS_STK *)&TaskStartStk[OSTaskStkSize - 1],
OS_TASK_START_PRIO,
OS_TASK_START_PRIO,
(OS_STK *)&TaskStartStk[OSTaskStkSizeHard],
OSTaskStkSize - OSTaskStkSizeHard,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
Припустим у меня поток Task_Start имеет 3 вложения ф-й. Я задал 240 ячеек стека всего из них под адреса возвратов 64. Как я понимаю soft_stk сохраняет 32 регистра, SREG, SPH, SPL, RAMPZ, p_arg. Это около 38 ячеек. Плюс hard_stk у котором 3 ячейки для адресов возврата. Вроди достаточно зарезервировать
OSTaskStkSize = 40;
OSTaskStkSizeHard = 4;
А в примере, который с портом идет
OSTaskStkSize = 240;
OSTaskStkSizeHard = 64;
Вопросик: Как расчитывать точный требуемый размер стека ?
К примеру ATMEGA128.
Зараннее спасибо.