Bare metal C Ch01 툴체인설정 - Hongjayeong-02/Basic_SoC_implementation GitHub Wiki
Ch01. Toolchain 설정
목표
Bare-Metal firmware를 작성할 때 사용하는 개발 도구의 역할과 전체 workflow를 이해한다.
이 Chapter는 기능 구현 코드보다는 개발환경과 Toolchain 이해가 중심이다.
1. 개발환경 구성
| Tool | 역할 |
|---|---|
| STM32CubeIDE | Editor / Build / Flash / Debug 통합환경 |
| GNU Arm Embedded Toolchain | ARM Cortex-M용 compiler/linker/binutils |
| OpenOCD | ST-LINK를 통한 programming/debug |
| GDB | Debugging |
| Serial Terminal | UART 출력 확인 |
2. arm-none-eabi-gcc
arm-none-eabi-gcc
이름의 의미:
arm → ARM Architecture
none → 특정 OS 없음
eabi → Embedded Application Binary Interface
gcc → GNU Compiler Collection
3. STM32CubeIDE와 GNU Toolchain 관계
STM32CubeIDE
│
├─ arm-none-eabi-gcc
├─ linker
├─ objcopy
├─ GDB
└─ ST-LINK debug interface
IDE가 버튼으로 감춰놓은 build 과정을 Ch03부터 직접 확인한다.
4. Target Board
Development Board : NUCLEO-F439ZI
MCU : STM32F439ZIT6
CPU Core : ARM Cortex-M4F
포함 관계:
NUCLEO-F439ZI Board
│
└─ STM32F439ZI MCU
│
└─ Cortex-M4F CPU Core
5. 문서 구분
User Manual
Board 회로, LED/Button/VCP 연결 확인.
Datasheet
MCU pinout, memory/peripheral 개요, electrical specification.
Reference Manual
Peripheral register와 bit 동작 확인.
Cortex-M Generic User Guide
NVIC, SysTick, Exception, SCB, FPU 등 core 기능 확인.
6. Build / Flash Workflow
Source Code
│
▼
arm-none-eabi-gcc
│
▼
ELF
│
├─ objcopy → HEX/BIN
│
▼
ST-LINK / OpenOCD
│
▼
STM32 Flash
│
▼
Run / Debug
OpenOCD 예:
openocd \
-f interface/stlink.cfg \
-f target/stm32f4x.cfg \
-c "program firmware.elf verify reset exit"
7. STM32CubeIDE Project에서 확인할 파일
Src/main.c
Startup/startup_stm32f439zitx.s
STM32F439ZITX_FLASH.ld
STM32F439ZITX_RAM.ld
8. Toolchain 확인 명령
arm-none-eabi-gcc --version
arm-none-eabi-objdump --version
arm-none-eabi-objcopy --version
arm-none-eabi-size --version
openocd --version
9. 왜 Toolchain을 직접 배우는가
Compiler
Assembler
Linker
Linker Script
Startup
ELF
HEX/BIN
Debugger
의 역할을 이해하면 compile error, linker error, memory overflow, startup 문제를 분리해서 볼 수 있다.
10. 이 Chapter의 Code
Ch01은 개발환경/Toolchain 준비 Chapter이므로 별도의 firmware source project는 없다.
실제 register programming은 Ch02부터 시작한다.
11. 핵심 정리
- STM32CubeIDE는 IDE다.
- GNU Arm Embedded Toolchain이 ARM code를 compile/link한다.
- OpenOCD/ST-LINK 계열 도구가 target programming/debug를 담당한다.
- NUCLEO-F439ZI는 Board, STM32F439ZI는 MCU, Cortex-M4F는 CPU Core다.
- Board/MCU/Core에 따라 참고해야 하는 문서가 다르다.
네비게이션: 이전: Ch00. Bare-Metal C 필수 개념 · 전체 목차 · 다음: Ch02. 메모리 주소로 레지스터 직접 정의