임베디드 용어 사전
기초·메모리

크로스 컴파일

개발하는 기계와 코드가 실행될 기계가 다른 빌드. PC에서 Arm용 바이너리를 만든다.

MCU 개발이 PC 개발과 다른 첫 지점이다.

arm-none-eabi-gcc     arm    대상 아키텍처
                      none   운영체제 없음 (베어메탈)
                      eabi   호출 규약

툴체인 이름에 대상이 그대로 적혀 있다. none 이 리눅스가 아니라는 뜻이라, 표준 라이브러리의 시스템 호출(파일·프로세스)이 비어 있다.

그래서 생기는 일

printf 를 쓰면 링크 오류      _write 같은 시스템 콜 스텁이 없다 → 직접 채워야 한다
파일 입출력이 없다            로그는 UART·RTT 로 내보낸다
malloc 도 스텁이 필요하다      _sbrk 를 링커 심볼과 함께 정의한다

빌드 산출물

.elf   디버그 정보 포함. 디버거와 addr2line 이 쓴다  ← 반드시 보관한다
.hex/.bin  칩에 굽는 실제 이미지
.map   배치 보고서

.elf 를 릴리스마다 보관하지 않으면, 현장에서 올라온 폴트 주소를 나중에 해석할 수 없다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — MCU란 무엇인가 — OS 없이 도는 컴퓨터