본문 바로가기
컴퓨터/모바일, 소형장비

아두이노 레오나르도 보드를 사용하여 부트로더 굽기

by 깁갑수 2023. 7. 12.
목차

 제가 사용하던 아두이노 레오나르도 (Arduino leonardo) 보드가 갑자기 죽어버리는 불상사가 발생하여 온갖 포털사이트를 뒤져가며 찾아보니 아무래도 부트로더에 문제가 생긴 것으로 의심되어 셀프로 살리는 방법을 수소문하였으나 아두이노 우노로 우노 부트로더 굽기, 우노로 레오나르도 부트로더 굽기, 레오나르도로 우노 부트로더 굽기 등... 레오나르도를 이용하여 레오나르도 보드를 굽는 방법은 찾지 못하고 결국 열심히 공부하여 아두이노 레오나르도를 살려본 경험담을 포스팅해 봅니다. 열심히 공부해 보고 나니 하드웨어 전문가들에겐 별것 아닌 일이었겠구나.. 싶겠더라고요 🥲

 

제가 경험한 증상은 아래 증상에서 설명하는 내용과 같았습니다. 그리고 부트로더를 새로 구워줌으로써 해결을 했고요.

같은 증상으로 이번 포스팅을 찾아오셨다면 부트로더를 업로드 하여 해결하실 수 있을 것 같아요.

     

1. 증상

아두이노 레오나르도에 업로드와 수정을 반복하던 중 업로드 진행 중에 아두이노 헐거워진 USB 포트로 인해 흔들린 케이블로 연결이 끊기면서 업로드가 실패.. 보드의 주황빛 LED가 평소와 다르게 기력이 없는 듯 약한 점멸을 시작합니다.

 * 업로드 중엔 아두이노 연결상태를 꼭 확인하시기 바라요

 

분명히 연결해 둔 아두이노 보드, 아두이노에 전원은 들어와 있지만 IDE 상태창엔  연결되지 않음으로 표시되고 있습니다.

재연결을 하게 되면 잠시동안 연결로 표시되다가 힘없는 점멸과 함께 연결이 끊기는 현상이 확인되어 장치관리자를 확인해 보니 정상 보드(Arduino Leonardo)와 다른 이름(Arduino Leonardo Bootloader)으로 표시가 되고 있습니다.

 

IDE 상태창의 보드 표시와 장치관리자 내 보드 이름 표시

 장치관리자에 표시된 이름을 보니 부트로더 문제의 냄새가 아주 강하게 나고 있었습니다.

 

2. 부트로더 업로드 하기

여태 찾아본 모든 정보드를 짜깁기 하여 이건가...? 싶은 방법으로 시도해 본 것들 중 성공한 1가지를 정리해 보았습니다. 레오나르도 보드에서 레오나르도 보드의 부트로더를 굽는 방법입니다.

 

     

 

2-1. Programmer Board와  Target Board  연결

아두이노 레오나르도에 부트로더를 올려주기 위해서는 PC와 직접 연결해서는 할 수 없고 아두이노를 이용해야 하는데요, 업로드를 위해서는 2개의 보드가 필요합니다. 타깃 보드는 부트로더가 업로드될 보드이며 프로그래머 보드는 업로드를 도와줄 이미 정상기능을 하고 있는 보드이며 먼저 이 두 개의 보드를 연결해야 합니다.

 

레오나르도 보드에 있는 칩에 연결하기 위해서는 우노와 달리 보드 측면(?)에 위치한 ICSP단자를 이용해야 했습니다.

아두이노 레오나르도 ICSP 핀정보

 

 

레오나르도 보드에서 레오나르도 보드로 업로드할 경우에는 아래와 같이 연결하면 됩니다.

* 프로그래머의 D10 핀이 ICSP RST를 제어해 줘야 합니다.

 

Programmer--------Target

ICSP 1 --------------- ICSP 1

ICSP 3 --------------- ICSP 3

ICSP 4 --------------- ICSP 4

D10 ------------------- ICSP RST

+5V ------------------  ICSP VCC

GND ------------------ ICSP GND

 

타겟 보드와 프로그래머 보드 사이의 연결 사진과 그림

 

참고했던 다른 보드들의 연결은 아래와 같이 됩니다. 

더보기

 

우노 to 우노

Programmer--------Target

D12 ------------------- D12

D13 ------------------- D13

D11 ------------------- D11

D10 ------------------- RESET

+5V ------------------  +5V

GND ------------------ GND

 

우노 to 레오나르도

Programmer--------Target

D12 ------------------- ICSP 1

D13 ------------------- ICSP 3

D11 ------------------- ICSP 4

D10 ------------------- ICSP RST

+5V ------------------  ICSP VCC

GND ----------------- ICSP GND

 

레오나르도 to 우노

Programmer--------Target

ICSP 1 --------------- D12

ICSP 3 --------------- D13

ICSP 4 --------------- D11

D10 ------------------- RESET

+5V ------------------  +5V

GND ------------------ GND

2-2. Programmer Board에 ISP 스케치 업로드

배선이 되었다면 살아있는 보드와 PC에 연결해 주고 File - Examples - 11.arduinoISP 에서 ArduinoISP예제를 불러와 보드에 업로드해 줍니다.

ArduinoISP 예제 불러오는 방법

2-3. 부트로더 업로드

프로그래머 보드의 준비 후 부트로더 업로드 전에 아래 내용들을 확인해 주신 뒤 부트로더를 구워주면 됩니다.

 

먼저, Tools - Board에서 타깃 보드를 선택해 줍니다. (Arduino Leonardo)

타겟 보드 설정

다음으로 Port는 현재 연결되어 있는 프로그래머 보드를 선택해 줍니다.

프로그래머 보드 선택

마지막으로 Programmer는 타깃 보드의 칩이름을 찾아 선택해 준 뒤 Burn Bootloader를 눌러주면 부트로더 업로드가 시작됩니다.

(제가 살리려던 레오나르도 보드의 칩은 ATmega32U4입니다.)

업로드할 부트로더 선택

 

 

죽은 보드 한 번쯤 시도해 볼 때, 이미 전문가의 영역일 테지만 부트로더 없이 저렴하게 파는 제품을 사서 업로드할 경우에 이번 포스팅을 참고하시면 좋을 것 같아요! 

"갑수야 반갑수"에는 쿠팡파트너스 등 제휴링크가 포함 되어 있으며 수수료를 제공받을 수 있습니다.