<4D6963726F736F667420506F776572506F696E74202D20BEC8B5E5B7CEC0CCB5E54857C7C3B7A7C6FB205BC8A3C8AF20B8F0B5E55D>

Similar documents
슬라이드 제목 없음

PowerPoint 프레젠테이션

ESP1ºÎ-04

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - em8-리눅스설치.ppt

망고100 보드로 놀아보자-4

Microsoft PowerPoint - 03-Development-Environment-2.ppt

PowerPoint 프레젠테이션

Mango220 Android How to compile and Transfer image to Target

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

DE1-SoC Board

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C0BDBCBA484D4920C0FBBFEB20C5DAB7B9B8C5C6BDBDBA20B4DCB8BBB1E228B9DFC7A5C0DAB7E129>

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

ARM01

Microsoft Word - MV210_CPUSpec.doc

Microsoft PowerPoint - 02-Development-Environment-1.ppt

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox

KDTÁ¾ÇÕ-2-07/03

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - eSlim SV [ ]

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

KDTÁ¾ÇÕ-1-07/03

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

Microsoft PowerPoint - Building.pptx

PowerPoint 프레젠테이션

<목 차 > 제 1장 일반사항 4 I.사업의 개요 4 1.사업명 4 2.사업의 목적 4 3.입찰 방식 4 4.입찰 참가 자격 4 5.사업 및 계약 기간 5 6.추진 일정 6 7.사업 범위 및 내용 6 II.사업시행 주요 요건 8 1.사업시행 조건 8 2.계약보증 9 3

PowerPoint 프레젠테이션

chapter4

슬라이드 1

ÀüÀÚ Ä¿¹ö-±¹¹®

MAX+plus II Getting Started - 무작정따라하기

목차 개발환경 JTAG Bootp TFTP NFS 1

1217 WebTrafMon II

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee

Assign an IP Address and Access the Video Stream - Installation Guide

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

Microsoft PowerPoint - ARM 개발 환경.ppt

5" TFT- LCD 및감압터치지원 : 800x480 USB Host 2.0, USB OTG 2.0, GPS, Wireless LAN, Ethernet 10/100Mbps 통신지원 300 만화소 CMOS Image Sensor 고해상도카메라모듈내장 전원은베이스보드에서공

컴퓨터관리2번째시간

PCServerMgmt7

기술 이력서 2.0

VZ94-한글매뉴얼

Contents I. 칼라스 네트워크 플레이어란 1. Pc-Fi를 넘어서 발전한 차세대 음악 플레이어 칼라스 네트워크 플레이어의 장점 3. 시스템 기본 구성

Microsoft PowerPoint - e7.pptx

APOGEE Insight_KR_Base_3P11

EmbeddedSoC_1주차.PDF

PowerPoint Presentation

슬라이드 1

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

서현수

Microsoft PowerPoint - eSlim SV [080116]

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,,,,,,,,,,,,,.,..., U.S. GOVERNMENT END USERS. Oracle programs, including any operat

PowerPoint 프레젠테이션

LCD Display

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

<C7D1B1B9C1A4BAB8BBEABEF7BFACC7D5C8B82D535720C7C3B7A7C6FB20C7D8B9FD20536F4320C0B6C7D5C0B8B7CE2DB3BBC1F62E687770>

PowerPoint 프레젠테이션

LXR 설치 및 사용법.doc

PowerPoint 프레젠테이션

hd1300_k_v1r2_Final_.PDF

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

untitled

문서 대제목

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

CL100B_manual_kor_m.0.2.indd

CZ-KETI-IOTG200

6주차.key

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation


인켈(국문)pdf.pdf

Adobe Flash 취약점 분석 (CVE )

10X56_NWG_KOR.indd

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

User Guide

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

[Brochure] KOR_TunA

Code Generation in Rapid

Chap7.PDF

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - HD-35 메뉴얼_0429_.doc

LN_5_Rootfs


Integ

Microsoft PowerPoint - e2.ppt [호환 모드]

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

<4D F736F F F696E74202D20454D43BCB3B0E8B4EBC3A5BBE7B7CA2828C1D629B8B6B7E7C0CEC6F75FBDC5C1D6C8A3292E707074>

05Àå

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Transcription:

Embedded Linux System 분석 및 환경구축 나 이 텍 Embedded Linux System 환경구축 및 분석 1

Index 임베디드 시스템의 특징 임베디드 시스템의 개요 및 구성 임베디드 시스템의 특징 임베디드 시스템 현황과 전망 Processor 혹은 SoC(System on Chip) Processor와 SoC와 IP Processor 선정 방법 Samsung S5PC100의 특징 임베디드 리눅스 리눅스 개요 리눅스 2.6 특징 임베디드 리눅스 개발환경 Cross development 환경 개요 Cross development 환경 구축 File system과 Root File system Cross toolchain 빌드 및 구축 나 이 텍 Embedded Linux System 환경구축 및 분석 2

Index NTC100 Board의 특징 및 U-Boot NTC100 보드의 특징 부트로더 분석 Linux 2.6 kernel 설정 및 Compile 커널 설정 및 컴파일 Linux Kernel 구조의 이해 Linux Kernel의 부트과정 Linux kernel과 device driver와의 관계 Kernel Module Linux Device Driver의 동작원리 Linux Multimedia Framebuffer FFMPEG Mplayer Linux Multimedia Reference 나 이 텍 Embedded Linux System 환경구축 및 분석 3

Embedded Linux 분석 및 환경구축 임베디드 시스템의 특징

세부 목차 임베디드 시스템의 개요 및 구성 나 이 텍 Embedded Linux System 환경구축 및 분석 5

임베디드 시스템이란? 임베디드 시스템의 정의 내부에 Computer가 들어있는 제품 혹은 시스템(ex> Single Board Computer - SBC) programming이 가능한 디바이스를 포함하고 있으나,그 자체로 일반적인 목적의 컴퓨터 시스템이 아닌 특수한 목적의 시스템 특정한 목적을 수행하기 위하여 Micro-Processor, Memory Controller, 각 종 I/O가 통합되어 있는 하드웨어와 그 하드웨어를 제어하기 위한 소프트웨 어가 탑재된 통합시스템 임베디드 시스템의 일반적인 의미 마이크로 프로세서/마이크로 컨트롤러를 내장(embedded)하여 원래 제작 자가 의도한 특정한 기능만을 수행하는 장치 미리 정해진 특정한 기능을 수행하도록 프로그램이 내장되어 있는 시스템 일반적으로 보다 큰 시스템의 일부이거나 독립된 시스템 나 이 텍 Embedded Linux System 환경구축 및 분석 6

임베디드 시스템이란? 임베디드 시스템의 일반적인 의미(계속) 특별한 업무를 수행하거나 사용자가 임의로 정한 업무를 수행 하드웨어와 소프트웨어를 포함하는 특정한 응용시스템 하드웨어와 소프트웨어의 변경이 매우 어려운 시스템 개인 휴대 정보 단말, 지리 정보 시스템, 의료 정보 단말, 정보가전, 게임기 기, 자동차, 항공기 및 우주선, 의료 및 산업 원격 조종 장비 등의 시스템을 총칭 나 이 텍 Embedded Linux System 환경구축 및 분석 7

임베디드 시스템의 구성 임베디드 시스템의 구성 Hardware : SoC(System on Chip), Memory(DRAM), Flash(NOR/NAND), Ethernet Controller, Sensor 등 Software : Bootloader, 운영체제(Operating System), Device Driver, Middleware, Application 등 Hardware SoC Memory I/O Serial etc Ethernet Software Bootloader, OS Middleware Application 임베디드 시스템 나 이 텍 Embedded Linux System 환경구축 및 분석 8

세부 목차 임베디드 시스템의 특징 나 이 텍 Embedded Linux System 환경구축 및 분석 9

임베디드 시스템의 특징(1/9) 왜 임베디드 시스템은 다른가?(PC와의 차이점) 일반적인 계산 목적이 아니라 특별한 임무를 위한 시스템 목적에 알맞은 Processor의 특징에 의존한다 가격적인 측면 보통 가격에 민감한 경우가 많다. 대량 생산 제품의 경우는 가격에 민감하지만, 인공위성-화성탐사선과 같은 기능위주의 제품은 가격에 덜 민감한 편 부품단가 위주로 계산 즉, 비용대비 성능의 미묘한 선에서 결정을 해야한다 시스템 설계자의 역량에 따라 제품의 성공/실패가 결정될 비율이 높음 나 이 텍 Embedded Linux System 환경구축 및 분석 10

임베디드 시스템의 특징(2/9) 실시간 동작의 필요성 일반 PC의 경우와는 다르게 즉각적인 응답이 필요한 경우가 있음 단말보다는 주로 제어 시스템의 경우가 많음 시간에 민감하게 제약 받는 경우(time sensitive constraint) Ex> print출력 시간 시간에 결정적으로 제약 받는 경우(time critical constraint) Ex> 비행기 제어시스템 Ex> 엘리베이터 제어 시스템 비용대비 실시간의 필요성과 software사이에서의 고려 상용 RTOS, 공개 RTOS, 리눅스를 이용한 실시간 구성(timer interrupt를 이 용한) 개발환경과 비용과의 관계도 고려. 즉, 목적하는 시스템의 성능에 따라 고려 를해야함. 나 이 텍 Embedded Linux System 환경구축 및 분석 11

임베디드 시스템의 특징(3/9) Software의 오동작 문제 Software가 오동작 했을 경우 일반 PC보다 훨씬 심각한 문제가 발생할 가능성이 높음 단말보다는 제어 시스템쪽에 더 심각한 증상 오동작의 심각성 무인시스템의 경우의 문제 기지국, 위성시스템, 군사관련시스템 인간과 관련된 시스템 엘리베이터 제어시스템의 오동작, 교통제어 시스템 의 오동작 오동작에 대한 대비책을 세워야 함 Watchdog timer등과 같은 시스템을 감시하는 다른 시스템의 도입 나 이 텍 Embedded Linux System 환경구축 및 분석 12

임베디드 시스템의 특징(4/9) 전원문제 PC에서는 발생하지 않는 전원에 대한 문제가 발생할 경우가 있음 저전력문제 단말기 이동전화, Portable Multimedia Player Ex> 지리산 반달곰 위치 표시 시스템 Hardware의 문제? 저전력 지원 SoC (Speed Step 기술) Software의 문제? 저전력 지원 SoC를 제어하는 software의 유무 (Power Management System), tickless ikl kernel!? 시스템의 목적에 알맞은 전원 디자인 전원에 대한 문제는 시스템 디자인 결정에 골고루 영향을 미침 전력의 제약은 SoC의 선택, 속도의 선택에 영향을 미침 발열문제 밀폐된 공간에서의 발열문제(ex> 벽에 장착된 web-pad) 다른 부품에 의한 발열 문제(ex> LCD에 의한 발열) 나 이 텍 Embedded Linux System 환경구축 및 분석 13

임베디드 시스템의 특징(5/9) 열악한 동작환경 조건 임베디드 시스템은 어디서나 사용됨. 비행기, 북극, 사막, 수중 및 심지어 우주에서도 동작해야 함 이에 따른 Hardware에 대한 제약사항 발생(ex> Industrial version의 부품들을 사용해야 함) 일반 PC보다 훨씬 적은 resource를 가지고 있음 효과적인 개발을 위한 특정 툴과 개발방법이 필요 전용 디버깅 장비를 사용하는 경우가 많음(ex> Trace-32) Cross-toolchain이 필요하다 디버깅에 제한을 많이 받는다. 나 이 텍 Embedded Linux System 환경구축 및 분석 14

세부 목차 임베디드 시스템 현황과 전망 나 이 텍 Embedded Linux System 환경구축 및 분석 15

임베디드 시스템 시장 현황 및 전망 소프트웨어 시장 제 1 강자는 없다 가장 각축전이 치열한 분야는 임베디드 운영체제(OS) PC 시장과 같이 특정 OS 가 시장을 독점하지 못하고 있음 적용제품의 종류, 규모에 따라 여러 종류의 상용 및 비상용 제품 다양 임베디드 OS 및 플랫폼, 애플리케이션 시장을 놓고 불꽃 튀는 경쟁 VxWorks를비롯한 RTOS 윈도CE, 임베디드 리눅스, 썬의 Java, 일본의 Tron 나 이 텍 Embedded Linux System 환경구축 및 분석 16

임베디드 시스템 - 산업의 특성 고부가가치 산업 임베디드 소프트웨어가 탑재된 상품의 가치는 하드웨어보다 소프트웨어 가 좌우하는 기술집약적 고부가가치 산업임 통신 라우터의 경우, 하드웨어 원가가 수십 만원에 불과하나 각종 통신 및 제 어 소프트웨어가 탑재되면 최종가격이 수백만원으로 상승함 VPN 서버 장비의 경우 하드웨어 가격은 2~3백만원대, 소프트웨가 탑재되면 수천만원대 하드웨어 강자가 절대적으로 유리(반도체) 우리나라의 기술 우위 산업 분야와 임베디드 소프트웨어 기술을 접목할 경우 국가 산업 발전의 새로운 대안으로 부각 가능 정보가전(디지털가전), 이동전화, 전자 자동차 등에 강점이 있음 나 이 텍 Embedded Linux System 환경구축 및 분석 17

임베디드 시스템의 향후 전망 - H/W 메모리 고속/대용량화 FLASH 메모리의 사용증가. 네트워크 유 무선 네트워크의 대역폭의 계속적인 증가. 정보기기를 통해 어디서나 다른 정보시스템에 접근 가능한 액세스 네트 웍 구축이 핵심 기술 Wireless LAN, Bluetooth 등 패키지 기술 하나의 ChipSet에 필요한 부품을 전부 내장시킴. Micro-Processor + DSP + Flash Memory + DRAM 그 밖에 3D H/W 가속기능, 암호화 모듈,... 나 이 텍 Embedded Linux System 환경구축 및 분석 18

임베디드 시스템의 향후 전망 - H/W SOC (System-on-a-chip) CPU, 메모리, DSP, I/O 등을 하나의 칩으로 만드는 기술 CPU칩, 메모리 칩, 주변장치 칩 들을 따로 사용하여 설계 각 칩에 해당되는 회로를 각각의 IP(Intellectual Property 또는 지적재산권) 로 확보해서 한 개의 칩으로 설계 수백만 게이트 급의 칩 MEMORY MEMORY VIDEO Decoder CPU HDTV Channel EQ. MPEG2FORMAT HDTV TS Channel Converter Decoder OSGM 나 이 텍 Embedded Linux System 환경구축 및 분석 19

Embedded Software 분류 임베디드 응용 소프트웨어 멀티미디어 재생기, MAP Viewer, 브라우저, PIM 응용, 게임, 모바일 숍, CNS(GPS, GIS) 등 임베디드 미들웨어 JVM, CORBA, COM, 무선 인터넷 플랫폼(Brew), 각종 통신 프로토콜 관리기 등 임베디드 시스템 소프트웨어 적응형 RTOS, 메모리 상주 DBMS, 디바이스 드라이버, 저전력 지원 등 임베디드 소프트웨어 개발 프레임워크 컴파일러, 디버거, 모바일 환경에 적합한 각종 시뮬레이터, 실시간 모니 터, 이동 모니터 등 나 이 텍 Embedded Linux System 환경구축 및 분석 20

임베디드 시스템의 향후 전망 - S/W OS Plug-and-play RTOS Linux will be there. Windows 시장 진입 노력: CE,.NET System S/W 새로운 장치와 고성능화 하는 장치에 맞는 API 계속 개발 Device Driver 자동 생성 도구 발전: MS Platform builder Middleware의 등장 Application S/W Component Based Design: Plug-and-play l 응용 S/W 개발이 가속화 S/W Modeling CAD Tool (UML) Development Tool CAD Tools for Rapid S/W development Automatic Source Code Generation Tool: Objectime, RoseRT 나 이 텍 Embedded Linux System 환경구축 및 분석 21

임베디드 시스템의 향후 전망 - 운영체제 실시간 시스템에서의 운영체제 간단하고 단순한 순차적인 작업에 관련 순차적인 프로그램으로 충분하였음 8bit, 16bit 마이크로프로세서 및 마이크로 컨트롤러 사용 임베디드 시스템에서의 운영체제 시스템 자체가 실시간 시스템에 비해 대형화 32bit RISC 마이크로프로세서 사용, 네트워크 연결, GUI환경이 강화됨 기능이 많아지고 복잡해짐 순차적인 프로그램 작성이 불가능 운영체제가 도입됨 임베디드 운영체제 기존의 상용 RTOS(Real-Time OS) 윈도우 CE 임베디드 Linux 임베디드 JAVA 나 이 텍 Embedded Linux System 환경구축 및 분석 22

임베디드 시스템의 향후 전망 - 운영체제 임베디드 시스템은 초기에 산업 및 군수용 장비의 제어를 위해 VxWorks, psos, VRTX 등 RTOS가 세계 시장을 선점 VxWorks, psos와 같은 전용 실시간 OS는 2001년을 기점으로 점차 시장 점유율이 하락하고 있음(IDC, 2001) 현재 임베디드 시스템의 다기능화 추세로 MS의 WinCE와 공개 소 스 기반의 임베디드 리눅스 중심으로 재편 중 2002년 PDA에서는 PalmOS가 선두였으나 2008년 현재 Nokia symbian 및 MS의 WinCE가 차지. 임베디드 리눅스는 2003년 14%, 2010년 50% 시장 점유 예측(VDC, 2001) Symbian 오픈 소스로 공개예정 (2009년 초) 구글의 안드로이드 핸드폰 개발 플랫폼 등장 (리눅스 커널 + 자바 프 로그래밍 환경) 나 이 텍 Embedded Linux System 환경구축 및 분석 23

Embedded Linux 분석 및 환경구축 Processor 혹은 SoC(System on Chip)

세부 목차 Processor와 SoC와 IP 나 이 텍 Embedded Linux System 환경구축 및 분석 25

System on Chip SoC 반도체 칩이 점점 미세화, 복잡화 되어짐에 따라 SoC(System on a Chip)가 대두됨 일반적으로 SoC는 칩 내부에 프로세서를 포함하게 되고 그로인하여 처 리해야 할 버스, 메모리를 비롯한 레지스터, 주변회로 등을 모두 포함하 게됨 반도체 칩은 조속히 칩을 개발하여 누가 먼저 시장에 출시하느냐에 따라 그 성패가 좌우되며 이것은 설계를 빨리 해야 한다는 것과 직결됨 반도체 칩의 설계를 빨리 하기 위해서 IP(Intellectual Property)를 사용 하는 방법이 적극 추천되고 있다 나 이 텍 Embedded Linux System 환경구축 및 분석 26

IP(Intellectual Property) IP 해당 칩에 적용될 수 있는 설계 블록을 누군가 미리 오랜 기간을 투입하 여 개발해 놓은 것을 의미 IP의 확보 여부가 칩에 대한 설계기간 단축에 지대한 영향을 미치게 되 어 그 성패 여부를 결정하는 주요 요인이 됨 해당 IP에 대해 기술적으로 잘 파악하여 입수하고자 하는 IP에 대한 공 급처를 찾는 것이 가장 복잡한 문제 IP의 성능이 전체 SoC의 성능이 되는 경우가 많으므로 기능과 안정성이 겸비된 IP를 구입해야함(ex> SD driver block) 나 이 텍 Embedded Linux System 환경구축 및 분석 27

IP(Intellectual Property) IP의 예 화면 3D 가속기능 암호화 알고리즘... IP의 검증 FPGA RTOS or Embedded Linux를 써서 검증. 검증이 끝나면 Soc 제작 특정 기능에 특화된 Soc 완성 나 이 텍 Embedded Linux System 환경구축 및 분석 28

ARM (Advanced RISC Machine) ARM is one of the most licensed and widespread processor cores in the world (약 75%의 시장 점유) Used especially in portable devices due to low power consumption and reasonable performance (MIPS/watt) Several interesting extensions Thumb instruction set Jazelle Java machine 나 이 텍 Embedded Linux System 환경구축 및 분석 29

ARM ARM 특징 Load-store 구조 : 메모리에서 데이터를 읽고 쓰는 명령어와 CPU 내부 에서 연산을 수행하는 명령어를 분리함 32비트 고정 크기의 명령어 : 한 명령어당 32 비트 16비트 명령어 사용 가능 : Thumb 모드에서 16비트 명령어를 사용할 수 있음, Cortex-A8 32/16 bit inst. 동시 지원 조건부 명령어 구조 :모든 명령어는 조건부 수행 명령으로 만들 수 있음 3개 주소 명령어 구조 : 두개의 소스 주소와 한 개의 목적지 주소를 사용 함 Shadow 레지스터 : 문맥교환 시간 단축 Barrel shift 레지스터 : ALU 입력 단에서 간단한 상수를 즉석에서 만들 거나 간단한 곱셈의 수행 속도를 빠르게 함 나 이 텍 Embedded Linux System 환경구축 및 분석 30

ARM History 1980 년 스탠포드와 버클리 대학에서 RISC 논문 발표. 이후에 버클리 대학원생의 설계 프로젝트로 구현 (Berkeley RISC I) 1983년: Acorn Compyter Ltd.에서 개발 시작 Roger Wilson과과 Steve Furber가가 8비트비 6502 프로세서에 기초하여 작업 1985년: ARM1 샘플 개발 1986년: ARM2개발 3만 여개의 트랜지스터 집약으로 80286 보다 낮은 클록에도 불구하고 성 능은 더 나은 결과를 보임 1990년: ARM으로 회사 이름 개명 1991년: ARM6 개발 Apple의 Newton PDA에서 사용 (ARM 610) 1993년: ARM7 개발 본격적으로 ARM 프로세서가 임베디드 시장에 보급되는 계기 1997년: ARM9개발 ARM7에 비해 많은 부분에서 성능 개선 나 이 텍 Embedded Linux System 환경구축 및 분석 31

ARM History 1998 년: 노키아 6110 GSM 폰에서 ARM 프로세서 채택 2000년 보안 제품을 위한 Secure-Core, Java 응용 프로그램을 위한 Jazelle, 멀티 미디어 처리를 위한 SIMD(Single Instruction Multiple Data) 기술이 발 표되고 Intel사의 ARM 계열인 XScale 아키텍쳐가 소개. 2001년: ARMv5 발표 명령어 집합 아키텍쳐를 발표하면서 ARM926EJ-S, ARM7EJ, Secure- Core SC200, SC210을 소개. 2002년: ARMv6 명령어 집합을 구현한 ARM11 아키텍쳐와 ARM1136JF 코어를 출시하고 ARM11 PrimeXsys 개발 플랫폼을 출시. 2006년: ARM11 상품 출시 2006년: ARM Cortex 개발 2008년: ARM Cortex 상품 출시(Cortex-M, Cortex-A) 나 이 텍 Embedded Linux System 환경구축 및 분석 32

ARM license ARM 사는 CPU를 제작하거나 판매하지 않으며, ARM core 설계서 와 소프트웨어 개발 도구(컴파일러, 디버거, SDK)를 판매한다. Intel은 ARM 라이센스를 구입하여 Strong ARM과 Xscale을 개발하 여 판매 Samsung은 ARM 라이센스를 구입하여 S3C2410, S3C2440 등을 개발 2009년 현재 주로 ARM9/ARM11이 사용되고 있으며 Cortex-A8이 적용된 제품군이 출시된 상태. 2010년 현재 Cortex-A8이 휴대기기의 표준이 되어가는 추세이며, Cortex-A9 MPcore 제품군의 출시(OMAP4/Tegra2등)가 되어 있는 상태 나 이 텍 Embedded Linux System 환경구축 및 분석 33

ARM History (cont.) 나 이 텍 Embedded Linux System 환경구축 및 분석 34

ARM 버전에 따른 특징 나 이 텍 Embedded Linux System 환경구축 및 분석 35

ARM 버전 ARM v1 [ARM1 core] 기본적인 데이터 처리 명령 (곱셈 명령 없음) 바이트, 워드, 멀티 워드 load/store 명령 분기 명령, 분기 링크 명령 소프트웨어 인터럽트 명령 26비트 어드레싱 ARM v2 [ARM2, ARM3 core] 곱셈 명령 Fast 인터럽트 모드의 레지스터 추가 Co-processor 지원 32비트 곱셈기 온칩 캐시 나 이 텍 Embedded Linux System 환경구축 및 분석 36

ARM 버전 ARM v3, ARM v3m [ARM6, ARM7DI core] CPSR과 SPSR 분리 Signed/unsigned i d 곱셈 확장 명령 Exception 추가 32비트 어드레싱 MMU(Memory Management Unit) 지원 ARM v4, ARMv4T [ARM7TDMI, ARM9T core] signed/unsigned half-word load/store 명령 Thumb 명령 추가 시스템 모드 추가 나 이 텍 Embedded Linux System 환경구축 및 분석 37

ARM 버전 ARM v5, ARM v5te, ARM v5tej [ARM9E, ARM10E, ARM7EJ, ARM926EJ core] ARM과 thumb 간 상호 작업 DSP 명령 추가 Jazelle 추가 ARM v6 [ARM11 core] SIMD (single instruction multiple data) 명령어 추가 : 멀티미디어 지 원 Vector Floating Point 연산 지원. ARM v7 [Cortex core] SIMD (single instruction multiple data) 128bit명령어 추가 Vector Floating Point 연산 지원 Thumb-2 지원: 16bit/32bit instruction의 i 혼합 사용가능 나 이 텍 Embedded Linux System 환경구축 및 분석 38

ARM 버전 ARM core에 붙는 심볼의 의미 T : thumb instruction set M : long multiply l instructioni E : Enhanced DSP instruction D : JTAG debug I : Embedded ICE macrocell J : Jazelle (Java 가속기능) F : VFP (vector Floating Point) S : Synthesizable 나 이 텍 Embedded Linux System 환경구축 및 분석 39

ARM core categories Application core Devices running open OS including Linux, Palm OS, Symbian OS and Windows CE in wireless, consumer entertainment and digital imaging applications. Embedded core Embedded real-time systems for storage, automotive body and power train, industrial and networking applications Secure applications Smart card, SIM cards and payment terminals 나 이 텍 Embedded Linux System 환경구축 및 분석 40

ARM 계열 나 이 텍 Embedded Linux System 환경구축 및 분석 41

ARM Architecture with Android -------------------------------------------------------------------------- ARM v4 ARM920T : android 1.5 SDK -------------------------------------------------------------------------- ARM v5 ARM926ejs : android 1.6 SDK 4 ARM v6 ARM1136, 1176 : android 1.6 * VFS : Vector Floating Point * SIMD : 128bit 명령어 * ARM 11 까지 실질적으로 CPU 속도의 차이 말고 별달리 특화된 사항이 없다. * L1 Cache 주로 사용(16bit x 16bit) ----------------------------------------------------------------------------------------------- ARM v7 Cortex-A8, A9, A9 MPCORE : android 2.0 and later SDK 5 = 2.0 SDK 6 = 2.0.1 SDK 7 = 2.1 ----------------------------------------------------------------------------------------------- 나 이 텍 Embedded Linux System 환경구축 및 분석 42

세부 목차 Processor 나 이 텍 Embedded Linux System 환경구축 및 분석 43

Processor 적절한 Processor를 결정하는데 필요한 조건 가장 중요한 조건은 얼마나 시장에서 검증이 되었고, 얼마나 chip vendor 의 지원을 받을 수 있는지임. 대부분의 chip vendor는 기능이 다 된다고 거짓말 하는 경우가 많음 반도체 영업부서의 말을 믿고서 선정했을 경우 개발의 막바지에 특별한 기능의 문제로 프로젝트에 심각한 타격을 입을 경우(ex> 부트모드에 따라 특정 디바이 스가 fail이 날 경우) 특정 OS에 대한 지원이 된다고 믿고 진행하였으나, 결정적일 때 지원이 안 되는 경우 나 이 텍 Embedded Linux System 환경구축 및 분석 44

Processor 적절한 Processor를 결정하는데 필요한 조건(계속) 가장 중요한 조건은 얼마나 시장에서 검증이 되었고, 얼마나 chip vendor 의 지원을 받을 수 있는지임.(계속) 반도체 Bug가 있는 경우가 많으나, chipvendor에서는 외부에 해당 내용을 발표 하지 않는 경우가 허다함 위의 한 경우에라도 해당하면, 프로젝트 막바지에서 엄청난 문제가 생긴다 대부분의 software engineer는 Evaluation board상에서는 최대한의 성능테 스트는 하지 않고, 기능지원 유무만 테스트하는 경우가 많음 나 이 텍 Embedded Linux System 환경구축 및 분석 45

세부 목차 Samsung S5PC100의 특징 나 이 텍 Embedded Linux System 환경구축 및 분석 46

Samsung SoC의 종류 Mobile SoC > application processor 이름 프로세서 동작 속도 특 징 패키지 S3C44B0 ARM7TDMI 66MHZ Timer,UART,SPI,IIS,ADC,Touch,STN LCD S3C2410 ARM920T 200/266MHz ROM/SRAM/SDRAM, STN/TFT LCD, Touch, MMC/SD card, USB, ADC, NAND Boot 지원 272 FBGA S3C2412 ARM926EJ-S 200/266Mhz S3C2410 feature + msdram 272 FBGA S3C2413 ARM926EJ-S 266Mhz S3C2410 feature + msdram,mddr,onenand + Camera I/F 289 FBGA S3C2440A ARM920T 300/400MHz S3C2410 feature+camera I/F+AC97 I/F 289 FBGA S3C2442 ARM920T 300/400MHz S3C2440 feature + MCP(Multi-Chip-Package) 332 FBGA S3C2443 ARM920T 400/533MHz S3C6400 ARM1176JZF-S 667MHz S3C6410 ARM1176JZF-S 800MHz S3C2440 feature + USB2.0, CF-ATA I/F,HS MMC, SPI, MLC support Multimedia : Camera I/F, H.264/MPEG4/VC1, NTSC/PAL TV out, JPEG, 2D Graphics Connectivity : USB OTG2.0, HOST1.1, AC97/PCM I/F S3C6400의 버그 수정, 거의 동일한 SoC Multimedia : Camera I/F, H.264/MPEG4/VC1, NTSC/PAL TV out, JPEG, 2D Graphics, 3D가속 Engine, Connectivity : USB OTG2.0, HOST1.1, AC97/PCM I/F S5PC100 ARM Coretex-A8 667/833MHz Multimedia : MFC, MPEG-2/4, H.263/264, HDMI 400 FBGA 424 FBGA 424 FBGA 나 이 텍 Embedded Linux System 환경구축 및 분석 47

Samsung S5PC100 Block Diagram 나 이 텍 Embedded Linux System 환경구축 및 분석 48

S5PC100 주요특징(1) ARM CortexTM-A8 based CPU Subsystem with NEON 64-bit Multi-layer bus architecture Advanced power management for mobile applications Internal ROM for secure booting and internal RAM for security function 8-bit ITU 601/656 Camera Interface up to 8M pixel for scaled and 64M pixel for un-scaled resolution Multi Format Codec provides encoding and decoding of MPEG- 4/H.263/H.264 up to 720p@30fps and decoding of MPEG-2/VC1/Divx video up to 720p@30fps JPEG codec support up to 0.5Mpixels/MHz TV-out and HDMI interface support for NTSC and PAL mode with image enhancer AC-97 audio codec interface and PCM serial audio interface 3-channel 24-bit I2S interface 2-channel I2C interface 3-channel SPI interface 1-channel TX only S/PDIF interface support for digital audio USB 2.0 OTG supporting high speed (480Mbps, on-chip transceiver) USB 1.1 Host 나 이 텍 Embedded Linux System 환경구축 및 분석 49

S5PC100 주요특징(2) Channel SD/SDIO/HS-MMC interface CF version 3.0 interface 24-channel DMA controller (8 channels for Memory-to-memory DMA, 16 channels for Peripheral DMA) Configurable GPIOs 8x8 key matrix interface. 10-channel 12-bit multiplexed ADC Real time clock, PLL, timer with PWM and watch dog timer System timer for variable tick 3D Graphics Acceleration with programmable shader 2D Graphics Acceleration with BitBlit and Rotation MIPI-DSI and MIPI-CSI interface Dedicated IrDA port for SIR/MIR/FIR Asynchronous direct Modem Interface 나 이 텍 Embedded Linux System 환경구축 및 분석 50

Clock 설정 Clock setting PLL 및 clock devider 설정 APLL: M=400, P=4, S=1 MPLL: M=106, P=4, S=2 EPLL: M=110, P=4,S=4 DIVAPLL = 1 (1/2 divider) DIVARM = 0 (1/1 divider) DIVD0_BUS = 2 (1/3 divider) DIVD1_BUS = 0 (1/1 divider) DIVMPLL = 0 (1/1 divider) DIVMPLL2 = 0 (1/1 divider) 나 이 텍 Embedded Linux System 환경구축 및 분석 51

S5PC100 부트모드 설정 부트모드 OM 및 NFMOD 설정 나 이 텍 Embedded Linux System 환경구축 및 분석 52

S5PC100의 PLL S5PC100에는 4개의 PLL이 있음. APLL MPLL EPLL HPLL ARMCLK용으로 사용 : up to 667MHz HCLK(AXI/AHB)용으로 사용 : up to 133MHz PCLK용으로 사용 : up to 66MHz 특별한 주변장치 클럭으로 사용 (ex. UART, IIS, IIC, and etc) HDMI 등을 위한 클럭으로 사용 나 이 텍 Embedded Linux System 환경구축 및 분석 53

S5PC100의 PLL 나 이 텍 Embedded Linux System 환경구축 및 분석 54

메모리 서브시스템 S5PC100의 메모리 서브시스템은 6개의 메모리 컨트롤러를 가짐 DRAM CONTROLLER STATIC MEMORY CONTROLLER ONENAND CONTROLLER NAND FLASH CONTROLLER COMPACT FLASH CONTROLLER EXTERNAL BUS INTERFACE 나 이 텍 Embedded Linux System 환경구축 및 분석 55

S5PC100 메모리 맵 나 이 텍 Embedded Linux System 환경구축 및 분석 56

Embedded Linux 분석 및 환경구축 임베디드 리눅스

세부 목차 리눅스 개요 나 이 텍 Embedded Linux System 환경구축 및 분석 58

리눅스 시스템의 분화 MULTICS(Multiplexed Information & Computing Service) (1960, Bell 연구소/AT&T, 속도가 느림) Ken Thomson, C언어와 어셈블리어, Dennis Ritche 나 이 텍 Embedded Linux System 환경구축 및 분석 59

리눅스를 만들어가는 사람들 (1/2) 리누스 토발즈(Linus Torvalds) -최초의 리눅스 커널을 만듦 -리눅스 소스코드를 GNU의 GPL에 따라 인터넷에 공개 리차드 스톨만(Richard Stollman) -GNU 프로젝트의 리더로 FSF (Free Software Foundation)를 설립. -카피레프트(CopyLeft) 주장 나 이 텍 Embedded Linux System 환경구축 및 분석 60

리눅스를 만들어가는 사람들 (2/2) 밥 영 (Bob Young) -RedHat의 공동 창립자, 오픈소스 운동의 선구자 턱스(Tux) -리눅스의 마스코트의 펭귄 http://lwn.net/gallery http://www.linux.org/info/logos.html 나 이 텍 Embedded Linux System 환경구축 및 분석 61

리눅스와 GNU GNU (GNU s not Unix) 80년대 초반 리차드 스톨만(Richard Stallman)에 의하여 시작 GPL (GNU Public License) GPL에 의거한 모든 소프트웨어는 무료 변경 사항을 포함해서 재 판매하는 것은 허용하나 소스는 공개 해야 함 프로그래머는 자신의 소프트웨어로 발생하는 어떤 위험이나 손해에 대한 법 률적 책임이 없음 Linux에 gcc, emacs등을 이식 BSD의 많은 유용한 유틸리티를 포함 하게하는 계기가 됨 리눅스는 GPL에 의거하여 배포 GPL 규약 http://www.gnu.org/licenses/ 나 이 텍 Embedded Linux System 환경구축 및 분석 62

리눅스 커널 버전과 개발 커뮤니티 리눅스 커널 버전 주배포 부 배포 짝수(안정 버전), 홀수(개발) 개정 번호 주버전 부버전 주 버전 패치레벨 2.6.0 리눅스 커널 및 관련 커뮤니티 http://www.kernel.org (Download Kernel) http://vger.kernel.org (Mailing List) http://freshmeat.net (Open Project Applications) http://linuxdevices.com i http://www.gnu.org http://www.lwn.net 나 이 텍 Embedded Linux System 환경구축 및 분석 63

리눅스 특징 모놀리틱 커널 구조(monolithic) 다양한 컴포넌트로 구성된 거대하고 복잡한 프로그램 마이크로 커널 구조와 설계 철학이 상이함 모듈 지원 전통적인 유닉스 커널은 정적(statically)으로 컴파일 및 링크 동적 로딩 및 제거가 가능한 커널 코드 제공(디바이스 드라이버) 커널 스레드 제공 주기적으로 수행되는 커널 함수를 지원 다중 프로세서 지원 SMP(symmetric multiprocessing) 지원 나 이 텍 Embedded Linux System 환경구축 및 분석 64

리눅스의 장점 목적에 맞게 컴포넌트 커스터마이징 가능 GPL에 따라서 소스코드의 수정 및 배포가 가능 저가의 하드웨어 플랫폼에서 수행 RAM 4MB의 ARM7 시스템에서 네트워크 서버 구축 가능 다른 운영체제와 호환성이 뛰어남 에뮬레이터를 통한 윈도우 애플리케이션 수행 POSIX 준수에 따른 유닉스 애플리케이션의 포팅이 용이 나 이 텍 Embedded Linux System 환경구축 및 분석 65

리눅스의 단점 책임지고 개발하는 사람들이 적음 현재도 개발되고 있는 운영 체제이며, 따라서 운영 교육이나 업그레 이드 등의 사후 관리가 어려움 Linux는 컴퓨터에 대한 많은 지식을 요구함으로써 자발적 정신으로 만들어 지는 성격을 가지므로 단순한 문제는 사용자 스스로 해결 해 야함 나 이 텍 Embedded Linux System 환경구축 및 분석 66

임베디드 리눅스 임베디드 리눅스 일반 리눅스 커널(바닐라 커널)에서 특정 부분을 다시 맞춘 커널로 단순 히 프레임워크와 배포를 제외한 커널에 관점을 두었음 일반 리눅스의 축소판 임베디드 시스템의 여러 제약 사항을 고려해서 패치 가함 개발용 프레임 워크 임베디드 리눅스 시스템 개발을 돕는 크로스 컴파일러, 디버거, 프로젝 트 관리 소프트웨어를 지칭 주로 호스트에 위치 나 이 텍 Embedded Linux System 환경구축 및 분석 67

임베디드 리눅스의 종류 임베디드 리눅스 비영리 임베디드 리눅스 영리 임베디드 리눅스 몬타비스타 전세계 임베디드 리눅스 시장의 약 20~25%를 점유하는 리눅스 업계 1위 고수 실시간 기능, 라이브러리 최적화, ARM, MIPS, PPC 등 다양한 프로세서 지원 WindRiver 미지 리서치(현재 WindRiver사와 통합) StrongARM, ARM9, MIPS, x86 등의 CPU 지원 임베디드 리눅스 응용 소프트웨어 개발 문서 제공 나 이 텍 Embedded Linux System 환경구축 및 분석 68

임베디드 리눅스를 선택하는 이유 코드 품질과 신뢰성 모듈성과 구조, 수정 편의성, 확장성 코드 가용성 리눅스의 컴포넌트 대부분은 GNU 일반 공개 라이센스로 배포 소스코드에 문제가 있다면 자유 소프트웨어 커뮤니티에서 해결 하드웨어 지원 폭넓은 하드웨어를 지원하지만 최신 디바이스에 대해서는 늦음 통신 프로토콜과 소프트웨어 표준 다른 OS보다 풍부한 통신 네트워크 기능을 지원과 표준을 따름 대부분의 임베디드 OS에서의 네트워크 부분은 지원이 극히 제한적 사용할수있는툴 커뮤니티 지원 가격 나 이 텍 Embedded Linux System 환경구축 및 분석 69

임베디드 리눅스 시스템 구성 타깃용 임베디드 리눅스 시스템 만들기 부트 소프트웨어를 포팅하고 설정 시스템 컴포넌트를 결정 커널을 설정하고 빌드 루트 파일시스템을 빌드 나 이 텍 Embedded Linux System 환경구축 및 분석 70

임베디드 리눅스 시스템 구축 시 고려사항 부트로더의 선택은 어떤 것으로 할 것인가? 하드웨어에 가장 의존적인 코드로 구성 부트로더의 옵션에 따라 부팅 방법을 변경 최신 커널을 사용할 것인가? 보통 임베디드 시스템은 충분히 검증된 커널을 사용 여러 기능을 가진 최신 버전 보다 설계 명세서에 기술된 기능을 반영하 는 커널을 선택하는 것이 좋음 오래된 커널을 쓰면 커뮤니티의 지원을 받을 수 없는 경우 발생 루트 파일 시스템에 포함할 것은 무엇인가? 전체 시스템 가동에 필요한 최소한의 응용 프로그램, 라이브러리, 기타 관련 파일만 포함 파일 시스템의 크기를 고려 나 이 텍 Embedded Linux System 환경구축 및 분석 71

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 72

세부 목차 리눅스 2.6 특징 나 이 텍 Embedded Linux System 환경구축 및 분석 73

Kernel 2.4 vs Kernel 2.6 Core (1/3) Core module-init-tools module-init-tools를 설치해야 커널 모듈이 설치된다. modprobe는 modules.conf 대신 modprobe.conf 파일 참조 모듈파일의 확장자가.o.ko 로 변경 modinfo 를 치면 모듈이 컴파일된 환경을 자세하게 보여준다. 향상된 스케줄러 O(1) scheduler, 2.6.23서부터 CFS(Completely Fair Scheduler)로 변경 Preemptive Scheduler Anticipatory Scheduler 32 bit dev node Earlier version: 16bit Kernel 2.6: 32bit 로 확장 (major: 12bit, minor: 20bit) 나 이 텍 Embedded Linux System 환경구축 및 분석 74

Kernel 2.4 vs Kernel 2.6 Core (2/3) Core 향상된 Thread 지원 새로운 드라이버 모델 Posix High Resolution Timer 지원 Kconfig 커널 설정 및 빌드 도구 make dep 없어짐 make gconfig 추가 allsysconfig 모든 기능을 커널에 넣는 기능 allmodconfig 모든 기능을 모듈로 만드는 기능 allnoconfig 모든 기능을 빼버리는 기능 빌드 메시지 숨기기 기능 나 이 텍 Embedded Linux System 환경구축 및 분석 75

Kernel 2.4 vs Kernel 2.6 Core (3/3) Core CPU Hotplug 기능 Software Suspend 기능 윈도우의 하이버네이션 기능과 유사 시스템의 메모리 상태를 스왑 영역에 저장하였다가 다음 리눅스 커널이 부팅할 때 스왑 영역을 읽어서 이전 상태로 되돌리는 기법 나 이 텍 Embedded Linux System 환경구축 및 분석 76

Kernel 2.4 vs Kernel 2.6 Hardware (1/2) Hardware support 새로운 아키텍처 지원 ALSA PPC64, X86-64, UML(User Mode Linux) 여러 가지 고급기능을 제공하는 새로운 사운드 장치 OSS 와 호환 ALSA OSS Emulation 모듈 포함 CPU Frequency Scaling 지원 전원 절약을 위해 각종 CPU의 Frequency Scaling 지원이 추가 DVB 지원 디지털 방송장비를 위한 DVB(Digital Video Broadcasting)기능이 추가 리눅스에서 디지털 TV 시청가능 Video4Linux 재 작성 나 이 텍 Embedded Linux System 환경구축 및 분석 77

Kernel 2.4 vs Kernel 2.6 Hardware (2/2) Hardware support ACPI Support 시스템에 연결된 각종 장치의 상태를 BIOS와 연계해서 알 수 있는 ACPI 드라이버 포함 Console & Input Devices 콘솔 계층 및 입력장치 드라이버가 재 작성되어 완전히 모듈화 시킬 수 있음. Serial ATA Support Bluetooth Support 나 이 텍 Embedded Linux System 환경구축 및 분석 78

Kernel 2.4 vs Kernel 2.6 File system File System XFS Support SGI의 XFS가 리눅스에 기본 포함됨. ACL Support 파일에 여러 가지 속성을 줄 수 있는 ACL 기능 포함 Ext2, Ext3, jfs, xfs 에서 지원 Plugin을 지원하는 새로운 Quota 시스템 Ntfs-ng 추가 Sysfs 새로운 ntfs 드라이버인 ntfs-ng가 리눅스에 기본으로 포함 현재 각종 장치의 상태를 보여주는 가상 파일시스템인 sysfs 가 추가 나 이 텍 Embedded Linux System 환경구축 및 분석 79

커널 소스 구하기 & 설치 커널 소스 공식 리눅스 커널 사이트 http://www.kernel.org 전체 소스 묶음 Incremental patch GNU zip p(gzip) p)혹은 bzip2 포맷으로 배포 설치 gzip 포맷 tar xvzf linux-x.y.z.tar.gz bzip2 포맷 gzip 보다 압축률이 더 좋다 tar xvjf linux-x.y.z.tar.bz2 x.y.z.tar.bz2 나 이 텍 Embedded Linux System 환경구축 및 분석 80

리눅스 소스 코드 구성도 Linux fs net drivers init include ipc lib kernel mm arch sound ext2 unix inet net linux mips hpfs char asm-alpha alpha msdos block asm-i386 sparc nfs scsi asm-m68k m68k minix asm-mips arm proc asm-arm sysv kernel boot mm <2.6.27 버전부터는 커널 소스 디렉터리의 구조가 일부 변경됨> 나 이 텍 Embedded Linux System 환경구축 및 분석 81

각 디렉터리 상세 설명 (1/5) arch/ CPU 종속적인 부분, 각 처리기 마다 하위 디렉터리로 구성됨 (arch/i386, arch/alpha, arch/arm ) arch/arm/boot/ 부트스트랩핑 코드 arch/arm/kernel/ 하드웨어 종속적인 커널 관리 루틴 트랩, 인터럽트 처리 루틴 문맥 교환 루틴 장치 구성, 초기화 루틴 arch/arm/mm/ 하드웨어 종속적인 메모리 관리 루틴 나 이 텍 Embedded Linux System 환경구축 및 분석 82

각 디렉터리 상세 설명 (2/5) init/ 하드웨어 독립적인 커널 초기화 루틴 (start _ kernel) 태스크 0 (init_task or task[0]) 생성 태스크 1, 2, 3 등 데몬 프로세스 생성 kernel/ 리눅스 커널의 가장 중심적인 디렉터리 (central section of the kernel) 하드웨어 독립적인 커널 관리 루틴 (하드웨어 종속적인 커널 관리 루 틴은 arch/arm/kernel 디렉터리에 존재) fork, exit 등 태스크 관련 시스템 호출 처리 루틴 스케줄러 (scheduler) 루틴 시그널 처리 (signal handling) 루틴 시간 관리 (time management) 루틴 나 이 텍 Embedded Linux System 환경구축 및 분석 83

각 디렉터리 상세 설명 (3/5) mm/ 하드웨어 독립적인 메모리 관리 루틴 (하드웨어 종속적인 메모리 관리 루틴은 arch/arm/mm 디렉터리에 존재) 가상 메모리 관리 루틴 페이징 (paging), 스와핑(swapping) fs/ 가상 파일 시스템 (virtual file system ) 관리 루틴 open, read 등 태스크 관련 시스템 호출 처리 루틴 특정 파일 시스템 관리 루틴은 하위 디렉터리에 존재 (ext2, proc, nfs, msdos, coda,.. ) 나 이 텍 Embedded Linux System 환경구축 및 분석 84

각 디렉터리 상세 설명 (4/5) drivers/ 장치 드라이버 루틴 drivers/block/ : 블록 장치 드라이버. 예를 들어 IDE 디스크 (hd) drivers/char/ : 문자 장치 드라이버. 예를 들어 serial ports, tty, modem,..) drivers/net : 네트웍 장치 드라이버. 예를 들어 3C509,... drivers/pci/ : PCI bus 제어 drivers/cdrom/ : CD-ROM 드라이버 drivers/scsi/ : SCSI 인터페이스 관리 sound/ ipc/ 프로세스간 통신 루틴 세마포어(semaphores), 공유 메모리(shared memory), 메시지 큐 (message queues) 나 이 텍 Embedded Linux System 환경구축 및 분석 85

각 디렉터리 상세 설명 (5/5) net/ TCP/IP, ARP 등 네트웍 통신 프로토콜 (네트웍 장치 드라이버는 drivers/net에 존재) 소켓 인터페이스 include/ 커널 헤더 하드웨어 독립적인 헤더 : include/linux/ / 하드웨어 종속적인 헤더 : include/asm-***/ (예를 들어 Intel CPU 종속적인 헤더는 include/asm-i386/ 디렉터리에 존재) lib/ 커널 라이브러리 루틴 Documentation/ 커널 문서 디렉터리 나 이 텍 Embedded Linux System 환경구축 및 분석 86

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 87

Embedded Linux 분석 및 환경구축 임베디드 리눅스 개발환경

세부 목차 Cross development 환경 개요 나 이 텍 Embedded Linux System 환경구축 및 분석 89

일반 애플리케이션 개발 환경 일반 애플리케이션 개발 환경 개발을 진행하는 호스트 시스템과 애플리케이션을 실행시키는 타깃 시스템 이 동일한 경우가 대부분이다. 애플리케이션 개발자는 개발 결과물의 형태만 신경 쓰면 된다. 일반적으로, 내부적으로 어떤 일이 일어나는지에 대한 세부 사항을 꼭 알 필 요는 없다. 애플리케이션 개발자는 개발 툴에게 하드웨어 정보를 제공할 필요가 없다. 개발 툴은 항상 같은 방식으로 코드를 생성한다. Compiler는 현재 사용하고 있는 PC의 프로세서 기계어로 번역해준다. 예)x86계열의 호스트에서 개발했다면 x86용 기계어로 전환해준다. HOST Compiler 실행 가능한 이미지 생성 Host와 Target이 동일하다. Target 나 이 텍 Embedded Linux System 환경구축 및 분석 90

임베디드 시스템 개발 환경 Target 프로세서 기계어로 번역 HOST Cross Compiler & IDE 실행 가능한 이미지 생성 Emulator/Debugger Debugging Hardware Platform (Target) Industrial Controller Home Automation/ Network Car Navigator MP3 Player Smart Phone Game Machines PDA 나 이 텍 Embedded Linux System 환경구축 및 분석 91

임베디드 소프트웨어 개발 환경 Embedded Software 개발환경 Host system(compile)/target System(excute)로 구분되어 진다. Development Tool에 Hardware에 대한 Setting을 해줘야 함 임베디드 시스템은 고유한 하드웨어 상에서 동작하며, 개발 툴은 하드웨어가 어떻게 구성되어 있는지 모르기 때문이다. Host시스템에서는 Target에 알맞은 기계어를 생성하기 위해서 Cross toolchain이 있어야 한다. 임베디드 시스템 개발자는 개발 툴에 대해서, 그리고 개발 툴이 어떻게 동작하는지에 대해서 일반 애플리케이션 개발자보다 더 많이 알고 있어 야 한다. 개발할 때 Runtime 환경까지 명시를 해야 한다. 예) RAM, ROM, 플래시 메모리 혹은 어떤 메모리에서 실행할 것인지? 나 이 텍 Embedded Linux System 환경구축 및 분석 92

임베디드 소프트웨어 개발 환경 (1/2) 일반적인 임베디드 소프트웨어 개발 환경의 모식도 HOST Emulator/Debugger Target USB/Parallel/ Ethernet JTAG I/F Serial/ Ethernet Cross Cable x86 Processor Cross Development 환경 ARM Processor 나 이 텍 Embedded Linux System 환경구축 및 분석 93

임베디드 소프트웨어 개발 환경 (2/2) 호스트 시스템(Host system) 타깃 시스템을 개발하기 위한 개발환경을 제공하는 시스템 Windows or DeskTop Linux or Unix WorkStation 타깃 시스템을 위한 어셈블러, 컴파일러, 링커 등의 개발 도구 제공 보통 IDE (Integrated Development Environment) 형태로 제공 타깃 시스템(Target system) 개발하고자 하는 임베디드 시스템 ARM, MIPS, SuperH, PowerPC, 나 이 텍 Embedded Linux System 환경구축 및 분석 94

교차 개발을 위한 개발 도구 (1/3) 교차 컴파일러(cross compiler) 호스트 시스템의 프로세서와 운영체제 위에서 동작하면서, 다른 프로세 서용 오브젝트 코드를 생성할 수 있는 컴파일러 교차 컴파일러들 GNU GCC ARM의 ADS(ARM Developer Suit) / RVDS(RealView Developer Suit). 임베디드 시스템 소프트웨어의 개발은 Cross Compiler를 이용 보통 타깃 시스템에서 개발하는 것은 어려움 CPU Emulation software를 이용한 개발도 증가추세(ex> QEMU, scratchbox Nokia Internet Tablet 770) 근래 Embedded Linux는 Native compiler를 사용하는 경우가 많아지 는 추세(Debian & Gentoo Linux) 나 이 텍 Embedded Linux System 환경구축 및 분석 95

교차 개발을 위한 개발 도구 (2/3) 링커(Linker) 불완전한 object 파일들을 합쳐 모든 코드와 데이터를 포함하는 새 로운 object 파일을 생성해 내는 도구 크로스 컴파일이 된 object 파일은 단순히 명령어 코드로 해석만 되 어있는 상태 즉 문법적으로 해석만 되어있는 상태이다. 프로그래머가 선언한 변수의 메모리 공간이나 참조한 함수의 위치 에 대한 정보 등이 결정되지 않은 상태 링커는 각각의 오브젝트 파일들이 서로 참조하고 연결될 수 있도록 링크시키는 역할을 한다. 나 이 텍 Embedded Linux System 환경구축 및 분석 96

교차 개발을 위한 개발 도구 (3/3) 로케이터(Locator) 혹은 Loader 메모리에서 실행 가능하도록 코드와 데이터를 배치하여 최종 바이 너리 이미지를 생성하는 도구 프로그램의 일부분은 ROM에 있어야 하고, 또 다른 부분은 RAM에 있어야 한다. 소스 코드는 전원이 꺼지더라도 지워지지 않아야 하기 때문에 ROM에 있어야 한다. 변수는 값이 변경되어야 하기 때문에 RAM에 있어야 한다. 부팅 시 RAM영역으로 Copy 부트코드에 ROM에서 RAM으로 복사하는 과정이 필요. Linker script 파일 코드와 데이터의 메모리 배치를 정의한 파일 대부분 링커에 포함되어 있다. 나 이 텍 Embedded Linux System 환경구축 및 분석 97

임베디드 소프트웨어 개발 과정 일반적인 임베디드 소프트웨어 개발 과정 여기에서 사용하는 컴파일러와 어셈블러는 교차 컴파일러와 교차 어셈 블러이다. <임베디드 시스템의 소프트웨어 개발 절차> 나 이 텍 Embedded Linux System 환경구축 및 분석 98

타깃 시스템에 실행 이미지 올리기 개발된 실행 이미지를 타깃 하드웨어에 올리는 방법들 ROM Writer ROM Emulator Flash Memory RAM 나 이 텍 Embedded Linux System 환경구축 및 분석 99

ROM Writer 실행 가능한 이미지를 타깃 시스템에 올리는 전통적인 방법 해당 이미지 파일을 ROM에 저장 후 타깃 시스템에 장착 PROM 프로그래머에서 프로그래밍한 PROM은 타깃 보드의 소켓에 장 착 생성된 결과파일을 ROM에 직접 쓰기 매번 ROM을 기판에서 제거하고 부착 해야 함 <ROM에 프로그램을 쓰기위한 장비> 나 이 텍 Embedded Linux System 환경구축 및 분석 100

ROM Emulator ROM을 대체하는 장치인 ROM 에뮬레이터 RAM을 내장하고 있는 ROM 장치 이미지의 다운로드와 프로그래밍 시간을 단축 타깃 시스템의 관점에서 ROM 에뮬레이터는 ROM과 같은 하드웨어 기판의 ROM 대신에 ROM을 Emulation 호스트 시스템과 시리얼 포트 혹은 네트워크로 연결 개발된 소프트웨어의 빠른 전송 개발 시간의 단축 ROM은 뽑아낸다. ROM 에뮬레이터 TARGET HOST <임베디드 시스템 개발에서 ROM 에뮬레이터의 사용> 나 이 텍 Embedded Linux System 환경구축 및 분석 101

Flash Memory 하드웨어 장비 이용 JTAG과 같은 하드웨어 디버깅 인터페이스를 지원하는 장비 이용 모니터 프로그램 통신 기능과 플래시 프로그래밍 기능이 있는 부트로더나 모니터 프로그 램을 사용 U-Boot RedBoot 나 이 텍 Embedded Linux System 환경구축 및 분석 102

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 103

세부 목차 Cross development 환경 구축 나 이 텍 Embedded Linux System 환경구축 및 분석 104

호스트 개발 환경 선택 리눅스 환경의 호스트 일반적인 유틸리티들이 제공 된다. 배포 판 어느 것을 사용해도 상관 없지만, 여기서는 Ubuntu Linux 8.10 을 사용하고 있다. VirtualBox와 같은 Virtual machine을 사용할 수도 있다. 윈도우 환경의 호스트 Cygwin과 같은 가상의 리눅스 환경을 만들어 주는 툴이 필요하다. 램 디스크와 같은 이미지를 만들기 어렵다. 각종 네트워크 설정(NFS, TFTP)을 직접 설정 하여야 한다. 나 이 텍 Embedded Linux System 환경구축 및 분석 105

호스트와 타깃의 연결 호스트와 타깃의 연결 JTAG Flash ROM Write, RAM download Ethernet TFTP: 실행 이미지 다운로드, NFS: 루트 파일 시스템 마운트 Serial (RS232) 디버깅 출력 메시지 용도 Ethernet Serial(RS232) win: 192.168.0.1 USB / JTAG (Trace 32) VirtualBox: 192.168.0.2 target: 192.168.0.3 나 이 텍 Embedded Linux System 환경구축 및 분석 106

준비단계 VirtualBox 준비 VirtualBox다운로드 위치: http://download.virtualbox.org/virtualbox/2.2.2/virtualbox-2.2.2- org/virtualbox/2 2 2/VirtualBox 222 46594-Win.exe Ubuntu Linux 8.10 설치된 VirtualBox 이미지 준비 Windows에서 VirtualBox를 설치한 다음 c:\vbox_image 폴더를 만들고 (폴더위치를 변경해도 됨) Ubuntu Linux 8.10을 설치하여 이미 만들어 놓은 vbox image파일을 복사(edu_vbox.vdi) VirtualBox를 실행시켜 새로 만들기 를 선택하고 edu_vbox.vdi 파일 을등록 상세한 것은 VirtualBox & Ubuntu Linux Installation 문서의 맨 마 지막 부분을 반드시 참조할것. 나 이 텍 Embedded Linux System 환경구축 및 분석 107

준비단계 이미 VirtualBox에 설치된 Ubuntu Linux 이미지 파일을 이용 이미 다른 Windows에서 VirtualBox를 설치하여 Ubuntu Linux 8.10을 설치해두었다면 *.vdi 파일만 복사하여 이용할 수 있음 Ubuntu Linux 를 새로 설치해야 하는 시간낭비를 줄일 수 있음. 똑같은 개발환경을 다른 Windows 컴퓨터에 그대로 옮길수 있기 때문 에 교육용 시스템에서 매우 편리함. 설치 방법 이미 만들어진 *.vdi 파일을 적당한 디렉토리에 복사하고 virtualbox를 실행시켜 새로 만들기 를 누른 후 Virtualbox 설정을 진행하되 HDD 설정에서 미리 복사해둔.vdi 파일을 고르면 된다. 새로 Ubuntu Linux 를 설치하지 않기 때문에 CD/DVD-ROM 설정은 ISO파일 대신에 호스트 CD/DVD 드라이브 로 바꿔주고 부팅 순서를 하드디스크 가 맨위에 나타나도록 수정하면 된다. 나 이 텍 Embedded Linux System 환경구축 및 분석 108

호스트 터미널 SecureCRT SecureCRT 를 설치 하여 타깃 시스템과의 통신에 사용 나 이 텍 Embedded Linux System 환경구축 및 분석 109

호스트 터미널 - SecureCRT의 사용 호스트 타깃간 연결 설정 연결세션의 속성설정 아래를 참고하여 호스트 <-> 타깃간 연결을 설정 나 이 텍 Embedded Linux System 환경구축 및 분석 110

타겟 터미널 - SecureCRT의 사용 목적 serial을 통한 부트로더 명령, 디버깅 메시지, 쉘 등의 확인 용도 설 치 SecureCRT setup.exe을 수행하여 SecureCRT 설치 properity> p COM1, 115200, 8bit, none save Setup 터미널 프로그램으로 다음과 같은 것들을 사용할 수 있다. 윈도우 기본 하이퍼터미널 SecureCRT PineTerm DNW.EXE linux의 minicom 등 나 이 텍 Embedded Linux System 환경구축 및 분석 111

터미널 설정 예) - linux minicom 시리얼 통신 프로그램으로 minicom 사용 시리얼 포트의 확인 dmesg grep tty -s 옵션을 사용하여 minicom 기본 포트 설정 minicom -s 설정 시 체크 사항 Serial Device : /dev/ttys0 사용중인 포트로 설정 Bps: 115200 8N1 Hardware Flow Control : No 나 이 텍 Embedded Linux System 환경구축 및 분석 112

터미널 설정 예) - linux minicom minicom 설정 시 주의사항 /dev/ttys0등의 장치가 접근허가를 거부하는 메시지가 나올 경우 chmod 666 /dev/ttys0 /tt Cannot create lockfile. Sorry. 라는 메시지가 나올 경우 chmod 777 /var/lock 노트북 사용자는 대부분 /dev/ttyusb0 형태의 디바이스 파일이름으로 사용한다. 글자가 깨지는 경우 baudrate 설정을 확인할 것 나 이 텍 Embedded Linux System 환경구축 및 분석 113

호스트 서버 구동 - TFTP 환경 설정 (1/2) 개요 TFTP는 udp를 사용하는 프로토콜로 주로 임베디드 보드의 이미지 다운 로드에 쓰이고 있다. Linux에서는 독립적으로 동작시키기 힘들기 때문에, tftp daemon의 경 우 inetd, xinetd와 같은 internet superdaemon의 도움을 받아야 한다 inetd와 xinetd의 경우는 설치하는 방법이 상이함. 환경 설정 VirtualBox를 실행하여 Ubuntu Linux로 부팅한 다음 터미널을 실행시킨 후 su - 명령으로 root 권한을 획득한다. 리눅스 커널 이미지 및 BootLoader 파일을 /tftpboot 폴더로 복사 후 /etc/init.d/xinetd restart 명령으로 tftp 서비스 재시동. 자세한 내용은 VirtualBox & Ubuntu Linux Installation 문서의 47페 이지를 참고할 것. 나 이 텍 Embedded Linux System 환경구축 및 분석 114

호스트 서버 구동 - TFTP 환경 설정 (2/2) TFTP 설정 sudo apt-get install xinetd tftpd tftp sudo vi /etc/xinetd.d/tftp/ d/ service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no } sudo mkdir -p /tftpboot sudo chmod 777 /tftpboot sudo cp * /tftpboot sudo /etc/init.d/xinetd restart 필요한 파일들을 복사해둠. 나 이 텍 Embedded Linux System 환경구축 및 분석 115

호스트 서버 구동 - NFS NFS(Network File System) 사용 목적 임베디드용 응용 프로그램을 개발하여 테스트하기 위해서는 컴파일한 실행 파일을 램 디스크에 로딩해야 한다. 하지만 응용 프로그램을 컴파일할 때마다 램 디스크를 host에 mount하 여 업데이트하기는 힘든 일이다. NFS는 네트워크를 통해 파일 시스템을 mount할 수 있게 해주는 시스 템이다. NFS를 이용해 host의 작업 디렉터리를 target 보드의 램 디스크에 mount하여 사용하면 응용 프로그램 개발을 훨씬 편리하게 할 수 있다. 나 이 텍 Embedded Linux System 환경구축 및 분석 116

호스트 서버 구동 - NFS의 구성도 Host 1.TFTP request Flash memory u-boot Target RAM (uimage 재배치/ RAM zimage 압축 해제 후) (uimage 압축 해제 전) 5. 분기 및 커널압축 4.커널분기 해제 Linux 커널 (bootm) uimage 2.TFTP reply (압축커널) 3.압축커널 다운로드 6. NFS 마운트 Host Hard Disk (File System) *uimage는 bootm의 매개변수를 읽을 수 있다. 나 이 텍 Embedded Linux System 환경구축 및 분석 117

호스트 서버 구동 - NFS 서비스 설정 (2/2) 시스템 서비스 설정 sudo vi /etc/exports 내용을 수정한 다음 # 공유할 디렉토리 공유를 허용할 IP대역 및 옵션 /opt/embedded_project192.168.1.*(rw, no_root_squash) sudo /etc/init.d/nfs-kernel-server restart 나 이 텍 Embedded Linux System 환경구축 및 분석 118

호스트 서버 구동 - NFS 환경 설정 (1/3) NFS client 가 마운트할 디렉터리를 생성한다. NFS가 제대로 되는지 test한다. # mkdir /root/nfs # cp a /etc/* / /root/nfs /etc/exports에 다음 내용을 넣고 작성한다. /root/nfs : 공유할 디렉터리 이름 *: 허용 호스트, 다른 예) 192.168.0.0/255.255.255.0 rw: access permission i no_root_squash: root 로 로그인한 사용자를 root로 맵핑 no_all_squash: root를 제외한 사용자인 경우 동일한 UID와 GID 로인식 /root/nfs *(rw,sync,no_root_squash,no_all_squash) 나 이 텍 Embedded Linux System 환경구축 및 분석 119

호스트 서버 구동 - NFS 환경 설정 (2/3) NFS 서비스를 재시동 한다. - Ubuntu Linux의 경우 # sudo /etc/init.d/nfs-kernel-server restart (참고)각 리눅스 배포판마다 NFS와 tftp의 설정은 동일하나, 동작시키 는 방법은 틀린 경우가 많음 inetd를 쓰느냐 xinetd를 쓰느냐에 따라 틀림(tftp의 경우) nfs의 경우는 /etc의 구성에 따라 틀림(rc.d의 구성에 따라 start시키는 t시키는 방 법이 틀림) 나 이 텍 Embedded Linux System 환경구축 및 분석 120

호스트 서버 구동 - NFS 환경 설정 (3/3) NFS 서비스 확인 nfs 서비스가 정상적으로 동작하는지 확인 # netstat -a grep nfs tcp 0 0 *:nfs *:* LISTEN udp 0 0 *:nfs *:* # showmount -e localhost Export list for localhost: /root/nfs * Client 에서 사용 예) 서버의 디렉터리를 마운트 # mkdir /mnt/nfsdir # mount t nfs 192.168.0.2:/root/nfs /mnt/nfsdir 나 이 텍 Embedded Linux System 환경구축 및 분석 121

NFS 시스템 마운트 시 주의점 사설망 사용 시 VirtualBox를 사용하는 경우 NAT로 네트워크를 설정했을 때는 가상 머신 내부에 사설망이 구성된 것처럼 구성되므로 NFS를 사용할 수 없게 된다. 부여된 IP를 사용하거나 DHCP 사용 시 VirtualBox네트워크 설정을 Bridged로 하고 IP를 직접 할당하거나 DHCP 로 IP를 부여 받아야 한다. gateway IP가 설정 되지 않으면 마운트 시 가끔 timeout 되기도 한다. 나 이 텍 Embedded Linux System 환경구축 및 분석 122

호스트 서버 구동 - samba 설정 (Option) 목적 윈도우와 리눅스간의 자료 공유를 편리하게 하기 위해 특정 디렉터리를 네트워크로 연결 한다. 설정 방법 sudo vi /etc/samba/smb.conf [global] workgroup = WORKGROUP server string = %h Server (Samba, Ubuntu) hosts allow = 192.168.0. 192.168.1. 127. log file = /var/log/samba/%m.log max log size = 50 dns proxy = no username map = /etc/samba/smbusers guest ok = yes winbind use default domain = no 나 이 텍 Embedded Linux System 환경구축 및 분석 123

호스트 서버 구동 - samba 설정 (Option) #========= Share Definitions ======================= [work] path = /work writeable = yes browseable = yes guest ok = yes public = yes [rootfs_nfs] path = /work/rootfs_nfs writeable = yes browseable = yes guest ok = yes public = yes 삼바 사용자 설정: vim /etc/samba/smbusers root = nt-edu 삼바 패스워드 생성: smbpasswd root 윈도우에서 네트워크 드라이브로 연결 (동일 계정명으로 사용) 나 이 텍 Embedded Linux System 환경구축 및 분석 124

실습준비 실습파일들 압축해제 ke-linux-work.tar.gz 파일을 host의 /root로 복사 ubuntu terminal창에서 cd /root tar xzf ke-linux-work.tar.gz /root/ntc100 디렉토리 생성된 것을 확인 나 이 텍 Embedded Linux System 환경구축 및 분석 125

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 126

세부 목차 File system과 Root File system 나 이 텍 Embedded Linux System 환경구축 및 분석 127

파일 시스템이란? 파일 시스템 디렉토리, 파일을 보조 기억장치에 저장함 사용자에게 파일을 접근(r/w/x)할 / 수 있게 해줌 r Read w Write x excute 파일 시스템은 여러 종류가 있다. Windows : FAT, FAT32, NTFS Linux : ext2, ext3, ReiserFS, JFS, NFS, 나 이 텍 Embedded Linux System 환경구축 및 분석 128

파일 시스템이란? 대부분 파일 시스템들은 계층적인 디렉토리 구조를 사용 최상위 디렉토리를 루트 디렉토리 라고 부른다. 파일 시스템은 디렉토리, 파일을 블록으로 나누어 저장매체에 저장 한다. 블록(block) : 데이터 저장 단위로서 1개 이상의 섹터로 구성됨. 나 이 텍 Embedded Linux System 환경구축 및 분석 129

파티션과 마운트 (하드 디스크) 파티션(Partition) 디스크의 저장 공간을 여러 개의 구역으로 나누어 사용 어떤 하나의 파티션이 최상위 루트 디렉토리를 포함해야 한다. 이 파티션을 루트 파티션 이라고 부름 다른 파티션은 루트 파티션에 마운트 해서 사용한다. 각 파티션은 각기 다른 파일 시스템으로 포맷될 수 있다. /dev/sda /dev/sda2/ d : root tdirectory / directory /dev/sda1/ d /dev/sda3 /home /var /usr /mnt mount /dev/sdb1: USB 저장장치 / directory /dev/sda2 /movie /mp3 / 나 이 텍 Embedded Linux System 환경구축 및 분석 130

파티션과 마운트 mount 명령어 $ mount 현재 mount되어 있는 내용을 출력 <예> /dev/hda3 파티션을 루트 파티션의 /usr에 마운트하는 경우 $ mount /dev/hda3 /usr 또는 $ mount /usr 또는 $ mount /dev/hda3 umount 명령어 : 마운트된 파티션을 언마운트 $ umount /usr $ umount /dev/hda3 명령을 내릴때 스펠링에 주의할것 unmount umount 표기는 umount 읽을때는 언마운트 나 이 텍 Embedded Linux System 환경구축 및 분석 131

파티션과 파일 시스템 각 파티션은 서로 다른 파일 시스템으로 포맷할 수 있다. 예를 들어, 루트 파티션은 ext2 파일 시스템, /usr 파티션은 ext3 파 일 시스템으로 포맷하여 사용할 수 있다. 포맷하기 (포맷: 파일 시스템 만들기) mkfs.ext2, mkfs.ext3, mkfs.msdos, mkfs.jffs2, mke2fs, etc 나 이 텍 Embedded Linux System 환경구축 및 분석 132

루트 파일 시스템 (root file system) 루트 파일 시스템이란? 루트 파티션에 사용될 파일 시스템으로, Linux/UNIX 부팅시 필요한 파 일들을 모아놓은 저장장치 혹은 디렉토리의 구성을 일컽는 용어 커널과 루트 파일 시스템은 반드시 필요함 루트 파일 시스템은 부팅 시에 항상 마운트된다. 루트 파일 시스템이 없거나 구성이 올바르지 않으면 리눅스가 구동되지 않는다. 나 이 텍 Embedded Linux System 환경구축 및 분석 133

루트 파일시스템의 구성 / Root Directory라고 불리며, 모든 디렉토리는 / 를 기준으로 생성된다. /는 모든 디렉토리의 출발점이자 다른 파티션의 연결점. /bin, /sbin 시스템을 사용하기 위한 기본적인 명령어들이 시스템 관리 명령어와 시 스템을 복구할 때 사용하는 필수 명령어 등이 존재. /boot PC 전용으로 일반적으로 사용되는 디렉토리며, 부팅에 필요한 커널등이 존재. /dev Device driver관련된 모든 장치 파일이 위치한다. (2.6서부터는 udev, sysfs와 연동) /etc 시스템 설정파일들이 위치(가장 중요한 directory) 나 이 텍 Embedded Linux System 환경구축 및 분석 134

루트 파일시스템의 구성 /home /lib 사용자의 홈 디렉토리가 생성되는 곳이다. (ftp, mysql, tomcat 등 별도 의 공간을 요구하는 서비스를 위한 디렉토리로 사용할 수도 있다.) 시스템 운영 및 프로그램 구동할 때 필요한 공유 라이브러리와 부팅할 때 사용되는 커널 모듈이 위치한다.(가장 필수적인것만 위치한다) /mnt storage 장치를 일시적으로 마운트하기 위한 마운트 포인트를 제공한다. 일반적으로 해당 디렉토리는 비어 있음 /opt add-on 패키지가 설치되는 디렉토리, Embedded에서는 주로 툴체인등 이 위치하는 경우가 많다. 나 이 텍 Embedded Linux System 환경구축 및 분석 135

루트 파일시스템의 구성 /root 루트 사용자의 홈 디렉토리 /proc 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시 스템을 사용하는 디렉토리이다. /proc 디렉토리의 파일은 cat 혹은 more 명령어로 읽을 수 있으며 특 정 파일의 경우 echo 같은 명령어로 내용을 변경할 수도 있다. 주로 디버깅 용도로 많이 사용된다. 나 이 텍 Embedded Linux System 환경구축 및 분석 136

루트 파일시스템의 구성 /tmp 임시 파일을 저장하는 디렉토리. 수시로 파일이 생성되고 삭제된다. NAND나 NOR를 이용한 root filesystem구성일 경우는 조심해야하는 디렉토리 /usr 전통적으로 시스템 부팅에 반드시 필요하지 않은 utility성격의 파일들 이 존재함. 하지만, 근래는 반드시 필요한 패키지들도 존재하게 됨으로써 반드시 구 성해 주어야 하는 디렉토리 /sys 2.6에서 새로 생겨난 kernel device model지원(중요) 나 이 텍 Embedded Linux System 환경구축 및 분석 137

루트 파일시스템의 구성 /var 내용이 자주 변경되는 가변 자료가 저장됨. 시스템 운영할 때 발생되는 로그(log), 메일 송/수신할 때 임시로 저장되 는 스풀(spool), 프린터로 전송하기 위해 임시로 저장하는 프린트 스풀 데이터 등 /lost+found fsck가 파일시스템을 점검할 때 손상된 데이터를 복구하지 못했다면 lost+found 디렉토리에 복구하지 못한 데이터 파일을 위치시킨다. 일반적으로 특정 filesystem으로 format되고, mount되면 생기는 경우 가많다 나 이 텍 Embedded Linux System 환경구축 및 분석 138

루트 파일시스템 구축 절차 임베디드 시스템의 저장 장치 RAM Flash memory Hard disk 파일 시스템을 하나의 파일로 만든다. 루트 파일시스템의 내용(디렉토리, 파일)을 만들고 특정 파일시스템의 형태를 가지는 이미지 파일로 변환함 만든 이미지 파일을 타겟의 비휘발성 저장 장치에 다운로드함 커널을 알맞게 수정하여 컴파일하고 타겟에 다운로드함 나 이 텍 Embedded Linux System 환경구축 및 분석 139

File system in Kernel Kernel 입장에서의 filesystem 나 이 텍 Embedded Linux System 환경구축 및 분석 140

RAM Disk initrd (Initial Ram Disk) RAM의 일부분을 하드 디스크 드라이브처럼 사용할 수 있게 해주는 블록 장치 드라이버 Ex> loopback 장치 파일 하나를 하나의 블록 장치처럼 사용할 수 있게 한 가상 장치 파일을 다른 장치처럼 마운트하여 사용할 수 있다. mount o loop rd.img /mnt cp sample.c /mnt umount /mnt X86용의 initrd와 임베디드 리눅스의 initrd와는 차이가 존재함 나 이 텍 Embedded Linux System 환경구축 및 분석 141

MTD MTD (Memory Technology Device) 메모리 장치 (특히, 플래시 메모리)를 저장 장치로 사용할 수 있게 해주 는 장치 드라이버 플래시 메모리에 읽기, 쓰기, 삭제 연산을 수행하는 인터페이스 제공 파티션 기능 제공: 한 플래시 장치를 여러 개로 파티션할 수 있다. 나 이 텍 Embedded Linux System 환경구축 및 분석 142

저장장치 및 파일 시스템의 선택 타겟 시스템의 성능, 메모리(RAM, flash) 용량 등을 종합적으로 고려하여 사용할 파일 시스템과 저장장치를 결정한다. Ex 1> RAM disk사용 Ex 2> HDD사용 Ex 3> Flash 사용 Ex 4> 1/2/3 복합 사용 나 이 텍 Embedded Linux System 환경구축 및 분석 143

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 144

세부 목차 Cross toolchain 빌드 및 구축 나 이 텍 Embedded Linux System 환경구축 및 분석 145

교차 개발 툴 (Cross toolchains) GCC GNU Compiler Collection (GCC) 1987년 리차드 스톨만이 GNU Project Compiler로 작성 Binutils에 들어있는 as를 불러서 목적 파일로 만든 다음 ld를 불 러 최종 파일을 만들어 낸다. Support Languages Ada C, C++ (g++) Fortran Java Objective-C,C++ 나 이 텍 Embedded Linux System 환경구축 및 분석 146

교차 개발 툴 (Cross toolchains) Support CPU Alpha ARM Blackfin H8/300 System/370, System/390 IA-32(x86) and AMD64 IA-64 (i.e the Itanium ) Motorola 68000 / 88000 MIPS PA-RISC PDP-11 PowerPC SuperH SPARC VAX Renesas R8C/M16C families MorphoSys family 나 이 텍 Embedded Linux System 환경구축 및 분석 147

교차 개발 툴 (Cross toolchains) Binutils 오브젝트 파일 포맷 들을 조작하기 위한 프로그래밍 도구 모음 GCC, make, GDB 등과 함께 사용 GAS, GLD 포함 Binutils에 포함된 명령어 as - 어셈블러 ld - 링커 ar - 아카이브 파일을 만들고, 수정하고, 해제한다. addr2line - 주소를 파일과 줄로 바꾼다. c++filt - 맹글링된 C++ 심볼 들을 원래대로 되돌린다. nm - 오브젝트 파일의 심볼을 출력한다. objcopy - 오브젝트 파일을 복사한다. objdump - 오브젝트 파일에 대한 정보를 출력한다. ranlib - 아카이브를 위한 색인을 만든다. readelf - ELF 파일의 내용을 출력한다. size - 전체와 부분의 크기를 출력한다. strings - 표시할 수 있는 문자열을 출력한다. strip - 오브젝트 파일로부터 심볼을 제거한다. gprof - 프로파일러 나 이 텍 Embedded Linux System 환경구축 및 분석 148

교차 개발 툴 (Cross toolchains) glibc 교차 컴파일러를 위한 기본 라이브러리 C프로그램의 작성을 위해서는 libc라는 C라이브러리와 결합해야 한다. libc의 GNU 버전인 glibc는 메모리할당, 문자처리, 문자열 배열처리, 입 출력 스트림등의 많은 부분을 포함하고 있다. 임베디드 시스템에서는 glibc는 덩치가 크므로 다음과 같은 임베디 드용 라이브러리를 사용할 수도 있다. uclibc 일반 리눅스 환경, MMU가 없는 CPU 환경 등에서 동작할 수 있다. uclinux에서 사용되기도 한다. newlibc POSIX와 유사한 경량 C 실행 라이브러리로 printf, sprintf를 비롯하여 수학 라이브러리까지 포함하고 있다. 나 이 텍 Embedded Linux System 환경구축 및 분석 149

교차 개발 툴 (Cross toolchains) gdb 임베디드 환경에서는 하드웨어적인 디버거를 사용하지 않으면 소프트웨어적으로 추적하기에 어려움이 있다. gdb는 gdbserver라는 작은 프로그램을 타깃 컴퓨터에서 돌리면 gdb가 gdbserver에서 돌려주는 수행 결과를 가지고 디버깅을 할 수 있다. 호스트 컴퓨터(x86) gdb 네트워크 직렬 (gdb 서버와 터미널 콘솔 출력 네트워크 직렬 연결 (터미널 텔렛/웹 접속) 와 gdb 통신) 터미 렬 연결 NFS 마운트/TFTP 타겟 컴퓨터(Arm...) gdbserver <fig. 교차 디버깅 환경 > 나이텍 Embedded Linux System 환경구축 및 분석 150

교차 개발 툴 구성 패키지 교차 개발 툴 구성 패키지 gcc binutils glibc 교차 개발 툴 소스 다음 사이트에서 필요한 파일들을 구할 수 있다. ftp://ftp.kernel.org ftp://ftp.gnu.org 나 이 텍 Embedded Linux System 환경구축 및 분석 151

교차개발툴빌드순서 교차 개발 툴 빌드 순서 Binutilsil Bootstrap gcc Glibc GCC Binutils Bootstrap t GCC Glibc GCC 나 이 텍 Embedded Linux System 환경구축 및 분석 152

Crosstool을 이용한 toolchain만들기 근래는 새로운 툴체인 만드는 스크립트를 이용 안정된 툴체인을 만들기 위해서는 많은 patch를 필요로함 buildroot Openembedded Kegel s crosstool을 이용 crosstool-ng 프로젝트를 이용(http://ymorin.is-a- geek.org/dokuwiki/projects/crosstool) k / ELDK(http://www.denx.de/wiki/DULG/ELDK) Pengutronix(http://www.pengutronix.de/index_en.html) pengutronix html) 안정된 툴체인 회사의 툴체인을 이용(ex> codesourcery) ARM EABI(embedded-application d binary interface) cross toolchain쪽으로의 변화 gcc 4.x 대로 옮겨가면서 많은 실험과 변화가 이루어짐 나 이 텍 Embedded Linux System 환경구축 및 분석 153

Crosstool-ng 실습(1) Crosstool-ng-1.3.2 패키지 복사 작업디렉토리인 /root/ct / 를 만들고 crosstool-ng-1.3.2.tar.bz2 crosstool-ng 원본 소스(최신 버전은 1.3.3) ntc100-arm-generic-eabi-ctng-1.3.2.conf 이미 설정을 끝마친 crosstool-ng의 nt-c100용 설정파일 targets_tarballs.tartarballs crosstool-ng 컴파일시 필요한 source file들 원래는 다운로드 받아서 처리하나, 안되는 경우를 위해 미리 다운로드 받아놓은 파일을 압축해 놓음 위의 파일을 /root/ct로 복사(sftp 혹은 samba를 이용) 나 이 텍 Embedded Linux System 환경구축 및 분석 154

Crosstool-ng 실습(2) Crosstool-ng install 디렉토리 환경설정 crosstool-ng source file의 파일을 압축해제 나 이 텍 Embedded Linux System 환경구축 및 분석 155

Crosstool-ng 실습(3) Crosstool-ng install ntc100-arm-generic-eabi-ctng-1.3.2.conf 파일을 압축 해제된 crosstool-ng source directory로 복사 작업 디렉토리로 이동 후 crosstool-ng를 install한다 나 이 텍 Embedded Linux System 환경구축 및 분석 156

Crosstool-ng 실습(4) Crosstool-ng install(계속)./configure를 이용한 install 나 이 텍 Embedded Linux System 환경구축 및 분석 157

Crosstool-ng 실습(5) Crosstool-ng configuration./ct-ng menuconfig를 이용 toolchain 만드는 옵션 설정 여기서는 ntc100-arm-generic-eabi-ctng-1.3.2.conf 파일을 이용. 나 이 텍 Embedded Linux System 환경구축 및 분석 158

Crosstool-ng 실습(6) Crosstool-ng configuration(계속) Load an Alternate Configuration File 메뉴에서 미리 설정되어있 는 파일을 지정해준다. 나 이 텍 Embedded Linux System 환경구축 및 분석 159

Crosstool-ng 실습(7) Crosstool-ng configuration(계속) 제대로 target이 설정되었는지 확인한다 Target options 메뉴 나 이 텍 Embedded Linux System 환경구축 및 분석 160

Crosstool-ng 실습(8) Crosstool-ng configuration(계속) Configuration을 저장하고 빠져나감(ESC key 이용) Load했던 config를.config로 save한다 이.config파일은 추후에 백업 혹은 다른 시스템용의 기본 base configuration 으로 사용가능하다. ex> <TARGET_SYSTEM>-arm-generic-eabi-ctng-1.3.2.conf 나 이 텍 Embedded Linux System 환경구축 및 분석 161

Crosstool-ng 실습(9) Crosstool-ng build patch sstrip.c의 download문제 때문에 build시 error가 생김 gedit 혹은 vi등을 이용 scripts/build/tools/200-sstrip.sh 파일의 43 line을 수정 # vi /root/ct/crosstool-ng-1.3.2/scripts/build/tools/200-sstrip.sh 43 line을 CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/sstrip.c?view=co" "${CT_SRC_DIR}/sstrip" 에서 CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/sstrip.c?view=co" "${CT_SRC_DIR}/sstrip/sstrip.c 로 수정 나 이 텍 Embedded Linux System 환경구축 및 분석 162

Crosstool-ng 실습(10) Crosstool-ng build시 file download 이미 tar로 묶어 놓은 targets_tarballs.tar 파일 이용 나 이 텍 Embedded Linux System 환경구축 및 분석 163

Crosstool-ng 실습(11) Crosstool-ng build 해당 target으로 설정이 된.config 파일을 가지고 build 나 이 텍 Embedded Linux System 환경구축 및 분석 164

Crosstool-ng 실습(12) Crosstool-ng build 완료 나 이 텍 Embedded Linux System 환경구축 및 분석 165

Crosstool-ng 실습(13) Crosstool-ng tool test 나 이 텍 Embedded Linux System 환경구축 및 분석 166

Crosstool-ng 실습(14) Crosstool-ng package 로 컴파일 확인 툴체인 관련 파일들이 제대로 동작 하는지 확인 나 이 텍 Embedded Linux System 환경구축 및 분석 167

정리 및 Q/A 나 이 텍 Embedded Linux System 환경구축 및 분석 168

Embedded Linux 분석 및 환경구축 S5PC100 Board의 특징 및 U-Boot

세부 목차 S5PC100 보드의 특징 나 이 텍 Embedded Linux System 환경구축 및 분석 170

S5PC100 보드 개요 S5PC100 Board 특징 Samsung S5PC100 667Mhz (833Mhz) NOR / NAND Flash 부팅 지원 516MB NAND Flash 1MB(64Kb) NOR Flash 256MB DDR SDRAM(512MB 옵션) 4.8 (800x480 TFT LCD) WM8580 I2S 5.1ch Audio SMSC 9215 Ethernet Device - 1EA USB Host Port - 1 EA USB OTG Port - 1 EA Serial Port - 2 EA 5V DC Power Input 720P HDMI Out / NTSC In Port (TVP5150) External GPIO / I2C Pin 내장 스피커 및 마이크 / GPS / 3축 센서 나 이 텍 Embedded Linux System 환경구축 및 분석 171

S5PC100 프로세서 부트모드 S5PC100 Board 부트 모드 설정 NOR 부트 모드 NAND 부트 모드 나 이 텍 Embedded Linux System 환경구축 및 분석 172

S5PC100 프로세서 부트모드 S5PC100 부트모드의 특성 - 1 S5PC100의 메모리는 5가지 영역으로 구분 Boot Image 영역 부트모드에 따라 Static Memory 영역이 Boot Image영역에 미러링 부트 이미지의 시작 주소 : 0x0 고정 부트 이미지의 주소 범위 : 0x00 ~ 0x0003_8000 0003 단, 실제 저장소의 크기는 32KB Internal Memory 영역 내부 ROM와 내부 SRAM을 엑세스하기 위해 사용 내부 ROM의 주소 범위 : 0x0000_0000 ~ 0x0000_8000 단, 실제 저장소의 크기는 32KB Read-Only 이며, 별도의 부트 롬을 장착했을 때 사용 내부 SRAM의 주소 범위 : 0x0002_0000 ~ 0x0003_8000 단, 실제 저장소의 크기는 96KB Read-Write가 가능하며, NAND Flash Booting시 사용 나 이 텍 Embedded Linux System 환경구축 및 분석 173

S5PC100 프로세서 부트모드 S5PC100 부트모드의 특성 - 2 Static Memory 영역 NOR Flash, OneNAND Fash, NAND Flash 등이 위치 주소 범위 : 0x8000_0000 ~ 0xC000_0000 Dynamic Memory 영역 DDR SDRAM이 위치 주소 범위 DRAM : 0x2000_0000 ~ 0x6000_0000 SFR(Special Function Register) 영역 주소 범위 : 0xE000_0000 ~ 0xF600_0000 나 이 텍 Embedded Linux System 환경구축 및 분석 174

S5PC100 프로세서 부트모드 S5PC100 부트모드의 특성 3 나 이 텍 Embedded Linux System 환경구축 및 분석 175

S5PC100 프로세서 부트모드 S5PC100 부트모드의 특성 결론 1 0x0 번지에 미러링 영역을 가지고, 부트 모드에 따라 특정 메모리 주소를 매핑. 미러링 되는 영역의 크기는 부트 모드에 따라서 제한이 있음. 일반적인 부트로더 사이즈 크기는 미러링 되는 영역의 크기보다 큼. 따라서, 2중으로 부팅하는 방식으로 부트로더를 디자인. 1차 부트로더 (미러링 영역에서 동작) - 시스템 초기화 - 부트로더 본체 로딩 부트로더 본체 (리눅스 커널 로딩) - 리눅스 커널 로딩 -각종관련기능 리눅스 커널 부팅 Secure Booting check 나 이 텍 Embedded Linux System 환경구축 및 분석 176

S5PC100 프로세서 부트모드 S5PC100 부트모드의 특성 결론 2 NOR Flash와 NAND Flash 부팅을 사용하는 이유 - NOR Flash 메모리는 프로세서에서 직접적으로 접근이 가능 - 부트로더 초기 개발시에는 NOR Flash 부트 모드로 사용하여 개발 -ICE 장비를 이용한 기록 및 디버깅이 손쉬움 - NOR Flash는 작은 용량 높은 가격 및 구현의 용이함으로 개발 시에만 사용 - NOR Flash 부트 모드에서 NAND Flash 접근 루틴을 개발 - NAND Flash 메모리는 블록 디바이스로 직접 접근이 불가능 - 부트로더 초기 개발시에는 디버깅이 어려움 - NAND Flash는 큰용량 및 저렴한 가격으로 양산시에 사용 - 양산시에는 NOR Flash 메모리를 제거하고, NAND Flash 만을 사용하여 출시 나 이 텍 Embedded Linux System 환경구축 및 분석 177

실습 u-boot NOR Flash 부팅 준비물 : u-boot Image, DNW 1. NOR Flash 부팅 모드로 변경 2. 시리얼 및 USB 및 이더넷 연결 나 이 텍 Embedded Linux System 환경구축 및 분석 178

실습 u-boot NOR Flash 부팅 2. DNW 설정 나 이 텍 Embedded Linux System 환경구축 및 분석 179

실습 u-boot NOR Flash 부팅 2. DNW 설정 나 이 텍 Embedded Linux System 환경구축 및 분석 180

실습 u-boot NOR Flash 부팅 2. USB-OTG MON 구동 화면 나 이 텍 Embedded Linux System 환경구축 및 분석 181

실습 u-boot NOR Flash 부팅 2. u-boot 실행 나 이 텍 Embedded Linux System 환경구축 및 분석 182

실습 u-boot NAND Flash 부팅 1. NOR Flash 부팅 모드에서 u-boot 명령 프롬포트로 진입 2. 사전 준비 사항 Embedded Linux 시스템, u-boot 바이너리 이미지(uboot.bin) 3. NAND Flash 기록 방법 1) NAND Flash 삭제 # nand erase 0 30000 2) 호스트 PC 및 타깃 보드 IP 주소 설정 # setenv serverip 192.168.0.10 # setenv ipaddr 192.168.0.15 3) TFTP를 이용한 u-boot.bin 전송 # tftp c0000000 u-boot.bin 4) 전송받은 u-boot를 NAND Flash에 기록 # nand write c00000000 0 30000 5) NAND Flash 부팅 모드로 변경하여 부팅 확인 나 이 텍 Embedded Linux System 환경구축 및 분석 183

세부 목차 부트로더 분석 나 이 텍 Embedded Linux System 환경구축 및 분석 184

부트로더 시스템의 하드웨어를 초기화하고 운영체제의 커널을 메모리에 올려 실행시키는 시스템 프로그램 JTAG/BDM -> 부트로더의 디버깅 및 Writing을 도와주는 장비 부트로더의 위치 일반적으로 시스템 메모리의 물리 주소 0번지부터 위치 롬, 플래시롬, SRAM 등 정적인 메모리에 위치 부트로더의 기능 메모리 초기화 하드웨어 초기화 직렬포트의 초기화 네트워크 초기화 프로세서 속도, 인터럽트의 초기화 커널과 램 디스크 적재 : 커널과 램 디스크를 램에 적재하여 실행 정적 메모리에 쓰는 기능 사용자 인터페이스 기능 나 이 텍 Embedded Linux System 환경구축 및 분석 185

부트로더 특징 부트로더의 특징 하드웨어 의존성이 강하다. 초기화 코드는 대부분 어셈블리언어로 작성된다. 프로그래머는 프로세서 구조, 특징, 사용법을 알고 있어야 한다. Clock Memory controller UART Ethernet Etc 나 이 텍 Embedded Linux System 환경구축 및 분석 186

부트로더 종류 LILO(Linux Loader) GRUB(Grand Unified Bootloader) Loadlin EtherBoot Blob ARM 용 부트로더 PMON(PROM Monitor) MIPS 보드용 RedBoot RedHat에서 개발 및 배포 ecos 기반 U-Boot(Universal Bootloader) PPCBoot 와 ARMBoot 프로젝트 기반 나 이 텍 Embedded Linux System 환경구축 및 분석 187

U-Boot란? & 특징 부트로더 간단하게 특정 cpu에 OS 혹은 어떤 프로그램을 돌릴 수 있도록 cpu가 동작하는데 필요한 아주 기초적인 부분이나 ROM(or flash), RAM, UART등의 기본적인 디바이스들을 동작할 수 있게 만드는 프로그램. Universal Bootloader 의 약자로 간단하게 PowerPC와PC와 ARM에 기반을 둔 임베디드 보드를 위한 부트로더. Ppcboot와 ARMboot를 썼던 사람들에게 익숙하다.. 발전을 해가면서 다양한 platform에 포팅(ppc, arm, mips, x86...) 코드가 깔끔하고 구조가 좋음. 굉장히 강력하고 그나마 쉬운(?) 환경 설정: 많이 쓰이는 cpu를 사 용한 상용 evaluation board에 대한 기본 sample코드 존재(수정 하여 사용가능) ex> S3C2410 evboard = smdk2410 다른cpu에 대해 같은 명령어 체계를 사용하므로, 다른 platform에 적용을 하더라도 큰 어려움 없이 쉽게 접근가능 나 이 텍 Embedded Linux System 환경구축 및 분석 188

U-Boot U-Boot 유니버설 플랫폼을 위한 Open Source 부트 로더 Linux를 지원하며 네트워크를 이용한 부팅 기능 제공 소스 및 자료를 구할 수 있는 사이트 ftp://ftp.denx.de/pub/u-boot/ de/pub/u boot/ 제공 기능 BOOTP/TFTP (RARP/TFTP)를 이용한 네트워크 부팅 initrd를 이용한 메모리 (Flash memory, DRAM) 부팅 TFTP(Ethernet)를 이용한 다운로드 Serial을 이용한 다운로드 나 이 텍 Embedded Linux System 환경구축 및 분석 189

U-Boot의 컴파일 구조 U-Boot의 컴파일 U-Boot의 컴파일은 세단계로 걸쳐서 이루어짐 1단계 : 기존 컴파일 환경을 초기화 make clobber 2단계: 특정CPU를위한환경설정 make ntc100_config 3단계 : 부트로더 이미지 생성 make 컴파일 후에는 다음 세 가지의 파일이 생성 u-boot The ELF binary formatted U-Boot image u-boot.map The U-Boot memory map file u-boot boot.binbin The plane binary formatted image 나 이 텍 Embedded Linux System 환경구축 및 분석 190