2022년 10월 20일 목요일

MCU Stack overflow 검출 방법

MCU에서 스택은 보통 RAM의 최상단에 위치하고 스택 포인터는 최상단 주소에서 스택을 사용하면 값이 줄어든다.


스택 포인터가 사용자 메모리까지 줄어들면 Stack overflow가 발생하면서 사스템이 이상 동작을 한다.



Stack overflow를 검출하는 가장 간단한 방법은 위 그림과 같이 스택의 마지막에 매직 넘버를 쓴 후 이 값이 변하는지 확인하는 방법이다. 매직 넘버는 0x12345678와 같이 잘 사용하지 않는 값을 사용한다.


메인 함수를 처음 실행할 때 스택의 마지막 50% 정도에 매직넘버를 쓰면 프로그램이 실행되면서 매직 넘버가 변하고 매직넘버가 변한 위치를 보면 스택 최대 사용량을 알 수 있다.


댓글 없음:

댓글 쓰기