임베디드 SW 시스템 개발을 위한 리눅스 기반 솔루션 소개 ②

개요시장의 수요에 부응할 수 있는 Esto(Embedded SW Devel- opment Toolkit)는 국산 임베디드 SW 통합개발도구로서, 크게 리눅스 기반 운영체제인 Qplus와 센서 네트워크용 운영체제 Nano Qplus를 지원하고 있다(그림 1 참조). 현존하는 대부분의 임베디드 SW 개발 도구가 하나의 특정 운영체제만을 지원하고 있으나 Esto는 규모면이나 적용면에서 전혀 다른 운영체제를 지원하고 있는 경쟁력 있는 도구라 할 수 있다. 이처럼 Esto가 다양한 규모의 운영체제를 지원하는 것은 유비쿼터스 컴퓨팅 환경의 다양한 임베디드 시스템들을 적시에 개발할 수 있도록 한다는데 그 의의가 있다.Esto의 주요 특징들을 요약하면 다음과 같다.·Eclipse 기반의 도구 확장 용이성·다양한 개발 호스트 지원 가능·외부 소스 임포트 가능한 프로젝트 관리 도구 제공·공개 소스 기반의 크로스 컴파일 및 디버깅 환경 제공·여러 타깃 노드의 상태를 동시에 보여주는 모니터링 도구 제공·모바일 소프트웨어를 위한 전력 측정 및 최적화 기능 제공·펌웨어 디버깅이 가능한 저렴한 JTAG 디버깅 도구 제공·Qplus, Nano Qplus 같은 인터페이스를 제공하는 타깃 설정 구축 도구 제공·GTK 기반의 임베디드 시스템용 GUI 디자인 및 코드 생성 자동화 기능 제공·디바이스 드라이버를 빠르고 정확하게 개발 지원하는 도구 제공·XScale, ARM, X86, MIPS, AVR 등 다양한 CPU 지원임베디드 시스템에서의 소프트웨어 개발은 임베디드 시스템이 갖는 부족한 자원, 성능 때문에 일반적으로 Desktop PC와 같은 범용 컴퓨터 시스템과 연결되어 이루어진다. 이와 같은 개발 환경을 크로스 개발 환경이라 하며, 실제 개발이 이루어지는 범용 컴퓨터 시스템을 호스트 시스템이라 하고, 개발된 소프트웨어가 구동되는 임베디드 시스템을 타깃 시스템이라 한다. 호스트, 타깃 시스템은 이더넷 또는 시리얼과 같은 연결 장치를 통하여 서로 인터랙티브하게 개발된 프로그램을 타깃으로 다운로딩, 실행, 디버깅, 모니터링 할 수 있는 기능을 제공한다.본 고에서 소개하고자 하는 통합 개발 환경은 Eclipse 기반의 GUI 환경을 갖는 개발환경으로 임베디드 리눅스와 같은 Qplus 플랫폼에서 수행되는 소프트웨어 개발을 위한 Qplus용 통합 개발 환경인 Esto와 센서 노드에 탑재되는 Nano Qplus 플랫폼에서 수행되는 소프트웨어 개발을 위한 Nano Qplus용 통합 개발 환경인 Nano Esto로 구분된다.각 Esto와 Nano Esto는 공통적으로 프로젝트 기반의 소스 편집, 크로스 컴파일, 원격 실행, 원격 디버깅을 제공한다. Esto는 타깃 시스템의 상태를 한눈에 파악하는 원격 모니터링, 프로그램의 전력 소모량 분석 및 최적화, 프로그램의 최악 실행 시간 및 스케쥴링 가능성 분석 기능을 포함한다. NanEsto는 실제 타깃 센서 노드 없이 호스트 상에서 디버깅할 수 있는 에뮬레이션 기반 디버깅, 명령어 수준 기반의 정확한 센서 네트워크 환경 시뮬레이션, 센서 노드들의 전력 소모량을 분석하는 시뮬레이션 기반의 전력 분석 기능을 포함한다.Esto for Qplus임베디드 리눅스 분야에서는 특히, Esto와 같은 개발 도구는 더욱 중요하다. EDC 2003년 자료에 의하면 임베디드 리눅스의 벤더나 소스를 선택하는데 있어서 가장 중요하게 생각하는 것은 개발 도구였고, 다른 운영체제에 비해서 아직 편리한 개발 도구가 미흡하기 때문에 임베디드 리눅스용 개발 도구 분야는 성장 가능성이 크다 할 수 있다. 본 절에서는 그림 1에 나타나 있는 Esto의 각 단위 도구들의 주요 기능들에 대해 기술한다. 한편 Qplus용 타깃 빌더는 이미 4월 호에서 소개된 바 있어 본 고에서는 생략하기로 한다.IDE는 프로젝트 기반의 C/C++ 응용 프로그램의 소스 편집, 크로스 빌드, 원격 실행 및 작성된 응용 프로그램의 Qplus 패키지 임포트, 익스포트 기능을 제공한다. Eclipse 플랫폼은 기본적으로 텍스트 편집기와 프로젝트 관리자를 포함하고 있다. 텍스트 편집기는 특정한 프로그램 소스가 아닌 일반 텍스트 파일에 대한 편집기를 말하고, 프로젝트 관리자도 특정한 응용 프로그램 개발을 위한 프로젝트가 아니라 일반적인 프로젝트 처리를 할 수 있는 기본 기능만을 포함한다. Esto는 임베디드 소프트웨어의 개발 언어로 많이 사용되는 C, C++ 언어에 특화된 프로젝트 관리자와 소스 편집기를 의미한다. 원격 개발을 위한 프로젝트 관리자와 소스 편집기는 Eclipse 플랫폼이 포함하는 텍스트 편집기와 프로젝트 관리자를 확장하여 원격 응용 프로그램 개발에 적합한 기능을 수행한다.크로스 컴파일 툴체인은 GNU의 binutils, glibc, gcc와 같은 공개 소스를 기반으로 타깃 시스템의 CPU를 지원하도록 패키징된 도구를 말한다. 크로스 컴파일 툴체인은 C/C++ 소스 프로그램을 컴파일, 링크 할 수 있은 컴파일러, 컴파일 된 바이너리 코드를 조작할 수 있는 바이너리 유틸리티들을 포함한다. IDE의 프로젝트 관리자는 작성된 소스 프로그램을 컴파일 할 때, 본 툴체인을 사용한다.Qplus 패키지는 기본적으로 source RPM 파일 기반으로 구성되었으며, 타깃 시스템에 이와 같은 패키지들을 설정, 빌드, 설치, 디플로이 등은 타깃 빌더와 같은 타깃 설정 도구를 통하여 수행된다. Esto IDE를 통하여 작성된 응용 프로그램을 타깃 설정 도구가 처리할 수 있는 패키지 형태로 익스포트하는 기능과 이미 만들어진 패키지의 소스를 수정할 수 있도록 Esto IDE로 임포트하는 기능을 수행한다.원격 디버거(Remote Debugger)는 타깃 보드에서 실행되는 프로그램을 호스트에서 디버깅할 수 있게 해준다. 원격 디버깅을 위해서는 호스트에서 개발된 프로그램을 타깃으로 전송하고, 타깃의 디버그 에이전트(gdbserver)를 프로그램과 함께 실행시킨 후, 호스트의 디버깅 엔진(gdb)과 타깃의 디버그 에이전트를 연결하는 작업이 필요한데, 이런 작업을 디버깅할 때마다 반복하는 것은 매우 비효율적이다. Esto의 원격 디버거는 디버그 버튼만 누르면 위에서 언급한 세 가지 과정이 자동으로 이루어지기 때문에 일반적인 로컬 디버깅하는 것처럼 원격 디버깅을 편리하게 할 수 있게 해준다.또한 논스탑 디버깅 기능도 제공하고 있다. 이는 시간에 민감한 프로그램은 정지점으로 정지시키고 그 상태를 확인하는 방식으로 디버깅하면 정상적으로 실행될 때와 다른 방식으로 행동하게 되어 문제점이 재현되지 않거나 타임아웃이 발생하여 디버깅하기가 어려운 상황에 유익한 기능이다. 이런 경우 추적점(tracepoint)을 이용하면 프로그램을 정지시키지 않고 실행시킨 후에 나중에 프로그램의 상태를 살펴볼 수 있다. 추적점에 관찰하고자 하는 대상(변수나 레지스터)을 추가한 후 프로그램을 실행시키면, 프로그램은 추적점을 만날 때마다 잠시 멈춰서 사용자가 추가한 변수나 레지스터 값을 추적하여 기록해놓은 후 계속 실행된다. 추적이 끝난 후에 디버깅 하듯이 추적된 값들을 재현하면서 관찰할 수 있다. Esto의 원격 디버거는 GNU GDB에 구현된 비정지 디버깅 기능을 지원한다. 디버깅 엔진에만 비정지 디버깅 기능이 구현되어 있고 디버그 에이전트에는 비정지 디버깅 기능이 구현되어 있지 않아서, 디버그 에이전트에 비정지 디버깅 기능을 구현하였다.JTAG 기반 디버거는 특별한 장비 없이 저렴한 가격으로 임베디드 시스템을 하드웨어적으로 디버깅하고자 하는 경우 사용된다. 특히 개발 호스트에 내장되어 있는 USB 포트만을 이용하여 임베디드 시스템에 있는 JTAG 기능을 구동시켜 디버깅을 가능하게 하는 특징을 가지고 있으며, 공개 소프트웨어 개발 통합 환경인 Eclipse에 Plug-in시킴으로써 실용적이고 쉽게 확장 가능한 개발환경을 제공한다.원격 모니터(Target Monitoring Tool)는 타깃 시스템의 다양한 상태를 사용자가 실시간으로 편리하게 감시할 수 있게 해준다. 여러 타깃들을 편리하게 관리하면서 각 타깃의 다양한 상태 정보를 감시할 수 있고, 개발 중인 프로그램을 원하는 타깃에서 더욱 편리하게 원격 실행이나 원격 디버깅할 수도 있다. 또한 개발 중인 프로그램을 타깃에서 실행시키면서 어떤 시스템 콜이나 라이브러리 함수를 호출하는 지에 대한 정보도 추적할 수 있다.임베디드 시스템에서 수행되는 소프트웨어는 일반 범용 컴퓨터에서 수행되는 소프트웨어와는 다르게 임베디드 시스템의 특성상 여러 가지 제약 사항을 갖는다. 특히, 모바일 단말과 같은 임베디드 시스템에서는 시스템의 전력 소모량에 대한 제약 사항은 갈수록 중요해지고 있다.전력 분석 및 최적화도구(Optimization & Anlaysis Tool)는 이와 같은 전력 소모량을 분석하고 최적화할 수 있는 도구로써, 전력 소모량 이외에도 성능, 코드 크기도 분석을 수행한다. 최적화는 소스 수준의 최적화로 루프 분산, 루프 교환, 루프 펼침, 스칼라화와 같은 루프 변환 최적화를 수행한다. 사용자는 이 도구를 통하여 개발 중인 소프트웨어에 대하여 쉽게 전력 소모량, 성능 등을 분석한 후, 쉽게 최적화를 수행할 수 있다.실시간성 분석기(Timing Analyzer)란 개발 중인 실시간 시스템이 주어진 시간제약사항을 항상 만족하면서 실행될 수 있는지 여부를 분석하는 도구이다. 실시간성 분석기는 최악실행시간(Worst Case Execution Time) 분석기와 스케줄링 가능성(Schedulability) 분석기의 두 가지 도구로 구성되며 Eclipse에 플러그인 되어 있다.최악실행시간 분석기는 XScale 및 Bulverdi에서 실행되는 C/C++ 프로그램의 최악실행시간을 예측하는데, CPU의 하드웨어적인 특성(명령어 및 데이터 캐시, 파이프라인, 분기 예측 등)이 고려된다. 스케줄링 가능성 분석기는 설계된, 또는 구현된 실시간 프로그램이 시간제약사항을 항상 만족할 것인지를 분석한다. 스케줄링 가능성 분석기는 일반 C/C++ 기반 실시간 프로그램뿐만 아니라 TMO(Time triggered, Message triggered Object) 프로그램도 분석할 수 있다. TMO 프로그램이란 실시간 객체 모델인 TMO 모델에 기반한 프로그램을 설계 및 개발할 수 있도록 TMOSL(TMO Support Library)의 API를 이용하여 개발된 C++ 기반 실시간 프로그램이다. 일반 C/C++ 기반 실시간 프로그램의 경우 사용자가 직접 각 태스크의 실시간성(주기, 마감시간 등)을 입력해야 하지만, TMO 프로그램의 경우 스케줄링 가능성 분석기가 소스코드에서 자동으로 각 실시간 태스크를 식별하고 그 실시간성도 추출한다.GUI 빌더는 GTK 기반 응용 프로그램의 GUI를 간편하게 생성할 수 있도록 도와주는 GUI 개발도구이다. GTK 그래픽 라이브러리를 처음 접하는 사용자라도 이 GUI 빌더를 통해서 원하는 용용 프로그램의 GUI 소스를 쉽게 생성하거나 변경할 수 있다. 편리한 GUI 디자인 및 소스코드 생성 기능을 제공하여 짧은 시간에 원하는 구성의 GUI 소스를 생성할 수 있을 뿐만 아니라 XML 기반의 가상 테스트 환경을 제공하여 생성한 GUI 소스코드를 테스트할 수 있다.GUI 빌더에서는 생성된 응용 프로그램의 GUI 소스가 의도한 형태로 생성되었는지에 대한 검증을 위해 매번 크로스 컴파일과 타깃 시스템으로의 탑재과정을 거쳐야 하는 번거로움을 없애고자 XML 기반의 가상 테스트 환경을 제공하고 있다. 이러한 가상 테스트 환경은 XML 형태로 기록된 임베디드 시스템 정보를 바탕으로 유사한 가상 타깃 시스템 환경을 구축하므로 타깃 시스템이 아닌 개발 시스템 환경에서 임베디드 시스템의 하드웨어 버튼에 따른 이벤트도 테스트할 수 있다. 단 현재 키보드 이벤트를 발생하는 하드웨어 버튼에 의한 가상 테스트만 지원된다.Esto의 중 디바이스 드라이버 개발 도구(QuickDriver)는 이클립스 기반의 리눅스용 디바이스 드라이버 개발 전용 통합 개발 도구로서 디바이스 드라이버 코드 자동 생성, 정적 검증, 테스팅, 통합 개발 환경 및 개발 편의 유틸리티 등을 제공하고 있다. 현재 버전 1.0을 개발한 상태이며, 2007년 개발을 완료할 예정이다. 이 도구는 독립적인 도구로 존재하지만 Esto와 통합되어 디바이스 드라이버 개발 기능도 포함하는 통합개발도구로 발전 가능하다.NanoEsto: Esto for Nano Qplus최근에는 센서 네트워크에 대한 관심이 높아지면서 이를 위한 여러 가지 응용 소프트웨어들이 개발되고 있으나, 이렇다 할 통합개발도구의 부재로 명령어 라인 기반의 개발 방식이 주로 사용되고 있는 실정이다. 센서 네트워크를 사용하는 다양한 응용 서비스 개발에 대한 요구가 늘어나고 있어서 센서 네트워크용 임베디드 SW의 개발 시간을 줄이고, Nano Qplus와 같은 새로운 운영체제의 진입장벽을 낮춰줄 수 있는 편리한 통합 개발 도구의 필요성이 매우 높다 하겠다. 따라서 우리는 센서 네트워크용 소프트웨어를 빠르고 편리하게 개발할 수 있는 통합개발환경인 Nano Esto를 개발했다.Nano Esto는 소스 편집, 컴파일, 이미지 적재 및 실행 기능과 소스 수준의 오류 정정 기능을 비롯해 센서네트워크용 소프트웨어의 개발에 필요한 많은 기능들을 제공한다. 또한 자체에 내장된 네트워크 환경의 시뮬레이션 기능을 통해 센서 노드에 적재되는 프로그램의 정확성 및 안정성을 검증할 수 있다. 뿐만 아니라 센서 노드의 자원이 충분치 않음을 고려하여 응용의 성격에 따라서 최적의 커널을 구성할 수 있는 기능을 제공한다. 그림 1에 나타난 바와 같이 Nano Esto를 이루는 각 단위 도구들에 대해 각각 다음과 같이 소개한다.IDE는 크로스 개발 환경에서 타깃, 즉 원격지에서 수행되는 센서 네트워크용 소프트웨어를 개발하기 위한 목적으로, 프로젝트 관리자, 소스 편집기, 크로스 컴파일 툴체인과 실행 이미지의 적재를 위한 퓨징 엔진을 포함한다. 이 원격 개발 IDE는 Nano Qplus 응용 소프트웨어의 개발 언어인 C 언어에 특화된 프로젝트 관리자와 소스 편집기를 의미한다. 원격 개발을 위한 프로젝트 관리자와 소스 편집기는 Eclipse 플랫폼이 기본적으로 지원하는 텍스트 편집기와 프로젝트 관리자를 확장하여 원격 응용 프로그램 개발에 적합한 기능을 수행한다.크로스 컴파일 툴체인은 GNU의 binutils, gcc와 같은 공개 소스를 기반으로 타깃 센서 노드를 구동하는 AVR 코어를 지원하도록 패키징 된 도구이다. 크로스 컴파일 툴체인은 C/C++ 소스 프로그램을 컴파일, 링크 할 수 있은 컴파일러, 컴파일 된 바이너리 코드를 조작할 수 있는 바이너리 유틸리티들을 포함한다.퓨징 엔진은 개발이 완료된 실행 이미지를 ISP 어댑터를 이용하여 타깃 센서 노드의 프로그램 메모리에 다운로드 하는 기능을 담당하며, 오픈 소스 프로젝트인 avrdude를 기반으로 구현되었다.일반적으로 USN을 구성하는 타깃 센서 노드의 프로그램 메모리 사이즈는 8~128KB로 극히 제한적이다. 따라서 운영체제가 지원하는 모든 모듈들을 센서 노드에 적재하는 것은 현실적으로 불가능하며, 개발하는 응용 소프트웨어의 성격에 따라 요구되는 모듈들만으로 커널을 구성하는 것이 필수적이다. 이러한 맥락에서 Nano Esto는 GUI 기반의 커널 설정 도구(Target Builder)를 지원하고 있으며, 이는 각 모듈들의 의존성을 자동으로 검사하고, 원격 개발 IDE와 연계하여 선택된 모듈에 대한 기본적인 스켈레톤 코드를 생성한다.NanoEsto는 JTAG 기반 하드웨어 디버거와 에뮬레이터 기반 디버거를 지원한다. 전자는 응용 프로그램이 직접 타깃 센서 노드에서 동작하는 on-line 환경에서의 디버깅 기능을 담당하며, 후자는 타깃 센서 노드가 없는 off-line 환경에서의 디버깅 기능을 담당한다. 두 디버거는 동일한 사용자 인터페이스를 갖으며, 개발자의 요구에 따라 변수, 레지스터, 메모리, 스택 등의 정보를 제공한다.센서 네트워크 시뮬레이터는 센서 네트워크 환경에서 센서 노드 개발 이전에 센서 네트워크용 프로그램을 검증할 수 있는 도구로서, 기계어 수준의 명령어 시뮬레이션 방법을 사용하여 실제 타깃 센서 노드의 동작을 시뮬레이션 한다. 이를 통해 센서 노드에 탑재되는 응용 소프트웨어 및 운영 체제의 동작과 네트워크의 안정성을 검증할 수 있으며, 일례로 센서 노드의 위치 및 통신 환경을 고려한 네트워크 시뮬레이션이 가능하다.수 백, 수천 개의 센서 노드들이 분산 배치되는 센서 네트워크 환경에서 사람이 일일이 각각의 컴퓨터의 상태를 관리하는 일은 거의 불가능하다. 특히, 각 노드들의 배터리가 방전되면, 이들을 매 번 교체할 수 없으므로, 노드로서의 수명을 다한 것으로 센서 네크워크에서 제외하는 것이 일반적이다. 따라서 센서노드의 전력소모를 최소화, 최적화하는 노력은 중요하다. 시뮬레이션 기반 전력 분석 도구는 이와 같은 문제점을 해결하기 위하여 시뮬레이션 기반의 센서 네트워크 전력 소모량 분석 기능을 제공한다. 센서 네트워크를 실제 환경에 설치하기 이전에 시뮬레이션을 통하여 센서네트워크에서 소비하게 될 전력상황을 노드마다 정확히 추정할 수 있는 도구이다.맺음말WindRiver, TimeSys, MontaVista 등 임베디드 운영체제 벤더들은 이클립스 기반의 소프트웨어 통합개발환경 성능 강화에 힘을 쏟고 있다. Qplus용 통합개발환경인 Esto도 이들 업체보다 한발 앞서 다양한 기능들을 추가해 나아가고 있다. 예를 들어, 모바일 소프트웨어를 위한 전력 분석 및 최적화 도구, 리눅스용 디바이스 드라이버 개발 도구 등이 Esto가 가진 보다 미래지향적인 도구들이라고 할 수 있겠다. 특히, 세계 최초의 센서 네트워크용 통합 개발 도구인 Nano Esto는 세계 시장을 선점할 가능성이 상당히 큰 도구라 할 수 있다.Esto, Nao Esto 모두가 이클립스 기반으로 개발되고 있어 다양한 기능의 새로운 도구로 확장이 용이하며, 다양한 플랫폼을 지원하는 도구를 개발하는데 투자 대비 효과가 매우 높아 지속적으로 기능을 추가하고 다양한 플랫폼을 지원해 나갈 계획이다. 2006년 향후 3개년 추가 개발 계획이 확정되었으며, 이 기간 동안에 Esto는 타깃 시스템에 투명한 호스트 중심의 크로스 개발 환경을 제공하고 멀티 코어 디버깅 기능을 제공하는 통합개발도구로 발전시킬 계획이다.2005년 초 세계 1위의 POS 단말 업체에 수출한 Esto는 2006년 추가 구매 계약을 앞두고 있고, 국내 대기업들이 사용하려고 하고 있다. 또한 Nano Esto는 2006년도 상반기에 시작할 예정인 EU-한국 공동 과제에 NanoQplus와 함께 개발 솔루션으로 사용하기로 결정되어 유럽 시장에 우리 기술이 선전할 수 있는 좋은 기회를 가지게 되었다. 이 기회를 활용하여 대한민국 토종인 Esto가 세계로 뻗어나갈 수 있도록 노력할 것을 독자들에게 약속드리며, 아울러 국내 여러 개발자들이 Esto를 직접 사용해보기를 권하는 바이다.쪹 연재순서임베디드 SW 시스템 개발을 위한 리눅스 기반 솔루션 소개1회 임베디드 SW 표준 플랫폼의 기반이 되는 임베디드 운영체제 Qplus2회 임베디드 SW 개발도구 Esto3회 센서 네트워크용 나노 운영체제 Nano Qplus4회 임베디드 리눅스 기반의 로봇, 텔레매틱스 SW 플랫폼5회 임베디드 리눅스 기반의 엔터테인먼트 센터6회 임베디드 리눅스 기반의 H. 264 코덱 개발을 통한 IP Set top BoxETRI 임베디드 S/W 연구단www.qplus.or.kr새로운 유비쿼터스 컴퓨팅 시대가 우리 주변에서 소리없이 진행되고 있습니다. 임베디드 SW 연구단에서는 이전부터 이러한 유비쿼터스 컴퓨팅 시대의 핵심 소프트웨어인 임베디드 소프트웨어 기술을 확보하고 있으며, 이 기술들을 토대로 우리나라 산업이 세계적인 경쟁력을 갖도록, 표준, 마이크로, 나노형 임베디드 SW 플랫폼 개발에서 미들웨어 플랫폼 및 응용 소프트웨어 개발, 나아가 다양한 응용 시제품 개발까지 그 연구 영역을 확대해 나가고 있습니다.
이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지