임베디드 시스템 공부 정리
류명운
·2017. 11. 8. 09:45
* 본 포스팅은 "멀티캠퍼스 - 재미있는 임베디드 이야기" 강좌를 수료하면서 정리한 내용 입니다.
01. 임베디드 시스템이란?
임베디드 시스템이란 무엇인가?
- - 특정한 목적을 수행하도록 만든 컴퓨터로 사람의 개입 없이 작동 가능한 하드웨어와 소프트웨어의 결합체
- - 임베디드 시스템의 하드웨어는 특정 목적을 위해 설계됨
임베디드 시스템의 특징
- - 특정한 기능 수행
- - 실시간 처리
- - 대량 생산
- - 안정성
- - 배터리로 동작
임베디드 시스템의 응용 분야
- - 정보가전
- - 제어분야
- - 정보기기
- - 네트워크 기기
- - 게임기기
- - 항공/군용
- - 물류/금융
- - 차량/교통
- - 사무/의료
02. 임베디드 시스템의 구성요소
- - 임베디드 하드웨어
- - 임베디드 소프트웨어
임베디드 하드웨어의 구성요소 (CPU, 메모리, 입출력 장치, 통신 장치)
- - 입출력장치(LCD, 키보드, 버튼)
- - FLASH Memory -> 소프트웨어가 담겨있는 메모리
- - CPU(Central Processing Unit)
- - RAM -> 임시 메모리 저장
- - 통신장치(Ethernet, USB, IrDA, Rs-232)
- - 회로기판
임베디드 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 구분됨
- - 시스템 소프트웨어 : 시스템의 전체적인 운영을 담당하는 소프트웨어
- - 응용 소프트웨어 : 입출력 장치를 포함한 특수 용도의 작업 실행함으로써 사용자와 대면하는 소프트웨어
펌웨어 기반의 소프트웨어
- - 운영체제(OS)없이 하드웨어 시스템을 구동하기 위한 응용 프로그램
- - 간단한 임베디드 시스템의 소프트웨어
운영체제 기반의 소프트웨어
- - 소프트웨어가 복잡해짐에 따라 펌웨어 형태로는 한계에 도달함
- - 운영 체제는 하드웨어에 의존적인 부분, 여러 프로그램이 공통으로 이용할 수 있는 부분을 별도로 분리하여 만든 프로그램
03. 임베디드 시스템과 유비쿼터스
유비쿼터스 네트워크 특징
- - 상시 접속 가능한 네트워크
- - 이기종 시스템간 연결 가능
- - 모든 플랫폼에 활용 가능
유비쿼터스 공간 구성요소
- - 임베디드 시스템, RFID, IPv6, MEMS, 센서, 칩
차세대 컴퓨팅
- - 입는 컴퓨팅, 노메딕 컴퓨팅, 퍼베시브 컴퓨팅, 조용한 컴퓨팅, 감지 컴퓨팅, 1회용 컴퓨팅, 임베디드 컴퓨팅, 엑조틱 컴퓨팅
유비쿼터스 환경에서의 임베디드 시스템의 전망
- - 미국 : 프로세서, OS, 프로토콜 등 전 분야를 점유, 미국은 군사/과학용 Embedded S/W를 21세기 핵심 분야로 선정하고 매년 4천억 달러 이상을 연구개발에 투자
- - 유럽 : 개발도구, 브라우저 등의 일부 업체가 존재, 군사/교통용 Embedded S/W에 99년부터 7년간 3조 8천억을 투자
04. 임베디드 시스템 개발 프로세스
임베디드 시스템 개발이란?
- 기구(사용자 인터페이스 및 디자인, 금형)와 회로부를 포함한 하드웨어, 임베디드 소프트웨어를 만드는 과정
- 개발 과정에서 나오는 각종 문서 등의 산출물을 만들어 내는 과정
임베디드 시스템의 개발 프로세스
- - 분석 > 설계 > 개발 > 테스트 > 양산 > 유지보수
임베디드 시스템 개발의 첫 단계, 분석
- - 시스템 사양 결정
- - 제품 디자인 결정
요구사항의 구체화 단계, 설계
- - 시스템을 기능적 관점으로 설계하는 방법
- - 기능 중심의 설계, 기능 지향 설계라고도 함
- - 기본 설계 : 전체적인 관점에서 시스템의 기능 분류
- - 상세 설계 : 각 시스템의 기능을 구체적이고 세밀한 기능으로 분할
05. 임베디드 하드웨어 개발과정
임베디드 시스템 하드웨어 개발 과정
- - 회로도 작성(회로도)
- - 파트 리스트 작성(BOM, Part list)
- - 아트 워크(Gerber 데이터)
- - PCB 제작(PCB)
- - 부품 장착(PBA)
전자 부품의 기초 지식
- - 기본적인 부품의 기능
- - 회로도를 보는 방법
- - 데이터시트의 용도
06. 임베디드 소프트웨어 개발(1) - 개발 언어
임베디드 소프트웨어의 동작원리
- - 시스템 구성 : 중앙처리 장치(CPU) + 메모리 + 주변장치
- - CPU : 프로그램을 수행하기 위해 메모리에 저장되어 있는 명령어들을 실행함으로써 시스템의 핵심적인 역할 수행
- - CPU의 명령 처리 순서 : > Fetch(해석) > Decode(해석) > Excute(처리) > Save(저장) >
임베디드 소프트웨어의 개발언어
- - 기계어 : CPU가 이해하는 0과 1로 이루어진 디지털 신호, CPU의 제조회사 및 종류에 따라 모두 다름
- - 어셈블리어 : 기계어 작성의 불편함을 극복하고 보다 사람이 이해하기 쉽도록 개발한 일종의 기호 언어임
- - 어셈블리어의 장점 : 처리 속도 빠름, 용량 적음, 하드웨어 직접 제어래 걸림
- - 어셈블리어의 단점 : CPU에 따라 문법이 다름, 가독성 낮음, 프로그래밍 시간 오래 걸림
07. 임베디드 소프트웨어 개발(2) - 개발 도구
임베디드 소프트웨어 개발 도구
- - 호스트와 타겟 시스템
- - 호스트에는 크로스 컴파일러와 디버깅 도구를 비롯한 개발 도구가 설치 되어있어야 함
이미지 로딩 방법
- - 롬 라이터, 롬 프로그래머를 이용
- - 시리얼 통신이나 네트워크 통신을 통한 이미지 다운로드
- - JTAG/BDM 인터페이스를 통한 이미지 다운로드
임베디드 소프트웨어의 개발 과정
- - 컴파일 > 링크 > 로케이트
로케이트
- - 임베디드 소프트웨어 개발 과정에만 있는 특별한 과정으로, 타겟 하드웨어의 메모리 구조에 맞게 실행이미지 메모리 주소를 할당하는 단계
디버깅
- - 리모트 디버거, ICE, JTAG/BDM 인터페이스를 이용하는 방법이 있고 하드웨어 디버깅 툴에는 멀티미터와 오실로스코프, 로직애널라이져가 있음
08. 임베디드 시스템의 테스팅과 품질
테스팅을 해야 하는 이유
- - 하드웨어 및 소프트웨어에서 버그를 발견한다.
- - 사용자와 회사가 입게 될 위험을 줄인다.
- - 개발 유지 비용을 줄인다.
- - 성능을 향상 시킨다.
테스팅의 종류
- - 단위 테스팅 : 소프트웨어의 가장 최소 구성 단위를 대상으로 테스트
- - 통합 테스팅 : 인터페이스 및 통합이 적절히 이루어지는가를 테스트
- - 시스템 테스팅 : 하드웨어와 소프트웨어의 통합된 단계의 테스팅
- - 인수 테스팅 : 고객의 요구가 잘 만족되었는지 알아보는 것으로, 실제 설치 환경에서 다시 한번 수행해보는 필드 테스트의 개념
테스팅 프로세스
- - 테스트 케이스 설계(테스트 케이스)
- - 테스트 데이터 준비(테스트 데이터)
- - 테스트(테스트 결과)
- - 결과 분석 및 비교(테스트 보고서)
규격 인증
- - 제품의 품질이나 안정성에 대해 국내 또는 국제적인 인증을 받았다는 표시
- - 제품의 안전성(SAFETY) 규격(UL, CE)과 전자파규격(EMI 및 EMC, MIC, FCC)으로 나뉨
품질과 형상 관리
- - 시스템 개발 및 운영, 유지 보수 과정 등 모든 개발 프로세스에서의 변화를 통제하고, 변경요구를 체계적으로 관리하는 활동
09. CPU와 임베디드 프로세서
CPU(Central Processing Unit)
- - 컴퓨터 시스템 전체를 제어하는 장치
- - 다양한 입력장치로부터 데이터를 받아서 연산 또는 처리한 후 그 결과를 출력장치로 보내는 일련의 과정을 제어 및 조정하는 일을 수행
- - CPU 동작시 공통적으로 필요한 요소(전원, 데이터 신호, 클릭, 제어신호, 어드레스 신호)
임베디드 프로세서의 종류와 특징(임베디드 프로세서와 PC용 프로세서와 비교한 특징)
- - 범용적인 PC용 프로세서와 달리 임베디드 프로세서는 제한된 기능을 수행하는 시스템에 맞도록 한정적이며 특화된 기능을 가짐
- - 내부에 ROM, RAM, I/O 모듈이 하나의 칩안에 들어있는 형태
- - 응용 분야에 특화된 다양한 종류의 프로세서 있음
임베디드 프로세서의 종류
- - 80계열 MCU, PIC, AVR, 68000계열 프로세서, PowerPC, ARM, MIPS 등
임베디드 프로세서의 최근 동향 및 전망
- - 32비트 프로세서의 대중화
- - 고성능 8비트 프로세서의 출현
- - MCU-DSP 통합 솔루션
- - 멀티 코어 프로세싱
10. AVR과 ARM 프로세서
AVR 프로세서
- - AVR은 미국의 ATMEL에서 생산하는 8비트 RISC 프로세서
AVR 프로세서의 특징
- - 하버드 아키텍처를 갖는 고성능 RISC 프로세서
- - 저전력 프로세서
- - 높은 코드 밀드, 작은 코드 크기
- - 뛰어난 메모리 기술
- - 높은 집적도
- - 뛰어난 확장성
- - 편리한 디버깅 환경과 저렴한 개발툴
ARM 프로세서
- - ARM 프로세서를 만든 회사의 이름
- - RISC 프로세서의 이름
- - 32비트 RISC 프로세서
- - 저전력과 고성능을 목표로 설계
- - 최근 휴대용 기기에 많이 사용되면서 주목
- - ARM 회사는 직접 ARM 프로세서를 생산하지 않고 자신들이 설계한 IP를 세계 유수의 반도체회사들에게 라이센싱 해주는 IP 회사
11. ARM Cortex 프로세서
ARM Cortex 프로세서
- - ARM11 프로세서의 후속 버전으로 ARMv7 아키텍처 기반으로 설계
- - 성능 및 기능별로 특정 시장 및 애플리케이션 사용에 최적화된 다양한 솔루션 제공
- - Cortex-A, Cortex-R, Cortex-M 3가지 시리즈로 구성 비용에 민감한 임베디드 시장에서 최상의 성능을 실현하기 위해 ARMv7 아키텍처를 따르며, Thumb-2 명령어 세트를 실행
ARM Cortex 프로세서의 종류
- - ARM Cortex-A 시리즈 : A는 Application을 의미하며, 복잡한 OS 및 다중 사용자 애플리케이션을 지원하는 애플리케이션 프로세서
- - ARM Cortex-R 시리즈 : R은 Real-Time을 의미하며, 실시간 임베디드 시스템을 위한 임베디드 프로세서
- - ARM Cortex-M 시리즈 : M은 Microcontroller를 의미하며, 매우 비용에 민감한 저가형 응용 프로그램에 최적화 임베디드 시스템에 적합하게 설계된 프로세서
12. 메모리
메모리의 인터페이스
- - 0과 1로 된 디지털 데이터를 담은 반도체 소자
- - 메모리는 데이터를 읽기 위해 어드레스(Address, 접근하고자 하는 메모리 소자의 위치), 데이터(Data, 메모리에 들어있는 데이터를 가리킴), 제어 신호(Control Signal, 메모리 읽기 동작을 할지 쓰기 동작을 할지 결정)를 가짐
메모리의 종류
- - 휘발성 메모리 : 전원이 꺼지면 데이터가 없어지는 메모리
- - 비 휘발성 메모리 : 전기가 꺼져도 데이터가 유지되는 메모리
롬의 종류 및 발전 순서
- - MROM > PROM > EPROM > EEPROM > Flash Memory
램의 정의 및 종류
- - 다른 정보를 기억시킬 수 있는 메모리 이지만 전원이 꺼지면 내용이 지워지는 휘발성 메모리
- - SRAM : Static RAM의 약자로 데이터를 유지하려면 리프레시 과정이 필요, 구조가 간단하고 대용량 메모리를 제작하는데 유리
NAND 플래시와 NOR 플래시
- - NAND 플래시 : 데이터 저장용 메모리, 메모리 제조 단가가 싸며 대용량 USB 드라이브 등에 사용 삼성전자 주도
- - NOR 플래시 : 프로그램 저장용 메모리, 데이터 처리 속도가 빠르고 안정성이 우수 인텔 주도
13. 주변 기기
LCD
- - Liquid Crystal Display의 약자
- - 액체와 고체의 중간상태인 액정의 전기적 성질을 표시장치에 응용
- - 2장의 유리기판 사이에 액정을 주입한 것
- - 외부로부터 전계를 가해 액정을 회전시켜 빛을 통과하게 하거나 통하지 않게 하는 카메라의 셔터와 같은 기능 이용
- - 종류는 TN, STN, TFT LCD 등
LCD 컨트롤러
- - LCD를 제어하기 위해서는 전용 컨트롤러가 필요
- - LCD를 구성하는 픽셀을 제어하기 위해서 각 픽셀마다 적절한 전압을 인가하고 LCD를 구동하기 위한 신호를 생성
터치스크린(Touch Screen)
- - 일종의 저항 소자로 동작
- - 터치스크린의 양단에는 전압이 걸리고 사용자가 터치스크린의 어느 위치를 누르냐에 따라 걸리는 전압이 변하게 되는데 이때 CPU는 ADC(Analog Digital Converter)를 이용하여 전압값을 디지털 신호로 바꾸어서 좌표값을 계산
오디오 코덱
- - 디지털 데이터 형식으로 저장된 음악 파일을 아날로그 데이터인 오디오로 출력하기 위해 아날로그 데이터로의 변환 과정을 거치게 되는데 이러한 변환 과정을 처리해주는 ADC< DAC와 같은 장치와 다양한 부가기능이 집적된 회로
시리얼 통신
- - 임베디드 시스템에서 가장 많이 사용되는 통신 장치
- - 정보를 하나의 신호 선을 사용해서 비트 단위로 보내는 방식
USB(Universal Synchronous Bus)
- - 시리얼 통신의 일종
- - MP3 플레이어, 키보드, 프린터, 카메라 등의 주변기기와 컴퓨터간의 연결에 많이 사용되는 통신 방식
- - 장점 : 조작이 간단, 127개까지의 장치를 플러그 앤 플레이 방식으로 지원, 빠른 전송 속도, 광범위한 분야에 사용가능
이더넷(Ethernet)
- - 물리계층에서 IEEE 802.3 CSMA/CD(Carrier-Sense Multiple Access with Collision Detection) 프로토콜을 이용
- - 각각의 물리계층에 따르는 MAC, 하위 계층에 독립적인 데이터 링크 게층과 네트워크 계층으로 구성
14. 임베디드 시스템과 소프트웨어
임베디드 시스템과 소프트웨어
- - 하드웨어 기술의 발전으로 마이크로프로세서가 고성능, 집적화 됨
- - 디지털 컨버전스가 확대됨에 따라 하나의 제품이 여러 가지 기능을 복합적으로 가지게 됨
- - 제품의 구조와 기능이 복잡해 질수록 소프트웨어의 역할 증대
SoC와 임베디드 소프트웨어
- - System On a Chip의 약자
- - 프로세서, 메모리, 기타 주변 장치 등의 하드웨어 전체 시스템을 하나의 칩 안에 구현한 것
- - SoC의 효과
- -- IT 제품의 성능 개선과 개발시간 및 비용감소
- -- 디지털 컨버전스 제품 개발에 유리
- -- 제품의 크기와 두께가 획기적으로 줄어 듬
임베디드 소프트웨어의 개념
- - 시스템 소프트웨어 : 전체적인 운영을 담당하는 소프트웨어
- - 응용 소프트웨어 : 사용자와 직접 대면하는 소프트웨어로 시스템 소프트웨어 위에서 동작하여 입출력 장치를 제어하는 등 응용 기능 수행
펌웨어 기반의 소프트웨어
- - 운영체제의 사용 없이 하드웨어 시스템을 구동하는 응용 프로그램
- - 펌웨어는 수퍼루프 구조로 이루어짐
운영체제 기반의 소프트웨어
- - 소프트웨어가 복잡해짐에 따라 나타낸 개념
- - 장점
- -- 응용 소프트웨어의 이식성이 높아짐
- -- 하드웨어 자원이 공평하고 효율적인 관리
- -- 응용 프로그램 작성이 용이
- --- 운영체제 포팅 > 윤용체제 기반 소프트웨어 > 디바이스 드라이버
임베디드 소프트웨어의 구조
- - 운영체제 : 시스템의 자원을 효율적으로 관리하고 운영
- - 디바이스 드라이버 : 다양한 하드웨어 장치를 관리
- - 미들웨어 : 응용 프로그램과 운영체제간에 원만한 통신을 도움
- - 응용 프로그램 : 사용자가 직접 접하는 최상의 프로그램
15. 임베디드 운영체제
운영체제의 역할
- - 운영체제는 시스템에 있는 여러 가지 하드웨어 자원을 효율적으로 관리
- - 응용 프로그램에게 하드웨어 자원을 보다 쉽게 이용하고 프로그램을 쉽게 작성할 수 있도록 적절한 프로그래밍 인터페이스와 서비스를 제공
운영체제의 장점
- - 멀티태스킹(multitasking) : 운영체제를 사용하면 운영체제의 스케쥴러를 사용해서 쉽게 멀티태스킹 시스템을 꾸밀 수 있음
- - 자원 관리(resource management) : 운영체제는 효율적이고도 공평한 자원 관리를 통해서 효과적인 시스템 운영을 도와 줌
- - 다양한 운영체제 서비스 : 운영체제는 소프트웨어에서 필요로 하는 많은 서비스를 제공 함
- - 하드웨어 추상화(Hardware Abstraction) : 운영체제는 하드웨어를 추상화하여 소프트웨어 개발자가 하드웨어 대해 신경을 쓸 필요가 없도록 함
실시간 시스템과 실시간 운영체제
- - 실시간 시스템은 시스템의 기능적 정확성(functional correctness)과 시간적 정확성(time correctness)이 만족되어야 하는 시스템
- - 실시간 시스템에는 실시간 운영체제(Real Time Operating System, RTOS)가 사용됨
임베디드 운영체제의 종류
- - 실시간 운영체제 : VxWorks, pSOS, Nucleus, MicroC/OS-2
- - 비실시간 운영체제 : Windows CE, Embedded Linux
16. 임베디드 리눅스
리눅스의 탄생과 성장 과정
- - 리눅스가 1991년 PC에서 동작하는 보다 나은 운영체제를 만들어보고자 리눅스를 만듬
- - 리눅스는 386 컴퓨터에서 동작하는 멀티태스킹 커널이며, 첫 번째 공식 버전인 0.02가 공개된 이후 수많은 개발자가 참여
- - 현재는 단일 운영체제로 가장 많은 CPU 플랫폼에서 동작하는 운영체제
리눅스 커널 vs 리눅스 운영체제
- - 리눅스는 운영체제의 핵심을 이루는 소프트웨어인 커널(kernal)
- - 리눅스 운영체제는 커널과 시스템 소프트웨어 또는 핵심적인 응용 소프트웨어를 합한 그 모든 것을 통칭
- - 리눅스 운영체제는 핵심부인 커널 위에 X윈도우 시스템, TCP/IP 네트웤, 문서 펀집기, 컴파일러 등 여러 가지 GNU 소프트웨어를 재구성한 독립적인 운영체제
리눅스 운영체제
- - GNU 소프트웨어, 공개 소프트웨어
- - 리눅스 커널
리눅스의 배포판
- - 배포판이란 하나의 완전한 운영체제를 만들기 위해 리눅스 커널 위에 여러 가지 검증된 소프트웨어를 묶은 것을 의미
- - 리눅스의 배포판에는 레드햇, 데비안, 슬랙웨어 등이 있음
임베디드 리눅스의 개념과 특징
- - 내장형 리눅스로 가전 제품을 비롯한 임베디드 시스템에 특화된 리눅스 운영체제를 의미
임베디드 리눅스를 사용하는 이유
- - 공개소스 운영체제, 저렴한 비용
- - 단일 플랫폼으로 다양한 하드웨어 및 주변장치 지원
- - 기존의 RTOS가 제공하지 못한 기능 제공
- - 소프트웨어 표준과 다양한 개발툴
임베디드 리눅스 배포판
- - 임베디드 리눅스 배포판은 해당 CPU 플랫폼을 위한 개발 환경과 크로스 컴파일러, 커널과 라이브러리, GNU 소프트웨어, 부트로더, 때로는 예제용 응용 프로그램 등 해당 임베디드 시스템에 특화된 개발 환경과 개발 도구를 모두 포함
- - 임베디드 리눅스 배포판에는 몬타비스타 리눅스, PCS 등이 있음
임베디드 리눅스가 해결해야 할 과제
- - 임베디드 리눅스가 일반 가전 제품에 저변 확대되어 사용되기에는 극복해야 할 문제가 있음
CELF(CE Linux Forum)
- - CELF는 가전 제품에서 요구하는 사항을 충족하도록 리눅스의 성능을 개선하고자 결성된 단체로 몇 개의 워킹 그룹이 활동중
- - PMWG: 배터리로 오랫동안 동작해야 한다.
- - BTWG: 부팅 시간이 빨라야 한다.
- - RTWG: 실시간 기능이 지원되어야 한다.
- - SZWG: 시스템의 사이즈가 작아야 한다.
17. 임베디드 리눅스 개발과정
임베디드 리눅스의 구성요소
- - 부트로더, 커널, 루트, 파일시스템
임베디드 리눅스 개발과정
- - 임베디드 리눅스를 구성하는 각각의 요소를 개발한다는 의미
임베디드 리눅스 개발과정의 도식화
- - 개발 환경 구축 > 부트로더개발 > 커널포팅 / 디바이스 드라이버 > 루트파일시스템 구축
개발 환경 구축
- - 임베디드 리눅스를 개발하기 위해 개발 환경 구축 단계에서 하는 일은 크게 호스트 컴퓨터를 마련하는 것과 툴 체인을 설치하는 것
- - 호스트에는 프로그램 개발을 위한 컴파일러와 기타 유틸리티 프로그램이 필요한데, 이러한 것들을 통칭하여 툴 체인(Tool Chain)이라 고 함
- - 툴 체인 구축방법(이미 빌드된 툴 체인을 RPM이나 tarball 형식으로 가져와서 바로 설치하는 방법, 소스 파일을 가져와서 컴파일 하는 방법)
부트로더 개발
- - 전원이 인가되었을 때 가장 먼저 실행되는 프로그램으로 종류에는 LILO, GRUB, blob, U-Bool 등이 있으며 임베디드 리눅스에서는 U-Boot를 가장 많이 사용
커널 포팅 순서
- - 리눅스 커널소스 가져오기 > 커널 설정 > 커널 의존성 검사 > 커널 컴파일
루트 파일 시스템 구축
- - 리눅스의 ‘/’ 디렉토리에 마운트 될 모든 파일 시스템의 내용을 작성하는 것
- - 종류 : Ram disk, CRAMFS, JFFS, JFFS2
18. 윈도우 CE
플랫폼 빌드
- - 윈도우 CE 이미지를 개발하는 도구
플랫폼 개발주기
- - 개발환경 설정 > 이미지 빌드 > 디버깅과 다운로드
플랫폼 환경 설정
- - New Platform Wizard를 통해 BSP, 플랫폼 설정, 설정 변수, 응용 프로그램과 네트워킹 모듈 설정
Platform Builder IDE
- - Workspace, FeatureView, Parameter View, Catalog Window, Output Window, Ext Editor, Setting Windows로 구성
Status Monitor
- - 다양한 개발 도구의 상태를 표시
Windows CE의 이미지
- - EXE 파일들과 DLL 파일들 관련된 데이터 파일들이 조합된 하나의 파일 이미지
다운로드
- - 생성된 이미지는 이더넷을 통해 디바이스로 다운로드
원격 서비스
- - Debugger, Target Control, Target Message를 제어
19. 소프트웨어 플랫폼
소프트웨어 플랫폼의 등장 배경
- - IT 환경의 변화
- -- 유비쿼터스 IT 환경
- -- 메모리 용량의 증가
- -- 제품 및 서비스의 융복합화
- - 소프트웨어의 중요성 증가
- -- 정해진 하드웨어를 잘 동작시키는 하드웨어의 보조적인 수단에서 최근에는 하드웨어에 새로운 부가가치를 창출하는 핵심적인 역할을 수행하고 있음
소프트웨어 플랫폼의 정의
- - 플랫폼은 소프트웨어가 구동 가능한 하드웨어 아키텍처나 소프트웨어 프레임워크의 종류를 설명하는 단어, 컴퓨터의 아키텍처, 운영체제, 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함함
플랫폼 사용의 장점
- - 소프트웨어의 재사용성 증가
- - 하드웨어 플랫폼으로부터의 독립
- - 소프트웨어 개발 효율성 및 품질 향상
20. 소프트웨어 플랫폼의 종류
소프트웨어 플랫폼의 종류와 특징
- - .NET 플랫폼(.NET 프레임워크)
- -- 공통 언어 기반(CLI, CLR)
- -- 베이스 클래스 라이브러리(BCL)
- -- 어셈블리
- -- 메타데이터
- - Java 플랫폼
- -- Java 가상 머신
- -- Java 플랫폼 API
- - 무선인터넷 플랫폼
Java 플랫폼의 종류
- - Java SE (기본적인 어플리케이션 개발)
- - Java EE (기업용 서버 어플리케이션 개발)
- - Java ME (디바이스용 플랫폼)
임베디드 소프트웨어 플랫폼의 특징
- - 대부분 임베디드 SW 플랫폼은 RTOS 또는 리눅스를 기반으로 하고 있음
- - 특정 산업군에 특화된 소프트웨어 플랫폼이 많으며, 예를 들어서 자동차 전장용 AUTOSAR와 같은 플랫폼, 정보 기기용 플랫폼, 텔레메틱스 제품용 플랫폼, 로봇용 플랫폼 등이 있음
- - 임베디드 SW 공통 플랫폼을 위한 에코시스템
- -- 국내 임베디드 SW의 경쟁력 강화를 위해서 정보, 산업 기기를 위한 리눅스 기반 임베디드 SW 공통 플랫폼이 있음
- -- 리눅스 기반의 임베디드 SW 공통 플랫폼의 보급, 확산을 위해 한국 임베디드 SW 산업 협의회(KESIC)에서는 에코시스템인 SEED-farm을 운영하고 이를 통해 임베디드 운영체제, UI 및 통신 미들웨어 그리고 지원 도구 등읙 기술을 지원
21. 모바일 플랫폼(1)
모바일 플랫폼의 정의
- - 모바일 단말에 탑재되어 다양한 응용 서비스를 구동시킬 수 있는 운영체제와 미들웨어, 기본 애플리케이션을 포함하는 소프트웨어 패키지를 의미
모바일 플랫폼의 등장 배경
- - 사용자의 요구 사항 다양화
- - 다양한 응용 소프트웨어의 다운로드 및 실행 기능 필요
- - 하드웨어의 종류에 관계없는 소프트웨어 실행 환경 필요
iOS 플랫폼
- - iOS는 애플의 스마트폰인 아이폰과 아이팟 터치, 태플릿 PC인 아이패드에 내장되어 있는 운영 체제
- - iOS 플랫폼은 코어 OS 계층(Core OS layer), 코어 서비스 계층(Core services layer), 미디어 계층(Media layer), 코코아 터치 계층이라는 네 개의 계층으로 이루어져 있음
- - iOS 플랫폼의 개발은 인텔 맥 OS 기반의 컴퓨터에서 iOS SDK를 통해 이루어지는데, iOS SDK는 Xcode, 대시코드, 아이폰 시뮬레이터, 인터페이스 빌더, 인스트루먼츠로 구성됨
안드로이드의 특징
- - 오픈 소스 운영체제인 리눅스를 기반
- - 응용 소프트웨어는 Dalvik 자바 가상 머신에서 실행됨
- - 구글의 다양한 인터넷 서비스를 이용할 수 있는 API 제공
안드로이드의 구성요소
- - 리눅스 커널
- - 하드웨어 추상화 계층과 라이브러리
- - 안드로이드 런타임
22. 모바일 플랫폼(2)
윈도우 7 플랫폼
- - 윈도우폰 7은 마이크로소프트의 스마트폰을 위한 임베디드 모바일 플랫폼
- - 윈도우 임베디드 CE 커널을 운영체제로 사용하며, 닷넷 프레임워크를 기반으로 실버라이트와 XNA 프레임워크로 구성되어 있으며, C#을 이용하여 개발
- - 개발 환경: 비주얼스튜디오(애플리케이션 개발), 익스프레션블렌드(화면 디자인)
- - 원활한 동작 및 제조사에 관계없이 공통화된 UI와 일관된 동작을 위해 이전의 모바일 운영체제와는 달리 하드웨어에 대한 엄격한 제약 사항을 규정하고 있음
바다 플랫폼
- - 삼성전자에서 개발한 독자적인 개방형 스마트폰 플랫폼
- - RTOS를 기반으로 하며, C++을 이용하여 개발
- - 바다 SDK 및 이클립스 기반의 IDE 개발툴, UI Builder를 통한 화면 디자인
리모 플랫폼
- - 휴대폰의 개발 기간 및 비용 절감을 목적으로 관련 업체들이 모여서 개발한 리눅스 기반 소프트웨어 플랫폼
- - SDK와 시뮬레이터(simulator), GUI 에디터를 이용한 개발
23. 임베디드 소프트웨어 시장 전망 및 트랜드
내용 없음.
24. 임베디드 운영체제의 동향
임베디드 운영체제의 종류
- - 상용 RTOS - 간단하고 단순하며, 순차적인 작업 수행에 사용
- - 윈도우 CE - MS사에서 임베디드 시스템을 위해 제공하는 운영체제
- - 임베디드 자바 - SUN사에서 제공하는 JAVA를 이용한 운영체제
- - 임베디드 리눅스 기능과 확장성이 우수하며 로열티가 없어 가격 경쟁력이 높음
임베디드 운영체제의 방향
- - 운영체제 면 : 전용 실시간 운영체제 > 범용 운영체제 기반의 임베디드 운영체제 중심
- - 적용분야 면 : 산업기기 같은 특정영역 > 가전기기와 같은 일상 생활 영역
임베디드 시스템 표준화 방향
- - 임베디드 리눅스 표준화
- - 실시간 리눅스 표준화
- - ITRON의 표준화
- - OSEK의 표준화
- - 개발 도구의 표준화
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
가컬 (가비지컬렉션) (0) | 2018.06.20 |
---|---|
SQL vs Pro*C (0) | 2017.12.11 |
리얼포스 핑크키캡 !ㅁ! (4) | 2017.09.10 |
[개발자 강좌] 함수형 프로그래밍 - 김포프(펌) (0) | 2017.07.08 |
(펌) 웹 프로그래머 로드맵 (0) | 2017.07.05 |