04 임베디드시스템

Download Report

Transcript 04 임베디드시스템

임베디드시스템
RaspberryPi
Sejin Oh
임베디드 시스템의 개요
임베디드 시스템 정의 및 종류
 임베디드 시스템(Embedded System) 정의
 특정 기능을 반복적으로 수행하기 위해 컴퓨터의 하드웨어와 소프
트웨어가 결합된 고기능의 전자 제어 시스템
 마이크로프로세서 혹은 마이크로컨트롤러를 내장하여 제작자가 의
도한 다양한 기능을 수행하는 소프트웨어를 포함하는 시스템
 임베디드 시스템 종류
 웹 서핑이 가능한 TV, 화상 통신이 가능한 냉장고, 원격 조정이 가능
한 밥솥, 휴대폰, PDA, 사이버 아파트의 홈 관리 시스템, 교통 관리
시스템, 주차 관리 시스템, 네비게이션 등
Raspberry Pi
2
임베디드 시스템의 개요
임베디드 시스템의 특징
 임베디드 시스템의 특징
 소형, 경량화
 저전력소비
 낮은 가격
 고 신뢰성
 유/무선 네트워크
 실시간 시스템
 PC에 버금가는 반응속도
 특정한 기능에 부합하는 최적화
Raspberry Pi
3
임베디드 시스템의 응용분야
 가정 자동화(HA, Home Automation)
 가스 누출, 화재, 도난 등에 대한 자동 감지 기능, 현관문이나 창문
등의 상황을 알려주는 통신 기능, 가전 제품과 조명 기기, 음향 기기
등을 켜고 끄는 원격 제어 기능 등
 정보가전(Information Appliance): 인터넷 냉장고, 디지털 TV, 인터넷
세탁기 등
 정보 단말기
 휴대폰, PDA, 스마트폰, 영상 전화기 등의 디지털 기기
 각종 정보 검색, 오락, 메시징, 개인정보관리 등의 복합 기능 수행
Raspberry Pi
4
임베디드 시스템의 응용분야
 공장 자동화(FA, Factory Automation)
 산업 분야에서 생산 공정의 제어에 필요한 시스템
 공정을 실시간으로 제어하거나 매우 정밀한 처리가 필요한 공정에
서는 고성능 임베디드 시스템을 탑재한 산업용 로봇과 같은 장비 필
요
 사무 자동화(OA, Office Automation)
 사무 활동의 효율화 및 내용의 질적 향상을 위해 전자 기기 등을 사
용한 사무 처리의 자동화
 프린터, 스캐너, 팩스 등의 기능을 하나로 통합한 복합기 등
Raspberry Pi
5
임베디드 시스템의 응용분야
 물류 분야
 바코드를 위한 리더 및 발급기, 무선인식장치, POS 단말기, RFID 등
 금융 분야
 자동현금입출금기, 신용 카드의 인식기나 발급기, 훼손된 지폐 검출,
지문 인식, 음성 안내, 감시 카메라를 이용한 감시 기능 등
Raspberry Pi
6
실시간 시스템
 실시간 시스템
 주어진 입력에 대하여 정해진 시간 내에 행동 혹은 반응할 수 없을
때 문제가 발생하는 시스템
• (Schedule : Dead Line)
 외부 자극에 대하여 어떠한 환경 아래에서도 마감시간 이내에 논리
적으로 정확한 출력 혹은 결과를 내는 적시성을 가진 시스템
 마감시간 내에 결과를 얻지 못할 경우 발생하는 문제의 심각성에 따
라 크게 경성 실시간 시스템과 연성 실시간 시스템으로 분류
Raspberry Pi
7
실시간 시스템
 경성 실시간 시스템
 마감시간을 못 지키면 응용 프로그램이 실패하며 시스템에 치명적인
손실을 줄 수 있음
 원자력 발전소 제어, 화재 발생 검출 시스템, 항공기, 우주 왕복선, 자
동차, 미사일 제어 등
 연성 실시간 시스템
 지연된 반응에 대해 치명적 영향을 미치지 않고 시스템에 미세한 영
향
 데스크탑 컴퓨터, 정보 단말기 등
Raspberry Pi
8
임베디드 소프트웨어
임베디드 소프트웨어
 하드웨어를 제어하기 위해 임베디드시스템에 내장되는 명령어집합
 제한된 하드웨어 자원에서 동작해야 하므로 일반적으로 크기가 작고
하드웨어에 최적화해 사용
 하드웨어가 다양하기 때문에 탑재되는 임베디드 소프트웨어 종류도
다양하고 복잡
 대부분의 경우 센서 혹은 버튼 등을 통하여 입력된 외부 자극에 대해
사건 구동 방식으로 동작
Raspberry Pi
9
임베디드 하드웨어
 임베디드 하드웨어
 프로세서 로직을 라이선스하여 SoC(System on a Chip) 형태로 프로
세서 코어, 메모리, 디지털 신호 처리(DSP, Digital Signal Processing)
및 주변장치 등을 하나의 칩에 통합하여 제조 가능
 SoC 특징
• 제품의 크기가 보드가 아니라 칩 크기로 소형화되기 때문에 저전력 소
모, 제품 가격 하락, 안정성 증가뿐만 아니라 혁신적인 디자인도 가능.
• 모듈별로 재사용 가능한 IP(Intellectual Property) 개발이라는 새로운 사
업 모델의 등장. 이전에는 일부 반도체 회사에서만 프로세서 칩을 설계,
제조 및 판매가 가능했지만, 이제는 영국의 ARM처럼 프로세서 코어 IP
를 판매하는 회사도 등장. ASIC(Application Specific Integrated Circuit)
제조 기술만 있는 회사이면 IP를 라이선스하여 프로세서와 같은 칩 생
산이 가능
Raspberry Pi
10
유비쿼터스 컴퓨팅
 유비쿼터스(Ubiquitous) 컴퓨팅의 의미
 언제 어디서나 어떤 것이라도 온라인 네트워크와 연결되어 서비스를
받는 환경과 공간을 의미
 Xerox 사의 PARC(Palo Alto Research Center) 연구소의 연구책임자
인 마크와이저(Mark Weiser) 소장에 의해 1991년도에 사용
 TRON 프로젝트 연구책임자인 사카무라 켄 교수가 제창한 “모든 물
건에 컴퓨터”
Raspberry Pi
11
유비쿼터스 컴퓨팅
 차세대 컴퓨팅 기술
 웨어러블 컴퓨팅(Wearable Computing)
 퍼베이시브 컴퓨팅(Pervasive Computing)
 조용한 컴퓨팅(Silent Computing)
 노매딕 컴퓨팅(Nomadic Computing)
 감지 컴퓨팅(Sentient Computing)
 엑조틱 컴퓨팅(Exotic Computing)
 임베디드 컴퓨팅(Embedded Computing)
 일회용 컴퓨팅(Disposable Computing)
 유비쿼터스 기반 기술
 MEMS(Micro Electro Mechanical System) : 미세전자기계시스템
 RFID
 IPv6
 SoC
 LBS(Location Based Service) : 위치기반 서비스
 센서, 칩
Raspberry Pi
12
운영체제
 운영체제
 컴퓨터 시스템의 각종 자원을 효율적으로 관리하고 운영되도록 사용
자에게 편리성 제공, 컴퓨터 하드웨어와 사용자간의 인터페이스 역
할을 하는 시스템 프로그램
 자원 관리자 역할과 응용 소프트웨어에게 컴퓨팅 자원에 대한 서비
스 제공자 역할
 커널
 운영체제를 작동시키는 핵심 프로그램
 커널이 관리하는 컴퓨팅 자원
• 물리적 자원: 프로세서, 메모리, 디스크, 터미널, 네트워크 등과 같은 시
스템 구성 요소들과 주변 장치
• 추상적 자원: 태스크와 쓰레드, 페이지(page)와 세그먼트(segment), 파
일 및 inode, 통신 프로토콜 및 패킷 등, 보안 혹은 사용자 계정에 따른
접근 제어 등
Raspberry Pi
13
리눅스 소개
 리눅스의 장점
 유닉스와 완벽하게 호환 가능
 공개 운영체제이며 무료
 강력한 네트워크 기능을 제공하며 인터넷의 모든 기능을 지원
 멀티태스킹을 지원
 안정적이며 하드웨어 기능을 효과적을 사용
 다양한 응용 소프트웨어를 제공
 리눅스의 단점
 공개 소프트웨어이기 때문에 오류로 인한 사고 발생시 보상 불가
 커널 버전이 너무 빨리 변화
Raspberry Pi
14
리눅스 소개
 커널 버전 번호 linux-x.y.z.tar.gz



x: 주 버전 번호로 리눅스 골격 자체의 획기적인 변화를 의미
y: 부 버전 번호이며 홀수이면 개발중인 커널이고 짝수이면 안정된
커널
z: 릴리스 번호로 추가된 기능은 없지만 오류 수정 등에 의한 작은
변화를 의미
 배포판
비상업적이거나 상업적인 소프트웨어를 통합한 리눅스 패키지
리눅스 커널 외에 GNU 유틸리티, 개발 환경, X 윈도우 시스템 등을
포함
 레드햇 리눅스 배포판
• Redhat Linux,
• Redhat Enterprise Linux,
• Fedora Core


Raspberry Pi
15
리눅스 소개
리눅스 부팅과정
 리눅스 부팅 과정
① ROM BIOS에 의하여 시스템의 이상 유무를 점검하고 하드웨어를
초기화
② 부트로더 프로그램을 메모리에 적재
③ 부트로더는 커널을 메모리에 적재
④ 커널 실행 후 커널은 최초의 프로세스인 /sbin/init 코드 실행
⑤ init 프로세스에 의해 운영체제 초기화
Raspberry Pi
16
임베디드 리눅스
 임베디드 리눅스 운영체제
 저성능의 프로세서와 소용량의 메모리를 가진 제한된 컴퓨팅 자원
하에서 특정 응용 프로그램의 수행에 필요한 요구 사항을 충족시킨
최적화된 리눅스
 임베디드 시스템 분야에서 리눅스가 많이 선택되는 이유
•
•
•
•
•
Raspberry Pi
안정된 운영체제이며 멀티태스킹의 제공
강력한 네트워크 기능
확장성의 다양함과 용이함의 제공
다양한 형태의 파일시스템과 실행 파일 포맷 지원
소스가 공개된 무료 소프트웨어
17
임베디드 시스템 개발환경 개요
 임베디드시스템 개발 환경:호스트 시스템, 타겟 시스템백엔드로 구성
 호스트 시스템에서 타겟 시스템을 위한 부트로더, 커널 이미지, 응용
소프트웨어 등을 개발하고, 이를 케이블 등을 통해 타겟 시스템으로 다
운로드하여 사용
Raspberry Pi
18
임베디드 시스템 개발환경 개요
 크로스 개발 환경(Cross Development Environment)
Raspberry Pi
19
임베디드 시스템 개발환경 개요
 호스트 시스템
 임베디드시스템을 개발하기 위한 자원 즉, 컴퓨팅 환경을 제공하는 시
스템
 보통 개인용 컴퓨터를 호스트 시스템으로 사용
 리눅스 커널 2.6 버전을 포함하는 페도라 코어 4를 호스트 시스템의 운
영체제로 사용
 툴체인(toolchain): 타겟 시스템용 시스템 및 응용 소프트 개발에 필요
한 모든 환경을 통칭
Raspberry Pi
20
임베디드 시스템 개발환경 개요
 타겟 시스템
 개발된 임베디드시스템 프로그램을 테스트하고 구동할 수 있는 시스
템
Raspberry Pi
21
임베디드 시스템 개발환경 개요
 백엔드
 호스트 시스템과 타겟 시스템간에 통신하기 위한 매개체
 Serial
• Serial 포트를 활용하여 모니터링(미니컴 S/W 활용)
 JTAG
• JTAG을 통해 플래시 메모리에 부트로더, 커널 퓨징
• 원용도: 디버깅 장비 – 레지스터 모니터링
 Ethernet
• Cross 케이블을 활용하여 NFS(Network File System 구성) - 허브 부재시
Raspberry Pi
22
툴체인 환경 구축
 일반적으로 호스트 시스템과 타겟 시스템의 플랫폼이 다르기 때문에 툴
체인이 필요
 x86 계열에서 개발한 프로그램을 ARM 계열에서 실행하려면 교차 컴파일
필요
 툴체인은 교차 컴파일러 및 관련된 각종 라이브러리를 의미
 어셈블러, 링커, C 컴파일러, C 라이브러리 등으로 구성
Raspberry Pi
23
Make 유틸리티
 컴파일을 자동화해주는 명령어 생성 프로그램
 최종 목표 파일(target file)의 빌드(Build) 과정을 정의해두면 필요한 작업
만 수행하여 목표 파일을 생성
 종속된 파일들의 상호 의존 관계를 명시한 목록 파일(description file)을
사용하여 목표 파일을 생성
 원시 파일의 일부가 수정되면 목표 파일을 새롭게 생성하기 위해 다시 컴
파일할 파일을 자동으로 판단, 필요한 명령어만 이용해 다시 컴파일하는
지능적인 유틸리티
 다중 모듈 프로그램의 재사용성을 유지하고 프로그램 수정에 대한 재번
역을 최소화
Raspberry Pi
24
호스트/타겟 통신
 임베디드시스템은 제한된 컴퓨팅 자원으로 구성되어 있어서 프로그램
개발을 위해서는 호스트 시스템의 도움이 필요
 호스트 시스템은 타겟 시스템을 위한 교차 컴파일러, 콘솔 등 다양한 환
경을 제공
 호스트 시스템에서 개발된 소프트웨어는 타겟 시스템으로 전송
 호스트 시스템과 타겟 시스템 사이에 통신 환경 필요
 직렬 통신과 이더넷(Ethernet) 통신
Raspberry Pi
25
호스트/타겟 통신
 직렬 통신
 저속의 데이터 통신으로 사용
 직렬 포트를 제어하는 프로그램을 포함하는 마이크로 칩:
UART(Universal Asynchronous Receiver and Transmitter)
 인터페이스 칩: RS-232C
 이더넷
 대용량의 데이터를 호스트 시스템에서 임베디드시스템으로 전송하
고자 할 경우 사용
 BOOTP: 부트로더와 커널 이미지를 TFTP로 호스트에서 타겟으로 다
운로드하여 부팅.
 NFS:네트워크로 연결된 파일을 로컬 디스크처럼 쉽게 접근할 수 있
도록 허용하는 일종의 분산 파일시스템.
Raspberry Pi
26
직렬 통신을 이용한 이미지 전송
 ZMODEM을 사용해 호스트 시스템과 타겟 시스템 사이의 직렬 통신이
가능
 미니컴에서 ZMODEM을 기동하여 파일 송수신 가능
Raspberry Pi
27
NFS 환경 구축과 파일 공유
 NFS(Network File System)를 이용하면 원격 컴퓨터의 파일이 마치 자
신의 컴퓨터에 있는 것처럼 작동
 타겟 시스템에서 필요한 프로그램을 호스트 시스템에서 개발하고 NFS
를 사용하면 전송의 번거로움이 없이 타겟 시스템에서 사용 가능
Raspberry Pi
28
NFS 환경 구축과 파일 공유
 NFS의 장단점
 장점
• 호스트 시스템에서 작업한 것을 NFS를 이용하면 다운로드 과정 없이 타
겟 시스템에서 이용 가능
• 클라이언트 시스템의 리눅스 파일 시스템 위에서 호스트 시스템의 파일
을 접근 및 실행이 가능
• 램디스크 상에 올리기에 너무 큰 파일도 NFS 상에서는 호스트의 기억
용량에 의존하기 때문에 쉽게 처리 가능
 단점
• 네트워크의 과부하로 속도 저하 혹은 보안 허점 우려
• 장치 파일과 같은 특수 파일은 NFS에 연결된 디렉토리에서 생성 불가
• 읽고 쓰는 속도가 빠른 파일로는 사용이 곤란
Raspberry Pi
29
부트로더 개요
부트스트랩 로더(bootstrap loader)의 준말로 컴퓨터를 사용자가
사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주
기억장치에 적재해주는 프로그램
부트로더의 종류










LILO(LInux LOader)
GRUB(GRand Unified Boot loader)
NTLDR(NT LoaDeR)
BOOTX
ARMBOOT
BLOB(Boot Loader OBject)
BOOTLDR
PPCBOOT
REDBOOT
U-BOOT(Universal BOOTloader)
Raspberry Pi
30
부트로더 개요
 부트로더의 기능
 타겟 시스템을 위한 스타트업, 로드, 링커 기능
 기본적인 시스템 진단 기능
 모니터 기능
 직렬 통신을 사용한 프로그램 적재 기능
 네트워크를 통해 이미지 전송
 메모리 내용 표시 및 수정 명령어를 제공
 간단한 플래시 파일시스템
 부트로더 생성 및 플래시 메모리에 적재
 생성시 툴체인 활용
 부트로더 소스코드와 make를 이용하여 부트로더 이미지 생성
 생성된 부트로더는 타겟 시스템의 플래시 메모리에 퓨징(적재)
Raspberry Pi
31
커널 포팅
 커널 포팅(kernel porting)
 커널 소스를 타겟 시스템에 적합하게 프로그래밍 및 컴파일해 생성
된 커널 이미지를 타겟 시스템에 적재하는 과정
Raspberry Pi
32
파일시스템 개요
 파일: 저장 매체에 보관된 데이터 집합의 추상적 개념
 용도에 따라 다른 파일시스템을 사용하는 것이 효율적






FAT(File Allocation Table): MS-DOS와 윈도우즈 95
NTFS(NT File System): 윈도우즈 XP
EXT2, EXT3: 리눅스
ISO 파일시스템: CD-ROM
NFS: 네트워크
EXT3, JFFS2: 저널링 파일시스템
 임베디드 시스템






제한된 자원을 사용: 효율성 추구
열악한 환경에서도 안정적으로 가동
문제가 발생하면 자동으로 복구
전원을 차단해도 데이터 손실 없이 재가동
불필요한 파일을 제거
플래시 등에서 부팅하기 때문에 파일시스템의 설치에도 주의
Raspberry Pi
33
파일시스템 개요
 파일 시스템 종류
Raspberry Pi
34
파일시스템 종류
 휘발성 파일시스템
 전원 인가를 제거하면 사라지는 파일시스템
 메모리 일부를 하드디스크처럼 사용
 시스템 설치나 장애 복구에 유용하게 사용
 gzip으로 압축
 필요 시 메모리 할당, 크기 조정
 하나 이상 사용 가능
 디스크가 없는 시스템에 유용
 램디스크 파일시스템(RAMFS, RAM File System 혹은 RAMDISK File
System)
 초기 램디스크(initrd)
Raspberry Pi
35
파일시스템 종류
 비휘발성 파일시스템
 FAT(File Allocation Table) , FAT32
 NTFS(New Technology File System)
 EXT2, EXT3, EXT4
 ReiserFS
 CRAMFS(Compressed ROM File System)
 JFFS(Journaling Flash File System), JFFS2
 ISO(International Organization for Standardization) 9660
Raspberry Pi
36
파일시스템 종류
 특수 파일시스템
 NFS
 VFS
Raspberry Pi
37
루트 파일시스템




/ 디렉토리에 마운트되는 파일시스템
커널이 동작하기 위한 공간, 라이브러리, 유틸리티 등을 포함
램디스크, JFFS2, NFS 등을 주로 사용
직접 구축하기 위해 준비할 데이터
 glibc 라이브러리
 시스템 초기화 프로그램인 sysvinit
 termcap 혹은 ncurses 등과 같은 라이브러리
 쉘 패키지 bash
 로그인을 위한 tinylogin
 각종 유틸리티를 위한 패키지 busybox
 커널 모듈을 관리하기 위한 유틸리티 modutils
Raspberry Pi
38
임베디드 시스템 부팅 과정
1단계
• Power On
2단계
• ROM BIOS에서 지정된 부트 드라이브로 부팅시작
3단계
• 부트 드라이브의 첫 번째 섹터인 부트섹터 읽어 들임
4단계
• 부트섹터의 부팅 프로그램인 부트로더(GRUB) 작동
5단계
• 커널 이미지 적재
6단계
• 루트 파일 시스템 마운트
7단계
• 시스템 초기화 프로그램(init) 작동
8단계
• Login
Raspberry Pi
39
디바이스 드라이버 개요
 디바이스: 컴퓨터시스템의 주변 하드웨어
 디바이스 드라이버는 디바이스 구동 프로그램
 디바이스의 종류
 문자 디바이스(character device)
• 터미널, 콘솔, 키보드, 사운드카드, 스캐너, 프린터, 직렬/병렬 포트, 마우
스, 조이스틱 등
 블록 디바이스(block device)
• 하드디스크, 플로피 디스크, 램디스크, 테이프, CD-ROM, DVD 등
 네트워크 디바이스(network device)
• 이더넷, PPP, SLIP, ATM, 네트워크 인터페이스 카드
 주번호(major number)와 부번호(minor number)로 구분
 동일한 디바이스는 동일한 주번호를 가지며 서로 구분하기 위해 부번호
를 사용
Raspberry Pi
40
디바이스 드라이버 개요
 디바이스 드라이버
 디바이스와 시스템 사이에 데이터를 주고받기 위한 인터페이스
 표준적으로 동일한 서비스 제공을 목적
 커널의 일부분으로 내장
 서브루틴과 데이터의 집합체
 디바이스의 고유한 특성을 내포
 디바이스 드라이버 제작 과정
 디바이스 드라이버 소스코드 작성
 응용 프로그램 소스코드 작성
 디바이스 드라이버와 응용 프로그램의 컴파일
 호스트 시스템에서 타켓 시스템으로 디바이스 드라이버와 응용 프
로그램을 전송
 디바이스 드라이버를 타겟 시스템 커널에 적재
 타켓 시스템에서 응용 프로그램을 수행하여 테스트
Raspberry Pi
41
GPIO
 GPIO(General Purpose Input Output)
 GPIO는 하나의 연결 단자를 입력이나 출력으로 고정시키지 않고 선
택적으로 사용할 수 있게 융통성을 높인 범용 입출력 단자
 라즈베리파이의 GPIO 참조
Raspberry Pi
42
Thank you
Raspberry Pi
43