이 글에서는 RP2040 개발을 위한 두 가지 대표 생태계인 Pico SDK(C/C++)와 CircuitPython을 비교합니다. 빌드/배포, 성능, 사용성, 라이브러리, 대표 예제를 통해 어떤 프로젝트에 어떤 선택이 적합한지 가이드합니다.

1) 언어/개발 환경
- Pico SDK: C/C++, CMake 기반. 로우레벨 제어, 성능과 메모리 효율 우수
- CircuitPython: 파이썬. REPL/USB Mass Storage로 즉시 수정·실행, 교육/프로토타이핑에 최적

2) 빌드/배포 흐름
- Pico SDK: toolchain 설치 → cmake/ninja → UF2 빌드 → BOOTSEL 드라이브로 복사
- CircuitPython: 보드에 UF2 펌웨어 구워 CIRCUITPY 드라이브 마운트 → code.py 편집 후 자동 재실행

3) 성능/메모리
- Pico SDK: 네이티브 코드로 최적 성능. 인터럽트/PIO/PWM 등 하드웨어 자원 직접 활용 용이
- CircuitPython: 인터프리터 오버헤드 존재. 빠른 반복개발 장점, 성능 민감 작업은 C 확장 또는 Pico SDK 권장

4) 라이브러리/에코시스템
- Pico SDK: 공식 SDK + TinyUSB, FreeRTOS, 다양한 드라이버. 예제 풍부
- CircuitPython: Adafruit CircuitPython 라이브러리 방대(MQTT, 센서, 디스플레이 등)

5) 예제 비교: 온보드 LED 토글
- Pico SDK (C)
#include "pico/stdlib.h"
int main(){
  const uint LED=PICO_DEFAULT_LED_PIN;
  gpio_init(LED); gpio_set_dir(LED, GPIO_OUT);
  while(1){ gpio_xor_mask(1u<<LED); sleep_ms(500);} }

- CircuitPython
import time, board, digitalio
led=digitalio.DigitalInOut(board.LED); led.direction=digitalio.Direction.OUTPUT
while True:
    led.value=not led.value
    time.sleep(0.5)

선택 가이드:
- 교육/시연/IoT 빠른 프로토타입: CircuitPython
- 성능 요구/정밀 타이밍/PIO 심화/대규모 프로젝트: Pico SDK
- 혼합 전략: CircuitPython에서 시작 → C 모듈 혹은 Pico SDK로 이관

Posted by 살레시오
,