임베디드 용어 사전
부팅·빌드

Reset_Handler

리셋 직후 가장 먼저 실행되는 함수. 전역 변수 초기화와 스택·클럭 준비를 마친 뒤 main을 부른다.

전원이 들어오면 CPU 는 벡터 테이블의 두 번째 워드(리셋 벡터)로 점프한다. 그 자리가 이 함수다.

하는 일 순서

① 스택 포인터 설정        벡터 테이블 첫 워드에서 하드웨어가 이미 로드
② .data 복사             플래시에 있던 초기값을 SRAM 으로 옮긴다
③ .bss 0 으로 채운다      초기화 안 한 전역이 0 이 되는 이유
④ 클럭·FPU 등 초기화      SystemInit
⑤ C 라이브러리 초기화
⑥ main 호출

②가 왜 필요한가

int counter = 5;      // 초기값 5 는 전원이 꺼져도 남아야 하니 플래시에 있고
                      // 실행 중에는 바꿔야 하니 SRAM 에 있어야 한다

그래서 플래시에 원본, SRAM 에 사본을 두고 부팅 때 복사한다. 이 복사를 건너뛰면 전역 변수가 쓰레기 값으로 시작한다.

실무에서 여기를 의심할 때

부팅이 안 될 때 가장 먼저 보는 곳이다. 링커 심볼이 잘못돼 복사 범위가 틀리면 증상이 "왜인지 전역 값이 이상하다" 로 나타난다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 부팅 — 전원을 넣고 main 까지