성능 프로파일링 — DSP 가속 및 리소스 예산¶
Xylolabs API — 종합 성능 분석 개정: 2026-03-23
이 문서는 영문 Performance Profile의 한국어 번역이다.
1. DSP 가속 매트릭스¶
각 플랫폼의 DSP 기능이 코덱 성능을 결정한다. 속도 향상 비율은 순수 C 기준 구현 대비 측정값이다.
| 플랫폼 | 코어 | 클럭 | DSP 확장 | FPU | XAP 속도 향상 | ADPCM 속도 향상 |
|---|---|---|---|---|---|---|
| RP2350 (Pico 2) | Cortex-M33 | 150 MHz | ARMv8-M DSP (SMLAD, SMLAL, QADD, SSAT) | 단정밀도 | ~30% (80->56 MIPS) | ~50% |
| RP2040 (Pico) | Cortex-M0+ | 133 MHz | 없음 | 없음 | N/A (실행 불가) | 최소 |
| ESP32-S3 | 2x Xtensa LX7 | 240 MHz | 128비트 SIMD (PIE): 4x f32, 8x i16 벡터 | 단정밀도 | ~60% | ~40% |
| ESP32-C3 | RISC-V RV32IMC | 160 MHz | M 확장 (곱셈만) | 없음 | 미미 | 최소 |
| STM32F411 | Cortex-M4F | 100 MHz | FPU + DSP: SMLAD, 배럴 시프터 | 단정밀도 | ~40% (부동소수점 경로) | ~30% |
| STM32F103 | Cortex-M3 | 72 MHz | 없음 | 없음 | N/A (실행 불가) | 최소 |
| STM32WB55 | Cortex-M4F | 64 MHz | FPU + DSP (F411과 동일) | 단정밀도 | ~40% | ~30% |
| nRF52840 | Cortex-M4F | 64 MHz | FPU + DSP (F411과 동일) | 단정밀도 | ~30-40% | ~30% |
| nRF9160 | Cortex-M33 | 64 MHz | ARMv8-M DSP (RP2350과 동일) | 단정밀도 | ~30% | ~50% |
DSP 명령어 요약¶
ARMv8-M DSP (Cortex-M33: RP2350, nRF9160, STM32U585):
- SMLAL / UMLAL -- 단일 사이클 32x32->64 MAC, FIR 및 MDCT 누적 연산용
- SMLAD / SMUAD -- 이중 16x16->32 MAC, 16비트 오디오 경로의 처리량 2배 향상
- QADD / QSUB / SSAT / USAT -- 포화 연산, 분기 기반 클리핑 제거
- SBFX / UBFX -- 비트 필드 추출, XMBP 바이너리 프로토콜 파싱용
Cortex-M4F DSP (STM32F411, STM32WB55, nRF52840):
- 위의 ARMv8-M DSP 명령어 전부 포함, 추가로:
- 단정밀도 FPU -- 하드웨어 부동소수점 곱셈-누적 1-3 사이클
- SDIV / UDIV -- 하드웨어 정수 나눗셈 2-12 사이클
Xtensa PIE (ESP32-S3): - 128비트 SIMD -- 명령어당 4x f32 또는 8x i16 처리 - 16 x 128비트 전용 벡터 레지스터 - 하드웨어 AES/SHA로 TLS 부하를 CPU에서 분리 - PSRAM DMA로 대용량 오디오 버퍼 전송
2. 타겟별 성능 예산¶
RP2350 (Pico 2) — 4ch XAP @96kHz¶
단일 코어 예산 (코어 0: 코덱, 코어 1: I/O):
구성 요소 | MIPS (기준) | MIPS (DSP 적용) | 150MHz 대비 %
-----------------------|-----------------|-----------------|------------
I2S DMA 처리 | 2 | 2 | 1.3%
XAP MDCT 순방향 | 50 | 35 | 23.3%
XAP 양자화+패킹 | 15 | 10 | 6.7%
XMBP 배치 인코딩 | 5 | 5 | 3.3%
HTTP 전송 | 10 | 10 | 6.7%
센서 샘플링 (26ch) | 5 | 5 | 3.3%
워치독 + 관리 | 2 | 2 | 1.3%
-----------------------|-----------------|-----------------|------------
합계 | 89 | 69 | 46.0%
가용 여유분 | 61 | 81 | 54.0%
듀얼 코어 분할: 코어 0은 I2S DMA + XAP 인코딩 처리 (~37 MIPS DSP 적용, 24.7%). 코어 1은 XMBP, HTTP, 센서 처리 (~22 MIPS, 14.7%). 전체 시스템 사용률: ~39.3%.
ESP32-S3 — 4ch XAP @96kHz¶
듀얼 코어 예산 (480 MIPS 합계):
구성 요소 | MIPS (기준) | MIPS (PIE 적용) | 480MHz 대비 %
-----------------------|-----------------|-----------------|------------
I2S DMA 처리 | 2 | 2 | 0.4%
XAP MDCT 순방향 | 50 | 20 | 4.2%
XAP 양자화+패킹 | 15 | 6 | 1.3%
WiFi 스택 (FreeRTOS) | 30 | 30 | 6.3%
XMBP 배치 인코딩 | 5 | 5 | 1.0%
HTTP/TLS 전송 | 20 | 12 | 2.5%
센서 샘플링 (26ch) | 5 | 5 | 1.0%
PSRAM DMA 관리 | 3 | 3 | 0.6%
워치독 + 관리 | 2 | 2 | 0.4%
-----------------------|-----------------|-----------------|------------
합계 | 132 | 85 | 17.7%
가용 여유분 | 348 | 395 | 82.3%
PIE SIMD가 가장 큰 절대 성능 향상을 달성한다. TLS 부하는 하드웨어 AES/SHA 가속으로 감소한다.
STM32F411 — 4ch XAP @48kHz¶
단일 코어 예산 (100 MIPS):
구성 요소 | MIPS (기준) | MIPS (DSP 적용) | 100MHz 대비 %
-----------------------|-----------------|-----------------|------------
I2S DMA 처리 | 2 | 2 | 2.0%
XAP MDCT 순방향 | 25 | 15 | 15.0%
XAP 양자화+패킹 | 8 | 5 | 5.0%
XMBP 배치 인코딩 | 3 | 3 | 3.0%
UART LTE-M1 전송 | 8 | 8 | 8.0%
센서 샘플링 (26ch) | 5 | 5 | 5.0%
워치독 + 관리 | 2 | 2 | 2.0%
-----------------------|-----------------|-----------------|------------
합계 | 53 | 40 | 40.0%
가용 여유분 | 47 | 60 | 60.0%
M4F FPU는 XAP 부동소수점 인코더 경로를 활성화하며, 이 코어에서 고정소수점보다 빠르다. CMSIS-DSP arm_rfft_fast_f32는 MDCT를 3-5배 가속한다.
nRF52840 — 2ch XAP @48kHz¶
단일 코어 예산 (64 MIPS):
구성 요소 | MIPS (기준) | MIPS (DSP 적용) | 64MHz 대비 %
-----------------------|-----------------|-----------------|------------
I2S DMA 처리 | 1 | 1 | 1.6%
XAP MDCT 순방향 | 12 | 7 | 10.9%
XAP 양자화+패킹 | 4 | 3 | 4.7%
BLE GATT 스택 | 10 | 10 | 15.6%
XMBP 배치 인코딩 | 2 | 2 | 3.1%
센서 샘플링 (4ch) | 2 | 2 | 3.1%
워치독 + 관리 | 2 | 2 | 3.1%
-----------------------|-----------------|-----------------|------------
합계 | 33 | 27 | 42.2%
가용 여유분 | 31 | 37 | 57.8%
BLE 스택 오버헤드가 상당하다. 4ch XAP @48kHz (~28 MIPS DSP 적용, 44% 사용률)는 가능하지만 여유가 적다.
STM32F103 — 센서 전용 + ADPCM 폴백¶
단일 코어 예산 (72 MIPS, 20 KB SRAM):
구성 요소 | MIPS (기준) | MIPS (최적화) | 72MHz 대비 %
-----------------------|-----------------|-----------------|------------
ADPCM 인코딩 2ch @24kHz | 1 | 1 | 1.4%
XMBP 배치 인코딩 | 2 | 2 | 2.8%
UART LTE-M1 전송 | 8 | 8 | 11.1%
센서 샘플링 (4ch) | 3 | 3 | 4.2%
워치독 + 관리 | 2 | 2 | 2.8%
-----------------------|-----------------|-----------------|------------
합계 | 16 | 16 | 22.2%
가용 여유분 | 56 | 56 | 77.8%
DSP 확장 없음. XAP는 실행 불가 (32 KB 인코더 상태가 20 KB 전체 SRAM을 초과). 2ch @24kHz ADPCM이 최대 오디오 역량이다.
3. 타겟별 메모리 예산¶
모든 값은 KB 단위이다. "SDK 클라이언트"는 XylolabsClient 상태 머신, 세션 상태, 설정을 포함한다.
| 타겟 | 전체 SRAM | SDK 클라이언트 | XAP 인코더 | 링 버퍼 | XMBP | HTTP | 스택 | 가용 |
|---|---|---|---|---|---|---|---|---|
| RP2350 | 520 KB | 12 KB | 8 KB | 32 KB | 16 KB | 4 KB | 16 KB | 432 KB |
| ESP32-S3 | 512 KB + 8MB PSRAM | 12 KB | 8 KB | 64 KB (PSRAM) | 16 KB | 8 KB | 16 KB | ~8 MB |
| STM32F411 | 128 KB | 12 KB | 8 KB | 8 KB | 4 KB | 4 KB | 8 KB | 84 KB |
| STM32U585 | 786 KB | 12 KB | 8 KB | 32 KB | 16 KB | 4 KB | 16 KB | 698 KB |
| nRF52840 | 256 KB | 12 KB | 8 KB | 16 KB | 8 KB | 4 KB | 8 KB | 200 KB |
| nRF9160 | 256 KB | 12 KB | 8 KB | 16 KB | 8 KB | 4 KB | 8 KB | 200 KB |
| STM32WB55 | 256 KB | 12 KB | 8 KB | 8 KB | 4 KB | 4 KB | 8 KB | 212 KB |
| STM32F103 | 20 KB | 4 KB | -- | 4 KB | 2 KB | 2 KB | 4 KB | 4 KB |
| RP2040 | 264 KB | 4 KB | -- | 8 KB | 4 KB | 4 KB | 8 KB | 236 KB |
| ESP32-C3 | 400 KB | 4 KB | -- | 8 KB | 4 KB | 4 KB | 8 KB | 372 KB |
참고사항¶
- XAP 인코더: XAP 인코더 상태당 8 KB; 표는 4ch 합계(32 KB)를 보여준다.
--로 표시된 플랫폼은 XAP를 실행할 수 없다. - 링 버퍼: I2S 캡처용 오디오 DMA 이중 버퍼이다. ESP32-S3는 DMA를 통해 PSRAM에 배치한다.
- 스택: 듀얼 코어 플랫폼(RP2350, ESP32-S3)은 코어당 8 KB를 할당한다.
- STM32F103: 극도로 제한적이다. 센서 + 2ch ADPCM만 가능하다. 4 KB "가용"은 애플리케이션 로직의 절대 최소 수준이다.
4. API 서버 동시성 프로파일¶
연결 처리¶
Xylolabs API 서버는 Axum 기반 Tokio 비동기 런타임으로 구축되었다:
| 매개변수 | 값 | 참고 |
|---|---|---|
| 런타임 | Tokio 멀티스레드 | 워커 스레드 = CPU 코어 수 |
| DB 풀 | 20개 연결 (설정 가능) | DATABASE_MAX_CONNECTIONS 환경 변수 |
| 요청당 메모리 | ~1-2 KB (메타데이터) | 업로드 본문 제외 |
| 업로드 본문 제한 | 최대 2 GB | 전체 파일 버퍼링 (수정 예정) |
| SSE 연결 | 무제한 | 세션별 브로드캐스트 채널 |
| HTTP keep-alive | 75초 | Axum 기본값 |
수집 파이프라인 처리량¶
| 단계 | 지연 시간 | 참고 |
|---|---|---|
| XMBP 디코딩 | <100 us/2kHz 배치 | x86-64 서버에서 벤치마크 |
| XAP 프레임 디코딩 | ~5 us/프레임 | XAP 디코더 (서버 측, 제약 없음) |
| zstd 압축 | ~200 us/청크 | spawn_blocking으로 오프로드 |
| S3 쓰기 | ~5-20 ms/청크 | 네트워크 의존, MinIO 로컬 ~2 ms |
| DB 삽입 | ~1-2 ms/레코드 | 플러시 윈도우 내 배치 처리 |
| 플러시 윈도우 | 10초 (설정 가능) | 쓰기 전 샘플 축적 |
동시 세션 용량¶
| 시나리오 | 세션 수 | 오디오 스트림 | 센서 스트림 | 서버 CPU | DB 부하 |
|---|---|---|---|---|---|
| 경량 | 10 | 10 x 2ch @16kHz | 40 @100Hz | <5% | 낮음 |
| 표준 | 50 | 50 x 4ch @48kHz | 200 @100Hz | ~20% | 중간 |
| 고부하 | 100 | 100 x 4ch @96kHz | 2600 @100Hz | ~60% | 높음 |
| 한계 | ~200 | DB 풀 제한 | DB 풀 제한 | ~90% | 포화 |
식별된 병목 (성능 리뷰)¶
| 문제 | 심각도 | 상태 | 수정 |
|---|---|---|---|
list_uploads의 N+1 태그 쿼리 |
P1 | 수정 완료 | 단일 JOIN 쿼리로 배치 조회 |
stats_overview의 순차 쿼리 |
P2 | 수정 완료 | tokio::try_join! 병렬 실행 |
| S3 업로드 시 전체 파일 버퍼링 | P1 | 미완료 | 스트리밍 멀티파트 업로드 |
ConfigManager 블로킹 RwLock |
P2 | 수정 완료 | tokio::sync::RwLock으로 전환 |
| 업로드 본문 메모리 버퍼링 | P1 | 미완료 | 백프레셔 기반 스트리밍 본문 |
| 연결 속도 제한 없음 | P3 | 미완료 | Tower 속도 제한 미들웨어 |
5. 번인 테스트 결과¶
네이티브 플랫폼 (Apple M4)¶
네이티브 Rust 컴파일로 Apple M4에서 측정 (크로스 컴파일 아님):
| 지표 | 값 | 참고 |
|---|---|---|
| XAP 인코딩 (프레임당) | 평균 = 9 us | 10 ms 프레임 예산 -> 0.09% 사용률 |
| 클라이언트 tick (전체 주기) | 평균 = 56 us | XMBP 인코딩 + 버퍼 관리 포함 |
| MCU 여유율 | 99.3% | 알고리즘 효율성 검증 |
| 메모리 (최대 RSS) | ~2 MB | SDK 클라이언트 + 테스트 하네스 |
| 드롭된 프레임 | 0 | 모든 시나리오에서 |
번인 시나리오¶
| 시나리오 | 지속 시간 | 오디오 구성 | 센서 | 장치 수 | 결과 |
|---|---|---|---|---|---|
| standard | 60초 | 4ch @16kHz | 4 @100Hz | 1 | 통과 |
| stress | 120초 | 4ch @96kHz | 26 @100Hz | 1 | 통과 |
| endurance | 120초+ | 2ch @16kHz | 4 @10Hz | 1 | 통과 |
| multi-device | 60초 | 4ch @16kHz | 4 @100Hz | 10 | 통과 |
QEMU ARM 쓰로틀링¶
150 MHz Cortex-M33을 근사하기 위해 CPU 쓰로틀링이 적용된 ARM QEMU로 RP2350 성능을 시뮬레이션:
| 지표 | 값 | 참고 |
|---|---|---|
| XAP 인코딩 (프레임당) | 평균 = ~650 us | 10 ms 예산의 ~6.5% |
| 클라이언트 tick (전체 주기) | 평균 = ~3.8 ms | 10 ms 예산의 ~38% |
| 추정 MCU 여유율 | ~62% | 보수적 (QEMU 오버헤드 포함) |
QEMU 결과는 2절의 CPU 예산 분석 (RP2350 기준 ~46%, DSP 적용 ~39%)과 일치한다.
6. CMSIS-DSP 통합¶
SDK는 XYLOLABS_USE_CMSIS_DSP=1 설정 시 Cortex-M 타겟에서 CMSIS-DSP를 자동으로 링크한다.
주요 최적화 함수¶
| CMSIS-DSP 함수 | 용도 | C 대비 속도 향상 |
|---|---|---|
arm_rfft_fast_f32 |
MDCT / 스펙트럼 분석 | 3-5배 |
arm_fir_f32 / arm_fir_q15 |
FIR 다운샘플링 필터 | 2-4배 |
arm_dot_prod_f32 |
양자화 내적 연산 | 2-3배 |
arm_scale_f32 |
게인 정규화 | 2배 |
arm_fill_f32 / arm_copy_f32 |
버퍼 관리 | 1.5-2배 |
인코더 경로 선택¶
| 코어 | FPU | 권장 경로 | 근거 |
|---|---|---|---|
| Cortex-M33 (RP2350) | 예 (단정밀도) | 고정소수점 (q15) |
DSP SIMD 명령어(SMLAD)가 16비트 고정소수점에 최적화 |
| Cortex-M4F (F411) | 예 (단정밀도) | 부동소수점 (f32) |
FPU로 부동소수점 경로가 고정소수점보다 빠름 |
| Cortex-M4F (nRF52840) | 예 (단정밀도) | 부동소수점 (f32) |
F411과 동일 |
| Cortex-M33 (nRF9160) | 예 (단정밀도) | 고정소수점 (q15) |
RP2350과 동일 |
| Xtensa LX7 (ESP32-S3) | 예 (단정밀도) | PIE 기반 부동소수점 | f32 벡터에 PIE SIMD 적용 |
| Cortex-M0+ (RP2040) | 없음 | N/A (XAP 불가) | DSP 없음, FPU 없음 |
| Cortex-M3 (F103) | 없음 | N/A (XAP 불가) | DSP 없음, FPU 없음 |
| RISC-V (ESP32-C3) | 없음 | N/A (XAP 불가) | M 확장만 (곱셈) |
7. 타겟별 DSP 기능 활성화 방법¶
Rust SDK (Cargo 피처 플래그)¶
Rust SDK (crates/xylolabs-sdk/)는 두 가지 DSP 피처 플래그를 지원한다:
| 피처 | 타겟 | 효과 |
|---|---|---|
cmsis-dsp |
Cortex-M33 (RP2350, nRF9160), Cortex-M4F (STM32F411, nRF52840, STM32WB55) | CMSIS-DSP 최적화 MDCT 및 FIR 경로 활성화 |
esp32-simd |
ESP32-S3 (Xtensa LX7) | PIE SIMD 최적화 MDCT 경로 활성화 |
타겟별 Cargo.toml 예시:
# RP2350 / nRF9160 (Cortex-M33)
xylolabs-sdk = { path = "../../crates/xylolabs-sdk", features = ["xap", "cmsis-dsp"] }
# STM32F411 / nRF52840 / STM32WB55 (Cortex-M4F)
xylolabs-sdk = { path = "../../crates/xylolabs-sdk", features = ["xap", "cmsis-dsp"] }
# ESP32-S3 (PIE 포함 Xtensa LX7)
xylolabs-sdk = { path = "../../crates/xylolabs-sdk", features = ["xap", "esp32-simd"] }
# STM32F103 / ESP32-C3 (DSP 없음 -- ADPCM만)
xylolabs-sdk = { path = "../../crates/xylolabs-sdk", default-features = false, features = ["adpcm"] }
C SDK (빌드 정의)¶
C SDK는 config.h의 컴파일 타임 정의를 사용하며 컴파일러 플래그에서 자동 감지한다:
| 정의 | 타겟 | 자동 감지 조건 |
|---|---|---|
XYLOLABS_USE_CMSIS_DSP=1 |
Cortex-M33, Cortex-M4F | __ARM_FEATURE_DSP 정의됨 |
XYLOLABS_USE_ESP32S3_SIMD=1 |
ESP32-S3 | __XTENSA__ + CONFIG_IDF_TARGET_ESP32S3 |
자동 감지가 불충분한 경우 CMake로 명시적으로 오버라이드한다:
# CMake -- CMSIS-DSP 강제 활성화
target_compile_definitions(my_firmware PRIVATE XYLOLABS_USE_CMSIS_DSP=1)
# CMake -- ESP32-S3 SIMD 강제 활성화
target_compile_definitions(my_firmware PRIVATE XYLOLABS_USE_ESP32S3_SIMD=1)
요약: 타겟별 플래그¶
| 타겟 | Rust 피처 | C 정의 | 예상 속도 향상 |
|---|---|---|---|
| RP2350 (Cortex-M33) | cmsis-dsp |
XYLOLABS_USE_CMSIS_DSP=1 |
~30% |
| STM32F411 (Cortex-M4F) | cmsis-dsp |
XYLOLABS_USE_CMSIS_DSP=1 |
~40% |
| nRF52840 (Cortex-M4F) | cmsis-dsp |
XYLOLABS_USE_CMSIS_DSP=1 |
~30-40% |
| nRF9160 (Cortex-M33) | cmsis-dsp |
XYLOLABS_USE_CMSIS_DSP=1 |
~30% |
| STM32WB55 (Cortex-M4F) | cmsis-dsp |
XYLOLABS_USE_CMSIS_DSP=1 |
~40% |
| ESP32-S3 (Xtensa LX7) | esp32-simd |
XYLOLABS_USE_ESP32S3_SIMD=1 |
~60% |
| STM32F103 / RP2040 / ESP32-C3 | 해당 없음 | 해당 없음 | DSP 없음 |
8. 권장사항¶
사용 사례별 플랫폼 선택¶
| 사용 사례 | 권장 플랫폼 | 코덱 | 근거 |
|---|---|---|---|
| 4ch @96kHz 풀 스펙트럼 | RP2350, ESP32-S3 | XAP | 충분한 연산 + 대역폭을 갖춘 유일한 플랫폼 |
| 4ch @48kHz 표준 | STM32F411, RP2350, ESP32-S3 | XAP | F411 DSP 적용 시 40% CPU |
| 2ch @48kHz 소형 | nRF52840 | XAP | BLE 전송, DSP 적용 시 42% CPU |
| 센서 전용 (오디오 없음) | 모든 플랫폼 | N/A | XMBP 메타데이터만 |
| 음성/ADPCM 폴백 | STM32F103, ESP32-C3 | IMA-ADPCM | FPU/DSP 불필요 |
DSP 최적화 체크리스트¶
- Cortex-M 타겟에서 항상 CMSIS-DSP를 활성화한다 (
XYLOLABS_USE_CMSIS_DSP=1). 코드 변경 없이 드롭인 교체 가능하다. - Cortex-M4F에서 XAP 부동소수점 경로를 사용한다 (STM32F411, nRF52840). FPU가 부동소수점을 고정소수점보다 빠르게 만든다.
- Cortex-M33에서 XAP 고정소수점 경로를 사용한다 (RP2350, nRF9160). DSP SIMD 명령어가 16비트 연산에 최적화되어 있다.
- ESP32-S3 빌드에서 PIE 인트린식을 활성화한다. 자동 벡터화도 도움이 되지만, XAP 핫 패스의 명시적 PIE 인트린식으로 20-30% 추가 성능 향상을 얻을 수 있다.
- 96kHz 4ch의 경우: RP2350, ESP32-S3, STM32F411(48kHz에서)만 충분한 연산 능력을 갖추고 있다.
- Cortex-M3 및 Cortex-M0+: ADPCM만 가능하다. XAP 인코더 상태(4ch 32 KB)가 STM32F103의 가용 SRAM(20 KB)을 초과한다.
- ESP32-C3 (RISC-V): 센서 전용 또는 ADPCM 폴백이다. M 확장은 곱셈만 제공하며 SIMD나 DSP 가속이 없다.
전력 대 성능 트레이드오프¶
| 플랫폼 | 활성 전력 | 슬립 모드 | 적합한 용도 |
|---|---|---|---|
| RP2350 | ~25 mA @150MHz | ~1.3 mA (dormant) | 배터리 구동 현장 센서 |
| ESP32-S3 | ~80 mA @240MHz (WiFi) | ~10 uA (deep sleep) | 상시 전원, WiFi 가용 |
| STM32F411 | ~30 mA @100MHz | ~2.4 uA (standby) | 산업용, 저전력 |
| nRF52840 | ~5 mA @64MHz | ~1.5 uA (system off) | BLE 웨어러블 / 비콘 |
| STM32F103 | ~25 mA @72MHz | ~3.6 uA (standby) | 레거시 센서 노드 |
9. 관련 문서¶
- 코덱 분석 -- 5개 MCU 플랫폼에서 16개 오디오 코덱 비교
- RP2350 타당성 분석 -- 4ch 96kHz 아키텍처, CPU/메모리 예산
- Pico 2 플랫폼 가이드 -- RP2350 하드웨어 설정 및 빌드
- STM32 플랫폼 가이드 -- F103/F411/WB55/WBA55 설정
- ESP32 플랫폼 가이드 -- S3/C3 WiFi, ESP-IDF 통합
- SDK 개요 -- Rust 기반 임베디드 SDK 아키텍처