임베디드 시스템.

Slides:



Advertisements
Similar presentations
을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
Advertisements

7장7장7장7장 한빛미디어 ( 주 ) 파일시스템 개요 파일시스템 종류 파일시스템 구조 루트 파일시스템 커널 부팅 방식 램디스크 JFFS2 파일시스템 파일시스템 개요 파일시스템 종류 파일시스템 구조 루트 파일시스템 커널 부팅 방식 램디스크 JFFS2 파일시스템 파일시스템.
컴퓨터와 인터넷.
Linux Seminar Cahpter 10. Linux File System
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
Part 4 장치 관리하기 Chapter 13. 주변 장치 관리하기 Chapter 14. 하드디스크 관리하기
EZ Board-M In-Ho, Roh Real Time System Lab.
뇌를 자극하는 Windows Server 2012 R2
Image & Video processing
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Cross Compiler를이용한 커널 컴파일 및 포팅
임베디드 시스템.
임베디드 리눅스 설치 및 동작 Lecture #5.
운영체제 박상민.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 라우터 (iii_lrp) 컴퓨터응용과학부 담당교수님 : 이상훈 마 의 호.
11 장 LAN 기본 개념과 Ethernet LAN
강 명 수 LINUX 설치 강 명 수
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
Root Filesystem Porting
리눅스 운영체제 운영체제 리눅스 소개 임베디드 리눅스 리눅스 명령어 한빛미디어(주).
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Day-19(Tue_10.02) 이론적인 배경 Hypervisor(Type1) : 물리적인 자원을 추상화해서 관리해줌
Cross Compiler 설치.
4. LAN의 배선체계 (3장. LAN: Local Area Network)
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
Wireless Java Programming
Cross Compiler를이용한 커널 컴파일 및 포팅
시스템 인터페이스 Lab3 Unix 사용법 실습.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
Device Driver 임베디드 시스템 I.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
임베디드 시스템 개론 임베디드 타겟 보드 포팅 및 H/W 제어 3일차 강의 자료 Embedded System Lab.
Xscale Educational Kit
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제1장 Unix란 무엇인가?.
자율주행 차량용 드라이빙 컴퓨팅 하드웨어 플랫폼 05
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
데이터 베이스 DB2 관계형 데이터 모델 권준영.
리눅스 커널 프로그래밍 환경 구축 IT EXPERT 리눅스 커널 프로그래밍 Author : Byungki Kim
ATmega128의 특징 아이티즌 기술연구소
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Kernel, Ramdisk, JFFS2 Porting
뇌를 자극하는 Solaris bible.
AT MEGA 128 기초와 응용 I 기본적인 구조.
UNIT 25 SPI 로봇 SW 교육원 조용수.
셀프 프로그래밍으로 쓰기 셀프 프로그래밍이란? 프린트포트의 ISP 모듈을 사용하지 않음 부트로더에 의한 펌웨어 다운로드
System Security Operating System.
임베디드 시스템 개론 3주차.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
Installation Guide.
06. 디바이스의 등록과 해제 김진홍
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
CHAP 15. 데이터 스토리지.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Presentation transcript:

임베디드 시스템

Chapter 5 임베디드 시스템 환경 구성

운영 체제 운영 체제 (OS : Operating System) 운영체제의 역할 컴퓨터 시스템의 전반적인 동작을 제어하고 조정하는 시스템 프로그램들의 집합. 운영체제의 역할 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하면서 CPU, 주기억 장치, 입출력 장치 등의 컴퓨터 자원을 관리

운영체제의 구성 요소 하드웨어 응용 프로그램 메모리 관리 프로세스 관리 파일 시스템 관리 입출력 관리 트랩(SWI) 시스템 콜 인터페이스 하드웨어 제어 하드웨어 응용 프로그램 메모리 관리 프로세스 관리 파일 시스템 관리 입출력 관리 트랩(SWI)

임베디드 리눅스 임베디드 리눅스 임베디드 리눅스 특징 공개된 리눅스 커널과 각종 응용 프로그램 소스를 임베디드 시스템에서 동작 하도록 최적화 하여 사용하는 운영체제 임베디드 리눅스 특징 적은 메모리 사용 느린 CPU에서 동작 특정한 목적의 응용 프로그램 탑재

임베디드 리눅스의 장점 GPL(GNU General Public License)를 따르는 공개 소스 소프트웨어 모듈 지원 두터운 개발자 층 검증된 운영체제 10년에 걸쳐 사용 모듈 지원 불필요한 부분을 빼고 필요한 부분 추가가 가능하여 이식성 우수 유닉스와 유사한 운영체제 시스템, 독립적인 POSIX 구현 다양한 플랫폼 지원 x86, alpha, ppc, arm, sparc, 메인프레임에 이르기까지 각종 CPU 지원 멀티태스킹, 가상메모리, 공유 라이브러리, 디멘트 페이징, 메모리 관리, TCP/IP 네트워킹 등을 지원

임베디드 리눅스의 단점 개발 환경 설정이 까다롭다. 실시간성(Real-Time) 기능이 취약하다. 메모리와 전력 소모량이 많다. 리눅스의 윈도우 시스템 다양한 윈도우 시스템이 제공되고 있으나 덩치가 크거나 안정화 작업이 필요

운영체제의 커널 커널이란 ? 마이크로 커널(micro kernel) 모놀리틱 커널(monolithic kernel) 운영체제의 핵심 부분 하드웨어와 운영체제의 다른 부분 사이의 중재자 역할을 함 마이크로 커널(micro kernel) 커널의 기능을 최소화 하고 가장 핵심 기능만 가진다. 커널은 동기화 프로그램, 매우 간단한 스케쥴러와 프로세스간 통신 방식만 제공 QNX, 카네기 멜론(Carnegie Mellon)의 마크 3.0(Mach 3.0) 모놀리틱 커널(monolithic kernel) 커널이 운영체제가 관장하는 모든 서비스를 가짐 프로그램의 실행을 제어하며 데이터와 파일 관리 유닉스, 리눅스 시스템

Inter Process Communication (IPC) 리눅스 커널의 구조 (1) Process Scheduler Virtual File System 메모리 관리 네트워크 인터페이스 Inter Process Communication (IPC)

리눅스 커널의 구조 (2) Process Scheduler 메모리 관리(Memory Manager) CPU를 여러 프로세스가 공평하게 사용할 수 있도록 함 메모리 관리(Memory Manager) 여러 개의 프로세스 메인 메모리를 안전하게 공유 할 수 있도록 함. Virtual File System 리눅스는 모두 파일로 관리가 됨 하드웨어 장치도 파일로 관리 됨 네트워크 인터페이스(Network Interface) 표준 네트웍 프로토콜과 드라이버를 제공함 Inter Process Communication (IPC) 프로세스 간에 서로 정보를 교환 할 수 있는 방법을 제공함

프로세스 프로세스(Process) 또는 태스크(Task) 멀티 프로세싱 프로세스는 프로그램이 이니다 실행 중인 프로그램 프로세스의 구성 프로그램, 데이터, 스택 프로세서 내부의 PC를 비롯한 레지스터 와 상태 정보 1960년대 중반 벨연구소의 멀틱스(Multics : multiplexed information and computing service) 에서 처음 사용 멀티 프로세싱 동시에 여러 프로세스가 활동 프로세스는 프로그램이 이니다 여러 개의 프로세스가 똑같은 프로그램을 동시에 실행 가능 프로세스 하나가 여러 프로그램을 차례로 실행 가능

스케쥴러(Scheduler) 한 순간에 오직 하나의 프로세스 만이 CPU를 점유 가능 선점형(preemptive)과 비선점형(nonpreemptive) 비선점형 프로세스가 자발 적으로 CPU 사용권 반납했을 때만 스케쥴링 선점형 프로세스 별 사용 시간을 지켜보면서 정기적으로 스케쥴링 문맥 교환(Context Switch) CPU의 사용권을 다른 프로세스에게 양도 현재의 Context 정보를 저장하고 새 프로세스의 Context 정보를 적재 Context 정보 프로그램 카운트(PC), 스택 포인터(SP), 범용 레지스터, 프로세서의 상태 레지스터, 메모리 관리 정보 등

메모리와 주소(Address) 메모리 메모리 주소 프로그램과 데이터를 저장하는 공간 메모리 셀의 내용에 대한 접근 위치 지정 일반적으로 물리 주소를 칭하는 경우가 많음

리눅스의 주소(Address) 논리 주소(Logical Address) 선형 주소(Linear Address) 실제 CPU가 기계어 상에서 사용되는 주소 선형 주소(Linear Address) CPU가 사용하는 4GB 영역까지의 엑세스 가능한 주소 가상(Virtual)적으로 할당하여 프로그램에서 사용하는 주소 물리 주소(Physical Address) 메모리 칩의 메모리 셀의 위치를 지정 어드레스 버스로 전달되는 전기적인 신호

프로세스와 메모리 접근 프로세스에서 메모리 접근 (①) 페이지 프레임 번호를 가지고 페이지 테이블에서 정보를 가져온다 (②, ③, ④) 물리 메모리의 해당 페이지에서 offset위치를 접근한다(⑤ ,⑥) 프로세스 CPU page frame number offset Physical page Physical 메모리 Page table ① ② ③ ④ ⑤ ⑥

시스템 콜(System Call) 포직스 표준 API를 사용하는 시스템 콜을 사용하는 이유 사용자 프로그램에서 커널 자원을 사용 할 수 있도록 함 디바이스 제어, 프로그램 실행, 파일 전송 등 포직스 API와 시스템 콜 표준 libc에 정의되어 있는 C 라이브러리의 API 중 일부는 시스템 콜 호출을 위한 루틴 제공 포직스 표준 API를 사용하는 시스템 콜을 사용하는 이유 저수준 프로그래밍이 불필요  쉬운 프로그래밍 시스템 보안성 증가 프로그램 호환성 증가

시스템 콜 처리 절차 사용자 영역 커널 영역 … xyz() 시스템콜 인터페이스 Libc 응용 표준 프로그램 서브루틴 시스템 콜 int 0x80 } system_call: sys_xyz() ret_from_sys_call: iret sys_xyz() { 사용자 영역 커널 영역 응용 프로그램 Libc 표준 서브루틴 라이브러리 시스템 콜 핸들러 시스템 콜 서비스 루틴 시스템콜 인터페이스

시스템 콜 처리

가상 파일시스템(Virtual File System) 가상 파일시스템(VFS, Virtual File System) 모든 파일시스템에 대한 공통(Common) 인터페이스 제공 유닉스 파일시스템과 관련된 모든 시스템 콜을(System Call)을 처리하는 커널 소프트웨어 계층 cp VFS Ext2 MS-DOS /tmp/test /mnt/sd/TEST int = open(“/mnt/sd/TEST”, O_RDONLY, 0); outf = open(“/tmp/test”, O_WRONLY|O_CREATE|O_TRUNC, 0600); do { l = read(inf, buf, 4096); write(outf, buf, l); } while (l); close(outf); close(inf); $ cp /mnt/sd/TEST /tmp/test MS_DOS 마운트 포인트 Ext2 디렉토리

VFS가 지원하는 파일시스템 디스크 기반 파일시스템 네트워크 파일시스템 특수 파일시스템 로컬 디스크 파티션의 기억 장소를 관리 하드디스크, 플로피, CD-ROM 같은 블록 디바이스에 기반 ext2, msdos, vfat, ntfs, iso9660(CD-ROM), hpfs(OS/2) 등 네트워크 파일시스템 다른 네트워크의 컴퓨터에 속한 파일 시스템에 접근 NFS, Coda, AFS, SMB, NCP 특수 파일시스템 /proc 파일시스템 사용자가 커널의 데이터에 접근할 수 있는 인터페이스 제공 /dev 파일시스템 디바이스를 표준 파일시스템으로 관리할 수 있는 인터페이스 제공

리눅스 시작 시스템 RESET 또는 POWER-UP 부트로더가 시스템을 초기화 한다. 커널 압축 해제 및 재배치 리눅스 커널 초기화 루트 파일시스템 MOUNT 리눅스 어플리케이션 부트로더가 시스템을 초기화 한다. 커널의 압축을 해제하고, 리눅스 커널이 실행 될 수 있도록 메모리 맵을 구성한다. 루트 파일시스템을 찾아서 MOUNT 한다. 리눅스 어플리케이션이 시작 된다. 1 2 3 4 5 시작 시스템 RESET 또는 POWER-UP 리눅스 커널이 시작되고, 프로세서 및 장치를 초기화 한다.

실 습

고려 사항 필요한 Image 파일을 적당한 디렉토리에 복사 부트 로더는 Kit에 저장되어 있음 zImage : 커널 이미지 root_fs.jffs2 : 루트 파일 시스템 부트 로더는 Kit에 저장되어 있음 호스트 PC에서 타겟 보드로 파일 전송은 xmodem 프로토콜을 사용

부트로더 실행 화면

리눅스 커널 Writing (1)

리눅스 커널 Writing (2) [전송]-[파일보내기] 파일 전송 화면

리눅스 커널 Writing (3)

리눅스 커널 Writing (4)

루트 파일 시스템 Writing (1)

루트 파일 시스템 Writing (2) [전송]-[파일보내기] 파일 전송 화면

루트 파일 시스템 Writing (3)

임베디드 리눅스 시스템 부팅 (1)

임베디드 리눅스 시스템 부팅 (2)

심화 실습 커널 이미지 생성하기 램디스크 생성하기

커널 이미지 만들기 (1) 커널 소스 : linux-2.4.19.tar.bz2 ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.4 위의 파일을 /root/soc-kernel로 다운로드 tar xvfj linux-2.4.19.tar.bz2 cd linux-2.4.19 make menuconfig

커널 이미지 만들기 (2)

커널 이미지 만들기 (3) 커널 이미지 구성 모듈 선택 make dep make zImage 예) Ethernet을 선택하지 않음 [ ] Ethernet (10 or 100Mbit) 저장 후 exit make dep make zImage /root/soc-kernel/arch/arm/boot 디렉토리에 zImage 생성

커널 이미지 만들기 (4) 생성한 zImage 를 타겟 보드로 전송 후 Flash 메모리에 저장 부팅 과정에서 Ethernet 관련 부분이 없어졌는지 확인

커널 이미지 만들기 (5) 수정 전의 부팅화면 수정 후의 부팅화면

램 디스크 생성하기 (1) /root/ramdisk 디렉토리 생성 아래의 두 파일을 /root/ramdisk에 복사 root_filesystem.tar.bz2 mkfs.jffs2 tar xvjf root_filesystem.tar.bz2 후 파일시스템 수정 huins_config 파일의 Hostname 수정 mkfs.jffs2 –r ./root_filesystem –o root.jffs2 –e 0x10000 –p 램 디스크 이미지 생성 타겟 보드 다운로드 후 Flash에 저장

램 디스크 생성하기 (2) 수정 전의 부팅화면 수정 후의 부팅화면