|
Linux OS (Operating System)는 1991년 9월 핀란드 헬싱키 대학교 대학원생이던 라이너스 토발즈 (Linus Benedict Torvalds)에 의해 처음 세상에 발표되었다. 원래 Linux는 작은 규모의 Multitask용 Unix인 Minix라는 OS를 수정하여 Intel 386 CPU에서 작동하도록 만든 OS였으나, 현재 다양한 CPU 위에서 작동하는 범용 OS로 발전하고 있다.
임베디드 시스템이란 자동차, 가전제품, 이동전화기, PDA등의 기계가 특정한 기능을 수행할 수 있도록, 기계 내부의 CPU를 포함한 H/W와 특정 기능을 제어하는 S/W가 조합된 컴퓨터 제어 시스템이다. 임베디드 Linux 시스템이란 Linux 라는 OS를 기반으로 하여 특정 목적에 맞는 제어환경을 구축한 시스템을 말한다. 임베디드 Linux의 응용 범위는 각종 전자기기, 가전제품, PDA, set-top box, 이동전화기, 라우터, 의료 및 산업원격 조종 장비(로봇), 우주선 등 여러 분야에서 활용되고 있다.
현재 WindowsCE와 Palm OS등이 임베디드 시장의 주류를 이루고 있으나 용량이 크고 가격이 비싸다. 이에 비해 Linux는 운영체제로서 용량이 작고 가격이 저렴하며 기기간 호환이 자유롭다는 장점을 가진다. 최근 미국, 일본, 유럽 등에서는 통신용 이외에 산업용으로 그 사용 영역이 확대되면서 임베디드 Linux 시장의 성장 가능성을 더욱 높이고 있다. 국내에서는 무선 인터넷이 급속히 부상하면서 지능형 단말기 수요가 증가하고 있고, 휴대폰 제조업체에서도 관심을 가지며, 개발업체도 기존 Linux 사업보다 수익성이 좋기 때문에 휴대폰, 공장 자동화 장비, 산업용 로봇 등 많은 분야에서 Linux 기술을 채택하고 있다.
사업영역
각종 전자 제품
최근 출시되는 전자 제품 중에는 마이크로프로세서나 프로그램을 탑재하지 않은 제품은 거의 없다. 이런 임베디드 시스템의 예로는, 주위의 밝기에 따라 조도가 바뀌는 스탠드, 자동 온도 조절 에어컨, 다양한 편리기능을 갖춘 TV, TV에 장착해 인터넷 서비스를 구현하는 set-top box, 냉장고, 전자 레인지, 밥솥 등 다양하다. 이제는 TV나 냉장고등의 가전제품 들도 인터넷과 결합하여 스스로 인터넷 상에서 정보를 얻어오거나 인터넷을 통해 통제를 받는 기능도 추가되는 추세이다.
공장 자동화
공장 자동화의 발전은 임베디드 시스템의 발전과 역사가 비슷한데 이의 최종 목표는 무인화(unmanned) 이다. 각급 공장의 생산라인 시스템을 제어, 감시 및 자동화 할 수 있고, 생산 과정에서 얻어지는 각종 생산 자료 및 정보들을 자동 제어 시스템이 데이터 베이스에 저장한다. 다른 시스템과의 네트웍 구축을 통해 생산 및 결과 통보를 용이하게 한다.
가정 자동화
컴퓨터와 통신 및 반도체 기술을 응용하여 일상 생활을 자동화 시킨 가정을 구현하는데 그 목적이 있으며, 인터넷을 통해 홈뱅킹, 진료, 학습정보, 생활정보 등을 얻으며, 조명, 수도, 난방, 가전제품 등을 제어한다. HomeRF (http://www.homerf.org/) 에서 제작된, 가정용 무선 음성-Data 네트웍의 표준인 SWAP(Shared Wireless Access Protocol) 이 제작되는 등, 무선을 이용한 가정 자동화 시스템이 활발히 보급될 것이다
PDA (Personal Digital Assistant)
노트북 보다 작은 소형 컴퓨터로 일정관리, 주소록, 메모장 등 개인정보 관리 프로그램 등을 제공하고, PC와 연결하여 자유로이 자료를 교환하며, 응용 프로그램을 추가할 수 있다. 무선 통신의 발달로 PDA를 통해 인터넷 접속이 가능하며 웹 페이지 검색, email 송수신, PC통신, 주식매매 등 PC에서 하던 기능을 PDA에서도 이용할 수 있다.
기술적 세부사항
임베디드 OS의 종류
상용 RTOS (Real Time OS)
RTOS는 그 종류가 너무 많은데, 그 이유는 데스크탑 시장처럼 특정 OS가 임베디드 OS 시장을 점유하는 것이 아니기 때문이다. Real Time에 대한 프로세스 지원이 강력하고 통합 개발 및 디버깅 환경을 지원하지만, 라이센스 비용이 높다. 대표적으로 WindRiver와 통합된 ISI의 pSOSystem, 화성 착륙선 PathFinder의 운영체제로 쓰인 WindRiver의 VxWorks, Mentor Graphics의 VRTX 등이 있다.
Windows CE
CE는 Microsoft에서 제작된 기존의 Windows 인터페이스에 모바일 네트웍 기능을 강화하여, 가전제품, PDA, 자동차 set-top box 등에 사용되는 OS이다. 적외선 통신, 웹 브라우징 등의 기능 이외에 편리한 개발 환경을 가지고 있다. 그러나 완전한 RTOS가 아니며,요구되는 H/W 사양이 높다.
임베디드 Linux
Linux는 초기 PC나 서버급 시스템에 포팅이 되어 사용되다가 임베디드 시스템으로도 많이 사용된다. Motorola에서는 ColdFire에 uClinux를 포팅하여 네트웍 장비를 개발하였다.
GMATE (http://www.gmate.co.kr/) 에서 만든 PDA인 YOPI는 StrongARM 시스템에 Linux를 포팅 하였으며 GUI의 기능을 부가하기 위해 덩치가 큰 X-Window대신 W-window를 사용하였다. MGR(ManaGeR)은 X-windows의 일부를 효율적으로 사용했으며, microwindows는 가벼운 임베디드 시스템용 GUI를 제공한다.
Linux는 상용 임베디드 OS 보다는 실시간적 요소를 충족하지 못하고 WindowsCE 보다는 개발환경이 좋지는 않지만, 오픈 소스에 라이센스 비용이 없기 때문에, 커널을 크기를 줄여 PDA등의 제품에 사용하면 유리하다.
Real Time Linux
기존의 Linux는 round robin 방식의 스케줄링을 하므로 Real-Time 에는 적합하지 않다. RT-Linux는 New Mexico Tech에서 기존 Linux 커널에 real-time기능을 추가하였다. 기존의 커널은 우선순위가 가장 낮은 태스크로 두고, 다른 Real-Time Task들이 없으면 비로소 실행된다.
Palm OS
Palm OS는 현재 PDA 분야에서 가장 많이 사용되는 운영체제이다. 대표적인 PDA인 팜 시리즈의 기본 OS이기 때문이다. 팜OS의 장점은 사용자가 많아 응용 프로그램도 가장 많이 개발돼 있다는 점이다. 현재 5천여개의 응용 소프트웨어가 있으며, 지금도 매일 3~4개씩 새로운 팜OS용 소프트웨어가 등장하고 있다.
Java와 Java Chip
Java의 장점은 어떤 시스템에서도 Java API와 JVM만 있으면 Java 코드가 이식이 가능하다는 것이다. RTOS가 포팅된 시스템에 Java API와 JVM을 내장하면 그 위에서 어떤 Java application 이나 applet이 실행 가능하다. JavaChip은 Java 코드를 마이크로 프로세서에서 직접 실행해 프로그램의 수행속도를 빠르게 하기위해 Sun에서 제작한 프로세서이다. picoJava는 PDA, 스마트폰, 프린터등에 사용되고, microJava는 네트웍 제어기나 텔레콤 장비 등에 사용되며, UltraJava는 3D 그래픽스나 멀티미디어 프로그램용 데스크탑 환경의 시스템에 사용된다.
Linux를 임베디드 시스템에 사용하는 이유
1) Linux는 다수의 사용자가 이용하는 안정되고 검증된 운영체제 이다.
2) 네트웍 구현이 뛰어나고, POSIX, CORBA, Java, HTTP등의 프로그래밍 표준을 지원한다.
3) 초기 구입비와 라이센스 비용 부담이 없으며 소스가 공개되어 있다.
4) 빠른 버그 리포팅이 전 세계적으로 이루어진다.
5) 여러 CPU를 지원하므로 이기종간의 포팅이 수월하다.
6) 일반적인 임베디드 환경에서 요구되는 메모리 및 기타 제약사항에 대한 만족할 만한 해결책을 가지고 있다.
임베디드 Linux의 적용분야
Networking Application : 강력한 Linux의 네트웍 기능을 임베디드 시스템에 적용한 라우터 등의 통신장비가 발표되고 있으며, Remote Access Server, Internet set-top-box, Digital TV등 인터넷 접속이 필요한 전자제품에 활용될 수 있다.
Mobile Computing : 스마트폰 이나 PDA, 팜탑 컴퓨터 등의 handheld 기기에 적용하여 안정적이고 다양한 서비스를 구현할 수 있다. 또한 웹 서버를 내장한 형태의 웹 기반 응용 장치들도 구현할 수 있다.
기타 : 빌딩 자동화 기기, 무인 판매장치 제어기, 엘리베이터 제어기, 산업용 기기 감시기 등 기존에 다른 환경에서 동작하던 시스템을 Linux로 대체할 수 있다.
Linux의 Porting 현황
1) Motorola Processors: Linux/M68K (MC68000), Linux/PPC (PowerPC)
2) SPARC: S/Linux (SPARCstation), UltraLinux (Sun UltraSPARC)
3) Compaq (Digital): VAXlinux (VAX computer), Linux/Alpha
4) ARM Linux: Intel ARM and StrongARM processor
5) MIPS: Linux/MIPS (MIPS 4x00 processors)
6) Handheld: Transmeta’s Crusoe processor, Linux/PalmPilot, ELKS, Bromcom’s SC400 PDA, Psion’s SIBO architecture, LinuxCE.
7) SMP and Clustering: Beowulf Project (parallel cluster), MOSIX (a bridge between SMP and MPP), Linux SMP (multiprocessor)
8) Linux on IBM mainframe 370/390, AS/400, IBM 4758 PCI Cryptographic Coprocessor, MTD (Memory Technology Device) system
임베디드 리눅스 포팅작업 순서
크로스 개발환경 구축
현재 사용하는 호스트 시스템에, 포팅 하고자 하는 타겟 보드 개발이 가능하도록 크로스 개발 환경을 구성하여야 한다. 타겟 보드용 모니터 프로그램이 없는 경우는 미리 작성하여야 한다.
부트 로더 구성
새로운 보드를 위해 새로운 부팅 과정의 내용을 추가해야 한다. 전형적인 임베디드 보드는 코드와 데이터가 초기화 롬에 내장되거나 네트웍을 통해 다운로드 할 수 있다.
커널 수정
포팅에서 가장 어려운 부분으로 Linux를 새로운 보드에 이식할 때 소스를 수정하여야 한다. 보드에 의존적인 코드는 Linux가 지원되는 프로세서라 할지라도 수정되어야 한다.
커널 및 부트 이미지 생성
전체 부트 이미지는 커널 이미지와 루트 파일 이미지를 필요로 한다. 컴파일과 링킹이 끝난 바이너리 커널 이미지를 압축하고, 파일 시스템 및 스크립트, 설정파일 등을 압축하여 이를 이용해 타겟 보드에서 부팅을 한다. 시스템 부팅 중 버그가 발견되면 gdb등으로 디버깅해 재시행한다.
임베디드 리눅스 프로젝트
Linux는 PC 이외에 다른 특수한 분야의 OS로 포팅 되었는데, 주로 PC와는 다른 환경과 구조를 갖는 컴퓨터 들이다. 산업 자동화와 군사용으로 쓰이는 VME 시스템용 OS로 Linux가 사용되고 있다. MITRE는 군사용 장비 제조 업체로 탱크, 장갑차, 아파치 헬기 제어용으로 PowerPC603 기반의 VME 보드에 Linux를 포팅했다.
NASA는 Intel 80960 CPU에 Linux를 포팅해 네트웍 장비를 개발했다. uClinux, ELKS (커널 200K)등 작은 크기의 Linux들은 PDA 같은 휴대용 장비를 겨냥한다. etLinux, EMJLinux 등은 x86 계열의 임베디드 Linux용 프로젝트이고, Lynx Real-Time System사의 BlueCat Linux, Lineo의 Embedix, Montavista의 HardHat Linux등의 상용 임베디드 Linux 시스템도 출시되고 있다.
임베디드 Linux의 미래
임베디드 Linux 가 본격 등장하기 시작한 것은 97년경이다. 미국을 중심으로 Linux를 더 작게 만든 임베디드 Linux가 선보였다. 이 제품은 당시 미 국방부에서 채택해 아파치 헬기의 제어기에 Linux가 내장되어 기기 제어를 담당했다. Linux는 kernel 크기가 작고 OS 사용료가 없으며 공개된 많은 프로그램들을 이용할 수 있어 임베디드 시장에서 각광을 받고 있다.
사용자의 요구와 장비들이 고급화되면서 이에 적절한 개발환경이 요구되는데, 이미 많은 S/W와 H/W가 Linux로 포팅되면서 다양한 요구들을 충족시키고 있다. 국내에서는 ARM은 주로 PDA나 스마트폰 같은 곳에 응용되고, PowerPC는 ADSL 모뎀이나 라우터 등에 응용되고 있다. InternetWeek에 따르면 MS의 기업분할 움직임과 관련해 미국의 IT 관련업계 책임자의 53%가 Windows의 대안을 모색하고 있으며, 그 중 96%가 Linux를 선택하겠다고 응답했다.
임베디드 Linux의 응용분야는 다양하다. 선진국에서는 PDA, 가정 자동화, 통신용 시스템 뿐만 아니라 산업용으로도 개발되고 있다. 국내에서도 PDA, 스마트폰, Set-Top Box등의 제품이 개발되었고 산업 각 분야에서도 Linux를 응용한 사례가 늘어나고 있다.