Atmel스튜디오에서 IDE와 컴파일러를 무료로 제공하고는 있지만 실제로 시스템을 개발하려고 하면 하드웨어가 필요하게 된다. Atmel스튜디오를 사용하여 실제 제품을 개발하는 환경을 구성하려면 Atmel사에서 개발하여 공식적으로 판매하고 지원하는 다운로더(downloader, PC상에서 작성된 구동 프로그램을 uC의 내부 롬에 쓰는 기능을 하는 장치)를 사용해야만 하는 다소 불편한 점이 있다. 이러한 장치들은 비교적 고가이고 더구나 고장시 A/S의 불편함 등으로 인하여 시중에서는 그 기능을 복제한 저가의 장치들이 많이 유통되고 있다. 대표적으로 STK500, mkII호환 장치들이 있다. Atmel스튜디오를 이용하여 개발환경을 꾸미는데 있어서 이러한 장치들을 사용하는 것이 가능하기는 하나 설정이 번거롭고 사용상의 불편함도 감수해야 한다.
Atmel은 AVR 내부 메모리에 프로그램을 다운로드할 수 있는 방법과 프로토콜(protocol)을 매뉴얼에 공개하고 있다. 사실 AVR은 RESET핀이 0값으로 떨어져 있는 동안에는 SPI통신으로 내부메모리에 프로그램을 다운로드 할 수 있으며 여기에 필요한 모든 정보가 공개되어 있다. 이러한 정보를 이용하여 개인 개발자가 개발하여 무료로 개방한 저가의 다운로더가 있어서 일반 사용자도 자유롭게 제작하여 사용할 수 있다. 몇몇 예를 들어보면 USBasp, avrftdi, USBtinyISP 등이 있으며 모두 오픈소스 기반의 프로젝트들이므로 자세한 사항은 인터넷에서 검색을 해보면 금방 얻을 수 있다.
그 중에서 USBasp라는 프로그래머가 두 가지 측면에서 필자의 눈에 띄었다. 첫째로 USB인터페이스를 가지고 있으며, 둘째로 FTDI사의 serial-to-USB 변환칩 없이 ATmega8(혹은 ATmega8A/48/88)하나와 수동소자 몇 개로 회로가 이루어져 매우 간단하게 제작할 수 있다는 점이다. ATmega8은 시중에서 저가로 구입할 수 있는 흔한 프로세서이므로 USBasp를 직접 제작하고자 한다면 많은 재료비가 들지 않으며 저작권 등의 문제에서도 자유롭게 사용할 수 있다는 장점도 있다. 회로도와 펌웨어도 제작자에 의해서 공개되어 있다. (http://www.fischl.de/usbasp/) 이 사이트에서 회로도만 옮겨보면 다음 그림과 같다.
[그림 1] USBasp 회로도
처음 이것을 발견했을 때 필자는 이 회로도에서 10핀 인터페이스를 6핀으로 바꿔서 시제품을 제작해 보았다. 다음 [그림 2]에서 보다시피 회로는 굉장히 간단하지만 읽고 쓰는 동작은 잘 되며 www.avrfreaks.net 과 같은 싸이트에서 의견을 읽어보면 사용자 개발 다운로더들 중에서 어느 정도 신뢰성을 얻고 있으며 많이 사용되고 있음을 알 수 있다.
[그림 2] 직접 만들어 본 USBasp 다운로더의 외형
그리고 USBasp 다운로더를 아예 부트로더로서 ATmega8(A)에 수록하여 사용할 수도 있다. 이것은 USBaspLoader라는 이름으로 인터넷에 공개가 되어 있는데 이것을 사용하면 별도의 다운로더 필요 없이 ATmega8(A)의 플래시롬과 EEPROM을 프로그램할 수 있다.
[그림 3] USBaspLoader 의 소개 홈페이지. 아두이노와 비슷한 시제품도 소개되어 있다.
별도의 다운로더를 사용하는 것과 비교해서 USBaspLoader를 사용하는데 따르는 단점은 다음과 같은 것이 있다.
부트로더가 2K바이트의 상위 플래시롬을 차지한다. 따라서 사용자가 작성할 수 있는 프로그램의 길이는 6K바이트로 제한된다.
퓨즈바이트와 락비트를 프로그램할 수 없다. 따라서 제품개발의 용도보다는 순수하게 학습과 실습의 용도로만 사용할 수 있다.
위와 같은 단점에도 불구하고 부트로더 방식을 사용하는 이유는 별도의 다운로더 필요 없이 제공되는 키트만 있다면 PC와 USB로 연결하여 실습을 진행할 수 있다는 편리함 때문이다.
하지만 문제가 하나 있는데 AVR에 다운로드하는 프로그램 환경이 조금 불편하다는 것이다. USBaps의 소개 홈페이지에 언급된 대로 Khazama AVR Programmer, eXtreme Burner, avrdude와 같은 구동 프로그램이 있으나 AtmelStudio와 연동이 되지 않는다는 단점이 있다.
c{am8},n{a8m014} |
'하드웨어 > ATmega8(A)' 카테고리의 다른 글
AVR의 플래시롬에 데이터 기록하기 (0) | 2015.06.15 |
---|---|
ATmega8(A) avr-gcc/g++ 자료형 (0) | 2015.06.15 |
ATmega8(A) 개발을 위한 atmel studio 소개 (0) | 2015.06.10 |
ATmega8(A)의 클럭 소스 설정 (2) | 2015.06.04 |
ATmega8(A)의 전원 인가와 리셋 회로 (0) | 2015.06.04 |