User Tools

Site Tools


blog:why_arduino_nano_every_uploads_more_slowly_than_the_classic_nano

Why Arduino Nano Every Uploads More Slowly than the Classic Nano

왜 아두이노 나노 에브리의 업로드 속도는 아두이노 나노(클래식)보다 느려 보이는가?

Arduino Nano Every는 외형은 기존 Arduino Nano(ATmega328P)와 같지만, 내부적으로는 ATmega4809 (megaAVR) MCU를 사용한다. 이로 인해 업로드 속도가 느려 보이는 주요 원인은 다음과 같다.


1. 업로드 프로토콜 차이

  • 기존 Nano (ATmega328P)
    1. 'avrdude'가 UART 부트로더(Optiboot)를 통해 빠르게 업로드
    2. 전송속도: 약 115200bps
  • Nano Every (ATmega4809)
    1. megaAVR 부트로더 사용
    2. 내부적으로 UPDI (Unified Program and Debug Interface) 기반 프로토콜
    3. 전송속도: 약 57600bps로 제한

즉, 프로그래머가 더 안정적으로 동작하도록 전송 속도를 낮추고 검증 절차를 추가했기 때문에 느려진다.


2. 부트로더 검증 절차 강화

Nano Every의 부트로더는 다음 과정을 수행한다.

  • 플래시 메모리의 CRC 검증
  • Fuse bit 설정 확인
  • 시리얼 재접속 및 초기화 지연

이로 인해 코드 전송 후 약 1~2초의 검증 및 재부팅 대기 시간이 추가된다.


3. USB 인터페이스 초기화 지연

Nano Every는 USB-to-Serial 브리지를 ATSAMD11 칩으로 구현했다. 이 칩은 전원이 인가될 때마다 USB 장치를 다시 인식(enumeration)하므로, 업로드 직전/직후에 포트가 사라졌다가 다시 나타나는 지연이 생긴다.

Arduino IDE 로그에서는 다음과 같은 흐름을 확인할 수 있다.

Port busy...
Port found
Uploading...

이 과정이 실제 전송 전후의 대기 시간을 유발한다.


4. 더 큰 플래시 메모리

  • ATmega328P : 32KB
  • ATmega4809 : 48KB

부트로더가 128바이트 단위 페이지를 검증 및 쓰기하기 때문에 같은 스케치라도 검증 시간이 더 길어진다.


5. 업로드 속도 설정 (avrdude 파라미터 차이)

Arduino IDE 내부 설정(`platform.txt`)의 업로드 속도는 다음과 같이 다르다.

# Nano Every (megaAVR)
tools.avrdude.upload.params.speed=57600

# Classic Nano
tools.avrdude.upload.params.speed=115200

이 차이만으로도 약 2배의 시간 차이가 발생한다.


✅ 업로드 속도 개선 팁

  • 1. 'Sketch → Upload Using Programmer'를 사용하면 훨씬 빠르다. (ISP 프로그래머 필요)
  • 2. `upload.speed`를 115200으로 높여볼 수 있으나, 안정성 저하 가능성 있음
  • 3. 업로드 후 자동 리셋 지연이 불편하다면 수동 리셋으로 재부팅 시간을 단축

요약

Nano Every는 구조적으로 더 안전하고 현대적인 프로그래밍 절차를 채택했기 때문에 업로드가 느리게 느껴진다.
(저속 전송 + 부트로더 검증 + USB 재초기화 + 대용량 플래시 검증 때문)

참고: 실제 업로드 로그의 타임스탬프를 분석하면, 어느 구간에서 지연이 발생하는지 명확히 확인할 수 있다.


저자 및 이용 안내

이 문서는 정해영의 아이디어와 지시에 따라 AI 도구(ChatGPT)의 도움을 받아 작성되었습니다.

본 문서는 Creative Commons CC0 1.0 Universal Public Domain Dedication에 따라 누구나 자유롭게 복제, 수정, 배포, 활용할 수 있으며, 출처 표시도 필요하지 않습니다. 다만, 내용의 정확성은 보장되지 않았으며, 정해영은 본 문서의 내용에 대해 어떠한 법적 책임도 지지 않습니다.

Authorship and Usage Notice

This document was written with the assistance of an AI tool (ChatGPT), based on the ideas and direction provided by Haeyoung Jeong.

It is released under the Creative Commons CC0 1.0 Universal Public Domain Dedication. Anyone may freely copy, modify, distribute, and use the content, with no requirement for attribution. However, the accuracy of the content is not guaranteed, and Haeyoung Jeong assumes no legal responsibility for its use.

blog/why_arduino_nano_every_uploads_more_slowly_than_the_classic_nano.txt · Last modified: by hyjeong