'부트로더 부트스트랩로더 부트스트랩 부팅 시리얼포트 AVR bootloader 아두이노 Arduino ISP SPI UART'에 해당되는 글 1건

  1. 2012.12.10 부트로더란?
Embedded Programming/AVR 2012. 12. 10. 16:32

 

부트로더(부트스트랩 로더)란?

 

Microprocessor에서 부트로더의 의미는 시스템이 시작할 때 가장 먼저 시작하는 프로그램으로 랜덤 액세스가 가능한 ROM이나 플래시 메모리에 있던 프로그램을 SRAM으로 부팅하는 것입니다.

 

이는 ROM이나 플래시 메모리에서 액세스 시간이 길기 때문에 거기서 명령을 실행할 경우 매번 명령어를 가져오는데에도 기다려주어 하기에 실행속도가 떨어지기게 됩니다. 그러나 SRAM으로 옮겨 실행한다면 아주 액세스 속도가 빠르게 될 것입니다.

 

그러나 AVR의 경우에는 부트로더의 의미가 달라졌습니다. 즉, 제품의 사용자가 제품의 펌웨어를 업그레이드할 수 있는 내장 프로그램을 말합니다. AVR에 탑재된 플래시 메모리 같은 비휘발성 메모리는 부트로더 영역과 응용 프로그램 영역으로 나뉘어지고 부트로더 부분은 한번 써놓으면 그 자리에 항시 존재하고 따라서 적어도 한번 기록해야 하며 나머지 응용 프로그램은 개발 및 유지 단계에서 수시로 업그레이드가 필요할 것입니다.

 

결과적으로 부트로더는 AVR이 부트되면 시리얼 포트를 감시하며 프로그램의 다운로드를 기다립니다. 만약 시리얼 포트로 프로그램이 전송되면 이 프로그램을 플래시 메모리에에 기록합니다. 그리고 다음번 부팅 때부터는 시리얼 신호가 없어도 부트로드된 프로그램이 있으면 이 프로그램을 바로 실행시키며  플래시가 비어 있으면 시리얼 다운로드를 기다립니다. 

 

만일 덩치가 크지 않은 사용자 프로그램을 시리얼 통신으로 다운로드 받고 PC와 통신한다면 개발시 편리한 방법이기에 앞으로 부트로드 사용이 일반화되겠지요...

 

하지만 이러한 부트로더 프로그램은 응용 프로그램과 더불어 사용자가 함께 만들어야 하는데 아두이노(Arduino) 보드는 부트로더를 탑재하여 제공하니 편하고 보급이 빠른 이유 중의 하나일 듯 생각됩니다.

 

참고로 AVR에 프로그램을 다운로드 하는 방법을 다음과 같습니다.

 

1. AVR ISP의 소프트웨어 그리고 하드웨어를 이용한 방법으로 SPI 프로토콜을 이용하여 AVR 칩의 SCLK/MISO/MOSI/SS 핀을 이용합니다.

 

2. 부트로더를 이용한 방법으로 UART 다운로드 툴과 칩의 TXD/RXD 핀을 이용합니다. 처음 부트로더를 다운로드하기 위해서는 1의 방법을 적어도 한 번 사용해야 합니다.

 

 

'Embedded Programming > AVR ' 카테고리의 다른 글

다양한 AVR Package 비교  (0) 2014.06.14
변수 vs. 메모리  (0) 2014.04.20
AVR의 메모리 구조  (3) 2014.04.20
AVR이란?  (0) 2014.03.11
Posted by Nature & Life