Bare Metal C — NUCLEO F439ZI - Hongjayeong-02/Basic_SoC_implementation GitHub Wiki
Packt Bare-Metal Embedded C Programming(Israel Gbati) 원서 18개 챕터를 NUCLEO-F439ZI(STM32F439ZIT6) 보드로 실습하면서, 이론+코드+코드 설명+실습 결과를 정리한 공간입니다. HAL/CubeMX 없이 레지스터를 직접 조작하는 베어메탈 방식으로, GitHub 저장소 bare-metal-c-nucleo-f439zi의 코드/README를 바탕으로 하되, 여기서는 레지스터 원리와 왜 그렇게 동작하는지를 더 깊게 다룹니다.
- 챕터마다 이론 → 코드 → 코드 설명 → 실습 결과 → 시험 대비 핵심 정리 순서로 구성
- "정리본만 읽어도 이해된다"를 목표로 함 — 배경지식 없이도 읽히게 개념부터 설명, 특히 "왜 코드를 이렇게 쓰는가"(코드 작성 원리)를 각 챕터 3절에서 집중적으로 다룸
- 실습 결과는 실제 보드에서 확인한 것만 "✅ 실기 검증"으로 표시하고, 그렇지 않은 건 솔직하게 표시
- 클라우드 환경에서는 실제 보드 플래시가 불가능하므로 코드 작성 + 빌드(컴파일/링크) 검증까지 진행하고, 실기 검증은 로컬 STM32CubeIDE + 실제 보드에서 별도로 진행
원서 실습 18개 챕터 + 기초 개념 primer(00) 전부 작성 완료했습니다. 아래 목록에서 각 페이지로 들어가면 됩니다.
| Ch | 주제 | 실기 검증 | 페이지 |
|---|---|---|---|
| 00 | 시작하기 전에 — 베어메탈 C 필수 개념 | - | Bare-metal-C-00-필수개념 |
| 01 | 툴체인 설정 (Linux CLI) | - | Bare-metal-C-Ch01-툴체인설정 |
| 02 | 메모리 주소로 레지스터 직접 정의 | - | Bare-metal-C-Ch02-레지스터-직접정의 |
| 03 | 빌드 과정 / GNU 툴체인 | - | Bare-metal-C-Ch03-빌드과정과-GNU툴체인 |
| 04 | 링커스크립트 + 스타트업 | - | Bare-metal-C-Ch04-링커스크립트와-스타트업 |
| 05 | Make 빌드 시스템 | - | Bare-metal-C-Ch05-Make빌드시스템 |
| 06 | CMSIS | - | Bare-metal-C-Ch06-CMSIS |
| 07 | GPIO | - | Bare-metal-C-Ch07-GPIO |
| 08 | SysTick | - | Bare-metal-C-Ch08-SysTick |
| 09 | 범용 타이머(TIM) | - | Bare-metal-C-Ch09-TIM |
| 10 | UART | - | Bare-metal-C-Ch10-UART |
| 11 | ADC | - | Bare-metal-C-Ch11-ADC |
| 12 | SPI (+ADXL345) | Bare-metal-C-Ch12-SPI | |
| 13 | I2C (+ADXL345) | Bare-metal-C-Ch13-I2C | |
| 14 | 외부 인터럽트(EXTI) | ✅ | Bare-metal-C-Ch14-EXTI |
| 15 | RTC | ✅ | Bare-metal-C-Ch15-RTC |
| 16 | Independent Watchdog(IWDG) | ✅ | Bare-metal-C-Ch16-IWDG |
| 17 | DMA | ✅ | Bare-metal-C-Ch17-DMA |
| 18 | 저전력 모드 (Standby) | Bare-metal-C-Ch18-StandbyMode |
자세한 내용과 이유는 Bare-metal-C-00-필수개념 페이지 10절 참고.
전체 코드는 각 챕터 페이지 안에 포함되어 있고, 실제 프로젝트 코드/README는 GitHub 저장소 bare-metal-c-nucleo-f439zi에 있습니다.