Arduino IDE 빌드 파일을 웹 브라우저에서 ESP32에 플래시하는 방법
Sketch → Export Compiled Binary 클릭 후 빌드 폴더
(build/esp32.esp32.esp32s3/ 등)에 생성되는 파일들입니다.
| 파일명 | 크기 (예시) | 플래시 주소 | 용도 | 사용 여부 |
|---|---|---|---|---|
*.ino.merged.bin |
~16 MB | 0x0000 |
전체 병합 바이너리 (모든 파일 합본) | ✓ 권장 |
*.ino.bootloader.bin |
~20 KB | 0x0000 |
부트로더 | 분리 방식 시 |
*.ino.partitions.bin |
~3 KB | 0x8000 |
파티션 테이블 | 분리 방식 시 |
boot_app0.bin |
~8 KB | 0xe000 |
OTA 부트 선택자 | 분리 방식 시 |
*.ino.bin |
~1 MB | 0x10000 |
애플리케이션 (실제 코드) | 분리 방식 시 |
*.ino.elf |
~15 MB | — | 디버그 심볼 (GDB용) | 불필요 |
*.ino.map |
~17 MB | — | 메모리 맵 (분석용) | 불필요 |
flash_args |
~200 B | — | esptool 플래시 인수 (참고용) | 참고용 |
--flash-mode dio --flash-freq 80m --flash-size 16MB 0x0 bootloader.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 app.bin
모든 파티션이 하나로 합쳐진 *.merged.bin 파일 하나만 업로드합니다.
가장 간단하고 오류 가능성이 낮습니다.
bootloader, partitions, boot_app0, app을 각각 업로드합니다. 파일 크기가 작고 부분 업데이트가 가능합니다.
http://localhost:3100 (Docker와 같은 PC인 경우)
CANFD_Logger.ino.merged.bin (또는 프로젝트명.ino.merged.bin)을 드래그하거나 클릭하여 선택합니다.
단계 1~3(브라우저 준비 → USB 연결 → 시리얼 연결 확인)은 방법 A와 동일합니다. 4단계부터 차이가 있습니다.
boot_app0.bin은 빌드 폴더가 아닌 Arduino ESP32 코어 폴더에 있을 수 있습니다.%LOCALAPPDATA%\Arduino15\packages\esp32\hardware\esp32\버전\tools\partitions\boot_app0.bin
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 포트 연결 버튼이 비활성화 | Firefox/Safari 사용 | Chrome 또는 Edge 89+ 사용 |
| "지원되지 않는 브라우저" 배너 | HTTP + 외부 IP 접속 | Docker와 같은 PC에서 localhost:3100으로 접속 |
| 포트 선택창에 ESP32가 안 보임 | 드라이버 미설치 또는 케이블 불량 | 데이터 전송 가능한 USB 케이블 사용, CP2102/CH340 드라이버 설치 |
| 플래시 후 부팅 안 됨 | Flash 크기 불일치 | Arduino IDE 보드 설정의 Flash Size가 실제 보드와 일치하는지 확인 후 재컴파일 |
| 업로드 실패 (파일 크기 초과) | merged.bin이 32 MB 초과 | 분리 파일 방식 사용 (앱만 ~1 MB) |
| 플래시 중 연결 끊김 | USB 전원 불안정 | 허브 대신 PC 직접 연결, 전원 공급이 충분한 포트 사용 |
| BOOT 버튼 관련 오류 | ROM 부트로더 진입 실패 | BOOT 버튼을 누른 상태로 ESP32 연결 또는 RST 후 BOOT 누르기 |
flash_args 파일에 기록된 플래그는 Arduino IDE가 컴파일 시 설정한 값입니다.
웹 플래셔는 이 값을 바이너리에서 자동으로 읽으므로 별도 입력이 필요 없습니다.
| 플래그 | 값 (예시) | 의미 | 웹 플래셔 입력 필요? |
|---|---|---|---|
--flash-mode |
dio | SPI 플래시 통신 방식 (DIO = Dual I/O) | 불필요 (바이너리 내장) |
--flash-freq |
80m | 플래시 클럭 주파수 (80 MHz) | 불필요 (바이너리 내장) |
--flash-size |
16MB | 플래시 메모리 용량 (실제 보드와 일치해야 함) | 불필요 (바이너리 내장) |
| PSRAM 설정 | 컴파일 옵션 | PSRAM 활성화 여부 (ESP32-S3 4MB/8MB PSRAM) | 불필요 (바이너리 내장) |
| CPU 주파수 | 240 MHz | 프로세서 동작 클럭 | 불필요 (바이너리 내장) |
| 환경 | 지원 | 비고 |
|---|---|---|
| Chrome 89+ | ✓ 지원 | 권장 |
| Edge 89+ | ✓ 지원 | 권장 |
| Firefox | ✗ 미지원 | Web Serial API 없음 |
| Safari | ✗ 미지원 | Web Serial API 없음 |
| http://localhost | ✓ 동작 | 보안 컨텍스트 예외 |
| http://192.168.x.x (IP) | ✗ 미동작 | HTTPS 필요 |
| https://도메인 | ✓ 동작 | SSL 인증서 필요 |