Microsoft Word - WinAVR의 MFile로 makefile 만들기.doc

Similar documents
ISP and CodeVisionAVR C Compiler.hwp

MAX+plus II Getting Started - 무작정따라하기

슬라이드 1

DE1-SoC Board

슬라이드 1

강의10

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

LXR 설치 및 사용법.doc

휠세미나3 ver0.4

PowerPoint 프레젠테이션

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

Solaris Express Developer Edition

untitled

MPLAB C18 C

untitled

PRO1_04E [읽기 전용]

Sena Technologies, Inc. HelloDevice Super 1.1.0

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

CD-RW_Advanced.PDF

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

슬라이드 제목 없음


Microsoft PowerPoint - ARM 개발 환경.ppt

PRO1_09E [읽기 전용]

Dialog Box 실행파일을 Web에 포함시키는 방법

chapter4

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Install stm32cubemx and st-link utility

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

슬라이드 1

PRO1_02E [읽기 전용]

SRC PLUS 제어기 MANUAL

K7VT2_QIG_v3

Orcad Capture 9.x

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh

Remote UI Guide

초보자를 위한 C++

untitled

PowerPoint 프레젠테이션

1. 제품소개및특징 1.1 제품소개 < 그림 1.1> AVRISP MK2 USB 개발장비 AVR ISP(In System Programmer)MK2 USB 란 Atmel 사의 AVR 마이크로컨트롤러의내부플래쉬와 EEPROM 에프로그램메모리및데이터를써 (Write, Re

Microsoft PowerPoint - e7.pptx

Microsoft PowerPoint - AVRSTUDIO_WINAVR.ppt [호환 모드]

EWAVR 5.1x 프로젝트 옵션 설정(1_2) 2. Project -> > Option -> > General Option -> > Output / Library Configuration Library Configuration 은 사용하게 될 Library file을

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

4S 1차년도 평가 발표자료

가. 마이크로컨트롤러개발환경및설치준비 AVR Studio 에서지원하는운영체계는아래와같다. - Windows XP(32 비트, 64 비트 ), Windows vista(32 비트, 64 비트 ), Windows 7(32 비 트, 64 비트 ) NO 프로그램명내용배포사이트

Microsoft PowerPoint - AD-USBISP_V03_사용법.pptx

T100MD+

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Microsoft Word - codevision사용법_pdf버전.docx

PowerPoint 프레젠테이션

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

H3050(aap)

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Modelsim_QuartusII타이밍시뮬레이션.doc

USER GUIDE

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

USBISPV3.0(071112).hwp

<32B1B3BDC32E687770>

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

USBISP_V20_manual.hwp

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

제목을 입력하세요.

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>

Deok9_Exploit Technique

Chapter 1

PowerPoint 프레젠테이션

USBJTAG_V30_manual.hwp

1. 제품사진및보드설명 < 그림 1.1> AVR-ATmega128 확장형 DEV 보드사진 1.1 제품소개 ATMEL사의 8비트프로세서인 AVR-ATmega128 MCU를이용하여학습및개발을할수있는 AVR 개발보드입니다. 초보자를세심하게배려하기위하여모든부품의부품이름및부품정

USBISP MK2 User Manual Page 2/15 Contents 1. Introduction 3 2. USB DRIVER INSTALL 4 3. CodeVisionAVR C Complier / AVR Studio 6 Programmer 설정하기 6 4. US

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Deok9_PE Structure

Microsoft PowerPoint - chap-02.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

AVR USBISP+ V04 사용자메뉴얼 류대우 뉴티씨 (NEWTC) 대표이사

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

Microsoft Word - USB복사기.doc

PowerPoint 프레젠테이션

슬라이드 1

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

Interstage5 SOAP서비스 설정 가이드

Microsoft Word - Automap3

Mango220 Android How to compile and Transfer image to Target

B _00_Ko_p1-p51.indd

(SW3704) Gingerbread Source Build & Working Guide

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

6주차.key

APOGEE Insight_KR_Base_3P11

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

Microsoft Word - AVR Dragon.doc

2. Step 2 : Select Device Step 2 에서는 Device 드롭 - 다운리스트에서사용자가자신의프로젝트에서사용할디바이스를선택할수있다. 선택가능한디바이스의범위를줄이려면디바이스의제품군 (Family) 를먼저선택하는편이좋다. < 그림 > 프로젝트마법사 Se

Transcription:

WinAVR 의 MFile 로 Makefile 만들기 ( 주 ) 퀀텀베이스, 서울시금천구가산동 233-5, 요업기술원벤처관 305 호 TEL: 02-3282-7739, FAX: 02-3282-7740 Website: www.quantumbase.com, Email: support@quantumbase.com Copyright 2005. by Quantumbase Inc., All rights reserved. 1 WinAVR 통합개발툴옵션설정 사용자가 AVR 프로그램개발툴을이용하여 AVR MCU 프로그램을작성하고 AVR 프로그램다운로드툴을이용하여앞에서작성된 AVR MCU 프로그램을 QB-MCU100 스타터키트에있는 AVR MCU에다운로드하는작업을통해사용자가원하는 AVR MCU를이용한제품개발을수행할수있다. 이때, 앞에서말했듯이 AVR MCU를이용한실습또는제품개발을위해서는 AVR 프로그램개발툴과 AVR 프로그램다운로드툴이필요하게되는데여기서는 AVR 프로그램개발과 AVR 프로그램다운로드를모두수행할수있는 WinAVR 통합개발툴 (20040720 버전 ) 의사용법에대해서설명하고자한다. WinAVR 통합개발툴은 MFile( 컴파일및다운로드옵션설정 ) 및 Programmers Notepad( 소스편집, 컴파일, 다운로드 ) 로구성되어있다. 우선, WinAVR 의 MFile 개발툴을 이용하여 WinAVR 통합개발툴의옵션설정하는법을설명하겠다. 1.1 WinAVR의 MFile 개발툴을이용한컴파일옵션설정이제, WinAVR의 MFile 개발툴을이용하여 C 언어소스를 avr-gcc 개발툴등으로컴파일하기위해필요한 Makefile 이라는매크로파일을작성한다. Makefile을작성하기위해 MFile 개발툴을실행하는데 Windows에서 시작 모든프로그램 WinAVR MFile [WinAVR] 을차례대로선택하면된다. MFile 개발툴이실행된모습을그림 1.1에보여주고있다. 그림 1.1에보이는바와같이 MFile 개발툴의 Makefile 메뉴를선택하면컴파일옵션을설정하는 Code generation 의밑에있는서브메뉴들이보여진다. 첫번째로 Main file name... 메뉴를선택하면 Main file 입력창이나타나는데이창의입력박스에 main 함수가있는 C 언어소스파일이름 ( 예, main) 을입력하고 OK 버튼을누른다. 그러면, MFile 개발툴의편집창안의 TARGET = main 이라는부분에방금입력한내용이입력된다. 이것은 C 언어소스가컴파일되어생성되는프로그램파일의이름이된다. 즉, main.hex 형태의프로그램파일이생성된다. 1 QB-MCU100 Starter Kit

두번째로 MCU type > 메뉴를선택하면 AVR MCU 패밀리서브메뉴가나오는데여기서 ATmega > 메뉴를선택하고다시, AVR MCU 서브메뉴가나오면 atmega162 메뉴를선택하여 QB-MCU100의 AVR MCU와일치시킨다. 그러면, MFile 개발툴의편집창안의 MCU = atmega162 부분의내용이수정되어입력된다. 세번째로 Output format > 메뉴를선택하면프로그램파일형식서브메뉴가나오는데 ihex 메뉴를선택하여 Intel HEX 프로그램파일형식을선택한다. 그러면, MFile 개발툴 의편집창안의 FORMAT = ihex 부분의내용이수정되어입력된다. 네번째로 Optimization level > 메뉴를선택하면컴파일최적화옵션서브메뉴가나오는 데 s 메뉴를선택하여프로그램크기를최적화시는옵션을선택한다. 그러면, MFile 개발 툴의편집창안의 OPT = s 부분의내용이수정되어입력된다. 그림 1.1 MFile 의 Makefile 옵션설정메뉴내용 다섯번째로 Debug format > 메뉴를선택하면디버그정보형식서브메뉴가나오는데 AVR-ext-COFF(AVR Studio 4.07+, VMLAB 3.10+) 메뉴를선택하여컴파일시디버그 2 QB-MCU100 Starter Kit

정보를저장하는형식중에하나인 ext-coff를선택한다. 그러면, MFile 개발툴의편집창안의 DEBUG = stabs 부분과 build: elf hex eep lss sym extcoff 부분의내용이수정되어입력된다. 이것을선택하면디버그정보가포함된 main.cof 프로그램파일이생성되는데이파일을 Atmel사에서제공하는 AVR Studio(4.07 버전이상 ) 개발툴에서읽어서 C 언어소스를보면서디버그가가능한소스레벨디버깅을할수가있다. 1.2 WinAVR의 MFile 개발툴을이용한다운로드옵션설정앞절에서는 MFile 개발툴을이용하여컴파일옵션을설정했고지금부터는앞에서컴파일된프로그램을 ISP(In-System Programming) 방식으로 AVR MCU에다운로드하기위해 avrdude 개발툴을이용하게되는데이때다운로드장비 (stk200, stk500, avrisp 등 ) 와컴퓨터의통신포트 (com1, com2, lpt1, lpt2 등 ) 에따라다른다운로드옵션을설정하게된다. 여기서, stk200은 Kanda사의 STK200 스타터키트에서사용하는다운로드방식, stk500은 Atmel사의 STK500 키트에서사용하는다운로드방식, avrisp는 Atmel사의 AVRISP 장비에서사용하는다운로드방식이다. 또한, com1, com2는각각컴퓨터의직렬포트1, 직렬포트2로서 25핀또는 9핀의커넥터형태이고 lpt1, lpt2는각각컴퓨터의병렬포트1, 병렬포트2로서 25핀의커넥터형태로제공된다. 여기서, 주의할것은 avrdude 개발툴을사용하기위해서는 giveio.sys 드라이버파일을설치해야하는데 install_giveio.bat 배치실행파일을실행하면 giveio.sys 드라이버파일이설치되고 remove_giveio.bat 배치실행파일을실행하면 giveio.sys 드라이버파일이제거된다. 또한, status_giveio.bat 배치실행파일을실행하면 giveio.sys 드라이버상태를볼수있다. 이러한파일들은 WinAVR에설치된폴더아래의 bin 폴더 ( 보통 WinAVR bin ) 에있다. 앞의그림 1.1에보이는바와같이 MFile 개발툴의 Makefile 메뉴를선택하고 AVRdude 밑에있는서브메뉴중에 Programmer > 메뉴를선택하면다운로드장비서브메뉴가나오는데 stk200 메뉴를선택하여 Kanda사의 stk200 다운로드방식을선택한다. 그러면, MFile 개발툴의편집창안의 AVRDUDE_PROGRAMMER = stk200 부분의내용이수정되어입력된다. 다음으로 Port > 메뉴를선택하면통신포트서브메뉴가나오는데 lpt1 메뉴를선택하 여컴퓨터의병렬포트 1 을선택한다. 그러면, MFile 개발툴의편집창안의 AVRDUDE_PORT = lpt1 부분의내용이수정되어입력된다. 지금까지 WinAVR 의 MFile 개발툴에서설정한컴파일및다운로드옵션을 Makefile 이라 는이름으로저장하기위해 MFile 개발툴의 File 메뉴를선택하면파일을읽거나쓰기위 한서브메뉴가나오는데 Save as 메뉴를선택하여파일저장창이나타난다. 파일저 3 QB-MCU100 Starter Kit

장창에서 C 언어소스파일이있는폴더에 Makefile 을지정하고 저장 (S) 버튼을눌러 서파일을저장한다. 표 1.1 에 MFile 개발툴로컴파일및다운로드옵션을설정하여만든 Makefile 의내용을보여주고있다. 표 1.1. Makefile 매크로파일내용 Hey Emacs, this is a -*- makefile -*- WinAVR Sample makefile written by Eric B. Weddington, J?rg Wunsch, et al. Released to the Public Domain Please read the make user manual! Additional material for this makefile was submitted by: Tim Henigan Peter Fleury Reiner Patommel Sander Pool Frederik Rouleau Markus Pfaff On command line: make all = Make software. make clean = Clean out built project files. make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB). make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio 4.07 or greater). make program = Download the hex file to the device, using avrdude. Please customize the avrdude settings below first! make filename.s = Just compile filename.c into the assembler code 4 QB-MCU100 Starter Kit

only To rebuild project do "make clean" then "make all". MCU name MCU = atmega162 Output format. (can be srec, ihex, binary) FORMAT = ihex Target file name (without extension). TARGET = port_led_test List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c List Assembler source files here. Make them always end in a capital.s. Files ending in a lowercase.s will not be considered source files but generated files (assembler output from the compiler), and will be deleted upon "make clean"! Even though the DOS/Win* filesystem matches both.s and.s the same, it will preserve the spelling of the filenames, and gcc itself does care about how the name is spelled on its command-line. ASRC = Optimization level, can be [0, 1, 2, 3, s]. 0 = turn off optimization. s = optimize for size. (Note: 3 is not always the best optimization level. See avr-libc FAQ.) OPT = s Debugging format. Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. AVR (extended) COFF requires stabs, plus an avr-objcopy run. DEBUG = stabs 5 QB-MCU100 Starter Kit

List any extra directories to look for include files here. Each directory must be seperated by a space. EXTRAINCDIRS = Compiler flag to set the C Standard level. c89 - "ANSI" C gnu89 - c89 plus GCC extensions c99 - ISO C99 standard (not yet fully implemented) gnu99 - c99 plus GCC extensions CSTANDARD = -std=gnu99 Place -D or -U options here CDEFS = Place -I options here CINCS = Compiler flags. -g*: generate debugging information -O*: optimization level -f...: tuning, see GCC manual and avr-libc documentation -Wall...: warning level -Wa,...: tell GCC to pass this to the assembler. -adhlns...: create assembler listing CFLAGS = -g$(debug) CFLAGS += $(CDEFS) $(CINCS) CFLAGS += -O$(OPT) CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshortenums CFLAGS += -Wall -Wstrict-prototypes CFLAGS += -Wa,-adhlns=$(<:.c=.lst) CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) CFLAGS += $(CSTANDARD) Assembler flags. -Wa,...: tell GCC to pass this to the assembler. -ahlms: create listing 6 QB-MCU100 Starter Kit

-gstabs: have the assembler create line number information; note that for use in COFF files, additional information about filenames and function names needs to be present in the assembler source files -- see avr-libc docs [FIXME: not yet described there] ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs Additional libraries. Minimalistic printf version PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min Floating point printf version (requires MATH_LIB = -lm below) PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt PRINTF_LIB = Minimalistic scanf version SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min Floating point + %[ scanf version (requires MATH_LIB = -lm below) SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt SCANF_LIB = MATH_LIB = -lm External memory options 64 KB of external RAM, starting after internal RAM (ATmega128!), used for variables (.data/.bss) and heap (malloc()). EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym= heap_end=0x80ffff 64 KB of external RAM, starting after internal RAM (ATmega128!), only used for heap (malloc()). 7 QB-MCU100 Starter Kit

EXTMEMOPTS = -Wl,--defsym= heap_start=0x801100,-- defsym= heap_end=0x80ffff EXTMEMOPTS = Linker flags. -Wl,...: tell GCC to pass this to linker. -Map: create map file --cref: add cross reference to map file LDFLAGS = -Wl,-Map=$(TARGET).map,--cref LDFLAGS += $(EXTMEMOPTS) LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) Programming support using avrdude. Settings and variables. Programming hardware: alf avr910 avrisp bascom bsd dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 Type: avrdude -c? to get a full listing. AVRDUDE_PROGRAMMER = stk200 com1 = serial port. Use lpt1 to connect to parallel port. AVRDUDE_PORT = lpt1 AVRDUDE_WRITE_FLASH = -U flash:w:$(target).hex AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(target).eep Uncomment the following if you want avrdude's erase cycle counter. Note that this counter needs to be initialized first using -Yn, see avrdude manual. AVRDUDE_ERASE_COUNTER = -y Uncomment the following if you do /not/ wish a verification to be performed after programming the device. AVRDUDE_NO_VERIFY = -V 8 QB-MCU100 Starter Kit

Increase verbosity level. Please use this when submitting bug reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> to submit bug reports. AVRDUDE_VERBOSE = -v -v AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) -------------------------------------------------------------------- ------- Define directories, if needed. DIRAVR = c:/winavr DIRAVRBIN = $(DIRAVR)/bin DIRAVRUTILS = $(DIRAVR)/utils/bin DIRINC =. DIRLIB = $(DIRAVR)/avr/lib Define programs and commands. SHELL = sh CC = avr-gcc OBJCOPY = avr-objcopy OBJDUMP = avr-objdump SIZE = avr-size NM = avr-nm AVRDUDE = avrdude REMOVE = rm -f COPY = cp Define Messages English MSG_ERRORS_NONE = Errors: none MSG_BEGIN = -------- begin -------- MSG_END = -------- end -------- MSG_SIZE_BEFORE = Size before: 9 QB-MCU100 Starter Kit

MSG_SIZE_AFTER = Size after: MSG_COFF = Converting to AVR COFF: MSG_EXTENDED_COFF = Converting to AVR Extended COFF: MSG_FLASH = Creating load file for Flash: MSG_EEPROM = Creating load file for EEPROM: MSG_EXTENDED_LISTING = Creating Extended Listing: MSG_SYMBOL_TABLE = Creating Symbol Table: MSG_LINKING = Linking: MSG_COMPILING = Compiling: MSG_ASSEMBLING = Assembling: MSG_CLEANING = Cleaning project: Define all object files. OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) Define all listing files. LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) Compiler flags to generate dependency files. GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d Combine all necessary flags and optional flags. Add target processor to flags. ALL_CFLAGS = -mmcu=$(mcu) -I. $(CFLAGS) $(GENDEPFLAGS) ALL_ASFLAGS = -mmcu=$(mcu) -I. -x assembler-with-cpp $(ASFLAGS) Default target. all: begin gccversion sizebefore build sizeafter finished end build: elf hex eep lss sym extcoff elf: $(TARGET).elf hex: $(TARGET).hex eep: $(TARGET).eep lss: $(TARGET).lss sym: $(TARGET).sym Eye candy. 10 QB-MCU100 Starter Kit

AVR Studio 3.x does not check make's exit code but relies on the following magic strings to be generated by the compile job. begin: $(MSG_BEGIN) finished: $(MSG_ERRORS_NONE) end: $(MSG_END) Display size of file. HEXSIZE = $(SIZE) --target=$(format) $(TARGET).hex ELFSIZE = $(SIZE) -A $(TARGET).elf sizebefore: @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi sizeafter: @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi Display compiler version information. gccversion : @$(CC) --version Program the device. program: $(TARGET).hex $(TARGET).eep $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. COFFCONVERT=$(OBJCOPY) --debugging \ --change-section-address.data-0x800000 \ --change-section-address.bss-0x800000 \ 11 QB-MCU100 Starter Kit

--change-section-address.noinit-0x800000 \ --change-section-address.eeprom-0x810000 coff: $(TARGET).elf $(MSG_COFF) $(TARGET).cof $(COFFCONVERT) -O coff-avr $< $(TARGET).cof extcoff: $(TARGET).elf $(MSG_EXTENDED_COFF) $(TARGET).cof $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof Create final output files (.hex,.eep) from ELF output file. %.hex: %.elf $(MSG_FLASH) $@ $(OBJCOPY) -O $(FORMAT) -R.eeprom $< $@ %.eep: %.elf $(MSG_EEPROM) $@ -$(OBJCOPY) -j.eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma.eeprom=0 -O $(FORMAT) $< $@ Create extended listing file from ELF output file. %.lss: %.elf $(MSG_EXTENDED_LISTING) $@ $(OBJDUMP) -h -S $< > $@ Create a symbol table from ELF output file. %.sym: %.elf $(MSG_SYMBOL_TABLE) $@ $(NM) -n $< > $@ 12 QB-MCU100 Starter Kit

Link: create ELF output file from object files..secondary : $(TARGET).elf.PRECIOUS : $(OBJ) %.elf: $(OBJ) $(MSG_LINKING) $@ $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) Compile: create object files from C source files. %.o : %.c $(MSG_COMPILING) $< $(CC) -c $(ALL_CFLAGS) $< -o $@ Compile: create assembler files from C source files. %.s : %.c $(CC) -S $(ALL_CFLAGS) $< -o $@ Assemble: create object files from assembler source files. %.o : %.S $(MSG_ASSEMBLING) $< $(CC) -c $(ALL_ASFLAGS) $< -o $@ Target: clean project. clean: begin clean_list finished end clean_list : $(MSG_CLEANING) $(REMOVE) $(TARGET).hex $(REMOVE) $(TARGET).eep $(REMOVE) $(TARGET).obj $(REMOVE) $(TARGET).cof $(REMOVE) $(TARGET).elf $(REMOVE) $(TARGET).map $(REMOVE) $(TARGET).obj $(REMOVE) $(TARGET).a90 13 QB-MCU100 Starter Kit

$(REMOVE) $(TARGET).sym $(REMOVE) $(TARGET).lnk $(REMOVE) $(TARGET).lss $(REMOVE) $(OBJ) $(REMOVE) $(LST) $(REMOVE) $(SRC:.c=.s) $(REMOVE) $(SRC:.c=.d) $(REMOVE).dep/* Include the dependency files. -include $(shell mkdir.dep 2>/dev/null) $(wildcard.dep/*) Listing of phony targets..phony : all begin finish end sizebefore sizeafter gccversion \ build elf hex eep lss sym coff extcoff \ clean clean_list program 14 QB-MCU100 Starter Kit

2 WinAVR 을이용한 AVR 프로그램개발방법 AVR MCU 프로그램을개발하는경우에그림 2.1과같은개발흐름도를가지고개발을수행하게된다. 우선, 프로그램소스를작성하고프로그램소스를컴파일러 (avr-gcc) 를이용하여컴파일하는데이때, 에러가발생하면프로그램소스를수정한후재컴파일을수행한다. 컴파일되어생성된프로그램을다운로드개발툴 (AVRdude) 과다운로드장비 (ISP 회로또는보드 ) 를이용하여 QB-MCU100의 QB-AM162-TK 보드에다운로드하고실제로 QB- AM162-TK 보드에서프로그램이실행된다. 이때, 프로그램실행에에러가있으면다시처음으로가서프로그램소스를수정하고재컴파일, 다운로드, 프로그램실행을수행하여개발을완료하게된다. 이것은 AVR MCU 뿐만아니라대부분의 MCU 개발환경과동일하다. 앞에서설명한 WinAVR 통합개발툴을이용하여 AVR 프로그램을개발한다면그림 2.2에보이는바와같이 Windows에서 시작 모든프로그램 WinAVR Programmers Notepad [WinAVR] 을선택하여 WinAVR의 Programmers Notepad 개발툴을실행한후, Programmers Notepad 개발툴의 File Open 메뉴를선택하여나타나는파일열기창에서프로그램소스를읽어들이고 Programmers Notepad 개발툴의 Tools 메뉴를선택하면 Makefile 매크로파일을이용하여소스컴파일, 컴파일된파일삭제, 프로그램다운로드기능을수행하는서브메뉴가나오는데이러한서브메뉴들을선택함으로써해당기능을실행하게된다. 여기서, [WinAVR] Make All 메뉴를선택하면 Makefile 매크로파일에서 all: 로시작하는부분의내용이실행되어프로그램소스가컴파일된다. 그리고, [WinAVR] Make Clean 메뉴를선택하면 Makefile 매크로파일에서 clean: 로시작하는부분의내용이실행되어컴파일할때생성된파일들이삭제된다. 또한, [WinAVR] Program 메뉴를선택하면 Makefile 매크로파일에서 program: 로시작하는부분의내용이실행되어 프로그램파일이름.hex 파일을 QB-MCU100의 QB-AM162-TK 보드에다운로드하게된다. 이때, 컴퓨터의병렬포트와 QB-AM162-TK 보드의 25핀 ISP 포트가병렬케이블로연결되어있고 QB-AM162-TK 보드에는전원이인가되어있어야한다. 15 QB-MCU100 Starter Kit

시작 프로그램소스작성 / 수정 프로그램소스컴파일 Error OK 프로그램다운로드 프로그램실행 Error OK 완료 그림 2.1 AVR MCU 프로그램개발흐름도 16 QB-MCU100 Starter Kit

그림 2.2 WinAVR 의 Programmers Notepad 개발툴 Tools 메뉴 지금까지 WinAVR 통합개발툴을이용하여 AVR 프로그램을작성하고작성된 AVR 프로그램을 QB-MCU100의 QB-AM162-TK 보드에다운로드하여 AVR MCU를이용한실습또는제품개발을수행할수있다. 이외에도 Ponyprog2000이라는 AVR 프로그램다운로드툴이있는데이것은 AVR 뿐만아니라 PIC 등의 MCU와 EEPROM 등의메모리에데이터를다운로드하는기능도있다. 또한, Atmel사의 AVR Studio는 AVR 전용으로어셈블러, 다운로드, 시뮬레이션, 에뮬레이션기능을가지고있어 AVR 프로그램개발과다운로드및디버그수행도가능하다. 17 QB-MCU100 Starter Kit

QB-MCU100 Starter Kit를이용하여 Atmel사의 AVR MCU에대한이해와활용방법을익히는데도움이되기를바랍니다. 또한, QB-MCU100 Starter Kit를활용하는데필요한관련자료는본 퀀텀베이스홈페이지 www.quantumbase.com의자료실에있으니참조하시기바랍니다. 본제품활용성을극대화하고고객의의견교환의장으로저희 ( 주 ) 퀀텀베이스는 Naver에펀칩 (fun chip) 카페를개설하였습니다. 저희 www.quantumbase.com, www.funchip.co.kr 홈페이지와함께 FPGA와 AVR에대한정보교환의장으로활성화시키고자하오니항상관심가져주시기바랍니다. 감사합니다. 18 QB-MCU100 Starter Kit