Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- 리컴포지션
- Queue
- State Hoisting
- kotlin
- 아두이노
- Compoae
- LinkedList
- 우송대학교
- 자료구조
- 라즈베리파이 피코
- 스택
- 재정의함수
- 우송대
- Kotlin LinkedList
- 추상화함수
- 코틀린
- Kotlin자료구조
- 컴포즈
- kotlinClass
- MCU
- 임베디드
- Class
- deque
- Stack
- 안드로이드
- 큐
- List
- Android
- 클래스
- 상태 호이스팅
Archives
- Today
- Total
개발자의 생활
STM32 시작하기 본문
저는 지금까지 하드웨어를 개발할 때 Atmega 또는 ESP32를 아두이노 환경에서 개발을 하였습니다.
아두이노는 교육용으로 개발된 것이지만 간단한 임베디드 시스템을 개발하거나 프로토타입으로 검증할 때도 부족하지 않다고 생각각 했습니다. 더군다나 지금은 정식적으로 ESP32_S3와 ARM 기반의 르네사스 MCU 가 UnoR4에 탑재되고 OS 도 탑재할 수 있는 Uno Q 가 출시되면서 단순히 교육용을 넘어 실험과 연구 목적으로도 사용할 수 있을 정도가 되었습니다.
1. STM32 를 공부하는 이유
하지만 저는 STM32 를 공부하기로 했습니다. 이유는 여러 가지가 있습니다.
- 하드웨어 자원의 최적화: 레지스터 레벨에서 내부 클럭 트리를 자유롭게 구성할 수 있고, DMA(Direct Memory Access)를 활용해 CPU 부하를 낮출 수 있습니다.
- 높은 전력 및 시스템 효율: 세밀한 전력 제어가 가능하여 배터리 기반 디바이스나 초저전력 시스템 구축에 유리합니다.
- 유연한 개발 층위 (CubeMX, HAL, LL): STM32CubeMX를 통해 복잡한 핀 매핑과 클럭 트리를 UI환경에서 설정할 수 있고, 개발 생산성을 위한 HAL(Hardware Abstraction Layer) 드라이버를 제공합니다. 물론 HAL 역시 약간의 오버헤드가 존재하지만 아두이노 API에 비하면 매우 경량화되어 있으며, 극단적인 성능이 필요할 때는 LL(Low-Layer) 라이브러리나 레지스터 직접 조작을 통해 베어메탈(Bare-metal) 제어 수준의 오버헤드 제로 성능을 끌어낼 수 있습니다.
결국 제품의 완성도를 높이고, 하드웨어가 가진 본래의 성능을 100% 최적화하여 다루기 위해서는 STM32와 같은 임베디드 하위 레벨 제어로의 전환이 필수적이라는 결론을 내리게 되었습니다.
저도 현재 이 글을 작성하는 시점에서 STM32를 공부한 지 얼마 안 되어 아무것도 모르는 상태이며 앞으로 공부하면서 블로그에 글을 작성할 것 입니다.
저는 공부와 실습을 진행할 MCU로 STM32F103RB 를 사용하는 NUCLEO 보드와 STM32G030F6P6 을 사용할 것입니다.
2가지 MCU로 동시에 실습하는 이유는 MCU 마다 여러 라인업들이 있고 그에 따른 하드웨어 아키텍처가 다르기 때문입니다.
