AVR2012. 1. 16. 09:25

어제 강좌 게시판이 오픈한데 이어, 오늘 드디어 첫 강좌를 풀어볼까 합니다. 두둥~~

사실 첫 강의 주제를 어떤 걸로 할까 나름대로 엄청 고민했는데, 가장 피해가고 싶었던 주제를 꺼내놓게 되었습니다.

 

왜 그렇게 다들 AVR 을 찾는 걸까요??

 

이게 제가 고심끝에 결정한 제 첫 번째 강의 주제입니다.

왜 이 주제를 피해가고 싶었는가 하면, 제 글을 읽고 아마도 분명 '이건 아닌데..' 하고 반대 의견을 올리실 분들이 꼭 있을 것 같아서 입니다.

 

사실 반대 의견을 싫어하지 않습니다.

믿기 어려우시겠지만 사실 전 강의 첫 째 시간인 소개 시간에 거꾸로 제가 모를 것 같은 주제에 대해 질문해 달라고 요청을 드립니다.

 

왜냐하면 제가 모르는 내용이 무엇인지 아는 게 제 레벨을 올리는 지름길이기 때문입니다.

우리가 사용하고 있는 C 언어의 경우, UNIX 를 개발한 벨 연구소에서 1970년대에 개발한 프로그래밍 언어입니다.

그때 이후로 지금까지 C 언어 문법이 바뀐 적이 없습니다.

우리가 사용하고 있는 영어..라는 언어의 경우엔 역사가 더 오래되었죠.

이러한 기반 기술들은 오래 쓰면 쓸수록 실력이 늘게 되어 있습니다.

 

그런데, 마이크로 프로세서나 운영체제(OS)와 같은 소위 응용 분야 기술들은 그 발전 속도가 너무나 빨라 도저히 이럴 수가 없습니다.

예를 들어, 우리가 소프트웨어라고 알고 있던 TCP/IP 프로토콜 스택을 우리나라 위즈넷(www.wiznet.co.kr)이란 기업이 하드웨어 칩셋으로 개발해, 우리나라에서는 유일하게 ATMEL 사에 로열티를 받고 있습니다. 대단한 기업이죠.

 

우리는 8비트 프로세서인 AVR 에 대해 얘기하고 있으나, 우리가 사용하고 있는 휴대폰은 32비트 ARM9 을 뛰어 넘어 ARM11 으로 넘어 갔고, ARM 의 변종 중 하나인 ARM Cortex-A8 로 넘어가고 있으며, 임베디드 프로세서도 듀얼 코어 바람이 불어 ARM Cortex-A9 Dual Core 가 개발되었다는 얘기가 이미 몇 달 전 얘기입니다.

 

우리는 OS 없는 펌웨어(Firmware)에 대해 얘기하고 있으나, 임베디드 운영체제의 마이크로소프트(MS)라 불리던 윈드리버(WindRiver) 社 가 인텔 社 에 합병이 되었고, RTOS 와 Windows CE 가 주름 잡던 네트워크와 모바일 단말기에 공짜라 무시당하던 리눅스(Linux)가 사용되고 있습니다.

 

서두가 너무나 길어졌네요.

결론은 무엇을 하던지 간에 "왜?" 해야 되는지.. 그 동기를 알지 못하면 오래 못간다는 게 제 지론인지라 반대 의견이 나름 걱정은 되나 그래도 꼭 이 주제를 해보고 싶어 골라 보았습니다. 이제 얘기해볼까요?

 

[ 왜 AVR 인가? ]

 

우리나라에서 사용되는 8비트 프로세서는 크게 3가지가 있습니다.

인텔이 개발한 8051, 마이크로칩 사가 개발한 PIC, 그리고, 아트멜(ATMEL) 사가 개발한 AVR 이 바로 그것들이죠.

 

아마 8비트 프로세서로 제품 개발하는 사람들치고 저 3가지를 다뤄보지 않는 사람들도 많지 않을 겁니다.

혹 다뤄보지 않으셨더라도 조만간 다뤄보게 될 거라는 데에는 의심의 여지가 없을 겁니다.

워낙 다양한 분야에 워낙 다양한 프로세서들이 사용되다 보니 결국 어떤 식으로든 걸리게 되긴 하더라구요.

 

그런데, 하필 왜 AVR 을 우리는 "선택" 하여 공부하는 걸까요?

 

사실 제가 처음 AVR 을 접하게 된 건 지금과는 조금 다른 이유였었습니다.

제가 2004년에 모 대기업 신입사원 교육에 가서 느꼈던 점이, 신입사원 혹은 대학생들에게는 무엇보다 마이크로 프로세서(CPU)에 대한 기본적인 이해와 흥미를 느낄 수 있도록 실습이 무엇보다 필요하겠다는 점이었습니다.

 

그래서, 적당한 8비트 프로세서를 고르다가, 마침 한국전자통신연구원(ETRI)에 다니시던 제 선배 한 분이 조만간 USN(Ubiquitous Sensor Networks)이 뜰테니 어차피 8비트 프로세서를 할 거 AVR 로 해보는 게 어떻겠냐고 조언을 주시더군요.

 

마침 근거리 무선 통신 규격인 ZigBee 나 BlueTooth 의 레퍼런스 보드들이 대부분 AVR ATmega128L 을 채택하고 있던 터였던데다, 지금은 거의 사라졌지만 당시 무인감시카메라 위치를 알려주던 차량용 단말기와 차량용 TV를 AVR 로 개발했던 경험이 있어 AVR ATmega128 을 채택하여 교육용 키트를 만들게 되었던 것 입니다.

ATmega128L 은 최대 8MHz 로 동작하기에 향후 uC/OS-II 같은 RTOS 교육을 하려면 16MHz 가 좋겠다 싶어 ATmega128 을 선택했습니다.

 

그리고나서 다양하게 이 키트를 기반으로 직접 강의를 하며 다양하게 AVR 에 대해 알리기 시작했습니다.

제가 처음 키트를 제작한 게 2004년도 인데, 그 당시엔 PC 용 그래픽 카드 PCB 만 빨간색이었지 빨간색 PCB를 사용하는 데가 없어, 제가 튀고 싶은 마음에 빨간색 PCB를 채택하였는데 요즘엔 빨간색 PCB 가 꽤 많아졌더군요.

(* 그래서, 이번에 새로 제작한 키트는 파란색으로 다시 변경하였습니다. ^^;;;)

 

여튼 결국 그 당시엔 USN 및 홈네트워크를 겨냥하여 어차피 8비트 프로세서 배울 거, 나중에 취업하여 바로 써먹을 수도 있겠다 싶어 AVR 을 했는데 그게 얼추 맞아 떨어졌나 보더라구요.

 

그러나, 그 이후 정말 여러 업체들과 기관, 학교들을 돌아다니면서 제가 느꼈던 AVR 을 가장 큰 매력은 무엇보다도 무한한 "자율성(free)" 이었습니다. 사실 이 얘기가 이번 강좌의 핵심이랄 수 있겠습니다.

 

저 역시 태생이 개발자인지라 예전부터 Visual C++ 이나 Windows 와 같은 상용 소프트웨어 보다는 공개형 리눅스(Linux)를 워낙에 좋아했었습니다. 한때는 제 PC 에 Windows 외에도 Linux 와 FreeBSD 와 같은 공개형 OS 를 깔아 공부하곤 했었는데, 요샌 Windows 와 Linux 밖에 사용하고 있질 않네요.

(* 나이 먹어서 게을러져서 그런가 봅니다. 흑~ ㅠ.ㅠ)

 

그래서인지는 모르겠으나, AVR 의 경우 제가 즐겨 사용하던 AVR-GCC 가 지원되어 일단 그 점이 너무나 좋았습니다.

게다가 별도의 롬라이터도 필요없어 그 점도 좋았습니다.

거기에 내부 (시리얼 타입의) 플래시 메모리 용량도 풍부하고 별도의 메모리 뱅킹 제어를 하지 않아도 그냥 쓸 수가 있어서 메모리 아낀다고 strip 같은 후속 작업을 하지 않아도 되어 너무 너무 좋았습니다.

 

제가 느낀 이러한 좋은 점들은 아마도 회원수 10만을 넘어선 당근 카페 대다수의 개발자 분들도 아마 같이 느끼셨으리라 생각됩니다. 제품은 개발자가 만들어 냅니다. 결국 개발자가 좋아할만한 솔루션이 가장 좋은 솔루션이고 AVR 이 개발자들에게 그러한 매력을 제공하기에 선택되지 않았을까 싶은 생각이 들었습니다.

 

더불어 ATMEL 사의 노력도 이를 한 몫 거들었다고 생각합니다.

일반적인 8비트 프로세서와는 달리, AVR 의 경우 RFID, ZigBee, USB, CAN 등을 지원하는 수많은 변종 SoC 들이 상당히 많이 지원되고 있습니다.

 

거기에 현재 아이리버에서 출시되고 있는 MP3 플레이어에 포팅된 uC/OS-II 라는 RTOS 가 AVR 을 굉장히 잘 지원하고 있습니다. USN 에서 사용되는 TinyOS 나 Nano Qplus 라는 RTOS 역시 AVR 을 기본 타겟으로 지원하고 있죠.

그러다 보니 ZigBee 나 BlueTooth 를 지원하는 대부분의 휴머노이드 로봇이 AVR ATmega128 로 구성되어 있다는 점도 쉽게 짐작할 수 있습니다.

 

이런 장점들 때문에 AVR 을 사용하고 있으며, 선임 개발자들이 AVR 을 선호하다 보니 결국 요즘 배우고 있는 학생들이나 후임 개발자들도 자연스레 AVR 을 사용하고 있는 게 아닌가 하는 생각이 들더군요.

 

일단 저 개인적으로 AVR 을 너무나 좋아합니다.

6년째 AVR 을 다루고 있고 앞으로도 다룰 예정이지만 제 개인적인 생각으로 전원 등에 대한 안정성이나 ADC 일부 기능들은 PIC 나 8051 이 더 낫다고 하지만, 그래도 좋은 걸 어찌합니까? ㅠ.ㅠ

 

결국 AVR 을 사용하는 이유를 요약해 보자면,

 

- 개발에 필요한 SW, HW 가 거의 대부분 공개되어 있거나 무료로 사용할 수 있다.

- 메모리 사용이 너무나 쉽다.

- 관련 산업 분야(ZigBee, BlueTooth, USN, CAN, RFID, Robot 등)가 AVR 을 채택하고 있다.

 

등의 이유가 될 듯 싶고, 마지막 이유는 그냥 제가 AVR 을 좋아한다는 아주 개인적인 이유가 되겠습니다. ^^;;;

 

다음 강의 주제는 왜 AVR-GCC 일까에 대해 다뤄보고자 합니다.

오늘은 너무 늦었네요.

막걸리 한잔 하고 들어가서 자야겠습니다. 다음에 뵐게요. 제~~~발~~~~

Posted by 콩알은

댓글을 달아 주세요