저자: 임영규 / GNOME Linux 연구소 /
imlinux70@hanafos.com
1. 서론
임베디드 산업의 육성 산업과 맞물려 임베디드 응용 프로그램 개발 및 개발용 테스트 보드의 개발이 상당한 발전을 거듭하고 있다. 이러한 환경에서 임베디드 시스템 기반의 응용 프로그램 개발에 많은 괌심을 가지는 이들을 중심으로 커뮤니티가 생겨나고 또한 많은 커뮤니티 들이 활동하고 있다. 리눅스를 기반으로 한 임베디드 시스템을 위한 응용 프로그램 개발 과정에 대한 전반적 과정을 살펴 보기로 한다.
2. 본론
임베디드 시스템에 적용하기 위한 응용 프로그램을 개발하기 위해서는 다음과 같은 몇단계의 작업을 필요로 한다.
1. 크로스 개발 툴의 생성 또는 상용 제품의 구매
2. 커널 컴파일
3. 디바이스 드라이버 또는 응용 프로그램의 개발
2.1 크로스 개발 툴의 생성
크로스 개발 툴이라 함은 호스트 컴퓨터(개발용)와 개발 대상의 임베디드 시스템, 즉 타겟 보드의 CPU가 서로 상이한 경우 개발할 응용 프로그램이 타겟 보드에서 실행 가능 하도록 호스트 컴퓨터에서 미리 프로그램을 컴파일 하여 이진파일을 생성하는 툴이라 하겠다. 이러한 크로스 개발 툴은 이미 많은 커뮤니티 또는 타겟보드 개발 업체에서 만들어 배포하고 있다. 따라서 쉽게 설치하여 사용할 수 있다. 개발 툴 생성과정은 쉽게 타겟 보드의 CPU 어셈블 코드를 생성하기 위한 컴파일러, 로더, 라이브러리를 생성하는 과정이 되겠다. 여기에는 binutils, gcc, glib가 있다. 최근에는 ARM core기반의 다양한 CPU가 등장하고 있다. 예를 들면 ARM920T, S3C2410과, SA1110 같은CPU가 그것들이다.
코드워리어나 비주얼 에스토와 같은 이미 상용화된 통합환경 개발툴이 있다. 코드워리어는 윈도우 기반의 통합 개발환경을 제공해 주는데 이것은 윈도우용과 리눅스 용으로 나뉘어져 있으며 모두 윈도우 운영체제에서 실행된다. 이것은 ADS라고도 불린다. 윈도우 버전의 경우 cywin을 설치하여야 한다. 비주얼 에스토 역시 cywin과 함께 사용할 수 있는 윈도우 버전이 있다.
2.2 커널 컴파일
커널 컴파일 과정은 사용할 리눅스 커널을 다운로드 받아 타겟 보드에서 사용한 CPU의 패치를 적용하는 과정으로 이루어진다. 앞서 설명한 크로스 컴파일 제작 과정은 다소 복잡하지만 이 과정은 매우 간단하다고 할 수 있다. 크로스 컴파일 제작 과정은 리눅스 배포판 버전에 따라 에러를 동반하는 경우가 많아 에러를 수정하기에 매우 까다로운 점이 없지 않다. 리눅스 컴파일 과정 중 제일 마지막 단계는 타겟 보드에 특화된 패치를 가하는 경우이다. 이는 타겟 보드를 하드웨어적으로 구성할 때 해당 업체에서 타겟 보드의 특성을 리눅스가 지원 할 수 있도록 하기 위함이다. 즉 하드웨어를 어떻게 구성하느냐에 따라 패치가 결정된다. 리눅스 커널 컴파일 과정과 동일한 과정으로 타겟 보드를 위한 커널 컴파일 과정이라고 이해할 수 있다.
2.3 flow chat
임베디드 리눅스 시스템 개발을 위한 모형을 그림으로 나타내면 다음과 같이 이해 하 수 있다.
3. 결론
2.3에서 설명한 전체적인 흐름을 먼저 파악하였다면, 임베디드 시스템에 적용될 응용 프로그램은 쉽게 개발할 수 있다. 임베디드 기반의 응용 프로그램을 작성하는 것은 S/W적인 부분(순수 응용 프로그램)과 미들웨어 부분으로 나뉘어 질 수 있다는 것을 알 수 있다. 일반적으로 S/W 부분은 이미 웹상에 많이 공개되어 있는 소프트웨어를 재가공하는 과정이 상당하다. 따라서 임베디드 시스템 관련 프로그램을 작성한다는 것은 한편으로 미들웨어, 즉 시스템 프로그램과 디바이스 드라이버 개발이 그 목적이 된다고 하겠다. 따라서 하드웨어에 대한 이해와 문서를 잘 살펴보는 능력이 필요하다. 이것은 임베디드 시스템 개발에 있어 상당히 중요한 부분이다.
최근 교육용 임베디드 시스템 보드가 상당히 많이 출시되고 있다. 그러나 가격 면에서 비싸기 때문에 쉽게 일반 사용자들이 접하기 어려운 것이 사실이다. 가장 흥미롭게 또 유용하게 임베디드 시스템을 이용하고자 한다면 PDA가 그 대안이 될 것이다. PDA에 자신이 개발한 임베디드 시스템을 적재해 보고 또 PDA에서 자신의 프로그램을 실행시켜 볼 수 있다. 물론 결과를 잘 얻었다면 PDA 본연의 기능으로 환원시켜 일상 생활에 사용할 수 있을 것이다.
[ 참고 ]
1. www.hanback.co.kr
2. www.cosmo.re.kr
3. http://contest.kesic.or.kr
4. ITEXPERT, 임베디드 리눅스(한빛미디어, 2002)
5. 임베디드 리눅스 시스템 구현하기(한빛미디어, 2004)