아두이노는 usb를 통해서 프로그램을 업로드하여 사용합니다.
이 업로드를 가능하게 하는 것은 아두이노 보드에 부트로더가 탑재되어 있기때문입니다.
사용을 하다보면 부트로더가 망가져서 업로드가 되지 않는 경우가 있습니다.
이런 경우에는 부트로더를 다시 입력해서 사용을 하게 됩니다.
기본적으로 아두이노 프로그램 폴더 내부에 컴파일된 부트로더 hex 파일이 존재하므로, 별도로 컴파일 할 일은 사실상 없습니다.
간혹 필요한 경우가 발생하는 경우가 있긴하였습니다.
모터같은 경우에 출력핀의 상태에 따라 회전하게 되는데, 부트로더 상태에서는 그 핀 상태가 설정되지 않아서 프로그램을 업로드 하는 중에는 모터가 계속 회전해버리는 경우가 생겼습니다. 이를 수정하고자 부트로더 상태에서 핀의 상태를 초기화하는 코드를 입력하여 부트로더 상태에서 작동을 막았던적이 있습니다.
아두이노가 설치된 폴더의 boards.txt 파일을 보면 어떤 파일을 부트로더로 사용하는지 나와 있습니다.
arduino-1.8.14-windows\arduino-1.8.14\hardware\arduino\avr\boards
우두이노 보드 중 가장 많이 사용되는 uno 보드의 경우에는 optiboot를 사용합니다.
uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0xFD
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex
arduino-1.8.14-windows\arduino-1.8.14\hardware\arduino\avr\bootloaders\optiboot
폴더에 가면 파일이 있습니다.
이를 별도로 컴파일하기위해서는 make 명령어를 사용하야하는데, 이를 위해서 환경변수 path 에 make의 경로를 등록해야합니다. 이를 위해서는 https://sourceforge.net/projects/winavr/ 여기에서 winavr을 받아서 설치해주시면 됩니다. 설치를 하게되면 자동으로 환경변수에 추가되는 옵션이 있으므로, 선택하여서 그대로 사용하는 방법이 있고, 별도로 입력하는 방법도 있습니다.
윈도우 시작메뉴에서 커맨드창을 엽니다. 윈도우 검색어에 cmd 를 입력하면 나타납니다.
cd 명령어를 사용하여 해당 디렉토리로 이동합니다.
make atmega328 명령어를 입력하면 컴파일을 진행합니다.
위의 화면에서는 변경사항이 없으므로 컴파일을 진행하지 않았습니다.
optiboot.c 를 수정하였거나, 폴더안에 hex와 lst 파일을 삭제하면 컴파일을 진행합니다.
'Study > Coding' 카테고리의 다른 글
아두이노 float 값을 byte 배열로 저장하기 (0) | 2020.12.22 |
---|---|
nRF52DK 보드를 디버거로 사용하기 (0) | 2020.12.21 |
ITS-1500S를 사용하여 핀하나로 조이스틱 버튼 구성하기 (0) | 2020.12.21 |
UART 간단하게 스위치하기 (0) | 2020.12.18 |
8MHz 이하의 아두이노 보드에서 WS2812(네오픽셀) 사용하기 (0) | 2020.12.18 |