작성
·
2
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. SeongJin님!
스택의 크기를 128로 줄였을 때 문제가 발생한다면, 스택의 부족으로 인한 스택 오버플로우가 발생했을 가능성이 높습니다. FreeRTOS에서 각 태스크는 고정된 크기의 스택을 할당받아 사용하며, 스택은 함수 호출, 지역 변수 등 여러 요소로 인해 사용됩니다. 할당된 스택 크기가 충분하지 않으면 함수 호출이나 데이터 저장 시 문제가 발생할 수 있습니다.
스택 크기 설정: 태스크 생성 시 지정된 스택 크기는 bytes가 아니라 words(보통 4 bytes)가 기본 단위입니다. 즉, 128 words는 512 bytes의 메모리를 의미합니다.
스택 사용량: 일부 태스크에서 지역 변수나 함수 호출이 많은 경우 더 많은 스택을 필요로 합니다. 특히 이 중에 큰 배열을 선언했다면, 이는 많은 스택 공간을 차지할 수 있습니다.
스택 오버플로우 관리: FreeRTOS에서 스택 오버플로우를 검출하는 기능을 활성화할 수 있습니다. 이를 통해 디버깅 시 스택이 초과되는지 확인할 수 있습니다. FreeRTOS 설정 파일에서 configCHECK_FOR_STACK_OVERFLOW
를 1 또는 2로 설정해 이 기능을 켜보세요.
태스크의 동작이 정상적으로 진행되기 위해서는 적절한 스택 크기 설정이 필요합니다. 문제가 지속될 경우, 스택 사용 추적기를 통해 각 태스크의 실제 메모리 사용량을 분석해 보는 것도 도움될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.