비주얼 스튜디오 (Visual Studio, 이하 VS) 는 마이크로소프트(MS) 사의 대표적인 개발툴이다. MS가 2000년대 초반에 .NET framework을 발표하면서 비주얼 베이직, 비쥬얼 C++ 등과 같은 기존의 프로그래밍 언어 외에 C#이라는 새로운 언어를 발표했는데 이것이 .NET의 핵심 언어로서 현재는 버젼이 4.x이다. 이름에서 유추할 수 있듯이 C#은 C/C++에 뿌리를 둔 객체 지향 언어인데 C++과 JAVA의 장점을 계승한 최신의 개념이 들어간 언어이다. 실제 사용해 보면 JAVA보다도 더 편리한 문법과 무엇보다도 비주얼 스튜디오라는 최고의 개발툴 때문에 쾌적하게 코딩을 할 수 있다. JAVA를 시작할 때는 어느 IDE를 사용해야 하는가부터 고민해야 하지만 C#의 경우는 (윈도를 사용한다면) 그럴 필요가 없다.



C언어 정도만 어느 정도 알고서 C#을 공부하면서 감탄을 많이 했던 기억이 난다. 이런 것도 있구나. ('포인터가 없어!'하고 놀랐던 기억도) 무엇보다도 어렵게만 느껴졌던 윈도우 프로그래밍이 폼(form)이라는 객체들을 이용하여 이용하여 직관적으로(드래그 & 드랍) 디자인하고 개별 폼 뒤에 동작하는 코드 조각을 작성하여 전체를 짜맞추어 나가는 과정이 상대적으로 쉽게 느껴졌다. 지금은 또 WPF라는 차세대 개발 방법까지 나와 있지만 내 경우에는  {윈도우 프로그래밍 == 폼 프로그래밍} 으로  인식되어 있다.


그런데 아무리 좋은 언어라도 개발 환경이 고가라면 역시 쉽게 접근하기 어려울 것이다. 하지만 VS Express라는 이름으로 MS사는 개발툴을 무료로 배포하고 있었는데 요즈음에는 아예 .net framework 를 오픈소스로 공개하고 개발툴도 무료로 배포하고 있다. 심지어 이 무료툴로 상용 프로그램을 개발해서 판매를 하더라도 아무런 제약이 없다. 앞으로는 C#으로 맥용 뿐만 아니라 (자바와 같이) 리눅스 앱도 만들 수 있게 될 것이라고 한다. 또한 윈도우에서만 쓸 수 있던 개발 환경이 멀티 플랫폼으로 옮겨가고 있으니 전에는 상상도 못 했던 일이다.




Posted by 살레시오
,

 특정한 기능을 수행하는 시스템을 uC를 이용하여 구현하려고 할 때 그 기능을 수행하도록 위해서는 물리적인 전기전자 회로를 설계해야 될 것이고 (필요에 따라 기계적인 요소도 들어갈 것이다.) 그 회로를 작동시키는 소프트웨어도 작성해야 한다. 이러한 하나의 제품을 만들어내는 과정을 ‘개발’이라고 한다. 이렇게 uC를 이용하여 제품을 개발할 때 프로그램 언어로서 일반적으로 C/C++언어와 어셈블리어가 많이 사용된다.


 이제 C/C++ 언어와 어셈블리어 중에서 어느 것을 사용할지의 선택의 문제가 발생한다. 각각 나름대로의 장점이 있으며 C/C++언어와 어셈블리어 하나만 아는 것보다는 둘 다 익혀두는 것이 더 유익하겠지만 여건상 한 가지만 집중적으로 해야 한다면 C/C++ 언어를 선택하는 것이 일반적이다. 어셈블리어만을 가지고 복잡한 알고리듬을 구현하기에는 한계가 있기 때문에 그렇다. C/C++언어가 코드를 작성하기 편리하고 하드웨어의 제약에서 어느 정도 벗어나서 알고리듬에만 집중할 수 있는 반면 어셈블리어는 프로그램의 명령어가 단순하고 코드가 짧으며 실행속도가 빠르다는 장점을 가진다. 따라서 프로그램 수행시간이 중요한 응용분야에서는 어셈블리어로 코드를 최적화할 필요가 있다. 또한 어셈블리 프로그램 자체가 단순하기 때문에 배우기 쉬우며 하드웨어에 대한 충분한 이해를 바탕으로 해야만 코드를 작성할 수 있기 때문에 하드웨어를 이해하는 폭을 넓혀준다. 어셈블리어에 익숙하다면 이는 C/C++ 언어로 프로그래밍을 할 때 그 이해의 폭을 깊게 해주므로 C/C++언어와 어셈블리어는 서로 배타적이 아니다. 따라서 uC로 시스템을 개발할 때에는 둘 다 익숙히 다룰 줄 안다면 여러모로 유리할 것이다. 실제로 제품 개발 프로젝트를 수행할 때 전 과정을 모두 어셈블리어로 작성하는 경우도 있겠지만 좀 더 일반적인 경우는 C프로그램으로 전체적인 윤곽을 잡고 실행 속도나 코드의 최적화가 중요한 서브루틴을 어셈블리어로 작성하여 끼워 넣는 경우도 있다.


 AVR uC를 생산하여 공급하는 Atmel사에서는 Atmel Studio (버전이 6.0 밑에서는  AVR Studio 라는 이름이었다.)라는 IDE(integrated development environment, 통합개발환경) 를 무료로 제공한다. Atmel 스튜디오는 텍스트 에디터, 시뮬레이터, 디버거 등을 포함하며 어셈블리어 프로그램까지 개발할 수 있는 Atmel사의 다양한 마이크로컨트롤러 전용 개발 프로그램이다. 사실 AVR 개발 프로그램은 CodevisionAVR과 같은 몇몇 상용 프로그램이 있으나 Atmel  Studio는 개발사에서 제공하고 무료로 사용할 수 있고 다른 상용 프로그램과 견주어 개발 과정에 불편함이 없으므로 교육 현장이나 실제 제품 개발에 많이 사용된다. 이것은 사용자가 작성한 어셈블리어와 C/C++ 언어를 손쉽게 작성하고 디버깅(debugging)이나 시뮬레이션을 수행한 후 실제 시스템에 간편하게 다운로드할 수 있는 환경을 제공한다.

[그림 1] avr studio 4.12


AVR 스튜디오 v4.12에서부터는 gcc계열의 WINAVR 컴파일러를 지원하기 시작하였고 v5.x로 판올림을 하면서부터는 Visual Studio 2010의 에디팅 환경을 차용하여 IDE의 외형 뿐만이 아니라 32비트 uC인 AVR32도 개발 가능하게 되는 등 상당히 많은 변화가 일어났다. 2015년 6월 현재는 다시 판올림을 하면서 이름도 바뀌어 Atmel Studio 6.x 정식 버전이 배포 중이며 이제는 이 프로그램을 이용하여 AVR계열 뿐만 아니라 ARM계열의 프로세서들까지도 개발할 수 있다. 프로그램의 외관은 [그림 2]와 같으며 [그림 1]과 비교하여 외형상으로도 많은 변화가 있음을 확인할 수 있다.


 

[그림 2] atmel studio 6.x

 본 블로그에서는 Atmel Studio 6.0버전을 가지고 실습을 진행한다. 하지만 AVR Studio 5.0을 사용해도 여기에서 제공하는 예제들을 실행하는데 아무런 지장이 없다.



Posted by 살레시오
,