Embedded Basic
임베디드 기초 3편 - 빌드 과정: 소스 코드가 플래시에 올라가기까지
들어가며 2편에서 .text/.data/.bss 섹션과 링커 스크립트를 다뤘다. .data > RAM AT > FLASH 구문이 LMA와 VMA를 분리한다는 것까지 정리했다. 그런데 이 링커 스크립트는 누가, 언제, 어떻게 처리하는 걸까. main.c 하나를 작성하고 빌드 버튼을 누르면 어떤 일이 일어나는지 정확히 알지 못한 채로 쓰고 있었다. ARM Cortex-M 툴체인 ARM Cortex-M을 타겟으로 빌드할 때 쓰는 컴파일러는 arm-none-eabi-gcc다. 이름을 뜯어보면: arm: 타겟 아키텍처 none: 운영체제 없음 (bare-metal) eabi: Embedded ABI — 함수 호출 규약, 데이터 정렬 방식 표준 gcc: GNU Compiler Collection STM32CubeIDE나 PlatformIO 같은 IDE를 쓰면 이 툴체인이 자동으로 설정된다. 직접 Makefile이나 CMake를 구성할 때는 직접 지정해야 한다. ...