Introduction to Embedded Linux
임베디드시스템 정의 어떤특정한기능을위해 Microprocessor/Microcontroller 가내장된시스템 특징 제한된하드웨어자원 ( 최소한의필요한자원 ) Processor, RAM, Flash memory, interfaces 경량의 OS 및 Real-Time OS 사용 WinCE, Vxworks, Nucleus
임베디드시스템의 H/W Expansion Port UART MPU RAM Ethernet JTAG I/F Flash Memory Target Board Block diagram JTAG(Joint Test Action Group: IEEE1149.1b)
운영체제 운영체제란? 자원관리자 (Resource Manager) 응용에게자원에대한서비스제공 (Computing Environment) 자원의종류 물리적인자원 : 처리기, 메모리, 디스크, 터미널, 네트웍,... 추상적인자원 : 태스크, 세그먼트 / 페이지, 파일, 드라이버, 통신프로토콜, 패킷, 보안,... ls, who, X window system Network package vi, emacs, Kernel Device Driver Hardware Compiler RDBMS
운영체제종류 RTOS(Real-Time OS) VxWorks, psos, Nucleus UNIX SVR4, Solaris BSD, HP-UX Linux Windows System Windows XP, 7, 10 Windows CE.NET
임베디드시스템의 OS 범용 OS (windows, Unix) RealTime OS (Vxworks, Nucleus) 범용 OS 모든태스크 (Task) 를공평하게처리 Real-Time OS 우선권이높은태스크부터처리
임베디드시스템의 OS Windows CE, Windows Embedded MS사에서임베디드시스템을위하여제공하는운영체제 기존의데스크탑 PC와동일한윈도우환경제공 데스크탑윈도우및응용프로그램과의호환성우수 프로그램개발환경이아주우수. ( 특히, GUI 개발환경우수 ) 실행환경에서요구되는 H/W 사양이높고, 가격이비쌈 MS사에서제공되는라이브러리에종속적
임베디드시스템의 OS 임베디드자바 SUN사에서제공하는 JAVA를이용한운영체제 임베디드환경에맞는개발환경을제공하고있으며웹기반의환경에우수 스크린폰, 셋톱박스등을중심으로사용 휴대폰등이동서비스 : K자바기반의 KVM(Kilobyte Virtual Machine) 기술을적용
임베디드시스템의 OS 리눅스 일반리눅스 일반테스크탑환경인고성능프로세서와대용량메모리환경에서동작하는범용컴퓨터용리눅스 임베디드리눅스 저성능의마이크로프로세서와제한된메모리환경에서동작하는임베디드시스템용리눅스
임베디드시스템의 OS Real-Time System 정의 정해진시간내에시스템이결과를출력하는시스템 주어진작업을빨리처리하는것이아니고정해진시간을넘어서는안된다는뜻임 임베디드시스템은대부분실시간적인요소내포 임베디드시스템에실시간시스템이포함됨 Hard real-time system/soft real-time system Hard real-time system 정해진시간내에작업의결과가절대적으로출력되어야하는시스템 시간내에처리되지않으면치명적인결과를초래하는경우 전투기의비행제어시스템, 핵발전소의제어시스템, 인공위성의제어시스템 Soft real-time system 정해진범위를넘는시간지연이발생하더라도그것이시스템의에러가되지않는시스템
임베디드시스템의 OS 실시간시스템에서의 S/W 간단하고단순한순차적인작업에관련 순차적인프로그램으로충분하였음 8bit, 16bit 마이크로프로세서및마이크로콘트롤러사용 임베디드시스템에서의운영체제 시스템의규모가커짐에따른 Multi Tasking 기능요구 Network 이나 multimedia 가시스템의기본으로자리잡음 Networking, GUI, Audio, Video 임베디드시스템의특성상실시간이라는요소를만족해야함 지능성이부가되고기능이많아지고복잡해짐 순차적인프로그램작성이불가능하여운영체제가도입됨
임베디드시스템의 OS 상용 RTOS : Hard Real-Time/Multi-thread/ Preemptive psos, VxWorks, VRTX 등다수 일반운영체제와거의같은기능을수행 시간제약성, 신뢰성등을일반운영체제보다중요시함 일반적으로한가지목적에최적화되어있음 임베디드 OS : Soft Real-Time/Multi-process/ non preemptive Windows CE 임베디드리눅스 임베디드자바 최근동향 임베디드 OS 세계시장 : 최근 WinCE, 임베디드리눅스가기존의 RTOS 보다시장점유율이높아지는추세 OS 선정 시스템의특성파악그시스템에적합한 OS 선정이매우중요
임베디드 OS 솔루션고려사항 -1 제품개발내용및범위의정의 비용, 시간, 안정성 Open source vs. Proprietary Product 직접개발 vs. 외주 (Outsourcing)
임베디드 OS 솔루션고려사항 -2 Open source 모든필요한것을찾을수있다 Setup Time?: 솔루션확보및환경구축 문제해결방법? 필요한기술력확보를위한기간? Proprietary Product 더편리하고효율적인툴 빠른 Setup Time 믿을수있는기술지원 종속성? 직접개발 제품유지보수의안정성 문제해결방법및기술지원 충분한개발인력확보 Outsourcing 빠른제품개발 제품유지보수문제
임베디드 OS 의주요개념 태스크 수행중인프로그램 (an instance of a running program) 프로그램의수행환경 (an execution environment of a program) 스케줄링단위 (scheduling entity) 제어흐름과주소공간의집합 (a control flow and address space) 멀티태스킹 여러개의태스크를동시에실행시키는것 일반 OS 에서의태스크 각태스크들은대분분무관한프로그램임 임베디드시스템에서의태스크 하나의큰응용프로그램을논리적으로나눈것 기능상매우밀접한관계 태스크사이에이루어지는작업들이많다. 응용프로그램을실행을위해여러기능들이동시실행요구 순차적이아닌동시실행의필요성이있다.
임베디드 OS 의주요개념 스케쥴러 (Scheduler) OS 의핵심기능 다음번에어떤태스크를실행해야하는지를결정하는코드부분 태스크선택정책 : 우선순위기반의스케쥴링 FIFO(First In First Out), Round-robin 등 선점 (Preemptive) 어떤태스크가수행되고있을때커널이중간에그태스크의수행을중지시키고다른태스크의기능을수행시키는기능 선점형커널 / 비선점형커널 다른태스크로실행이넘어갈때문맥전환 (context switching) 발생 Context switching 일단현재수행중인태스크상황하에서의시스템상태 ( 문맥 ) 를 TCB(Task Control Block) 이라는특정한자료구조에저장하고, 다음에새로운태스크의문맥을가져와시스템상태를복원한후에실행하는것 Context switching 은 overhead 이기때문에짧을수록효율적임 thread 의개념을통해이를보완하는방법
임베디드 OS 의주요개념 Mutual exclusion 두개의태스크가동시에하나의공유자원에접근하려고할때한태스크에게자원사용에대한배타적권리를보장하는것 Critical section : 공유자원을 access하는일련의코드부분 다른태스크에의해서중단되어서는안되는일련의명령혹은코드블록 상호배제기법 인터럽트발생을방지 Critical section에들어가기전에인터럽트를 disable시키고 (CLI) 빠져나오면서인터럽트를다시 enable 시키는방법 (STI) 단일 CPU의경우단순하게사용가능 semaphore 이용 semaphore를얻지못하면공유자원을얻을수없으며일단 semaphore 를얻으면공유자원을마음놓고쓸수있다. 다른태스크를위해서공유자원을다쓰면 semaphore를풀어야한다. Semaphore가 0 이면 waiting한다.
임베디드 OS 의주요개념 Semaphore 공유변수사용 mutual exclusion을만들어공유자원을제어 태스크사이의동기화에사용가능 사용방법 종류 공유자원에해당하는 semaphore를만든다. 공유자원을사용하기직전에해당 semaphore 얻는다. 변수값이 0이아닌경우그변수값을1 감소시킨다. 0이면양수가될때까지기다린다. (SLEEP상태) 공유자원을다쓰면그값을 1 증가시킨다. Binary semaphore : 공유자원의변수가 0,1인경우 Counting semaphore : 1이상의값
임베디드 OS 의주요개념 Task communication 태스크간에통신하는방법 Global variable 을쓰는방법 / message passing 방법 Global variable exclusive access를해야하며, ISR이포함된인터럽트를 disable해야한다. Task 사이에서는인터럽트를 disable하는방법외에 semaphore를사용할수있다. message passing Mailbox, queue, pipe message 의크기에따라결정됨 Task synchronization 태스크간의동기화기능 Semaphore/event flag/signal 등을사용
임베디드 OS 의주요개념 Interrupt service Asynchronous event를 CPU에알리는방법 Interrupt는외부에서들어오는중요한신호로서시간에민감한경우가있기때문에 interrupt latency가짧은것이좋음. ISR자체도짧은것이좋은데그이유는 ISR 자체가길어지면 interrupt nesting이되기쉽기때문. ISR에서는보통그에상응하는태스크수준의 service routine을부르고 (HISR) 끝나도록구성. HISR에서는마치태스크처럼존재해서수행이된다.
임베디드 OS 의주요개념 Reentrancy code 인터럽트, 선점의개념과연관 하나의함수를여러태스크가동시에수행가능 Reentrant하다 태스크 1에서함수 1을수행하다가도중에태스크 2로제어권이넘어가고이함수를다시호출해도함수 1이제대로동작하는것 전역변수를사용하지말것 전역변수는 shared resource이기때문에 mutual exclusive 하도록만들어주지못하는문제가생긴다. Reentrant하지못한 code는공유하지않거나, 공유해야하는경우에는 semaphore를쓴다거나동일우선순위를갖는태스크사이에서 round-robin을하지않아야한다.
임베디드리눅스 임베디드리눅스 임베디드시스템을위해경량화된리눅스 임베디드시스템에포팅 (Porting) 된리눅스 포팅 (Porting) 어떤프로그램을특정플랫폼에서동작될수있도록프로그래밍하는기술 예 윈도우기반의 MSN Messenger Linux 기반의 MSN Messeger Intel processor PC 기반의 Linux ARM processor 보드기반의 Linux
임베디드리눅스특징 장점 Open Source 학습용이 PowerPC, ARM, MIPS 등다양한 CPU Platform 지원함 로열티가없으므로가격경쟁력이우수 사용자층이넓어오류수정이빠르고안정성이우수 단점 커널크기 상용 RTOS< Linux < 범용 OS 완전하지못한 Real Time 제한적 preemption 개발환경의부족 일반적으로 Text 기반 불투명한안정성 GUI 환경을개발하기어려움 제품화하기위한솔루션구성이어려움 많은업체들과개발자들이독자적으로개발하고있어표준화가어려움
임베디드리눅스특징 커널버전의선택 임베디드시스템의크기를고려 필요한기능을고려 확장성을고려 커널버전 버전숫자 : X.Y.ZZ X: 커널의버전 Y: 릴리즈번호, 홀수-> 개발중, 짝수-> 안정된버전 ZZ : Modifications, 사소한변화를의미 최신버전 새로운다양한기능이이미추가되어있음 크기가매우크다는단점이있음
임베디드리눅스구성 커널이미지 bzimage
시스템호출, 라이브러리예
파일시스템
파일시스템 (Mount)
개발과정 H/W 개발 부트로더개발 커널포팅 디바이스드라이버개발 응용프로그램개발 시스템통합 ( 패키징 )
개발환경 -1
개발환경 -2 호스트시스템 일반 PC 또는워크스테이션 크로스컴파일 (Cross Compile) 환경이설정됨 타겟의모든 S/W 개발 시리얼라인을통하여타겟시스템의콘솔역할 TFTP, NFS 서비스제공 타겟시스템 리눅스를올릴장비 호스트시스템에서작성된 S/W들이다운로드되어실행됨 크로스컴파일 S/W 가타겟시스템 (processor) 에서돌아갈수있도록하는컴파일 호스트와타겟시스템은일반적으로프로세서가다름