MCU 개발이 PC 개발과 다른 첫 지점이다.
arm-none-eabi-gcc arm 대상 아키텍처
none 운영체제 없음 (베어메탈)
eabi 호출 규약
툴체인 이름에 대상이 그대로 적혀 있다. none 이 리눅스가 아니라는 뜻이라,
표준 라이브러리의 시스템 호출(파일·프로세스)이 비어 있다.
그래서 생기는 일
printf 를 쓰면 링크 오류 _write 같은 시스템 콜 스텁이 없다 → 직접 채워야 한다
파일 입출력이 없다 로그는 UART·RTT 로 내보낸다
malloc 도 스텁이 필요하다 _sbrk 를 링커 심볼과 함께 정의한다
빌드 산출물
.elf 디버그 정보 포함. 디버거와 addr2line 이 쓴다 ← 반드시 보관한다
.hex/.bin 칩에 굽는 실제 이미지
.map 배치 보고서
.elf 를 릴리스마다 보관하지 않으면, 현장에서 올라온 폴트 주소를 나중에 해석할 수 없다.