UF2 (USB Flashing Format) 은 마이크로컨트롤러용 펌웨어 파일 포맷으로,
특히 MicroPython / CircuitPython / Raspberry Pi Pico / Adafruit 보드 등에서 펌웨어 업로드를 간단하게 하기 위해 만들어진 형식입니다.
🧩 핵심 요약
항목내용
| 정식 명칭 | USB Flashing Format (UF2) |
| 만든 곳 | Microsoft MakeCode 팀 |
| 목적 | 펌웨어를 마치 “USB 드라이브에 파일 복사하듯” 업로드할 수 있게 함 |
| 확장자 | .uf2 |
| 대상 칩 | RP2040 (Raspberry Pi Pico), nRF52 시리즈, SAMD21, STM32 등 |
| 전송 방식 | USB MSC (Mass Storage Class) — 즉, 보드가 “USB 드라이브”로 인식됨 |
⚙️ 동작 원리
- MCU 보드를 부트로더 모드로 진입시킵니다.
- 예: Raspberry Pi Pico에서 BOOTSEL 버튼 누른 채 연결.
- PC에서 보드가 USB 드라이브(MICROBIT, RPI-RP2 등) 로 나타납니다.
- 해당 드라이브에 .uf2 파일을 그냥 복사(Drag & Drop) 합니다.
- 복사가 완료되면 보드가 자동으로 재부팅 + 플래시 프로그래밍 수행.
- 이후 새 펌웨어가 실행됩니다.
📦 UF2 파일 내부 구조
UF2는 일반 바이너리(.bin, .hex)를 그대로 담는 게 아니라,
“512바이트 단위의 블록 구조 + 메타데이터” 를 추가한 포맷입니다.
필드설명
| Magic Number | 파일 식별자 |
| Target Address | MCU 플래시 메모리에 쓸 주소 |
| Payload | 실제 펌웨어 데이터 (최대 476B) |
| Flags / Family ID | MCU 종류 식별 (예: RP2040, nRF52840 등) |
이 덕분에:
- 복사 중 일부 블록이 빠져도 안정적으로 업로드됨
- MCU가 어떤 파일이 자기용인지 판별 가능
💡 비교
포맷특징
| .bin | 순수 머신 코드, 주소 정보 없음 |
| .hex | 인텔 HEX 형식, 텍스트 기반 |
| .uf2 | 블록 기반, USB 복사로 손쉽게 업로드 가능 |
'하드웨어 > 상식' 카테고리의 다른 글
| RabbitMQ (0) | 2025.10.15 |
|---|---|
| MQTT(Message Queuing Telemetry Transport) (0) | 2025.10.15 |
| Oscillator(발진기) 설명 및 신호 측정 (0) | 2025.10.04 |
| LoRa(Long Range) : 저전력 광역 통신망(LPWAN) (0) | 2025.09.30 |
| CAN(Controller Area Network) (0) | 2025.09.30 |