목차 임베디드 시스템의 이해 임베디드 리눅스 임베디드 시스템 개발 구조 및 환경
임베디드 시스템의 이해 임베디드 시스템이란 정해진 특정 기능을 수행하기 위해 하드웨어와 소프트웨어가 내장된 전자제어 시스템을 말한다. 즉 단순 회로만으로 구성된 장치가 아닌 마이크로 프로세서가 내장되어 있고, 이것을 운영하여 원하는 작업을 수행 및 관리하는 프로그램이 포함된 시스템을 의미한다. “컴퓨터 하드웨어와 소프트웨어가 조합되어 특정한 목적을 수행하는 시스템” H/W : 마이크로프로세서/컨트롤러, 메모리, 센서, 구동기 등 S/W : OS, 디바이스 드라이버, 응용프로그램, 네트워크 응용 등 마이크로 컨트롤러 :마이크로 프로세서와 I/O 장치를 하나의 칩에 집적시켜 각종제어들에 유용하게 활용될 수 있도록 만든 칩 마이크로 프로세서 : 컴퓨터의 연산장치와 제어장치를 1개의 작은 실리콘 칩에 집적시킨 처리장치
임베디드 시스템의 이해 임베디드 시스템의 특징 하드웨어 소프트웨어 가격 안정성 실시간성 마이크로프로세스 메모리 주변장치 임베디드 시스템을 구성하는 가장 중요한 하드웨어 구성요소 주로 8비트/16비트/32비트 CPU를 탑재 메모리 램, 롬, 플래시 메모리 소프트웨어를 내장하고 있거나 소프트웨어를 실행하는 공간을 마련 주변장치 PC에서의 입출력 장치 : 키보드와 마우스 임베디드 시스템 입력 장치 : 센서, 버튼, 다이얼 등 출력 장치 : 소형 LCD, 사람의 목소리나 음악, 통신 신호등 소프트웨어 하드웨어와 밀접한 연관이 있기 때문에, CPU가 동일하더라도 환경이 조금만 달라지면 동작하지 않는다. 가격 PC는 현재 나온 최신 기술을 모두 적용하는 동시에 확장성까지 고려하여 많은 기능을 추가하지만, 임베디드 시스템은 꼭 필요한 기능 이외에 기능은 추가하지 않는다. 안정성 나쁜 기후 조건에서도 동작을 해야 하고 정밀한 동작을 보장해야 한다. 실시간성 작은 오차가 누적되면 시스템에 영향을 미치기 때문에 실시간으로 자료를 처리해야한다. 메모리 마이크로프로세스 내부에 램이나 플래시가 들어있는 제품도 있지만, 그렇지 않은 제품이거나 기억장소가 더 많이 필요해 외부에 램이나 플래시를 달아야하는 경우도 있다. 주변장치 : 버튼을 누르면 음악이 나오는 어린이용 장난감에서 생각해보면 입/출력 장치를 이해하기 쉬울 것이다. 한마디로 임베디드 시스템을 구성하는 주변 장치는 찬차만별이다. 소프트웨어 : 일반 PC에서 동작하는 소프트웨어는 여기저기 옮겨져도 특별한 상황이 아닌 이상 잘 동작하지만 임베디드 소프트웨어는 그렇지 않다. 메모리 크기만 바뀌어도 pc는 이상없이 돌아가지만 임베디드 장비는 동작하지 않는다. 안정성 : PC는 집혹은 사무실과 같은 좋은 환경에서 운영하지만, 임베디드 시스템은 저온/고온/고습등의 기후에도 동작을 해야한다. 기온이 영하로 떨어졌다고 전화기가 동작하지 않는다거나 여름이라 자동차의 시동이 걸리지 않고 엔진제어가 불가능하다면 제품 자체를 판매할 수 없다. MRI나 라식 수술과 같은 의료장비는 조금만 잘못되면 인명피해가 날 수 있으므로, 정밀한 동작을 보장해야한다. 실시간성 : 미사일 유도 시스템은 주변 지형에 따른 즉각적인 판단 기능에 의존한다. 작은 오차가 누적되면 큰 오차를 낳기 때문에 실시간으로 자료를 처리해야한다.
임베디드 시스템의 이해 임베디드 소프트웨어 정의 특징 임베디드 소프트웨어는 주로 하드웨어를 제어하기 위한 임베디드 시스템에 들어가는 명령어 집합으로 하드웨어를 제어하고, 하드웨어 운영에 필요한 정보를 사용자에게 보여주고 사용자로부터 받는 역할을 한다. 센서와 통신 장비를 통해 들어오는 외부 자극을 처리하는 사건 구동 방식으로 동작하는 특성이 있으며, 작은 메모리와 비교적 느린 CPU에서 동작하도록 구현한다. 특징 크기 일반적으로 크기가 작다. 호환성 호환성 측면에서는 0점 특수성 특수 작업을 위해서 소프트웨어를 개발 실시간성 센서나 기계를 제어하는 임베디드 소프트웨어는 실시간성이 매우 중요 사용자 인터페이스 기계를 제어하는데 필요한 최소 정보만 보여주고 최소 입력만 받을 수 있어야 하기 때문에 사용자 인터페이스가 제한적 크기 8비트 CPU로 제어할 수 있는 메모리 공간은 보통 64KByte정도이고 가장 대표적인 그래픽 툴킷인 Qt 임베디드는 라이브러리 크기만 800KByte가 넘는다. 호환성 각기 다른 하드웨어를 지원해야 하므로 인터럽트,DMA,I/O를 처리하는 최적화 코드를 사용한다.프로토콜(RS-232(직렬),IrDA(적외선))은 표준화 작업으로 인해서 호환성이 높은편이다. 사용자 인터페이스 공유기의 경우 사용자 인터페이스로 웹을 사용한다.
임베디드 시스템의 이해 임베디드 시스템 응용 분야 정보가전 가정자동화(HA : Home Automation) 인터넷 냉장고, HDTV, 인터넷 전자레인지, DVR, 세탁기 등 가정자동화(HA : Home Automation) 공장자동화(FA : Factory Automation) 정보단말기기 핸드폰, PDA, 스마트폰, MP3 플레이어, 게임기기 등 통신기기 디지털 교환기, 라우터, 게이트웨이, 공유기, Set-top Box 항공기/우주왕복선 물류/금융 물류 : POS(Point Of Sale) 단말기 금융 : 자동 현금 입출금기 혹은 ATM 단말기 사무용기기/의료 프린터, 스캐너, 팩스, 복사기, 이들의 기능을 하나로 모은 복합기 등
임베디드 리눅스 임베디드 시스템에서 OS가 필요한 이유 임베디드 시스템에 사용되는 OS 시스템의 규모가 커짐 “기존의 시스템 고유 기능 + Network + Multimedia” 기능이 하나의 시스템으로 구성 되어지고 있다. 순차적인 프로그램이 어렵게 됨 빠른 개발과 유지 보수의 필요성 새로운 요구 상황에 맞게 프로그램을 수정, 다운로딩이 용이 새롭게 생겨나는 고품질의 창조형 서비스를 적시에 제공하기 위해 임베디드 시스템에 사용되는 OS Real Time OS VxWorks pSOS VRTX 일반 임베디드 OS Embeded linux Windows CE, Mobile, XP embedded 등 Embeded java
임베디드 리눅스 임베디드 리눅스란 임베디드 리눅스의 특성 저 성능의 프로세서와 소용량의 메모리를 가진 임베디드 시스템용으로 개발된 리눅스이다. 임베디드 리눅스의 특성 리눅스 자체의 크기와 기능을 최소화, 경량화 됨. 목표로 하는 시스템에 맞게 쉽게 재구성이 가능하다. 임베디드 리눅스의 성능이 최적화되어있다.
임베디드 리눅스 기존 상용 임베디드 OS의 단점 임베디드 리눅스의 장점 크기가 너무 크고 커널의 재구성이 비교적 용이하지 않다. 다양한 시스템을 구성하기 힘들다. 이동형 장비의 자원 한계의 벽에 이루기가 쉽다. 초기 구입비와 사용료(로열티)가 너무 비싸다. 대중화 상용화에 걸림돌이 될 수 있다. 커널이 오픈 소스가 아니다. 개발자도 한 사람의 사용자, OS에 대한 기술 축적불가 일반인에게 잘 알려져 있지 않다. 임베디드 리눅스의 장점 리눅스는 오래되고 많은 사람이 사용한다. 검증이 되었고, 안정적이고 다양한 기능을 수용 할 수 있다. open source, open architecture이다. 수많은 개발자에 의하여 발전된다. 개발자 필요에 의하여 변경 가능하며 문제점 해결 할 수 있다. 소규모 모듈단위로 설계되어 있다 구조 변경 및 재구성이 용이하다. Real Time운영을 지원한다. 상용 OS에 열세였던 Real Time성을 확보 하여 다양한 분야에 적용 가능하다.
임베디드 시스템 개발 구조 및 환경 임베디드 시스템 개발 구조 임베디드 시스템의 개발은 크게 3가지의 독립된 분야가 유기적으로 결합되어 있다. 임베디드 시스템 개발 임베디드 소프트웨어 개발 OS개발 또는 포팅 디바이스 드라이버 개발 하드웨어 개발
임베디드 시스템 개발 구조 및 환경 TARGET HOST 일반적인 임베디드 S/W 개발 환경 구성 Target Server LAN GUI Development Tools Target Server Debug Agent Embeded Application Serial Library Sub-system Core OS JTAG Simulation Environment Kernel
임베디드 시스템 개발 구조 및 환경 호스트 PC(Linux)의 기본 프로그램 Cross Compiler ToolChain 호스트 컴퓨터와 타겟 보드(EMPOSII)에서 사용하는 프로세서가 다를 경우 타겟 보드에서 실행될 수 있도록 프로그램을 컴파일해주는 툴체인 JTAG 프로그램 호스트 컴퓨터에서 타겟 보드의 Flash ROM에 프로그램(부트로더)을 다운로딩하는 프로그램 (퓨징 작업) Terminal 프로그램 타겟 보드에서 일어나는 진행 상황을 호스트 컴퓨터에서 볼 수 있도록 모니터링 할 수 있는 통신 프로그램 타겟 보드에 명령을 입력할 수 있는 통신 프로그램 minicom (Linux) Hyper Terminal (MS Windows) bootp, tftp, nfs service 호스트 컴퓨터와 타겟 보드 사이의 통신을 원할 하게 해주는 응용 프로그램
임베디드 시스템 개발 구조 및 환경 타겟보드(XM-Bulverde)의 기본 프로그램 Bootloader Linux Kernel 타겟 보드 부팅시 하드웨어를 초기화하고, 커널을 램에 올린 후 실행권한을 커널로 전달하는 프로그램 Linux Kernel 타겟 보드의 시스템(Linux) 구동에 필요한 환경을 만들고 타겟 보드 상에서 수행되는 자원을 관리하는 소프트웨어 File System 파일 시스템은 파일을 디스크나 기타 미디어에 저장하는 방식과 그에 연관된 연산(operation)및 자료 구조를 포괄적으로 포함 ext2, jffs2 Device Driver 주변 하드웨어를 제어하기 위한 프로그램 Application GPS, tcpdump, MediaPlayer 등