루덴스코드 Blog

CH.02.아두이노 IDE 설치하기

아두이노 IDE 를 설치해보겠습니다. 우선 IDE 란 것이 무엇인지부터 살펴보겠습니다.

IDE 는 Integrated Development Environment 의 약자로 번역하면 '통합개발환경'이 됩니다. 
그런데 보통 통합개발환경이라고 불릴 정도가 되면 편집과 컴파일, 디버깅, 배포까지 소프트웨어에 관해서는 모든 작업이 그 안에서 다 이루어질수 있는 것으로 보아도 틀리지 않습니다. 

아래 두 그림은 각각 Code Composer Studio 라는 IDE 와 IAR 이라는 IDE 입니다.



창(window)의 갯수가 거의 10개에 이릅니다. 필요하면 이보다 더 많은 창을 열어서 사용할 수도 있습니다. 각각의 창이 하는 역할은 모두 다릅니다. 소스를 편집하는 것, 내부 레지스터의 값을 보이는 것, 결과값을 보이는 것, 로그를 보이는 것, 코드를 어셈블한 것을 보이는 것 등등 상당히 많은 창들이 사용됩니다. 

그에 비해 아두이노 IDE 는 다음과 같이 매우 단순합니다.

다른 IDE 들과 비교해보면 얼마나 단순한지 알 수 있습니다.
왜 이렇게 단순할까? 사용하다보면 더 필요한 기능들이 얼마나 많이 있는데, 이렇게 조촐하게 만들어진 IDE 를 가지고 쓸 사람이 있기나할까? 사실 처음 아두이노가 세상에 나왔을때 많은 사람들이 아두이노의 모습을 보고 던진 비웃음이 있었을 겁니다.

처음 소프트웨어가 세상에 나왔을때 이런 IDE 는 없었습니다. "통합"이라는 말이 붙는 개발환경 자체가 없었습니다. 개발하려는 사람은 매우 열악한 문서편집 소프트웨어(이를테면 지금의 윈도우 메모장보다 훨씬 불편한 vi 같은 문서편집 프로그램)를 썼습니다. 소스코드를 만들고 그것을 컴파일하고, 컴파일 된 파일들을 모아 다시 링크를 해서 실행파일을 만들었습니다. 종종 문제가 생기면 열심히 소스코드를 들여다보면서 어디가 잘못되었는지 찾았습니다. 눈으로 말이지요.

그러다가 소스편집과 컴파일, 링크를 통해 실행파일을 한번에 만드는 개발환경을 만들고 그 안에 디버깅할 수 있는 내용도 추가했습니다. 조금 더 편리하게 개발할 수 있는 환경을 프로그래머들이 만든것이지요. 그런데 전문적인 프로그래머의 입장에서는 가능한 많은 창을 한꺼번에 띄워두고 자기가 원하는 정보를 빨리 보는 것이 좋았습니다. 시간이 갈수록 IDE 는 복잡해졌습니다. 나중에는 IDE 자체를 사용하는 것이 쉽지 않은 일이 되고 맙니다.

예전에 8051 이라는 MCU 를 사용하기 위해 KEIL 과 IAR 이라는 컴파일러를 사용할 기회가 있었습니다. 프로그램을 쉽게 하기 위해 만들어진 IDE 를 이해하기 위해 상당히 두꺼운 메뉴얼을 프린트로 출력해서 영어로 된 원서를 더듬거리며 읽어야 했던 기억이 납니다. 

매일 이런 프로그램을 사용하는 전문가들에게는 어렵더라도 기능이 강력한 이런 IDE 가 아주 좋은 도구가 됩니다. 일주일이 걸릴 작업을 사나흘만에 해낼수도 있습니다. 하지만 이런 프로그램을 자주 사용하지 않는 일반인들에게는 오히려 강력한 IDE 의 등장은 현재 진행중인 기술과 담을 쌓게 되는 원인이 됩니다. 그저 전구에 불을 켜고 끄는 일을 1초에 한번씩 반복하는 간단한 작업을 하고 싶어도 수백페이지가 넘는 영어로 된 메뉴얼을 읽어야만 한다면 그는 차라리 다른 전문가에게 그 일을 의뢰하거나 혹은 포기하고 말겁니다. 게다가 KEIL 이나 IAR 같은 컴파일러들은 개인이 구입해서 사용해보기에는 많이 비쌉니다. 윈도우나 한글, 오피스 같은 범용 프로그램들은 일반인을 상대로 개발하고 많은 판매를 하기 때문에 구입하기로 마음먹어도 큰 부담은 없습니다. 하지만 KEIL, IAR, Code Composer 같은 전문가들이 사용하는 프로그램들은 부르는게 값이었고, 사용하기도 만만치 않았습니다.

하지만 다행스럽게도 gcc 라는 GNU 프로젝트에 의해 만들어진 공개된 컴파일러가 등장합니다. gcc 는 처음 리눅스환경에서 사용되었지만 지금은 거의 모든 환경에서 사용됩니다. 보통은 PC 환경만 생각합니다. 하지만 SDCC 라는 8051용 컴파일러도 있고, AVR-GCC 라는 AVR용 컴파일러도 있습니다. 이런 공개된 무료 컴파일러를 통해 누구라도 비용에 대한 걱정없이 8051 이나 AVR 을 사용할 수 있게 되었습니다. 

하지만 여전히 일반인이 넘기에는 어려운 벽이 있었습니다. SDCC 나 AVR-GCC 는 무료로 사용할 수 있었지만 통합개발환경이 아닌 컴파일러였기에 제대로 사용하기 위해서는 makefile 이라는 것을 만들어야 했습니다. 이 makefile 을 만드는 것이 무척 어렵고 성가신 일입니다. 이미 많이 만들어본 사람에게는 별것이 아니겠지만 처음 사용하는 사람에게는 makefile 을 만드는 것만 해도 머리에 쥐가 나는 것은 물론이고 "그냥 나 이대로 살래"란 말이 자연스럽게 나오게 만들 정도였습니다.

mcu 는 점점 속로가 빨라지면서 고성능화 되어가고, IDE 는 점점 비싸지면서 일반인들은 감히 건드리기도 힘든 아우라를 갖춘 복잡한 모양이 되어갑니다. SDCC 나 AVR-GCC 는 읽기도 힘든 영문매뉴얼을 읽어야하고, 게다가 makefile 이라는 난생 처음 들어보는 이상한 컴파일-링크 시스템을 사용자가 알아서 만들어줘야만 합니다. 에러가 나면 어디서 문제가 생겼는지 찾기도 힘들었습니다.

사실 그런 환경속에서 아두이노는 태어납니다. AVR-GCC 를 컴파일러로 사용하지만 외형은 전혀 그렇지않고 깔끔하고 간단하게 갖췄습니다. AVR 을 프로그램한다면 당연히 했어야하는 레지스터에 대한 것도 묻지 않습니다. 포트를 읽는 것으로 할 것인지 쓰는 것으로 할 것인지도 간단하게 바꿨습니다. 

예전식으로 프로그램을 하면 다음과 같습니다.

DDRA = 0x00;    //Set port a as input
x = PINA;       //Read contents of port a 
첫줄은 A 포트를 입력으로 사용하겠다고 레지스터를 설정하는 것입니다.
둘째줄은 포트A 로 들어온 값을 x 라는 변수에 입력시키는 것입니다. 포트 A 는 8개의 입력핀이 모인 곳이라고 하면 x 에 들어온 값은 이진수로 00000000 부터 11111111 까지의 어떤 값이 됩니다. 결국 x 들어온 값으로 각 핀의 값을 알려면 다시 x 를 비트연산자를 통해 각 핀의 값으로 읽어줘야만 합니다. 

DDRB = 0b11111111;        //set all pins of port b as outputs
PORTB = 0xFF;             //write data on port 

첫줄은 포트 B 의 모든 핀을 출력으로 설정하는 것입니다. 위에 입력으로 할때와 비교하면 이해가 될 것입니다. 그리고 두번째 줄은 포트 B에 값을 넣어서 각 핀을 통해 5V 또는 0V 를 보내는 것입니다. 여기서는 포트 B 의 8개 핀 모두에서 +5V 가 나오게 했습니다.

이것을 아두이노에서는 이렇게 프로그램합니다.

pinMode(13, OUTPUT);          // 13번 핀을 출력으로 설정
digitalWrite(13, HIGH);          // 13번 핀에 5V 출력
digitalWrite(13, LOW);          // 13번 핀에 0V 출력

pinMode(12, INPUT);                            // 12번 핀을 입력으로 설정
int buttonState = digitalRead(12);      // 12번 핀을 읽어 변수 buttonState 에 저장

이전 방식의 AVR 프로그램과 비교하면 아두이노의 프로그램은 훨씬 인간적입니다. 물론 이렇게 인간적인 프로그램이 되기 위해서 포기한 것이 있습니다. 레지스터를 직접 다루는 것을 포기했습니다. 결과적으로 프로그램의 속도나 효율도 떨어졌습니다. 하지만 프로그램이 쉬워졌습니다. IDE 도 복잡하면서 막강한 기능을 가지는 대신 단순하면서 최소의 기능에 만족했습니다. 마친 모든 MP3 들이 이퀼라이저에 칼라 LCD 에 심지어 움직이는 동영상까지 넣으려던 때에 애플이 동그랗고 커다란 버튼 하나만 달랑 붙은 아이팟을 내놓았을 때처럼 아두이노의 IDE 는 혁신적이었습니다.

기능의 부족함이 오히려 일반인들에게는 더 가까이 다가갈 수 있는 매력이 된 것입니다. 

지금 다수의 컴파일러들은 아두이노 IDE 와 유사해집니다. Ti 는 Code Composer Studio 라는 IDE 를 판매하고 있습니다. 아두이노의 열기가 뜨거워지고 현재 TI의 일부 범용 MCU (C2000, MSP430, etc.) 를 프로그램 할 수 있는 Energia 라는 오픈소스 IDE 가 나왔습니다. 모양은 아두이노 IDE 와 똑같습니다. 색깔만 빨간색입니다.


단순하기 때문에 성공한 것, 그것이 아두이노의 매력입니다.

이제 이 단순한 IDE 를 설치해 보겠습니다.

https://www.arduino.cc/ 로 가서 Download 라고 되어 있는 메뉴를 클릭하고 윈도우나, 맥, 리눅스 중 자신의 운영체제에 맞는 것을 다운받으시면 됩니다. 설치는 다운 받은 파일을 더블클릭해서 순서대로 따라가기만 하면 됩니다. [바로가기 링크]




Comment +0



사용자 삽입 이미지

처음 실행시키면 나오는 화면이다. 블로그에 맞게 캡춰하기 위해 창의 크기를 작게 잡았다.

사용자 삽입 이미지

새로 프로젝트를 하나 만든다.

사용자 삽입 이미지

프로젝트는 Win32 콘솔 응용 프로그램이다. 예전 도스창에서 직접 명령어를 치는 식의 프로그램을 짜는 것이다. 아래쪽에 프로젝트 이름을 넣는다. 편의상 TEST03 이라고 했다.

사용자 삽입 이미지

Win32 프로그램 응용 마법사가 나온다. 왼편에 [개요] 와 [응용 프로그램 설정] 을 클릭할 수 있다.

사용자 삽입 이미지

거의 바뀔부분은 없다. 이미 win32 콘솔 응용 프로그램으로 선택했을 때와 동일하다. 필요에 의해 설정은 바꿀수 있다. [마침]을 누르면 본격적으로 프로그램 코드를 넣는 창이 뜬다.

사용자 삽입 이미지

보통 공개 컴파일러의 경우 IDE 가 지원되지 않는 경우가 많다. 그래서 텍스트 에디터를 별도로 사용하곤 했었는데 Visual C++ Express Edition 에서는 비싼 상용만큼은 아니지만 그래도 일반적으로 사용이 가능한 IDE 환경을 제공해 준다. (IDE : Integrated Development Environment, 통합개발환경)

사용자 삽입 이미지

두 줄의 코드만 삽입했다. 하나는 stdio.h 전처리기를 넣는 행이고, 다른 하나는 printf 문이다. C++ 문법과는 어울리지 않지만 이 프로그램으로 앞으로 할 일은 C 를 배우는 것이기 때문에 printf 문을 사용해서 Hello World 를 출력해보도록 했다.

사용자 삽입 이미지

기본적으로 [빌드] 메뉴에서 빌드를 해주면 된다.

사용자 삽입 이미지

[빌드] 결과가 아래 창에 나온다. [출력] 탭을 보면 성공했다는 메시지가 나온다.

사용자 삽입 이미지

직접 실행파일이 있는 곳을 찾아가도 되고, 아니면 [Ctrl+F5], 즉 [디버그] 메뉴의 [디버깅하지 않고 시작] 항목을 클릭해도 된다. 앞에서 빌드를 하지 않았다면 여기서 빌드되지 않았다는 메시지와 함께 빌드를 할 것인지를 묻는다. 여기서 빌드와 실행을 한꺼번에 해도 된다. 즉, 코드가 완성되었으면 [Ctrl+S] 로 저장하고, [Ctrl+F5]로 빌드와 실행을 한꺼번에 하면 된다.
[Ctrl+S] 와 [Ctrl+F5] 정도는 필수적으로 외워둘만한 단축키다. 그리고 반드시 빌드전에 저장을 하는 습관을 갖도록 하자, 가끔 빌드와 실행을 한꺼번에 하다가 PC가 다운되거나 하는 경우를 만난다. 물론 코드가 잘못된 것이다. 그때 저장해두지 않은 상태라면 한참을 넋을 잃고 허탈한 심정을 달래야 할수도 있다. ^^

사용자 삽입 이미지

Hello World 의 실행화면이다. 이제 이것으로 기본적인 C 언어의 공부를 시작하면 된다.
물론 Visual C++ Express Edition 의 기능은 여기 소개한 것보다 훨씬 풍부하다. 더 공부하면 더 많이 알게 될 것이다.

단, MFC 는 Express Edition 에 포함되어 있지 않다. 더 깊은 공부를 원한다면 Visual Studio 나 .NET 을 구해서 사용하면 된다. 참고로 회사등에서 업무용으로 쓰기 위해서는 등록을 하고 정식 구매를 해야 하겠지만 학교등에서는 교육용으로 사용가능한 것으로 교내에서 사용하는 PC에 설치해서 사용 가능하도록 지원해주는 경우가 있다. 이런 경우들을 잘 찾아보면 얼마든지 프로그램을 구해서 사용해 볼수 있을 것이고, 그리고 그 정도까지는 아니더라도 간단한 C언어에 대한 공부는 Express Edition 으로 얼마든지 가능하다.


Visual C++ Express Edition 으로 Hello World 화면에 출력하기
http://electoy.tistory.com/106
JelicleLim(2008.7.18)

Comment +0

ToolStick Led Blink 프로그램은 다음과 같다.
프로그램코드는 제공되는 CD안에 들어있으며, 역시 인터넷으로 Silabs 홈페이지에서 검색하여 사용이 가능하다.
컴파일은 Keil C51을 사용하였다.

--- 프로그램코드 ---

more..


컴파일과 링크 후 작동되는 모습의 동영상을 함께 올려본다.





ToolStick Led Blink 프로그램
http://electoy.tistory.com/92
JelicleLim(2008.7.1)

Comment +0

Silabs 의 ToolStick Evaluation Kit 은 $10.99 에 구입할 수 있다. 구입이 완료되었다고 하고(혹은 여러 행사가 있을때 사은품으로 주로 이 ToolStick 이 제공된다.), SDCC 도 설치가 되었다면 이제 두 가지를 연결해서 프로그램을 넣어보는 단계다.

여기엔 몇가지 프로그램이 필요하다. 우선 SDCC 를 사용할 때 모든 옵션을 직접 Line 상에서 하듯이 일일이 커맨드를 치거나 혹은 예전 방식의 배치파일을 만들어서 사용할 수도 있다. 하지만 Silabs 에서는 무료 IDE 를 공개하고 있다. 그 공개 IDE 를 가져다가 설치하자.

[Silabs:IDE]

이곳에서 중간정도에 있는 [ Silicon Laboratories IDE ] 를 다운받으면 된다. 다운받고 설치하자.

그리고 한가지 더 설치할 것이 있는데, 그것은 SDCC 로 컴파일이 완료된 실행파일을 ToolStick 으로 전송해주는 프로그램이다. 다만 Evaluation ToolStick 의 경우, IDE 에서 프로그램 전송과 실행이 모두 되고, Terminal 프로그램에서는 지원하지 않는다. 즉 Evaluation ToolStick 을 사용할 경우 터미날프로그램은 소용이 없다는 뜻이다.

필요하다면 ToolStick Terminal application 이라고 이름지어진 이 프로그램은 [Silabs:USB ToolStick] 에서 ToolStick Development Tools 라고 이름붙여진 곳에서 다운받으면 된다.

이제 정리를 해 보면, 이런 순서다.

ToolStick Evaluation Kit을 구한다[구입, 혹은 증정받음] -->
프로그램을 짠다. [IDE + SDCC] -->
프로그램을 전송한다.[ToolStick Terminal Program 또는 IDE 에서 직접(Eva ToolStick 은 IDE만 가능)] -->
실행

참고로 위 프로그램들은 ToolStick 을 살때 CD안에 들어있는 것들이다. 그러나 시간이 지나면 조금 더 버그가 잡히고 보다 나은 효율의 프로그램으로 업데이트를 하기 마련이다. CD에 있는 것을 그대로 쓰기 보다는 홈페이지를 찾아서 더 새로 나온 것이 있다면 그것을 사용하는 것이 혹시나 있을 문제를 미리 방지하는 것이기도 하다. 그래서 필자는 CD의 내용을 살펴보면서도 동시에 홈페이지로 가서 혹시 더 업데이트된 내용이 없는지 확인 후 새로운 드라이브나 프로그램을 사용하는 편이다.


Silabs:ToolStick 사용 기초
http://electoy.tistory.com/85
JelicleLim(2008.6.24)

Comment +0

오늘 SDCC 를 찾아보니 약간의 버젼업이 되어 있다. 사실 내가 사용하는 부분은 8051 부분이라 그다지 별 변화는 없는 편이다. SDCC 는 홈페이지에 이렇게 소개되어 있다.

SDCC is a retargettable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).


GNU, GPL 이 나오고 그 기반의 Open Source Software 라고 나온다. 물론 모든 소스까지 공개되어 있다. Small Device C-Compiler 의 약자로 8051을 사용하려 할때 아무래도 공개된 컴파일러로서 유일한 컴파일러이기도 하다. 다른 상용 컴파일러들은 컴파일시 크기 제한을 두거나 혹은 주소에 제한을 두는 등의 제한조건을 둔다.

프로그램을 다운 받기 위해서는 홈페이지에서 직접 다운을 받는 것이 최신의 버젼을 받을 수 있는 방법이다. 생각보다 자잘한 변화를 고려해서 자주 업데이트가 되는 편이다.

http://sdcc.sourceforge.net/snap.php

위 사이트에 가보면 SDCC 를 다운받을 수 있게 해준다. 여러개 있지만 그중 윈도우를 사용하고 있다고 가정하고 윈도우 실행파일과 문서파일을 다운받는다.

사용자 삽입 이미지

사용자 삽입 이미지

위에서 맨 위에 있는 색이 변한 것, 그것을 다운 받으면 된다. 하나는 실행파일이고 다른 하나는 문서파일이다. 실행파일을 실행시키면 하위 디렉토리에 Doc 가 나온다. 그곳에 문서파일을 집어 넣어두면 편하다. 물론 어디에 둬도 프로그램 장체에는 전혀 지장없다.

SDCC 의 단점은 통합환경 IDE 가 없다는 것이다. 그래서 종종 다른 개발자들에 의해 개발환경 툴이 만들어지기도 한다. Silabs 의 경우, 컴파일러를 Keil 이나 SDCC 모두 사용할 수 있도록 IDE 를 제공해 준다. 덕분에 SDCC 를 사용하는 것이 무척 편해진다.

Evaluation 용 Toolstick 을 가지고 있고, 이를 프로그램하기 위해 SDCC 를 설치했다. 이제 왠만한 준비는 마친것이다.

SDCC 현재 나온 최신버젼
http://electoy.tistory.com/83
JelicleLim(2008.6.24)

Comment +0