ARM 개발환경 Yongjin Kim CASP Lab. Hanyang Univ. yjkim@casp.hanyang.ac.kr
1 대의 PC 를위한개발환경 (1) JTAG 1 Parallel cable 4 Host PC (Window 또는 Linux) 1. JTAG 2 Serial SMC S3C2410x Hardware 개발환경 3 NOR Flash (Boot Rom) 2. Serial 1. 각 Pin 상태 Test 2. Monitor Program 3. Flash Fusing 1. 개발보드의상태 2. 명령의수행결과 3. Application 다운및실행 3. Nor Flash (Boot Rom) 1. Monitor Program 2. Embedded Application 실행및저장 4. SMC 1. Monitor Program 2. Embedded Application 저장공간 ( 메모리구조차이로 Program을바로실행하지못함. 실행할때는 SDRAM 복사후실행 )
1 대의 PC 를위한개발환경 (2) 1 Host PC (Window 또는 Linux) Parallel cable (Multi ICE) 2 Serial 3 USB 1. Multi ICE (JTAG 방식의 Debugging 장비 ) 1. ADT251 또는 ADS1.2 와연동하여 Source Level Debugging 2. Flash 및 SMC Fusing Serial 1. 개발보드의상태 2. 명령의수행결과 3. Application 다운및실행 1. USB 1. 대용량 Application Down 5 SMC 4 S3C2410x Hardware 개발환경 NOR Flash (Boot Rom) 2. Nor Flash (Boot Rom) 1. Monitor Program 2. Embedded Application 실행및저장 3. SMC 1. Monitor Program 2. Embedded Application 저장공간 ( 메모리구조차이로 Program을바로실행하지못함. 실행할때는 SDRAM 복사후실행 )
2 대의 PC 를위한개발환경 1 Parallel cable Work PC (Window) 6 허브 Host PC (Linux) 4 Ethernet 2 Serial 3 USB 1. Work PC (Window) 1. Boot Loader 작성 2. Monitor Program 작성 3. Flash 및 SMC Fusing 4. Source Edit (UltraEdit, NotePad, Editplus, AcroEdit 등 ) 5. 하이퍼터미널이나다른시리얼통신프로그램으로보드와통신 JTAG 2. Host PC (Linux) 1. Linux Kernel 개발 2. Ramdisk 개발 3. Linux Application 개발 5 SMC 4. Minicom 등의 Linux 용통신프로그램을사용하여 Download 및실행
Software 개발환경 -Window Operating System Window95 Window98 Window NT Window 2000 Window XP(NT 커널 ) Cygwin (Window 환경에서 linux 를에뮬레이션해줌 ) Compiler SDT250 SDT251 ADS1.2 ( ARM 용 IDE 컴파일러 ) Window 용 ARM Tool Chain (ARM Linux 관련 Site) Debugger IDE 및 ARM Tool Chain 에포함 Edit Notepad Ultraedit(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/MobileComput ing/s3c2410x/s3c2410x.htm)
Software 개발환경 -Linux Operating System 레드햇계열의 Linux(Wowlinux7.3, Redhat, MiziLinux) 데미안 상용보드사용시그쪽의환경을따른다 Compiler ARM 용 Linux tool Chain Debugger ARM 용 Linux tool Chain 안에포함 Editer VI EMAS Communication MINICOM ZMODEM JTAG JFLASH (Linux 용 JTAG 프로그램 ) 같이공개된 JTAG 프로그램을구하거나보드에맞게수정해서재컴파일하여사용한다. http://www.lart.tudelft.nl/ 에서구할수있다
Software 개발순서
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, StrongARMand Intel XScale Sophisticated on-line documentation ARM Applications Library Real Time Debug and Trace support
ADS (Arm Developer Suite) 사용법 -Directory
ADS (Arm Developer Suite) 사용법 -New Project File New 를선택한다 ARM Executable Image 를선택하고확인을누르자
ADS (Arm Developer Suite) 사용 -Add files Project Add files 누른다추가하고자하는파일선택한다
ADS (Arm Developer Suite) 사용법 -Target Setting(1) DebugRel Settings 버튼 DebugRel Settings ARM Executable Image 를선택하고확인을누르자
ADS (Arm Developer Suite) 사용법 - Target Setting(2) Target Settings 에서 Post-linker 를 ARM formelf 로맟춘다
ADS (Arm Developer Suite) 사용법 -ARM Assembler S3C2410 은 ARM920T Core 이고 Little Endian 이다 ARM Mode 로 set 한다
ADS (Arm Developer Suite) 사용법 -ARM C Compiler S3C2410 은 ARM920T Core 이고 Little Endian 이다 ARM Mode 로 set 한다
ADS (Arm Developer Suite) 사용법 -ARM Linker Output R/O 영역 (ROM) 이 0x00000000 부터시작되고 R/W(SDRAM) 영역은 0x33ff0000 이다
ADS (Arm Developer Suite) 사용법 -ARM Linker Layout Object/Symbol 에 2410init.o 라고쓰고 Section 에는 Init 라고쓰자
ADS (Arm Developer Suite) 사용법 -Make
Make util 를이용한 Software 개발 Command Lind 방식 (ADS1.2) ARM Assembler ARM C Compiler ARM Linker FromELF Make 유틸 (IDE 환경이바뀔때사용법을다시익힐필요가없다 ) 에디터 UltraEdit10.00b Text Editor 통신프로그램 하이퍼터미널 JTAG 프로그램 SJF.EXE(SEC JTAG Flash 프로그램 )
Make util 를이용한 Software 개발 -Editor
Make util 를이용한 Software 개발 -Make Clean Command line 에서 make clean 한다
Make util 를이용한 Software 개발 -Make Command line 에 make 한다
Make util 를이용한 Software 개발 - 생성된 Binfile
Make util 를이용한 Software 개발 -SJF(1) Command line 에서 sjf.exe /f:2410loader.bin 한다
Make util 를이용한 Software 개발 -SJF(2) [3] K9K1G08 SMC mode 를실행한다. [1] K9K1G08 Program 실행하고쓸블록을적고실행한다. SMC 의 1 번째블록에 2410loader.bin 을프로그램한화면이다
Make util 를이용한 Software 개발 - 터미널상에서실행
Make util 를이용한 Software 개발 - 커널을 SDRAM 에복사
Make util 를이용한 Software 개발 -Linux 실행화면
Make util 를이용한 Software 개발 -Makefile ##### File Definition #### PRJ = 2410loader INIT= 2410init AM1 = 2410slib CM1 = smc #### Destination path Definition #### OBJ=.\obj ERR=.\err #### ARM tool Definition #### ARMLINK= armlink ARMASM = armasm ARMCC = 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 ARM920T CFLAGS = -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).axf clean: del $(OBJ)\*.o del $(ERR)\*.err del $(PRJ).axf del $(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 셀스크립트언어 ] 파일들간의관계 명령어들기술 파일수의증가로인한개발의어려움과모듈식개발등여러가지요구사항을충족시킬수있다
용어정리 (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 port Minicom ARM용 tool chain 제공
용어정리 (2) Backend Host system 과 Target system 이통신을하기위한매개체 RS-232: Minicom 을통해 Target 과통신할수있는통신채널 Parallel: JTAG 을통해서 flash 에 fusing 할수있는통신채널을제공한다 Ethernet: zimage, ramdisk image 를 host 에서 target 으로 down loading 할수있는통신채널을제공한다. Target Terminal Target의상황을 host에표시해주는프로그램 Linux가올라가기전의상황즉 boot loader의상황을 Host에서표시해준다. Linux가올라간후의 Target Linux의 console로사용한다. Target의 bash를 host에서표시한다