[컴][아두이노] 아두이노의 bootloader

부트로더 / 붓로더 / 아두이노 부트로더



Arduino Bootloader

bootloader 를 보면 일단 microcontroller 에 의해 나뉜다. (쉽게 cpu 라고 생각하자.) 그래서 크게 2가지 소스가 있다.


여기서 용도에 따라 보드 종류에 따라 여러가지로 소스를 나눠놨다. 확인은 안해봤지만 대략적인 동작은 아래 ATmega8/Atmega168 bootloader 와 비슷할 듯 하다.(추측)

ref. 1 에서는 AVR bootloader 중 3가지에 대해 간략하게 설명을 해준다. 정리하면 다음과 같다.

ATmega8 bootloader(source)

  • 1KB 의 flash memory 만 사용한다.
  • 이것도 invalid data 를 받을 때 timeout 시키지 않는다. 
  • bootloader 가 동작할 때 6-8초 동안 data 가 보드로 전송되지 않게 해야 한다.

ATmega168 bootloader(source)

  • 현재 Arduino 0009 에 들어가 있는 bootloader 는  "Diecimila" 과  "NG" 버전(ATmega168이 장착된)과 거의 같다.
  • ATmega168에서 19200 baud 속도로 동작하고, flash memory 의 2 KB 를 사용한다.
  • Diecimila 과 NG 버전의 차이점
    • 시작시 초반에 새로운 프로그램이 동작하도록 기다려 주는 시간이 있다.(Diecimila 는 시간을 절약하기 위해 1초 미만을 기다리고, NG 는 6~8초를 기다린다.)
    • pin 13 LED 를 번쩍이는 횟수(Diecimila 은 한번 깜빡임, NG 는 3번)
  • NG 버전의 특징
    • Arduino NG 에 들어가있는 bootloader 는 약간 다르다.
    • pin 6 에 있는 internal pullup resistor 를 enable 한다.
    • RX pin 에 있는 internal pullup 는 enable 하지 않는다.
    • invalid data 를 받고 있는 동안에도 timeout 을 하지 않는다. 그래서 만약 reset 하자마자 data 를 upload 하면, 그 sketch 는 절대 동작하지 않을 것이다.

Arduino BT 의 bootloader(source)

  • Arduino BT 의 bootloader 는 블루투스 모듈에 대한 초기설정을 한다.



References

  1. Arduino - Bootloader > Versions of the bootloader


댓글 없음:

댓글 쓰기