arm 개발 환경pds8.egloos.com/pds/200803/20/35/arm_development... · 2008-03-19 · ads (arm...

31
ARM 개발 환경 Yongjin Kim CASP Lab. Hanyang Univ. [email protected]

Upload: others

Post on 31-Dec-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ARM 개발 환경

Yongjin KimCASP Lab. Hanyang [email protected]

Page 2: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

1대의 PC를 위한 개발 환경(1)

S3C2410x Hardware개발환경

1 Parallel cable

JTAG

Host PC (Window 또는 Linux) 1. JTAG 1. 각 Pin 상태 Test2. Monitor Program3. Flash Fusing

2. Serial1. 개발보드의 상태

2. 명령의 수행 결과

3. Application 다운 및 실행

3. Nor Flash (Boot Rom) 1. Monitor Program2. Embedded Application 실

행 및 저장

4. SMC1. Monitor Program2. Embedded Application 저

장 공간 (메모리 구조 차이로Program을 바로 실행 하지 못함. 실행 할 때는 SDRAM 복사 후 실행)

NOR Flash(Boot Rom)

3

2 Serial

SMC4

Page 3: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

1대의 PC를 위한 개발 환경(2)

S3C2410x Hardware 개발 환경

1

2 3

Parallel cable (Multi ICE)

Host PC (Window 또는 Linux)

Serial USB

SMC5

1. Multi ICE (JTAG방식의 Debugging 장비) 1. ADT251 또는 ADS1.2와 연동 하여

Source Level Debugging2. Flash 및 SMC Fusing

Serial1. 개발보드의 상태

2. 명령의 수행 결과

3. Application 다운 및 실행

1. USB1. 대용량 Application Down

2. Nor Flash (Boot Rom) 1. Monitor Program2. Embedded Application 실행

및 저장3. SMC

1. Monitor Program2. Embedded Application 저장 공간

(메모리 구조 차이로 Program을 바로실행 하지 못함. 실행 할 때는 SDRAM 복사 후 실행)

NOR Flash(Boot Rom)

4

Page 4: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

2대의 PC를 위한 개발 환경

1

2

3

Parallel cable

JTAG

Work PC (Window)

Serial

USB

허브

4

SMC5

Host PC (Linux)6

1. Work PC (Window) 1. Boot Loader 작성2. Monitor Program 작성3. Flash 및 SMC Fusing4. Source Edit (UltraEdit, NotePad,

Editplus, AcroEdit 등) 5. 하이퍼 터미널이나 다른 시리얼 통신

프로그램으로 보드와 통신

2. Host PC (Linux)1. Linux Kernel 개발2. Ramdisk 개발

3. Linux Application 개발4. Minicom등의 Linux용 통신 프로그

램을 사용하여 Download 및 실행

Ethernet

Page 5: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Software 개발 환경-WindowOperating System

Window95 Window98Window NT Window 2000 Window XP(NT 커널)Cygwin (Window 환경에서 linux를에뮬레이션해줌)

CompilerSDT250 SDT251 ADS1.2 ( ARM 용 IDE 컴파일러 )Window 용 ARM Tool Chain (ARM Linux 관련 Site)

DebuggerIDE 및 ARM Tool Chain 에 포함

EditNotepadUltraedit(http://www.ultraedit.com), TextPad, EditPuls(http://www.editplus.com)AcroEdit(http://www.acroedit.com) -> 무료

Communication하이퍼터미널기타시리얼통신프로그램

SJF( SEC JTAG FLASH)JTAG 프로그램NT 커널의 Window OS 는직접병렬 I/O를 제어할수없으므로 GIVEIO.SYS 라는 Driver를 Install 해주어야한다.(http://www.samsung.com/Products/Semiconductor/SystemLSI/MobileSolutions/MobileASSP/MobileComputing/S3C2410X/S3C2410X.htm)

Page 6: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Software 개발 환경-LinuxOperating System

레드햇계열의 Linux(Wowlinux7.3, Redhat, MiziLinux)데미안상용보드사용시 그쪽의환경을따른다

Compiler ARM용 Linux tool Chain

DebuggerARM용 Linux tool Chain 안에포함

EditerVIEMAS

CommunicationMINICOMZMODEM

JTAGJFLASH (Linux용 JTAG 프로그램) 같이공개된 JTAG 프로그램을구하거나보드에맞게수정해서재컴파일하여사용한다.http://www.lart.tudelft.nl/ 에서구할수있다

Page 7: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Software 개발 순서

Page 8: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler and Linker for ARM and Thumb® instruction sets An Integrated Development Environment for Windows -CodeWarrior® IDE from Metrowerks® (PC version only) Powerful GUI debugger Instruction set simulators ROM-based debug tools (ARM Firmware Suite) Support for all ARM cores and processors including ARM9E, ARM10, Jazelle, StrongARM and Intel® XScale™Sophisticated on-line documentation ARM Applications Library Real Time Debug and Trace support

Page 9: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-Directory

Page 10: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-New Project

File – New를선택한다ARM Executable Image를선택하고확인을누르자

Page 11: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용-Add files

Project – Add files 누른다추가하고자하는파일선택한다

Page 12: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-Target Setting(1)

DebugRel SettingsARM Executable Image를선택하고확인을누르자

DebugRel Settings 버튼

Page 13: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법- Target Setting(2)

Target Settings에서 Post-linker를 ARM formELF로맟춘다

Page 14: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-ARM Assembler

S3C2410은 ARM920T Core이고 Little Endian이다ARM Mode로 set 한다

Page 15: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-ARM C Compiler

S3C2410은 ARM920T Core이고 Little Endian이다ARM Mode로 set 한다

Page 16: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-ARM Linker Output

R/O 영역(ROM)이 0x00000000부터시작되고 R/W(SDRAM)영역은0x33ff0000이다

Page 17: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-ARM Linker Layout

Object/Symbol에 2410init.o라고쓰고 Section에는 Init라고쓰자

Page 18: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

ADS (Arm Developer Suite) 사용법-Make

Page 19: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발Command Lind 방식(ADS1.2)

ARM AssemblerARM C CompilerARM LinkerFromELFMake 유틸(IDE 환경이바뀔때사용법을다시익힐필요가없다)

에디터UltraEdit10.00b Text Editor

통신 프로그램하이퍼터미널

JTAG 프로그램SJF.EXE(SEC JTAG Flash 프로그램)

Page 20: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-Editor

Page 21: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-Make Clean

Command line에서 make clean 한다

Page 22: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-Make

Command line에 make 한다

Page 23: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-생성된 Binfile

Page 24: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-SJF(1)

Command line에서 sjf.exe /f:2410loader.bin 한다

Page 25: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-SJF(2)

[3] K9K1G08 SMC mode를실행한다.[1] K9K1G08 Program 실행하고쓸블록을적고실행한다.SMC의 1번째블록에 2410loader.bin을프로그램한화면이다

Page 26: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-터미널 상에서 실행

Page 27: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-커널을 SDRAM에 복사

Page 28: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-Linux 실행 화면

Page 29: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

Make util를 이용한 Software 개발-Makefile##### File Definition ####PRJ = 2410loaderINIT= 2410initAM1 = 2410slibCM1 = smc#### Destination path Definition ####OBJ=.\objERR=.\err#### ARM tool Definition ####ARMLINK= armlinkARMASM = armasmARMCC = armcc#### Option Definition ####LFLAGS = -ro-base 0x0 -rw-base 0x33ff0000 -elf -map -xref -list list.txt -first $(INIT).o(Init)AFLAGS = -li -apcs /noswst -cpu ARM920TCFLAGS = -c -g- -Otime -li -apcs /noswst -cpu ARM920T#### Object combine DefInition ####OBJS = $(OBJ)\$(INIT).o $(OBJ)\$(AM1).o $(OBJ)\$(PRJ).o $(OBJ)\$(CM1).o all: $(PRJ).axfclean:

del $(OBJ)\*.odel $(ERR)\*.errdel $(PRJ).axfdel $(PRJ).bin

$(PRJ).axf: $(OBJS) $(ARMLINK) $(LFLAGS) -o $(PRJ).axf $(OBJS)C:\ARM251\Bin\fromelf -nodebug -nozeropad $(PRJ).axf -bin $(PRJ).bin

$(OBJ)\$(PRJ).o : $(PRJ).c 2410addr.h mydef.h makefile$(ARMCC) $(CFLAGS) $(PRJ).c -o $(OBJ)\$(PRJ).o -Errors $(ERR)\$(PRJ).err

$(OBJ)\$(INIT).o: $(INIT).s option.a memcfg.a makefile$(ARMASM) $(AFLAGS) $(INIT).s -o $(OBJ)\$(INIT).o -Errors $(ERR)\$(INIT).err

$(OBJ)\$(AM1).o: $(AM1).s makefile$(ARMASM) $(AFLAGS) $(AM1).s -o $(OBJ)\$(AM1).o -Errors $(ERR)\$(AM1).err

$(OBJ)\$(CM1).o : $(CM1).c 2410addr.h makefile$(ARMCC) $(CFLAGS) $(CM1).c -o $(OBJ)\$(CM1).o -Errors $(ERR)\$(CM1).err

셀 스크립트 언어]파일들간의 관계명령어들 기술파일 수의증가로 인한 개발의어려움과 모듈식 개발등 여러 가지 요구 사항을 충족시킬 수 있다

Page 30: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

용어 정리 (1)Target Device

개발하고자 하는 embedded 시스템보드Host system

Target을 개발 하기위한 환경을 제공하는 시스템

Cross compiler, Monitor, Debugger 등을 제공

Tool chain을 통해서 StrongARM용 code를 생성한다JTAG을 운용하기 위한 환경 제공(jflash)Boot loader용 Terminal 환경 제공(Minicom)Target Linux용 Terminal 환경 제공(Minicom)

사양Platform : Pentium급 컴퓨터

OS: Linux(Wowlinux7.3)Ethernet Serial portMinicomARM용 tool chain 제공

Page 31: ARM 개발 환경pds8.egloos.com/pds/200803/20/35/ARM_Development... · 2008-03-19 · ADS (Arm Developer Suite) 1.2 Code Generation Tools - C and Embedded C++ compilers, Assembler

용어 정리 (2)Backend

Host system과 Target system이 통신을 하기 위한 매개체

RS-232: Minicom을 통해 Target과 통신할 수 있는 통신채널

Parallel: JTAG을 통해서 flash에 fusing할 수 있는 통신채널을 제공한다

Ethernet: zImage, ramdisk image를 host에서 target으로 down loading할 수 있는통신 채널을 제공한다.

Target TerminalTarget의 상황을 host에 표시 해 주는 프로그램

Linux가 올라가기 전의 상황 즉 boot loader의 상황을 Host에서 표시 해준다.Linux가 올라간 후의 Target Linux의 console로 사용한다.Target의 bash를 host에서 표시한다