지원 보드 참조
Pico, Arduino Uno/Uno Q, Nucleo, ESP32, RPi GPIO, Aardvark의 VID/PID, 메모리 맵, 기능 플래그 참조.
이 페이지는 Revka가 인식하는 모든 보드에 대한 참조 문서입니다. USB VID/PID, 할당되는 별칭 접두사, LED 핀, 칩 및 메모리 맵, 그리고 사용에 필요한 Cargo 기능 플래그를 설명합니다. 메모리 읽기에 정확한 주소가 필요하거나, 보드를 연결하기 전에 지원 여부를 확인하거나, 장치가 자동으로 검색되지 않는 원인을 디버깅할 때 이 페이지를 참조하십시오.
처음 설정(자동 검색, 별칭, [hardware] / [peripherals] 설정)은 하드웨어 빠른 시작을 참조하십시오. 펌웨어 플래싱은 펌웨어 플래싱을, GPIO 도구는 GPIO 도구를 참조하십시오.
지원 보드 한눈에 보기
섹션 제목: “지원 보드 한눈에 보기”| 보드 이름 | 패밀리 VID | LED 핀 | 칩 / 아키텍처 | 전송 방식 | 필요 기능 플래그 |
|---|---|---|---|---|---|
raspberry-pi-pico | 0x2E8A | 25 | RP2040, ARM Cortex-M0+ (MicroPython) | 시리얼 (USB) | hardware |
arduino-uno | 0x2341 | 13 | ATmega328P, 8-bit AVR | 시리얼 (USB) | hardware |
arduino-uno-q | 0x2341 | 13 | STM32U585 + Linux (aarch64) | 브리지 (TCP 9999) | hardware |
nucleo-f401re | 0x0483 | 13 (PA5) | STM32F401RET6, ARM Cortex-M4 | 시리얼 (USB) | hardware (실시간 정보에는 + probe) |
nucleo-f411re | 0x0483 | 13 (PA5) | STM32F411RET6, ARM Cortex-M4 | 시리얼 (USB) | hardware (실시간 정보에는 + probe) |
arduino-mega | 0x2341 | 13 | ATmega2560, 8-bit AVR | 시리얼 (USB) | hardware |
esp32 | 0x10C4 / 0x1A86 | 2 | Xtensa LX6, 듀얼 코어 | 시리얼 (USB) | hardware |
rpi-gpio | — (네이티브) | 고정 없음 | Raspberry Pi, ARM Linux | 네이티브 (rppal / sysfs) | hardware + peripheral-rpi |
| Aardvark 어댑터 | 0x2B76 | — | Total Phase I2C/SPI/GPIO | USB (libloading) | hardware |
위 LED 핀 번호는 에이전트가 gpio_write / gpio_read에서 사용하는 Revka 프로토콜 핀 번호입니다. Nucleo에서 핀 13은 PA5(LD2 사용자 LED)에 매핑되고, Raspberry Pi의 온보드 ACT LED는 모델에 따라 다릅니다(Raspberry Pi GPIO 참조).
VID/PID 레지스트리
섹션 제목: “VID/PID 레지스트리”Revka는 두 가지 방식으로 보드를 식별합니다. 패밀리 수준에서는 USB Vendor ID로 보드 종류를 구분하고 별칭 접두사를 선택합니다. 정확한 수준에서는 VID/PID 쌍으로 특정 보드 이름과 아키텍처 문자열을 매핑하며, revka hardware discover와 revka hardware introspect에서 사용됩니다.
Vendor ID (보드 패밀리 → 별칭 접두사)
섹션 제목: “Vendor ID (보드 패밀리 → 별칭 접두사)”| VID | 보드 패밀리 | 별칭 접두사 |
|---|---|---|
0x2E8A | Raspberry Pi Pico / Pico W | pico |
0x2341 | Arduino (Uno, Mega, Uno Q) | arduino |
0x10C4 | CP2102 브리지 경유 ESP32 | esp |
0x0483 | STMicroelectronics (Nucleo) | nucleo |
0x2B76 | Total Phase Aardvark | aardvark |
별칭은 접두사별로 순차적으로 할당됩니다(pico0, pico1, arduino0, esp0, nucleo0, aardvark0). VID를 인식할 수 없지만 펌웨어 핑 핸드셰이크에 응답하는 보드는 device0(Generic 종류)으로 등록됩니다. 별칭은 데몬 세션 내에서 유지되며 재시작 시 초기화됩니다.
VID/PID 쌍 (정확한 보드 식별)
섹션 제목: “VID/PID 쌍 (정확한 보드 식별)”다음 쌍은 discover와 introspect가 참조하는 보드 레지스트리에서 매핑됩니다.
| VID:PID | 보드 이름 | 아키텍처 |
|---|---|---|
0483:374b | nucleo-f401re | ARM Cortex-M4 |
0483:3748 | nucleo-f411re | ARM Cortex-M4 |
2341:0043 | arduino-uno | AVR ATmega328P |
2341:0078 | arduino-uno | Arduino Uno Q / ATmega328P |
2341:0042 | arduino-mega | AVR ATmega2560 |
10c4:ea60 | cp2102 | USB-UART 브리지 |
10c4:ea70 | cp2102n | USB-UART 브리지 |
1a86:7523 | esp32 | ESP32 (CH340) |
1a86:55d4 | esp32 | ESP32 (CH340) |
보드별 상세 정보
섹션 제목: “보드별 상세 정보”Raspberry Pi Pico
섹션 제목: “Raspberry Pi Pico”UF2 방식으로 플래싱하는 MicroPython 보드입니다. Pico GPIO 및 코드 도구(gpio_write, gpio_read, pico_flash, device_read_code, device_write_code, device_exec)는 hardware 기능이 컴파일될 때 Pico가 연결되어 있지 않아도 항상 로드되며, 장치를 찾을 수 없으면 정상적으로 “no device found”를 반환합니다.
- 온보드 LED: 핀 25.
- 런타임: MicroPython(코드 읽기/쓰기/실행에
mpremote사용;pip install mpremote로 설치). - 플래싱: BOOTSEL을 누른 채 연결하여
RPI-RP2드라이브를 마운트한 후pico_flash(confirm=true)를 호출합니다. 펌웨어 플래싱을 참조하십시오.
Arduino Uno
섹션 제목: “Arduino Uno”arduino-cli로 플래싱하는 8-bit AVR 보드입니다.
Board: arduino-unoChip: ATmega328PArch: 8-bit AVR, 16 MHzMemory: Flash 16 KB · SRAM 2 KB · EEPROM 1 KBLED: pin 13 (also aliased red_led / builtin_led / user_led)디지털 핀 0–13을 사용할 수 있습니다. 핀 0–1은 시리얼 RX/TX와 겸용이므로 시리얼 링크가 사용 중일 때는 피하십시오. Revka 펌웨어는 115200 baud로 동작하며 capabilities, gpio_read, gpio_write를 제공합니다. arduino_upload 도구는 보드 이름이 정확히 arduino-uno로 설정된 경우 추가되며, 에이전트가 스케치를 컴파일하여 업로드할 수 있습니다.
Arduino Uno Q
섹션 제목: “Arduino Uno Q”STM32U585 MCU와 Qualcomm Linux 측(aarch64)이 결합된 이중 구조 보드입니다. GPIO는 시리얼 포트가 아닌 TCP 포트 9999에서 수신 대기하는 Bridge 앱(Python + MCU 소켓 서버)을 통해 접근합니다.
Board: arduino-uno-qChip: STM32U585 + QualcommArch: Dual-core: STM32 (MCU) + Linux (aarch64)GPIO: via Bridge app on port 9999revka peripheral setup-uno-q [--host IP]로 Bridge를 배포한 후 transport = "bridge"로 설정합니다. 표준 gpio_read / gpio_write 도구는 내부적으로 Bridge 소켓(127.0.0.1:9999)을 통해 동작합니다. 에이전트는 동일한 도구 이름을 사용합니다. 연결 타임아웃은 5초, 응답 타임아웃은 3초입니다.
[[peripherals.boards]]board = "arduino-uno-q"transport = "bridge"Nucleo (F401RE / F411RE)
섹션 제목: “Nucleo (F401RE / F411RE)”내장 ST-Link 디버그 프로브가 탑재된 STM32 Cortex-M4 보드로, 외부 하드웨어 없이 USB로 플래싱 및 정보 조회가 가능합니다. 펌웨어(Embassy/Rust)는 USART2를 통해 Revka 시리얼 JSON 프로토콜로 통신합니다.
Chip: STM32F401RET6Arch: ARM Cortex-M4, 84 MHzFlash: 0x0800_0000 - 0x0807_FFFF (512 KB)RAM: 0x2000_0000 - 0x2001_FFFF (128 KB)LED: pin 13 → PA5 (LD2), active highChip: STM32F411RET6Arch: ARM Cortex-M4, 100 MHzFlash: 0x0800_0000 - 0x0807_FFFF (512 KB)RAM: 0x2000_0000 - 0x2001_FFFF (128 KB)LED: pin 13 → PA5 (LD2), active highprobe 기능이 빌드되면 두 보드 모두 probe-rs를 통해 SWD로 실시간 칩 정보, 메모리 맵, 레지스터 값을 반환합니다. 타겟에 펌웨어가 없어도 됩니다. probe 없이는 위의 정적 데이터시트 값을 반환합니다. revka peripheral flash-nucleo로 플래싱하고, 펌웨어 플래싱을 참조하십시오.
ESP32
섹션 제목: “ESP32”USB-UART 브리지를 통해 115200 baud로 통신하는 듀얼 코어 Xtensa LX6 보드입니다.
Board: esp32Chip: ESP32 (Xtensa LX6, 240 MHz, dual-core)Flash: 0x3F40_0000 - 0x3F7F_FFFF (4 MB typical)IRAM: 0x4000_0000 - 0x4005_FFFFDRAM: 0x3FFB_0000 - 0x3FFF_FFFFLED: GPIO 2 (builtin_led / red_led)GPIO 2는 많은 개발 보드의 내장 LED이며, GPIO 21/20은 흔히 UART0 TX/RX로 사용됩니다. 시리얼이 활성 상태일 때는 이 핀을 피하십시오. Revka는 Pico 및 Arduino와 동일한 시리얼 JSON gpio_read / gpio_write 프로토콜로 ESP32를 구동합니다.
Raspberry Pi GPIO
섹션 제목: “Raspberry Pi GPIO”Revka가 Raspberry Pi에서 네이티브로 실행될 때(Linux) 시리얼 링크 대신 GPIO를 직접 제어합니다. peripheral-rpi 기능이 활성화된 상태에서 /proc/device-tree/model이 Pi로 식별되면 자동으로 등록됩니다. 별도 설정 항목이 필요하지 않습니다.
Board: rpi-gpioChip: Raspberry Pi (ARM Linux)GPIO: native via rppal (/dev/gpiomem); onboard LED via sysfsPins: BCM numbering throughout시리얼 gpio_write 대신 네이티브 도구인 gpio_rpi_write, gpio_rpi_read, gpio_rpi_blink를 사용하십시오. 온보드 ACT LED GPIO 번호는 모델에 따라 다릅니다.
| 모델 | ACT LED (BCM GPIO) |
|---|---|
| RPi 3B / 3B+ | 47 |
| RPi 4B | 42 |
| RPi 5 | 9 |
| Zero 2W | 29 |
필요한 경우 revka peripheral add rpi-gpio native로 수동 등록하십시오. Raspberry Pi (자체 호스팅)와 GPIO 도구를 참조하십시오.
Aardvark I2C/SPI/GPIO 어댑터
섹션 제목: “Aardvark I2C/SPI/GPIO 어댑터”Total Phase Aardvark는 I2C, SPI, 8핀 GPIO를 위한 USB 호스트 어댑터입니다(VID 0x2B76). 해당 도구(i2c_scan, i2c_read, i2c_write, spi_transfer, gpio_aardvark, datasheet 헬퍼 포함)는 시작 시 어댑터가 감지된 경우에만 등록됩니다. aardvark.so 라이브러리를 통해 동적으로 접근합니다. 전체 도구 목록과 라이브러리 설정은 Aardvark I2C/SPI/GPIO 및 데이터시트를 참조하십시오.
보드 기능(Capabilities)
섹션 제목: “보드 기능(Capabilities)”등록된 각 장치는 도구가 동작 전에 확인하는 기능 집합을 가집니다. 필드는 gpio, i2c, spi, swd, uart, adc, pwm입니다. 시리얼 보드의 경우 hardware_capabilities 도구(시리얼 보드가 설정된 경우에만 등록)로 펌웨어가 노출하는 핀을 확인할 수 있습니다.
arduino0: gpio [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], led_pin 13hardware_capabilities는 특정 보드를 지정하는 선택적 board 인수를 받습니다. 생략하면 전체를 조회합니다. 펌웨어는 시리얼 JSON 핸들러에 capabilities 명령을 구현해야 합니다. 이것이 에이전트가 gpio_write 호출 전에 사용 가능한 핀을 확인하는 신뢰할 수 있는 방법입니다.
보드 정보 조회 도구
섹션 제목: “보드 정보 조회 도구”다음 네 가지 LLM 호출 가능 도구는 “어떤 보드인가?”, “메모리 맵은 어떻게 되는가?”에 답합니다. 정적 데이터시트 데이터를 읽으며, probe 기능이 있는 Nucleo의 경우 SWD를 통해 실시간 데이터도 반환합니다. 모두 [peripherals] 설정이 필요하며, 설정이 없으면 보드 추가를 안내하는 오류를 반환합니다.
hardware_board_info
섹션 제목: “hardware_board_info”설정된 보드의 칩 이름, 아키텍처, 메모리 맵을 반환합니다.
- 파라미터:
board(문자열, 선택) — 보드 이름. 기본값은 첫 번째 설정된 보드. - 커버리지 (정적):
nucleo-f401re,nucleo-f411re,arduino-uno,arduino-uno-q,esp32,rpi-gpio. probe사용 시: Nucleo 보드는 USB/SWD를 통해 실시간 칩 정보를 반환합니다(타겟에 펌웨어 불필요).
**Board:** nucleo-f401re**Chip:** STM32F401RET6**Description:** ARM Cortex-M4, 84 MHz. Flash: 512 KB, RAM: 128 KB. User LED on PA5 (pin 13).
**Memory map:**Flash: 0x0800_0000 - 0x0807_FFFF (512 KB)RAM: 0x2000_0000 - 0x2001_FFFF (128 KB)hardware_memory_map
섹션 제목: “hardware_memory_map”설정된 보드의 플래시 및 RAM 주소 범위만 반환합니다.
- 파라미터:
board(문자열, 선택) — 기본값은 첫 번째 설정된 보드. - 커버리지 (정적):
nucleo-f401re,nucleo-f411re,arduino-uno,arduino-mega,esp32. probe사용 시: Nucleo 맵은 probe-rs에서 실시간으로 읽습니다. 요청한 보드를 찾을 수 없으면 알려진 보드 이름 목록을 반환합니다.
**nucleo-f401re** (from datasheet):Flash: 0x0800_0000 - 0x0807_FFFF (512 KB)RAM: 0x2000_0000 - 0x2001_FFFF (128 KB)STM32F401RET6, ARM Cortex-M4hardware_memory_read
섹션 제목: “hardware_memory_read”USB/SWD를 통해 Nucleo의 실제 메모리/레지스터 값을 읽어 16진수 덤프로 반환합니다. probe 기능이 필요하며, 없으면 빌드 방법을 안내합니다.
- 파라미터:
address(문자열, 기본값"0x20000000") — 16진수 주소.0x20000000은 Nucleo RAM 베이스 주소입니다.length(정수, 기본값 128, 최대 256) — 읽을 바이트 수.board(문자열, 선택) —nucleo-f401re또는nucleo-f411re만 지원.
- 필요 조건:
cargo build --features hardware,probe빌드 및 USB에 Nucleo 연결. 타겟에 펌웨어 불필요.
Memory read from 0x20000000 (128 bytes):
0x20000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x20000010 01 00 00 00 ff ff ff ff 00 10 00 20 00 00 00 00 ........... ....하드웨어 CLI: introspect & info
섹션 제목: “하드웨어 CLI: introspect & info”에이전트 없이 보드 정보를 확인하는 두 가지 CLI 명령입니다. 모두 hardware 기능이 필요하며 Linux, macOS, Windows에서 동작합니다.
revka hardware introspect
섹션 제목: “revka hardware introspect”장치 경로의 USB 상세 정보를 읽고 보드 레지스트리와 대조하여 보드 이름과 아키텍처를 식별합니다.
revka hardware introspect /dev/ttyACM0Device at /dev/ttyACM0:
VID:PID 0483:374b Board nucleo-f401re Architecture ARM Cortex-M4 Memory map 512 KB Flash, 128 KB RAM| 인수 | 타입 | 설명 |
|---|---|---|
path | 문자열 (필수) | 정보를 조회할 장치 경로 (예: /dev/ttyACM0) |
revka hardware info
섹션 제목: “revka hardware info”probe-rs를 사용하여 USB/SWD로 Nucleo의 칩 정보를 읽습니다. 타겟에 펌웨어가 없어도 됩니다.
cargo build --features hardware,proberevka hardware info --chip nucleo-f401reConnecting to nucleo-f401re via USB (ST-Link)...
Chip: STM32F401RETxArchitecture: Armv7em
Memory map: RAM: 0x20000000 - 0x2001FFFF (128 KB) Flash: 0x08000000 - 0x0807FFFF (512 KB)
Info read via USB (SWD) — no firmware on target needed.| 플래그 | 타입 | 설명 |
|---|---|---|
--chip | 문자열 | 칩 타겟 식별자 (예: nucleo-f401re) |
probe 기능이 없으면 info는 연결 시도 대신 빌드 방법을 출력합니다. 장치 검색 명령(revka hardware discover)과 보드별 플래싱 명령은 하드웨어 빠른 시작과 revka hardware & peripheral을 참조하십시오.
보드 및 데이터시트
섹션 제목: “보드 및 데이터시트”Revka는 위 보드들에 대한 정적 데이터시트 노트(핀 별칭, GPIO 사용법, 시리얼 프로토콜)를 기본 제공합니다. 이 노트는 정보 조회 도구의 기반이 되며, ~/.revka/hardware/ 아래에 파일을 추가하여 확장할 수 있습니다.
~/.revka/hardware/HARDWARE.md— 시스템 프롬프트에 삽입되는 전역 하드웨어 노트.~/.revka/hardware/devices/<alias>.md— 장치별 프로파일 (예:pico0.md).~/.revka/hardware/datasheets/<device>.pdf—datasheet도구가 가져오는 부품 데이터시트.
datasheet 도구(Aardvark 연결 시 사용 가능)의 워크플로우: i2c_scan으로 장치 식별 → 데이터시트 검색 및 다운로드 → 주요 레지스터와 함께 장치 프로파일 저장. Aardvark I2C/SPI/GPIO 및 데이터시트를 참조하십시오.
기능 플래그
섹션 제목: “기능 플래그”보드 지원은 Cargo 기능 플래그로 분리되어 있습니다. 배포 환경에 필요한 것만 빌드하십시오.
| 기능 플래그 | 활성화 내용 | 빌드 명령 |
|---|---|---|
hardware | USB 검색, 시리얼 GPIO 도구, Pico/Arduino/ESP32/Nucleo 지원, 보드 정보 도구, Aardvark | cargo build --release --features hardware |
probe | Nucleo 실시간 칩 정보, 메모리 맵, probe-rs를 통한 hardware_memory_read (SWD) | cargo build --release --features hardware,probe |
peripheral-rpi | Raspberry Pi 네이티브 GPIO 도구(gpio_rpi_write / gpio_rpi_read / gpio_rpi_blink), rpi_system_info, RPi 자동 검색 | cargo build --release --features hardware,peripheral-rpi |
데이터시트 텍스트 추출용 rag-pdf와 Robot Kit용 safety를 포함한 전체 플래그 매트릭스는 Cargo 기능 플래그 및 ADR을 참조하십시오.