임베디드 시스템.

Slides:



Advertisements
Similar presentations
신입생 Study 커리큘럼 OneScore. Contents 후니의 시스코 네트워킹 (4 주 ) 01/ Network 생활코딩 – 웹 서비스 만들기 (4 주 ) Wowhacker 웹 게임 (4 주 ) 02/ Web 뇌를 자극하는 윈도우 시스템 프로그래밍 (4 주 ) 리버싱.
Advertisements

Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
EZ Board-M In-Ho, Roh Real Time System Lab.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
Programming in C.
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경
Power Java 제3장 이클립스 사용하기.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Windows Server 장. Windows Server 2008 개요.
Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler를이용한 커널 컴파일 및 포팅 1
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Power Java 제2장 자바 개발 도구.
임베디드 프로그래밍 Lecture #
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
임베디드 리눅스 설치 및 동작 Lecture #5.
JSP Programming with a Workbook
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
이클립스를 이용한 AVR 개발환경 구축 로보틱스랩 유승일.
Java 기초 (Java JDK 설치 및 환경설정)
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
1. C++ 시작하기.
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
부트로더와 Self Programming
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
ARM Development Suite v1.2
Cross Compiler 설치.
뇌를 자극하는 Windows Server 장. Windows Server 2008 개요.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
임베디드 소프트웨어 설계.
Cross Compiler를이용한 커널 컴파일 및 포팅
AVR – ATmega103(ATMEL) Compilers & ISP
Slice&link.
Chap 6.Assembler 유건우.
시스템 인터페이스 Lab3 Unix 사용법 실습.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
2장. JSP 프로그래밍을 위한 환경구성 제2장.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
임베디드 시스템 개론 임베디드 타겟 보드 포팅 및 H/W 제어 3일차 강의 자료 Embedded System Lab.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제1장 Unix란 무엇인가?.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
자바 5.0 프로그래밍.
ATmega128의 특징 아이티즌 기술연구소
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Kernel, Ramdisk, JFFS2 Porting
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
창의 설계 가이드 (모터 프로그래밍 및 테스트)
셀프 프로그래밍으로 쓰기 셀프 프로그래밍이란? 프린트포트의 ISP 모듈을 사용하지 않음 부트로더에 의한 펌웨어 다운로드
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
CODE INJECTION 시스템B 김한슬.
1장. C Language Synopsis.
Presentation transcript:

임베디드 시스템

Chapter 4 교차 개발 환경

임베디드 시스템 설계 개발환경을 이해하는 것이 중요 호스트 시스템 타겟 시스템 백엔드 TARGET 시스템 HOST 시스템 ARM i586 Cross-Development 환경 시리얼 케이블 Parallel, Ethernet, USB, … JTAG I/F

호스트 시스템 타겟 시스템을 개발하기 위한 컴퓨팅 환경을 제공하는 시스템 Pentium 급 컴퓨터 운영체제 툴체인(toolchain) 타겟 보드에 맞는 ARM용 교차 컴파일러 및 관련된 각종 라이브러리 등을 의미 호스트 시스템과 타겟 시스템의 플랫폼이 다르기 때문에 필요

타겟 시스템 개발하고자 하는 임베디드 시스템을 말함 백엔드 ARM 기반의 PDA 등 호스트 시스템과 타겟 시스템 간 통신을 위한 매개체를 의미 직렬 포트(Serial port) 병렬 포트(parallel port) LAN

Host 개발 툴 Cross-Compiler IDE(Integrated Development Environment) 개발된 소스 프로그램을 다른 machine의 기계어로 번역하는 프로그램 예) x86 계열의 호스트에서 개발한 소스 프로그램을 ARM 용 기계어로 번역하는 프로그램 IDE(Integrated Development Environment) 컴파일러, 디버거 와 에디터 등이 통합된 CASE(Computer Aided Software Engineering) 툴

디버그 인터페이스 ICE 장비 In-Circuit Emulator (ICE)는 호스트의 디버거와 함께 Target 시스템의 레지스터나 메모리의 내용을 읽거나 변경할 있음 Break Point나 Watch Point를 설정할 수 있고, 프로그램을 step-by-step으로 실행 할 수 있게 해주는 장치 호스트와는 Parallel, Ethernet 등을 이용하여 연결되고, 타겟과는 JTAG을 통하여 연결

Cross 컴파일러 ARM Cross 컴파일러 ARM Cross 컴파일러의 종류 (1) PC의 x86 계열의 호스트에서 소스 프로그램을 32비트 RISC 프로세서인 ARM 용 기계어를 생성하는 프로그램 ARM Cross 컴파일러의 종류 (1) SDT v2.11, v2.50, v2.51 통합개발환경(IDE) : APM 디버거 : ADW ADS(ARM Developer Suit) v1.01, v1.1, v1.2 통합개발환경(IDE) : CodeWarrior 디버거 : AXD

ARM Cross 컴파일러의 종류 (2) RVDS(RealView Developer Suit) v1.2, v2.0 IDE & 디버거 : RVD Code Warrior for ARM v1.2, v2.0 IDE & 디버거 : CodeWarrior GNU 교차 툴 어셈블러 & 컴파일러 : gas, gcc 디버거 : GDB, Insight 디버거

ARM 교차툴의 활용

오브젝트 파일의 자료 구조 오브젝트 파일의 종류 오브젝트 파일의 형식 재배치 가능한 오브젝트 파일 (relocatible file) 실행 가능한 오브젝트 파일 (executible file) 공유 오브젝트 파일 (shared object file) 오브젝트 파일의 형식 COFF(Common Object File Format) ELF(Executable Linkable Format)

실행 가능한 오브젝트 파일의 구성 Header Section Symbol Table Object 파일의 자료 구조 Text section : 모든 code block Data section : 초기화된 전역변수 및 초기값 BSS section : 초기화 되지 않은 전역변수 Symbol Table 변수와 함수의 이름과 위치 정보를 가진다.

링커 (Linker) Linker Startup 코드 불완전한 object 파일들을 합쳐 모든 코드와 데이터를 포함하는 새로운 object 파일을 생성해 내는 도구 필요에 따라 라이브러리와 초기화(startup) 파일을 같이 링크 Startup 코드 어셈블러로 구성되며 모든 프로그램에는 반드시 필요 일반적으로 crt0.S(C-runtime 0 의 약자), init.S, startup.S 등의 이름을 많이 사용 Startup 코드 동작 시스템 설정 Data 초기화 Stack 영역 할당 Heap 영역 할당 메인 함수(main)를 호출

로케이트 (Locate) 로케이트 (Locate) Linker script 파일 메모리에서 실행 가능하도록 코드와 데이터를 배치하여 최종 바이너리 이미지를 생성하는 도구 대부분 링커에 포함되어 있다 Linker script 파일 코드와 데이터의 메모리 배치를 정의한 파일 # ROM located at address 0x0 # RAM located at address 0x800000 # alignment directives have been removed for clarity MEMORY { TEXT (RX) : ORIGIN = 0x0, LENGTH = 0 DATA (RW) : ORIGIN = 0x800000, LENGTH = 0 } SECTIONS{ .main : { *(.text) *(.rodata) } > TEXT # Locate the initialized data to the ROM area at the end of .main. .main_data : AT( ADDR(.main) + SIZEOF(.main) ) { *(.data) *(.sdata) *(.sbss) } > DATA .uninitialized_data: { *(SCOMMON) *(.bss) *(COMMON) } >> DATA

메모리 리매핑(Re-mapping) 하드웨어 적으로 메모리의 어드레스 MAP을 바꾸는 동작 Re-mapping이 필요한 이유 메모리 컨트롤러에서 지원 되어야 함 Re-mapping이 필요한 이유 ROM이나 Flash 만이 전원이 꺼진 후에도 code나 data가 저장되어 있음 대부분 0x0 번지에 ROM이나 Flash가 위치함 ARM의 경우 Reset이 발생하면 무조건 0x0 번지의 명령을 수행해야 함 ROM 이나 Flash는 DRAM에 비하여 data 버스의 width도 좁고, 속도가 느려서 시스템 동작 중에 성능을 저하 시킬 수 있음 ARM의 경우 Exception Vector Table은 항상 0x0 번지에 있는데, ROM 이나 Flash를 0x0 번지 위치에서 계속 사용하게 되면 Vector Table을 수정하기가 용이하지 않음 대부분의 OS의 경우 Vector Table을 초기화 중에 다시 설정한다.

메모리 리매핑 과정

윈도우 기반의 호스트 시스템 설정 ARM 명령어 실습 및 독립형 프로그램 작성할 때 사용 가능 MinGW MSYS 윈도우 환경에서 사용 가능한 GNU 툴 MSYS 윈도우 환경에서 POSIX/Bourne 쉘 환경 제공 Makefile과 각종 스크립트를 수행 할 수 있도록 하는 툴 ARM용 교차 개발 툴 Win32에서 임베디드 ARM 프로세서용으로 코드를 생성하는 GNU 툴 어셈블러, 링커, 컴파일러 등 다양한 툴을 포함 OCD Commander 위글러와 호환되는 JTAG 동글과 함께 ELF 형식의 프로그램 다운로드, 싱글 스텝, 메모리 읽기 쓰기, 플래시 프로그래밍 등을 할 수 있는 툴 DevC++ 무료로 사용 가능한 편집기 하이퍼 터미널 윈도우에서 제공하는 시리얼 통신 에뮬레이터 시리얼(UART)는 콘솔 및 디버깅용으로 사용 됨

리눅스 기반의 호스트 시스템 설정 임베디드 리눅스 개발 용 호스트 시스템 리눅스 설치 교차 개발 툴 설치 RedHat 리눅스 9.0 또는 이후 버전 개발자 용으로 설치 교차 개발 툴 설치 ARM 용 교차 개발 툴 (arm-linux 타깃) 시리얼 통신 에뮬레이터 minicom 리눅스에서 제공하는 시리얼 통신 에뮬레이터 시리얼(UART)는 콘솔 및 디버깅용으로 사용 됨 네트워킹 설정 고정 IP 주소를 사용하는 것이 유리 TFTP 서버 및 NFS 서버 USB 로더 USB를 이용한 프로그램 탑재용으로 사용