Ch01. 툴체인 설정 - Hongjayeong-02/Basic_SoC_implementation GitHub Wiki
(Bare-metal-C-00-필수개념) 이 챕터는 코드가 아니라 어떤 도구로 어떻게 빌드/플래시하는지를 정리한다. 원서는 Windows + STM32CubeIDE를 쓰지만, 이 저장소는 Linux CLI로 진행한다.
STM32CubeIDE는 에디터+컴파일러+디버거+플래시툴이 하나의 GUI로 묶인 통합 환경이다. 이 저장소는 같은 일을 여러 개별 CLI 도구를 직접 조합해서 한다 — 뒤에서 GUI가 대신 누르던 버튼들이 실제로 무슨 명령어를 실행하는지 눈으로 볼 수 있다는 장점이 있다.
| 도구 | 역할 | 이 저장소에서의 위치 |
|---|---|---|
| arm-none-eabi-gcc | 크로스 컴파일러. x86 PC에서 ARM Cortex-M용 기계어를 생산 | 모든 챕터의 .c를 .o로, 최종적으로 .elf로 |
| GNU Make | 빌드 자동화 도구 | Ch05에서 직접 공용 Makefile 템플릿 작성 |
| OpenOCD | ST-LINK를 통해 보드에 펌웨어를 굽고 디버깅하는 도구 | make flash 타겟이 내부적으로 호출 |
| gdb-multiarch | 소스 레벨 디버깅 | 선택 사항 |
| picocom/minicom | UART 시리얼 터미널 | Ch10 이후 UART 출력 확인용 |
크로스 컴파일러 이름은 관례적으로 <아키텍처>-<벤더>-<OS>-<ABI> 형식을 따른다: arm(ARM 아키텍처) - none(특정 벤더 없음) - eabi(Embedded Application Binary Interface, OS가 없는 베어메탈용 ABI). 즉 이름 자체가 "OS 없는 ARM 임베디드용 컴파일러"라는 뜻이다.
- MCU: STM32F439ZIT6 (Cortex-M4F, 180MHz, Flash 2MB, SRAM 128KB+CCM 64KB)
- 폼팩터: Nucleo-144 (원서의 NUCLEO-F411은 Nucleo-64) — 이 폼팩터 차이가 이후 챕터들의 LED/버튼 핀맵 차이의 근본 원인이다
- 온보드 ST-LINK/V2-1 내장 — 별도 프로그래머 없이 USB 한 개로 플래시+UART(VCP)가 모두 해결된다
# 1) 크로스 컴파일러로 빌드 (챕터 폴더에서)
make
2) 보드가 연결된 로컬 PC에서 OpenOCD로 플래시
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
-c "program chNN.elf verify reset exit"
각 챕터 Makefile의 make flash 타겟이 2번 명령을 감싸둔 것이다.
이 저장소는 실제 하드웨어가 없는 클라우드 샌드박스에서 작성됐다. 그래서:
-
할 수 있는 것:
arm-none-eabi-gcc로 Ch02부터 모든 챕터를 끝까지 컴파일·링크해서 코드 자체(레지스터 주소, 비트 연산, 링커스크립트 심볼 배치 등)의 정확성 검증 -
할 수 없는 것:
make flash, 실제 UART 출력 확인, 오실로스코프로 신호 확인 같은 "실물 검증"
그래서 이 저장소의 워크플로우는 두 갈래로 나뉜다: ① 클라우드에서 make로 빌드까지 검증 → ② 사용자가 로컬 STM32CubeIDE 프로젝트에 같은 코드를 반영해서 실제 보드로 실기 검증. 각 챕터 README/노션 페이지에 이 두 단계 중 어디까지 확인됐는지가 표시된다.
- RM0090 Reference manual (STM32F42x/43x) — 레지스터 주소/비트의 원본 출처
- UM1974 — NUCLEO-144 User manual — 보드 핀맵/회로도
- STM32F439ZI Datasheet
-
Q.
arm-none-eabi-gcc의eabi는 무슨 뜻? → Embedded Application Binary Interface, OS 없는 베어메탈용 ABI - Q. 이 저장소가 CubeIDE와 근본적으로 다른 점은? → 같은 빌드 과정을 GUI 뒤에 숨기지 않고 CLI 도구(gcc/make/openocd)를 직접 조합해서 수행
-
Q. 클라우드 샌드박스에서 검증 못 하는 건? → 실제 보드 플래시(
make flash)와 실물 동작 확인. 컴파일/링크까지만 가능 - Q. 온보드 ST-LINK가 하는 일은? → 별도 프로그래머 없이 USB로 플래시 + 가상 COM 포트(VCP)로 UART까지 제공
네비게이션: 이전: Bare-metal-C-00-필수개념 · Bare‐metal-C-Programming · 다음: Bare-metal-C-Ch02-레지스터-직접정의