LabHub

블로그

임베디드 시스템 & 펌웨어 개발 2026 완벽 가이드 — STM32 · ESP32-C6 · RP2040 · Raspberry Pi 5 · Arduino · PlatformIO · Zephyr RTOS · ESP-IDF 심층 분석

한국어English日本語

1장 · 임베디드 2026 — MCU와 SBC, 그리고 FPGA의 경계

임베디드 개발자가 가장 먼저 익혀야 하는 것은 칩 선택의 축이다. 2026년의 축은 세 개로 나뉜다.

분류대표 칩특징OS
MCUSTM32, ESP32, RP2040메모리 KB-MB, 마이크로앰페어 슬립Bare-metal / RTOS
SBCRaspberry Pi 5, Jetson Orin메모리 GB, GPU/NPULinux
FPGALattice ECP5, Xilinx Artix-7게이트 단위 병렬, HDL 합성None / soft-core

MCU는 결정론적 실시간 제어, SBC는 풍부한 운영체제와 AI, FPGA는 하드웨어 파이프라인이 필요한 경우에 쓴다. 이 세 가지는 서로를 대체하지 않는다. 같은 장치 안에서 함께 쓰는 경우도 흔하다. 예를 들어 산업용 머신비전 카메라는 FPGA가 센서를 읽고, MCU가 모터를 돌리고, SBC가 신경망을 추론하는 구조가 일반적이다.

이 글은 주로 MCU와 SBC를 다루지만, 어디서 FPGA가 필요한지의 감각도 같이 짚는다.


2장 · STM32 — Cortex-M의 사실상 표준

STMicroelectronics의 STM32는 2007년 출시 이후 Cortex-M 기반 MCU의 사실상 표준이 되었다. 2026년 현재 라인업은 매우 넓다.

시리즈코어특징대표 부품
STM32F0Cortex-M0입문/저전력STM32F030
STM32G0Cortex-M0+신형 입문STM32G031
STM32F4Cortex-M4 + FPU범용 고성능STM32F407
STM32F7Cortex-M7DSP/이미지STM32F746
STM32H7Cortex-M7 480MHz고성능STM32H743
STM32L4/L5Cortex-M4/M33초저전력STM32L476
STM32U5Cortex-M33 + TrustZone보안 + 저전력STM32U585
STM32WB/WLM4 + M0+BLE / LoRaSTM32WB55
STM32H5Cortex-M33신형 메인스트림STM32H573
STM32MP1/MP2Cortex-A7/A35 + M4/M33헤테로 (Linux + RTOS)STM32MP157

개발 흐름

전형적인 STM32 워크플로는 다음과 같다.

  1. STM32CubeMX로 핀, 클록, 페리페럴(USART, SPI, I2C, ADC 등) 설정 → HAL 코드 생성
  2. STM32CubeIDE(또는 VS Code + Cortex-Debug)에서 코드 작성
  3. ST-Link V3로 보드에 플래시 및 디버그
  4. STM32CubeMonitor로 변수 실시간 시각화

ST-Link는 보통 Nucleo 보드에 내장돼 있어 별도 구매가 필요 없다. Nucleo-F411RE 같은 보드는 15달러 안팎이다.

HAL vs LL vs 베어메탈

ST는 두 가지 라이브러리를 제공한다. HAL(Hardware Abstraction Layer)은 추상화가 두껍고, LL(Low Layer)는 레지스터 접근에 가깝다. 실시간 응답이 중요한 코드는 LL을 쓰거나 아예 베어메탈로 레지스터를 직접 다룬다. CubeMX는 두 가지 모두 생성할 수 있다.


3장 · ESP32 — WiFi/BT가 기본인 MCU

Espressif의 ESP32는 2016년 출시 이후 IoT의 사실상 표준이 되었다. 2026년 현재의 라인업은 다음과 같다.

ISAWiFiBT/BLE코어
ESP32 (Classic)Xtensa LX644.2 / BLE 4.2듀얼 240MHz
ESP32-S2Xtensa LX74없음싱글
ESP32-S3Xtensa LX74BLE 5.0듀얼 + AI 가속
ESP32-C3RISC-V4BLE 5.0싱글 160MHz
ESP32-C6RISC-V6BLE 5.3 + Thread/Zigbee싱글 160MHz
ESP32-H2RISC-V없음BLE 5.3 + 802.15.4싱글
ESP32-P4RISC-V없음 (외부 코프로)없음듀얼 400MHz + MIPI

ESP32-C6(2023)는 WiFi 6, Thread, Zigbee, Matter를 한 칩에 담은 첫 라인업이다. ESP32-P4(2024 양산)는 WiFi가 없는 대신 RISC-V 듀얼코어 400MHz와 MIPI-CSI/DSI를 제공해 카메라/디스플레이 응용에 쓰인다.

ESP-IDF v5.4

Espressif 공식 SDK인 ESP-IDF는 v5.4(2024)에서 Rust 통합, ESP32-P4 정식 지원, OpenThread 1.3 등을 추가했다. 명령행은 단순하다.

idf.py set-target esp32c6
idf.py menuconfig
idf.py build flash monitor

idf.py menuconfig은 kconfig 트리에서 WiFi 스택, 파티션 테이블, 컴파일러 옵션을 토글한다.

Arduino-ESP32 vs ESP-IDF

ESP32는 Arduino 코어로도 쓸 수 있다. void setup(void), void loop(void) 패러다임을 그대로 쓰면서 WiFi/BLE를 부르는 코드는 5분이면 깜빡인다. 하지만 OTA, 듀얼 코어 활용, 저전력 슬립 같은 고급 기능은 ESP-IDF의 FreeRTOS API를 직접 다루는 편이 자연스럽다.


4장 · RP2040과 RP2350 — Raspberry Pi의 MCU

2021년 출시된 Raspberry Pi Pico의 RP2040은 입문용 MCU의 새로운 기준점이 되었다. 듀얼 Cortex-M0+ 133MHz, 264KB SRAM, PIO(Programmable I/O)라는 독특한 페리페럴이 특징이다. PIO는 작은 상태 기계 8개를 가지며, VGA, DPI, WS2812 LED 같은 까다로운 프로토콜을 비트단위로 직접 합성한다.

RP2350 (2024년 8월 출시)

RP2040의 후속작인 RP2350(Raspberry Pi Pico 2)은 2024년 8월에 발표됐다.

항목RP2040RP2350
코어듀얼 Cortex-M0+듀얼 Cortex-M33 + 듀얼 Hazard3 RISC-V
클록133MHz150MHz
SRAM264KB520KB
보안없음TrustZone, OTP, 부트 ROM 인증
가격(Pico 2)4달러5달러

RP2350의 진짜 특이점은 듀얼-ISA다. 같은 코어 슬롯에 Cortex-M33 또는 RISC-V Hazard3 코어를 부팅 시점에 선택할 수 있다. SDK 빌드 시점에 결정한다.

Pico SDK

pico-sdk는 CMake 기반이고 의외로 깔끔하다.

cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(blink)
pico_sdk_init()
add_executable(blink blink.c)
target_link_libraries(blink pico_stdlib)
pico_add_extra_outputs(blink)

uf2 파일을 만들어 Pico의 BOOTSEL 버튼을 누르고 USB로 연결하면 마운트된 드라이브에 파일을 끌어다 놓는 것으로 플래시 완료. 별도 프로그래머가 필요 없다.


5장 · Arduino Uno R4 — 16년 만의 세대 교체

Arduino Uno는 2010년 이후 ATmega328P(8비트 AVR)를 써왔지만, 2023년 출시된 Uno R4는 16년 만에 칩이 바뀌었다. Renesas RA4M1(Cortex-M4 48MHz, 256KB Flash, 32KB SRAM)로 옮긴 것이다.

Uno R4는 두 가지 변형이 있다.

기존 Uno R3와 핀 호환이라 시일드를 그대로 쓸 수 있다. CAN, DAC, OpAmp, HID over USB가 추가됐다. 기존 ATmega328P보다 1000배 가까운 메모리를 받았다.

다만 8비트 시대의 일부 라이브러리는 호환되지 않는 경우가 있어 R4 출시 직후에는 호환성 이슈가 많았다. 2024-2025년에 걸쳐 대부분의 인기 라이브러리가 R4를 지원하도록 업데이트됐다.


6장 · Nordic nRF52 / nRF54 — BLE의 왕자

BLE(Bluetooth Low Energy) 전용 칩에서는 Nordic Semiconductor가 압도적이다. 2026년 라인업의 중심은 다음과 같다.

Nordic은 nRF Connect SDK(NCS)를 제공하는데, 내부적으로 Zephyr RTOS를 사용한다. nRF52를 다루기 시작하면 자연스럽게 Zephyr를 배우게 된다. SoftDevice(BLE 스택 바이너리)는 사라지고 Zephyr 기반 Bluetooth Host/Controller로 통합되는 흐름이 자리 잡았다.


7장 · 기타 MCU 가족 — Microchip, NXP, TI, WCH

상위 4개 외에도 임베디드 세계는 넓다.

칩 선택은 종종 공급 안정성, 가격, 개발 도구의 성숙도의 함수다. 2021-2022 칩 부족 사태 이후, 한 칩 가족에만 베팅하지 않는 멀티-벤더 설계가 일반화됐다.


8장 · Raspberry Pi 5와 SBC 생태계

Raspberry Pi 5(2023년 10월 출시, 2024년 본격 보급)는 SBC의 기준점을 다시 그렸다.

항목Pi 4Pi 5
SoCBCM2711 (A72)BCM2712 (A76)
클록1.5/1.8GHz2.4GHz
메모리1/2/4/8GB LPDDR44/8/16GB LPDDR4X
PCIe없음PCIe 2.0 x1 (외부 NVMe)
전원USB-C 15WUSB-C 25W (5A 권장)
가격35-75달러60-120달러

Pi 5는 RP1이라는 자체 I/O 칩을 외부에 두고 PCIe로 연결하는 구조라, USB/Ethernet 처리량이 Pi 4 대비 크게 늘었다. NVMe SSD를 HAT로 붙이는 것이 보편적인 구성이 됐다.

다른 SBC들

선택 기준은 보통 커뮤니티 크기 → 드라이버 성숙도 → 가격 → 사양 순이다. Pi의 강점은 첫 번째와 두 번째에 있다.


9장 · RTOS — FreeRTOS, Zephyr, ThreadX, NuttX

베어메탈은 단순한 응용에 좋지만, 태스크가 둘 이상으로 늘면 RTOS가 필요해진다. 2026년의 RTOS 지형은 다음과 같다.

FreeRTOS 11

Zephyr RTOS 4.0

Eclipse ThreadX (구 Azure RTOS)

Apache NuttX

CMSIS-RTOS / RTX

Mbed OS

선택은 보통 인증 필요 여부, 멀티 아키텍처 여부, 커뮤니티 활성도로 갈린다. 새 프로젝트라면 FreeRTOS(가벼움 우선)나 Zephyr(생태계 우선)가 일반적인 선택이다.


10장 · 임베디드 언어의 다양화 — Rust, TinyGo, MicroPython

C가 여전히 임베디드의 1순위 언어인 것은 변함없지만, 2026년에는 진지한 대안이 늘었다.

Rust embedded

#[embassy_executor::main]
async fn main(spawner: Spawner) {
    let p = embassy_rp::init(Default::default());
    let mut led = Output::new(p.PIN_25, Level::Low);
    loop {
        led.toggle();
        Timer::after(Duration::from_millis(500)).await;
    }
}

Pico의 GPIO 25번에 연결된 온보드 LED를 깜빡인다. async/await가 진짜로 동작한다.

TinyGo

MicroPython / CircuitPython

import machine, time
led = machine.Pin(25, machine.Pin.OUT)
while True:
    led.toggle()
    time.sleep(0.5)

TinyMaix, picoTLS

성능/메모리 제약이 더 큰 환경을 위한 특수화된 라이브러리들. TinyMaix는 200KB Flash에 들어가는 신경망 추론 엔진.


11장 · PlatformIO — 다중 타겟 빌드의 사실상 표준

PlatformIO는 2014년 우크라이나의 Ivan Kravets가 시작한 멀티 플랫폼 임베디드 빌드 시스템이다. 2026년 현재 1300여 보드, 50여 플랫폼, 20여 프레임워크를 지원한다.

[env:esp32-c6]
platform = espressif32
board = esp32-c6-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600

[env:nucleo_f411re]
platform = ststm32
board = nucleo_f411re
framework = stm32cube
debug_tool = stlink

같은 폴더에 두 환경을 정의하면 pio run -e esp32-c6로 ESP32를, pio run -e nucleo_f411re로 STM32를 빌드한다. 라이브러리도 lib_deps = adafruit/Adafruit BME280 Library@^2.2.4 같은 SemVer 의존성으로 관리한다.

VS Code 확장이 가장 인기 있다. Arduino IDE보다 강력하고, Eclipse 기반 ST IDE보다 가볍다.


12장 · ESP-IDF v5.4와 ESP32 워크플로 심층

ESP-IDF는 Espressif 공식 SDK이고, FreeRTOS와 LwIP, WiFi 스택을 하나로 묶었다. v5.4(2024)의 주요 변화는 다음과 같다.

빌드 파이프라인

idf.py build는 내부적으로 CMake + Ninja를 호출하고, 파티션 테이블에 따라 부트로더, 앱 바이너리, NVS 영역을 만든다. 결과물은 다음과 같다.

build/bootloader/bootloader.bin   # 1부트로더 (ROM 다음)
build/partition_table/partition-table.bin
build/myapp.bin                    # 애플리케이션
build/ota_data_initial.bin         # OTA 슬롯 메타

플래시는 esptool.py write_flash 또는 idf.py flash로 한다.

듀얼 코어 활용

ESP32 Classic과 S3는 듀얼 코어다. FreeRTOS의 xTaskCreatePinnedToCore로 특정 코어에 태스크를 고정한다.

xTaskCreatePinnedToCore(network_task, "net", 8192, NULL, 5, NULL, 0);
xTaskCreatePinnedToCore(sensor_task,  "sen", 4096, NULL, 5, NULL, 1);

코어 0은 WiFi/BT 스택이 무겁게 쓰고, 코어 1은 애플리케이션 로직이 점유하는 패턴이 일반적이다.


베어메탈 디버깅은 보통 두 단계다. 보드의 SWD 핀에 디버그 프로브를 연결하고, 호스트의 GDB가 프로브를 통해 칩을 조종한다.

디버그 프로브들

OpenOCD와 probe-rs

호스트의 GDB 서버는 전통적으로 OpenOCD다. C 코드 베이스가 오래됐고 설정이 까다롭다. 2020년대 후반 probe-rs(Rust)가 떠올랐다. cargo flash --chip STM32F411RETx 한 줄로 끝나는 단순함이 특징이다.

GDB 자체는 여전히 표준. VS Code의 Cortex-Debug 확장이나 CLion의 임베디드 디버거가 GDB를 감싼다.


14장 · 통신 — SPI, I2C, UART, CAN, USB

MCU의 90%는 다음 5종의 직렬 통신을 직접 다룬다.

프로토콜속도핀 수특징
UART보통 115200bps2 (TX/RX)가장 단순. 비동기.
SPI수십 MHz4 (MOSI/MISO/SCK/CS)빠르고 대칭.
I2C100k/400k/1M2 (SDA/SCL)다중 슬레이브. 풀업 필수.
CAN1Mbps2 (CAN-H/L)차동, 자동차 표준.
RS-48510Mbps2 (A/B)차동, 산업용 장거리.
USB FS/HS12/480Mbps4 (D+/D-/VBUS/GND)호스트/디바이스.

핀 식별자는 GPIO_NUM_2 같이 칩별 매크로로 다룬다. 풀업/풀다운, 드라이브 강도, 오픈드레인 같은 GPIO 속성도 함께 설정한다.


15장 · 무선 — WiFi 6, BLE 5.4, Thread, Matter

2026년 임베디드 무선의 큰 흐름은 Matter 1.4의 메인스트림화다.

칩 선택 시 무선 스택의 RAM/Flash 부담은 작지 않다. BLE Host + Controller만 100-200KB Flash, 30-50KB RAM이 일반적이다.


16장 · 센서 — BME680, VL53L5, MPU6050, GPS

대표적인 센서 부품 몇 가지를 짚는다.

I2C 주소 충돌은 흔한 함정이다. 같은 주소의 두 칩을 쓰려면 TCA9548A 같은 I2C 멀티플렉서를 거치거나, 한쪽의 SDO/ADDR 핀으로 주소를 옮긴다.


17장 · AI on MCU — TFLM, Edge Impulse, STM32Cube.AI

작은 신경망을 MCU에 띄우는 이른바 TinyML은 2020년대 후반에 본격적으로 산업화됐다.

Cortex-M55(Helium MVE)와 Ethos-U55/U65 NPU 코어가 추가되면서 MCU에서 0.5-1.0 TOPS급 추론이 가능해졌다. 화상 1프레임을 100ms 안에 분류하는 정도까지 도달했다.


18장 · OTA — SUIT, mender, ESP32 OTA

배포 후의 펌웨어 업데이트는 임베디드의 가장 어려운 운영 과제다.

A/B 슬롯, 롤백, 서명, 무결성 검증, 부분 업데이트(델타) 같은 요건을 충족하기는 어렵다. SaaS에 위탁하는 비율이 높아진 이유다.


19장 · PCB CAD — KiCad 8, Altium, EasyEDA

스키매틱과 PCB를 그리는 도구들.

소형 메이커는 KiCad + JLCPCB의 조합이 사실상 표준이다. 양면 100x100mm PCB 5장이 약 7달러, 3일이면 배송된다.


20장 · 한국과 일본의 임베디드 생태계

한국

일본

두 지역 모두 메이커 시장은 활발하지만, 영문 문서의 양이 압도적이라 한국/일본 개발자도 영어 문서로 학습하는 비율이 높다.


21장 · 메이커 페어와 크라우드펀딩 — Hackaday, Tindie, Crowd Supply

오픈 하드웨어 프로젝트가 제품이 되는 통로.

한국의 와디즈/텀블벅, 일본의 캠프파이어/마쿠아케에도 임베디드 카테고리가 있지만 영문권에 비해 규모는 작다.


22장 · 시뮬레이션 — Wokwi, Renode, QEMU

실물 보드 없이도 펌웨어를 돌리는 도구들이 정착했다.

CI/CD에서 매 커밋 단위로 펌웨어 회귀 테스트를 돌리려면 시뮬레이션이 사실상 필수다. 보드 100장을 CI 서버에 꽂아둘 수는 없다.


23장 · 케이스 — 3D 프린팅과 CAD

임베디드 제품의 외관은 보통 3D 프린팅이나 사출 성형으로 나온다. 메이커 단계에서는 3D 프린팅이 대세.

PETG, ABS, ASA, PC, Nylon은 외장 부품에 자주 쓴다. PLA는 시작용으로는 좋지만 60도 이상에서 변형되어 차량 내장 같은 환경에서는 부적합하다.


24장 · 보안 — Secure Boot, TrustZone, OTP

IoT 디바이스의 보안은 더 이상 옵션이 아니다. 2024년 EU CRA(Cyber Resilience Act)가 2027년 12월 본격 적용을 앞두고 있다.

작은 MCU에도 ATECC608A 같은 외장 보안 IC를 추가하는 패턴이 늘었다.


25장 · 학습 자료 — 책, 강의, 컨퍼런스

한국어 자료로는 윤덕용 저 "AVR 마이크로컨트롤러" 시리즈, 장문철 강사의 유튜브 채널 등이 유명하다. 일본어로는 CQ出版"トランジスタ技術" 잡지가 70년 가까운 역사.


26장 · 마치며 — 작은 칩, 큰 세상

임베디드 개발은 모든 분야 중에서 가장 하드웨어와 소프트웨어의 경계에 가까운 일이다. 같은 코드라도 보드 두 장의 풀업 저항 값이 다르면 동작이 달라진다. C 한 줄이 만 분의 1초의 인터럽트 지연으로 모터를 부수기도 한다. 이 거리감은 임베디드의 매력이자 어려움이다.

2026년의 임베디드는 도구가 비약적으로 좋아진 시대다. PlatformIO와 Wokwi가 진입 장벽을 낮췄고, Rust embedded와 Zephyr가 안전성과 이식성을 강화했고, KiCad와 JLCPCB가 PCB 제작을 누구나 할 수 있게 만들었다. RP2350의 듀얼-ISA, ESP32-P4의 RISC-V, nRF54L15의 BLE 5.4 같은 새 칩들은 5년 전에는 상상하기 어려운 가격대다.

배움의 순서는 단순하다.

  1. Arduino Uno R3 또는 Pi Pico로 LED를 깜빡인다.
  2. UART, SPI, I2C로 센서 하나를 읽는다.
  3. PlatformIO 또는 ESP-IDF로 환경을 정돈한다.
  4. FreeRTOS의 태스크 두 개를 돌려본다.
  5. WiFi/BLE 한 가지로 클라우드 또는 폰과 통신한다.
  6. KiCad로 자기만의 보드 하나를 발주한다.

여섯 단계를 모두 거치면 임베디드 엔지니어가 된다. 한 번에 한 단계씩 가면 된다. 작은 칩이 큰 세상을 움직이는 즐거움이 그 끝에 있다.


참고 자료

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다