FreeRTOS чрезмерное переполнение стека - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь реализовать алгоритм «производитель-потребитель» на ATMega323_WinAVR, используя FreeRTOS. Я получаю эту ошибку в AVR Studio 4 при отладке:

AVR Simulator: Excessive stack overflow, stop sim

Указатель стека останавливается на этой строке:

static void prvCopyDataToQueue (
  xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition){

Почему появляется эта ошибка?

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Когда вы создаете программу, компоновщик определяет, куда в ОЗУ будет стек, и отладчик будет ожидать ее там.Когда у вас работает планировщик FreeRTOS, стеки будут поступать из кучи FreeRTOS, поскольку каждой задаче выделяется стек при ее создании.Отладчик не сможет узнать, переполнила ли задача свой стек или нет, потому что он не знает, где находится стек, и не знает FreeRTOS.

Я рекомендую отключить эту проверку в отладчике.затем включите проверку стека в FreeRTOS (если вы хотите вообще проверять переполнение стека, рекомендуется только во время разработки).

С уважением.

0 голосов
/ 18 ноября 2011

Посмотрите на эту тему .Возможно, проблема связана с наблюдателем стека симулятора.

...