교차개발환경 교차개발환경 임베디드시스템플랫폼 커널을올리기전엔 target 시스템에아무프로그램도올라가있지않음 target 시스템은일반적으로메모리용량이적어서 compiler 를포함한프로그램개발환경을올리기가어려움 교차개발환경 target 시스템용프로그램은대개별도의 host 시스템에서개발됨 host와 target에사용되는 processor가다른경우, 컴파일러의실행은 host에서되지만실행코드는 target system에서실행됨 cross compiler가필요함 다른 target system용실행파일을생성하는컴파일러 (intel-fpga monitor program에서사용 ) 2 Typical ARM Cortex-A9 Boot Sequence Boot Sequence with Altera Monitor Program Resets the HPS Halts the code in the Boot ROM Boot ROM Hard coded by Altera(Intel) Determines the boot source by reading the boot select pins Preloader In (1) Flash/SD Card or (2) FPGA Typically initializes the DDR3 SDRAM and HPS I/O pins Boot loader Loads and starts the operating system Loads a preloader into the HPS on-chip RAM Preloader comes pre-compiled with the Monitor Program Initializes the DDR3 SDRAM and HPS I/O pins Enables the HPS-FPGA bridges Disables the watchdog timers Re-maps the DDR3 SDRAM to address 0x00000000 Loads the user s code into the DDR3 SDRAM instead of OS Pauses the processor at the first instruction 3 4
시스템개발환경구성 부트로더설치 cable: flash 메모리저장용 Serial cable: terminal 용 Ethernet cable: network 용 (tftp, NFS) 직접연결 : cross cable 허브에연결 : direct cable 부트로더 (Bootloader) 설치방법 부트로더가설치되는디바이스에따라서설치방법이다름 ROM EPROM 칩을 ROM 전용 writer(programmer) 를이용하여프로그래밍한후에시스템의 ROM 용소켓에장착함 예전에사용되던방식 software 개발 - bootloader -OS - applications Host System cable Serial cable Ethernet cable software 실행 Target System (Embedded) 5 6 부트로더설치 (2) 플래시메모리 ( 보드에영구히장착된것 ) 기존에설치된부트로더가있는경우 target 의부트로더에서 host 로부터 new 부트로더를다운로드 부트로더의플래시메모리프로그래밍기능을이용하여프로그래밍 프로그래밍 (programming) = ROM 이나플래시메모리에내용을기록하는것 기존에설치된부트로더가없는경우 ( 최초또는부트로더가망가짐 ), BDM, ICE(in circuit emulator) 장비이용 플래시메모리 ( 탈부착가능한것 ) SD, microsd, CF card 등 호스트시스템에서부트로더등의 image를플래시메모리에기록한후에 target 시스템에장착하여사용 (ex) DE1-SoC 영구장착된것에비해서속도제약이있음 이란 PCB 와 IC 를테스트하기위한목적으로 1985 년조직된 (Joint Test Action Group) 에의해제정된표준이다. Boundary Scan Test 이용하여외부의핀을조사하거나제어할수있도록함 전체적인인터페이스는 5 개의핀에의해서제어. 의기능 TDI, TMS, TCK, ntrst, TDO 프로세서 (CPU) 의상태와는상관없이디바이스의모든외부핀을구동시키거나값을읽어들일수있는기능을제공 회로의배선과소자의전기적연결상태 test 디바이스간의연결상태 test Flash memory programming(fusing) 7 8
Boundary Scan Test Interface PCB boundary scan test Boundary Scan Test Interface 디바이스내에서모든외부와의연결점을가로챔. ( 즉외부로나가는각각의핀들과일대일로연결 ) 각각의셀 (BSC) 은시리얼쉬프트레지스터 (BSR) 를형성하기위해서서로연결 PCB boundary scan test BSC(boundary scan cell) BSR(boundary scan register) TDI Digital Chip TDO TDI (test data input) TDO (test data output) TMS (test mode select) TCK (test clock) ntrst (test reset) Registers TAP 9 10 을이용한 Flash Memory fusing Fusing 프로그램 CPU compliant device 를통하여 Flash memory 의 fusing 수행 Flash Bootloader Download 3 Digital Chip Registers TAP 2 interface Dongle cable 1 Host flashmm 1. Parallel/USB Port 2. 전압변환 : 5V 3V 3. CPU 핀에서메모리인터페이스 Emulation bootloader 프로그램을최초로 flash 메모리에저장할때에사용 그이후에는 bootloader 의명령어를사용하여 flash 내용을변경함 11 12
Tool Chain GNU Toolchain 명령어 Tool chain 이란? software 의개발에사용되는프로그래밍도구의집합 대개 target 시스템의 software 의개발에사용되는 host 시스템의 cross compile 환경을말함 Tool chain 의구성 : source code 을 compile 하고 build 하여 binary 실행파일을생성하는데필요한각종 Utility 및 Library 들로구성됨 GNU Tool Chain GNU GCC (compiler collection) a set of programming language compilers: gcc, g++ GNU binary utilities: binutils assembler, loader, 기타 tools GNU C library: glibc cross compiler 구축을위한 library 및일반 library gcc, g++ C,C++ compiler as portable GNU assembler ld GNU linker ar create, modify, extract from archives ranlib generate index to archive (= ar -s) nm list symbols from object files strip discard symbols from object files objdump display information from object files objcopy - copy and translate object files size list section sizes and total size strings display the sequences of printable characters readelf display information about ELF files 교차개발환경 13 교차개발환경 14 ld - GNU linker objdump ld - GNU linker combines a number of object and archive files, relocates their data and ties up symbol references. Usually the last step in compiling a program is to run ld # ld -o outfile /usr/lib/crt1.o hello.o -lc linker script 파일을지정하면 default linker script를대신하여사용 -T scriptfile link map 파일을출력함 -Map mapfile displays information about one or more object files 일반적인 dump # objdump -s objfile ELF binary file의특정section dump # objdump -s -j.interp objfile binary로 dump # objdump -s -b binary objfile disassembly # objdump -d objfile # objdump S objfile ( 소스코드포함 ) file header 출력 # objdump -f objfile -b, -m으로지정가능한모든 object format 출력 # objdump -i objfile 교차개발환경 15 교차개발환경 16
objcopy ABI 와 EABI copy and translate object files It can write the destination object file in a format different from that of the source object file # objcopy hello hello.new 원본과같음 # objcopy -O binary hello hello.new ELF 헤더가없는 binary bootloader 생성에사용 # objcopy -S hello hello.new strip( 심볼, 재배치정보삭제 ) # objcopy R.note R.comment hello hello.new.note 와.comment 섹션제거 ABI (Application Binary Interface) 응용프로그램과운영체제또는라이브러리와의표준화된인터페이스제공 실행파일형식, 자료형, 레지스터사용방법, 스택사용방법, 변수사용방법등이정의됨 서로다른컴파일러가만든 object 파일을연결하여사용할수있게함 EABI (Embedded ABI) ARM 이나 PPC 와같은임베디드시스템에적합하도록개정된 ABI 표준 EABI 를지원하기위해서는 cross-compile 을할때에 EABI 표준을지원하는교차컴파일러를사용해야함 ( 예 ) intelfpga Monitor Program 에서사용하는교차개발환경 위치 - C: \intelfpga\16.1\university_program\monitor_program\arm_tools \baremetal\bin 교차개발환경 17 18 사용예 Altera monitor program 에서의 cross compile (assembly) $ rm-altera-eabi-as -mfloat-abi=soft -march=armv7-a -mcpu=cortex-a9 -- gstabs -I "$GNU_ARM_TOOL_ROOTDIR/arm-altera-eabi/include" part1.s" -o part1.s.o $ arm-altera-eabi-ld -e _start -u _start --defsym arm_program_mem=0x40 --defsym arm_available_mem_size=0x3fffffc0 --section-start.vectors=0x0 -T"C:/intelFPGA/16.1/University_Program/Monitor_Program/build/ altera-socfpga-unhosted-as.ld" -g -o "C:/prog/altera_monitor/Exercise5/part1/part1.axf" $ arm-altera-eabi-objcopy -O srec part1.axf part1.srec // 실행파일을 S-record 형식으로변환 Altera monitor program 에서의 cross compile (C program) $ arm-altera-eabi-gcc -g -O1 -mfloat-abi=soft -march=armv7-a -mtune=cortex-a9 -mcpu=cortex-a9 -Wall -Wl,--defsym -Wl,arm_program_mem=0x40 -Wl,--defsym -Wl,arm_available_mem_size=0x3fffffbc -Wl,--defsym - Wl, cs3_stack=0x3ffffffc -Wl,--section-start -Wl,.vectors=0x0 -T"C:/intelFPGA/16.1/University_Program/Monitor_Program/build/alterasocfpga-hosted-with-vectors.ld" -o "C:/prog/altera_monitor/Exercise7/part1/part1.axf" -Wl,option linker 용옵션지정 -T script linker script 파일지정 19 20