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. 메모리 주소로 레지스터 직접 정의