00. 필수 개념 - Hongjayeong-02/Basic_SoC_implementation GitHub Wiki
이 페이지는 모든 챕터에서 계속 나오는 공통 개념을 한 곳에 모아둔 것이다. 각 챕터 페이지는 이 개념들을 "안다"고 전제하고 진행하므로, 이해가 안 되는 부분이 생기면 언제든 이 페이지로 돌아오면 된다. HAL/CubeMX 없이 레지스터를 직접 만지는 "베어메탈(bare-metal)" 방식이 처음이라면 이 페이지를 먼저 읽으면 쉽다.
목차: Bare‐metal-C-Programming · 이전: - · 다음: Bare-metal-C-Ch01-툴체인설정
"베어메탈(bare-metal)"은 문자 그대로 **"앞을 가릴 것이 없는 금속(칩) 그대로"**라는 뜻이다. 운영체제도, HAL(Hardware Abstraction Layer)도 없이 CPU가 리셋된 직후부터 내 코드가 칩의 레지스터를 직접 만지는 방식을 말한다.
| HAL (HAL_GPIO_WritePin(...)) | 베어메탈 (GPIOB->ODR ^= (1UL<<n)) | |
|---|---|---|
| 코드 가독성 | 높음 | 낮음 (데이터시트 필수) |
| 이식성 | 다른 MCU로 쉽게 이동 | MCU 종속적 |
| 실행 속도/코드 크기 | 추상화 오버헤드 있음 | 최소 — 데이터시트의 레지스터 설명과 1:1로 대응 |
| 학습 난이도 | 낮음 | 높음 (데이터시트/리퍼런스 매뉴얼 필수) |
| 왜 배우는가 | 빠른 제품화 | 하드웨어가 실제로 어떻게 동작하는지 이해, 디지털 회로설계자가 자주 마주치는 레지스터 레벨 제어와 같은 언어 |
이 표는 거의 모든 챕터에서 반복적으로 등장한다 — 특히 버튼 극성(active-HIGH/LOW)은 EXTI 트리거 방향(RTSR/FTSR)을 바꾸는 직접적인 원인이 되므로 꼭 기억해둘 것.
이제 이 개념들을 전제로 챕터별 페이지를 보면 된다. 각 페이지에서 이 프라이머의 개념을 다시 설명하지는 않고, 필요할 때 간단히 "(00 참고)"로만 표시한다.
네비게이션: Bare‐metal-C-Programming → 다음: Bare-metal-C-Ch01-툴체인설정