임베디드 소프트웨어 설계.

Slides:



Advertisements
Similar presentations
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
Advertisements

컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
2.1 컴퓨터 시스템의 구성 2.2 컴퓨터 시스템의 정보 표현 2.3 중앙처리장치 2.4 저장장치 2.5 컴퓨터 주변기기
마이크로 컨트롤러 Microcontroller.
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
Linux Debugging issues
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
임베디드 시스템 개발 환경 (1) Lecture #3.
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
하드웨어 3 : RAM.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
제6장 FUSING.
Ⅵ. 메모리와 프로그램 가능한 논리소자 1. 메모리의 개요 2. ROM 3. RAM 4. 프로그램 가능한 논리소자
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
임베디드 시스템.
크로스 컴파일 환경 구축.
제4장 Cross Compiler 설치.
제 1 장 마이크로프로세서의 기본동작.
CPU의 이해 CPU란 무엇인가?
2 AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128.
임베디드 하드웨어 Lecture #6.
FUSING.
컴퓨터 구조학 정보보호학과.
공학기초설계 Youn-Hee Han 강의 소개 & MinGW & gcc 공학기초설계 Youn-Hee Han
Linux를 이용한 Embedded 장비 개발
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
DSP와 TMS320F28x의 이해.
Development Environment of Embedded System : part 1
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
PowerPC ABI 김종화.
컴퓨터 구조.
컴퓨터 중앙처리장치, 기억장치, 입력장치 및 출력장치를 알아보자.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
임베디드 시스템 개론 3주차 Embedded System..
버퍼 오버플로우 시스템보안 류기환 권재홍.
Embedded System Porting (2)
9. 중간언어 9-1. Polish표기법 9-2. N-투플 표기법 9-3. 트리 구조 코드 9-4. 추상 기계 코드
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
정보(information) 데이터(data) 어떤 사물에 대한 소식이나 자료 가공된 데이터
Computer Architecture
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 06 명령어와 번지지정 방식.
컴퓨터 시스템의 개요.
AVR Studio 소개 1. AVR Studio의 다운로드 - AVR Studio 관련 홈페이지 -
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 2 장 변수와 상수.
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Programmable Logic Device
adopted from KNK C Programming : A Modern Approach
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
DataScience Lab. 박사과정 김희찬 (월)
운영체제 (Operating Systems) (Memory Management Strategies)
7장 메모리 관리 메모리 관리를 위한 메모리 할당 기법과 경영에 대해 알아본다. 단편화 현상의 원인과 해결 방법을 알아본다.
컴퓨터공학실습(I) 3주 인공지능연구실.
Chapter 12 Memory Organization
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
Chapter 4 변수 및 바인딩.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
C.
임베디드 하드웨어 Lecture #6.
Serial, Parallel, USB, Ethernet
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

임베디드 소프트웨어 설계

임베디드 시스템 개발 환경 TARGET 시스템 HOST 시스템 ARM i586 시리얼 케이블 JTAG I/F Parallel, Ethernet, USB, … ARM i586 Cross-Development 환경

Target 시스템과 Host 시스템 Target 시스템 Host 시스템 개발하고자 하는 임베디드 시스템을 말한다. ARM 기반의 PDA 등 Host 시스템 Target 시스템을 개발하기 위한 개발환경을 제공하는 시스템 타겟을 위한 어셈블러, 컴파일러, 링커 등의 호스트 툴 과 타겟을 개발하는데 필요한 디버거를 제공한다. ARM 프로세서용 툴과 디버거를 가지고 있는 Pentium PC

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을 통하여 연결된다.

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

ARM 교차툴의 활용

컴파일러의 레지스터 사용 ATPCS or APCS ARM Thumb Procedure Call Standard ARM Procedure Call Standard 컴파일러와 어셈블러에서 레지스터를 사용되는 방법에 대해서 정의 Function Argument 사용 Result passing(return) Stack 사용 General purpose 레지스터의 사용

APCS 레지스터 APCS 역 할 r0 a1 argumect 1 / interger result / scratch register r1 a2 argumect 2 / scratch register r2 a3 argumect 3 / scratch register r3 a4 argumect 4 /scratch register r4 v1 register variable 1 r5 v2 register variable 2 r6 v3 register variable 3 r7 v4 register variable 4 r8 v5 register variable 5 r9 sb/v6 Static base / register variable 6 r10 sl/v7 stack limit / register variable 7 r11 fp frame pointer r12 ip scratch reg. / new sb in inter-link-unit calls r13 sp Lower end of current stack frame r14 lr link address / scratch register r15 pc program counter

APCS 이해

ARM 컴파일러의 데이터 Type char 8 bit Byte short 16 bit Half-word int 32 bit long Integer float IEEE single-precision double 64 bit IEEE double-precision pointer long long 64 bit integer

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

실행 가능한 오브젝트 파일의 구성 Section을 설명하는 내용 Text section : 모든 code block Object 파일의 자료 구조 Header Section을 설명하는 내용 Section 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이 필요한 이유 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을 초기화 중에 다시 설정한다.

메모리 리매핑 과정

소프트웨어 동작을 위한 메모리 구조 1

소프트웨어 동작을 위한 메모리 구조 2 스캐터 로딩 (Scatter Loading) 실제 동작에 앞서 프로그램이나 데이터를 재배치 메모리를 분산해서 사용 로드뷰와 실행뷰가 서로 다르다.

다운로드와 디버깅 다운로드 디버깅 생성된 실행 가능한 바이너리 이미지를 타겟 보드의 메모리에 탑재하는 동작 다운로드 및 실행 방법 ROM / Flash에 탑재하여 실행 전용 ICE 없이 DRAM에 탑재하여 실행 전용 ICE를 사용하여 DRAM 탑재하여 실행 디버깅 타겟 시스템을 실행하면서 프로그램의 실행 상태, 메모리, 변수 등을 프로그래머가 확인하거나 제어 하면서 오류를 찾아 수정하는 동작 실행 가능한 이미지가 반드시 디버깅 정보와 함께 메모리에 탑재 되어 있어야 한다. 전용 디버깅 용 ICE 장비와 디버거 소프트웨어를 사용한다

다운로드 방법 ROM / Flash에 탑재하여 실행 전용 ICE 없이 DRAM에 탑재하여 실행 ROM Writer를 사용하는 방법 전용 ROM writer를 사용하여 ROM을 programming하고 타겟 보드에 삽입 JTAG 동글(Dongle)을 이용하는 방법 전용 ICE 없이 DRAM에 탑재하여 실행 Target에 모니터 프로그램, 또는 부트로더를 탑재하고, Serial, ethernet, USB 등을 이용하여 다운로드 JTAG Dongle을 이용하는 방법 전용 ICE를 이용하는 방법 전용 ICE를 사용하여 DRAM 탑재하여 실행 디버깅을 할 때 매우 편리하다.

JTAG(Joint Test Action Group) Boundary-Scan Test Interface JTAG Diagram 각각의 JTAG cell은 서로 연결되어 있다. 회로의 배선과 소자의 전기적 연결상태 Test 디바이스간의 연결상태 Test Registers CELL 디버거 인터페이스 TAP Digital Chip Flash Memory Fusing

JTAG을 이용한 테스트 루프 구성

JTAG 기반의 디버깅 시스템 구성

JTAG 동글 PC의 Parallel 포트와 JTAG을 연결하여 프로토콜을 변환하고 타겟에 맞게 전원을 변환해 주며 TARGET MACHINE TDI CPU 버퍼 (244) DSUB25 Parallel 포트 TDO TMS TCK TRST TAP (Test Access Port) JTAG