2011-11-15 5 views
1

FreeRTOS를 사용하여 ATMega323_WinAVR에 생산자 - 소비자 알고리즘을 구현하려고합니다. 디버깅 할 때 나는 AVR 스튜디오 4에서이 오류를 얻을 :FreeRTOS 과도한 스택 오버플로

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

왜이 오류가 나타납니다 않습니다

AVR Simulator: Excessive stack overflow, stop sim

스택 포인터는이 선에서 정지?

감사합니다.

답변

1

프로그램을 빌드 할 때 링커는 스택에서 RAM이있는 위치를 정의하고 디버거가 거기에서 찾을 것으로 예상합니다. FreeRTOS 스케줄러를 실행하면, FreeRTOS 힙에서 스택이 생성됩니다. 각 태스크는 스택 작성시 스택에 할당됩니다. 디버거는 스택이 어디에 있는지 알지 못하고 FreeRTOS에 대해 알지 못하기 때문에 태스크가 스택을 오버플로했는지 여부를 알 수 없습니다.

디버거에서 체크를 해제 한 다음 FreeRTOS에서 스택 검사를 설정하는 것이 좋습니다 (스택 오버플로를 확인하려는 경우 개발 중에 만 권장 됨).

감사합니다.

0

this thread을 살펴보십시오. 시뮬레이터의 스택 감시자에 문제가있을 수 있습니다.