아두이노 - 부트로더 올리기



안녕하세요. 매드 입니다.

아두이노로 작업하다가 실수로 아두이노가 먹통이 되거나 CPU가 죽었을 때 atmega chip만 교체하여 아두이노로 동작시키 위해 아두이노 Bootloader를 올리는 방법에 대해서 설명하려고 합니다.

여러가지 방법이 있지만 가장 간편한 아두이노를 이용하여 부트로더를 올리는 방법에 대해서 설명해 보겠습니다.

우선 아두이노 우노를 이용하여 부트로더를 올리는 방법은 아래와 같습니다.

<출처 : 구글 사진>

생각보다 간단하죠.

Programmer B/D  Target B/D
D13                   D13
D12                   D12
D11                   D11
D10                   RESET
+5V                   +5V
GND                  GND

Uno 끼리 연결하여 부트로더를 올릴 경우에는 위와 같이하면 됩니다.
여기서 중요한것이 D10을 Target 보드 RESET에 연결하는 부분인데요. Uno가 아닌 다른 보드에서도 이 D10과 RESET는 변하지 않습니다.

다음은 단종보드 아두이노 레오나르도를 이용하여 Uno에 부트로더를 올리는 방법입니다.

<출처 : 본인>

Uno가 아닌 보드의 경우 SPI핀에서 연결을 해주어야 합니다.

<출처 : 구글>

아두이노 보드에 따라 핀 정보가 나와 있는데요.

Programmer B/D  Target B/D
ICSP-3                 D13
ICSP-1                 D12
ICSP-4                 D11
D10                    RESET
+5V                   +5V
GND                  GND

위와 같이 연결하면 되겠네요. 중요한 점이 D10과 RESET 입니다. 이부분은 SPI RST가 아닌  D10에서 Target B/D로 연결해 줘야합니다.

하드웨어 연결이 다 끝나면 아두이노 프로그램을 실행합니다.

<출처 : 본인>

툴에 보면 다음과 같은 정보들이 나오게 되는데요.

우선 첫번째는 Target B/D와 동일하게 선정합니다. 새로 부트로더를 넣을 보드가 Uno 이면 위 이미지와 같이 Uno 보드를 선택해야 합니다.

두번째는 Programmer B/D입니다. PC와 연결하는 보드가 Programmer B/D이므로 자동으로 잡히겠죠.

세번째는 ISP Mode를 'Arduino as ISP' 로 설정합니다. 왜냐하면 아두이노를 이용하여 다른 아두이노로 부트로더를 올릴 것이기 때문이죠.

이렇게 3가지 설정이 끝나면 마지막으로 '부트로더 굽기'를 눌러 줍니다.

이렇게하면 10초 이내로 부트로더 올리기가 완료 되었다고 나올 겁니다.
에러가 나거나 올리는 시간이 10초 이상 걸린다면 연결이나 다른 문제가 있는 것이니 다시 하드웨어 연결을 확인해봐야 할 것 같네요.

그럼 즐 아두이노 하세여~ :)

----------------------------------------------------------------------

아두이노 우노를 이용하여 부트로더 굽기를 할 경우 13,12,11 핀으로 동작되지 않습니다.(되시는 분들도 있는듯)

가능하면 제가 올린 이미지 처럼 Programmer 쪽은 ICSP 핀을 사용하여 부트로더 굽기를 하시면 됩니다.

Programmer B/D  Target B/D
ICSP-3                 D13
ICSP-1                 D12
ICSP-4                 D11
D10                    RESET
+5V                   +5V
GND                  GND

< 아두이노 우노, 레오나르도를 이용하여 부트로더 올리는 영상 >

댓글 쓰기

0 댓글