PowerPoint Presentation

Similar documents
PowerPoint Presentation

Microsoft PowerPoint - chap01-C언어개요.pptx

OCW_C언어 기초

Microsoft PowerPoint - chap04-연산자.pptx

슬라이드 1

슬라이드 1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

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

Microsoft PowerPoint - chap06-2pointer.ppt

untitled

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - chap-02.pptx


C언어 및 실습 C Language and Practice

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft Word - PLC제어응용-2차시.doc

PowerPoint 프레젠테이션

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

금오공대 컴퓨터공학전공 강의자료

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

RealDSP UT 프로그램 메뉴얼

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

K&R2 Reference Manual 번역본

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

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

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - e pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

PowerPoint 프레젠테이션

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

JMOD : ATmega128 기본모듈 사용자설명서 제이씨넷

<4A4B49542D D312DBBE7BFEBC0DABCB3B8EDBCAD2E646F63>

(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)

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

정보보안 개론과 실습:네트워크

PowerPoint 프레젠테이션

Microsoft Word - AVRISP mkII 장비 운용.doc

Studuino소프트웨어 설치

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

KEY 디바이스 드라이버

USBJTAG_V30_manual.hwp

Microsoft Word - Armjtag_문서1.doc

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

PowerPoint 프레젠테이션

Microsoft PowerPoint - 1C언어소개0.PPT

PowerPoint Presentation

Microsoft PowerPoint - chap-02.pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

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

슬라이드 1

OCW_C언어 기초

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint 프레젠테이션

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

PowerPoint 프레젠테이션

11장 포인터

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

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

금오공대 컴퓨터공학전공 강의자료

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

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx

06 세상을 변화시키는 연산자

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

4장.문장

C 언어 프로그래밊 과제 풀이

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

Microsoft PowerPoint - lec3.ppt

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

[ 마이크로프로세서 1] 1 주차 2 차시. 마이크로프로세서와마이크로컨트롤러발달과정 1 주차 2 차시마이크로프로세서와마이크로컨트롤러발달과정 학습목표 1. 마이크로프로세서발달과정과종류를설명할수있다. 2. 인텔 8051 계열과아트멜 (Atmel) 의특성을설명할수있다. 학습

C 프로그램의 기본

BMP 파일 처리

C 프로그래밊 개요

PowerPoint 프레젠테이션

(SW3704) Gingerbread Source Build & Working Guide

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5. 기타툴옵션설정 6. 새파일만들

본 강의에 들어가기 전

USBISP_V20_manual.hwp

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - AD-USBISP_V03_사용법.pptx

Transcription:

개발환경과 C 프로그래밍 마이크로컨트롤러 AVR ATmega128

학습목표 2/76 마이크로컨트롤러를이용한디지털시스템의구성과개발과정을 이해할수있다. 통합개발환경에서다운로드파일이생성되기까지컴파일과 링크가진행되는과정을이해할수있다. 통합개발환경에서툴체인 (AVR GCC) 의역할과최적화, make 와 Makefile 에대하여알수있다. AVR 툴체인, AVR Studo 4 를설치하는방법을실험할수있다.

학습목표 3/76 ATmega128 프로그래밍을위한기본적인 C 언어문법을이해할수 있다. AVR Studio 4 에서여러파일로구성된 LCD 디스플레이와 float( 부동소수점실수형숫자 ) 를출력하는프로젝트를실험할수 있다.

목차 4/76 1. 마이크로컨트롤러를이용한디지털시스템개발 2. 다운로드파일생성과교차컴파일러 3. 통합개발환경과 make, Makefile 4. 컴파일러최적화옵션과라이브러리링크 5. 개발환경구축 6. 프로그램개발과실행 ( 동영상 ) 7. ATmega128을위한 C 언어 8. LCD 디스플레이와 float 출력프로젝트 ( 동영상 ) 9. 하드웨어환경구축

Section 01 마이크로컨트롤러를이용한디지털시스템개발 5/76 마이크로컨트롤러와디지털시스템 디지털시스템 아날로그시스템과상대되는용어 마이크로컨트롤러가포함된디지털회로로, 사용자의목적에맞게장치를제어하기위한시스템

Section 01 마이크로컨트롤러를이용한디지털시스템개발 6/76 디지털시스템동작 ❶ 제어프로그램은장치제어를위해명령신호를출력 ❷ 장치는명령신호를입력받아명령에대한동작을수행 ❸ 마이크로컨트롤러를포함한디지털회로는아래신호를입력 명령신호에따라장치가작동되면서출력되는장치신호 외부상황을측정하는장치에서출력되는장치신호 사람이시스템동작을위해인가하는신호 ❹ 마이크로컨트롤러는입력신호를받아제어프로그램의진행상태를변경하면서장치제어를위해필요한출력을결정

Section 01 마이크로컨트롤러를이용한디지털시스템개발 7/76 장치 제품이거나전자소자또는부품으로만든장치 디지털회로에서명령신호가인가되면작동 디지털회로 마이크로컨트롤러를포함한 IC 및인터페이스소자들이연결된회로 제어프로그램이수행되면서만들어진명령신호는장치를작동시킴 마이크로컨트롤러 제어프로그램을수행하면서위의작업단계를수행시키는핵심제어부 IC 및인터페이스소자 외부장치를인터페이스하려면, IC 를추가하거나인터페이스회로를설계하여장치와연결

Section 01 마이크로컨트롤러를이용한디지털시스템개발 8/76 ATmega128 을이용한디지털시스템개발과정

Section 01 마이크로컨트롤러를이용한디지털시스템개발 9/76 ❶ 요구분석 디지털시스템의요구사항정의 개발될디지털시스템이해결할수있는범위결정 ❷ 디지털시스템구성결정 요구사항을만족시키기위해디지털시스템구성 규격, 성능, 가격등을고려하여사용할장치또는부품결정 ❸ 디지털시스템회로설계 정보전달과장치구동을위해적합한전기신호가전달될수있도록회로설계 작성된회로도에따라준비된부품을사용하여하드웨어완성

Section 01 마이크로컨트롤러를이용한디지털시스템개발 10/76 ❹ 상태도를기반으로둔 ASM 차트를이용한제어프로그램설계및제작 제어부의동작을개략적인상태도로표현 ❸ 단계에서 ( 결정된회로에서 ) 마이크로컨트롤러와연결된출력및입력신호선으로장치에적절한명령신호를전달하거나정보를입력하도록구체적인상태도 구체적인상태도를 ASM(Algorithmic State Machine) 차트로변환 ASM 차트를 while(1) 반복문에포함된 switch( )-case 문으로변환하여제어프로그램완성 ❺ 통합개발환경에서컴파일, 링크에의한다운로드파일생성 AVR Studio 에서프로젝트생성 교차컴파일러 avr_gcc 를사용하여목적파일과다운로드파일생성

Section 01 마이크로컨트롤러를이용한디지털시스템개발 11/76 ❻ 다운로드파일을플래시프로그램메모리에다운로드 SPI(Serial Pheriperal Interface) 인터페이스로, ISP(In-System Programming) 다운로드 JTAG 인터페이스로다운로드 ❼ 하드웨어와소프트웨어디버깅 JTAG 에뮬레이터 ( 하드웨어디버거 ) 를사용하여프로그램동작상태를점검하면서소프트웨어디버깅 외부장치에오실로스코프또는테스터기등을이용하여신호를측정하며, 하드웨어디버깅 디버깅과정에서오류가발견되면, 이전과정에서오류를수정하면서디지털시스템완성

Section 02 다운로드파일생성과교차컴파일러 12/76 다운로드파일생성과교차컴파일러

Section 02 다운로드파일생성과교차컴파일러 13/76 번역 C 언어로작성한원시프로그램은컴파일러에의해, 컴파일과정을거쳐기계어로번역하여목적파일생성 어셈블리언어로작성한원시프로그램은어셈블러에의해, 어셈블과정을거쳐기계어로번역하여목적파일생성 자주사용되는 printf( ), scanf( ) 와같은함수는미리기계어로번역된목적파일의집합인라이브러리에제공 링크 링커는링크과정에서라이브러리를포함한여러개의목적파일을탐색하여같은이름의함수와변수를찾아주소를확정하여연결

Section 02 다운로드파일생성과교차컴파일러 14/76 다운로드파일 플래시프로그램메모리, EEPROM 에다운로드될파일은 AVR Studio 에서인텔 ( 사 ) 의 HEX 파일형식사용» : 로구분된시작코드» 각레코드에는다운로드될 byte 수 ( 데이터크기 )» 다운로드될주소» 레코드타입» 다운로드될데이터» 체크섬 ELF(Executable and Linkable Format) 파일형식은실행코드, 목적코드, 공유라이브러리를포함하는표준파일형식 JTAG 인터페이스로 AVR Studio 에서디버깅할때, ELF 형식의파일사용

Section 02 다운로드파일생성과교차컴파일러 15/76

Section 02 다운로드파일생성과교차컴파일러 16/76 2 의보수와 2 의보수수체계 2 진수 X 의 2 의보수 (2's complement) ( 예시 ) 16 진수 58 을 8 비트크기에서 2 의보수로표현 2 의보수수체계 (2's complement number system)» 음수를같은크기의양수에대한 2 의보수로나타내는숫자체계» 대부분컴퓨터와통신에서정수는 2 의보수수체계사용

Section 02 다운로드파일생성과교차컴파일러 17/76 툴체인과교차컴파일러 툴체인 작업중인컴퓨터에서, 다른 CPU 에실행될기계어프로그램을생성하기위한프로그래밍툴의집합

Section 02 다운로드파일생성과교차컴파일러 18/76 교차컴파일러 보통 C 언어로 ATmega128에다운로드될프로그램을 PC에서개발 펜티엄 CPU을가진 PC에서, 타깃 CPU인 ATmega128로교차시켜컴파일하는교차컴파일러 (Cross Compiler) 필요 WinAVR 에포함된 C 언어교차컴파일러 avr-gcc.exe 파일 C++ 언어로프로그래밍할경우 avr-gcc++.exe 파일

Section 03 통합개발환경과 make, Makefile 19/76 make 여러개의소스파일로부터자동으로목적파일을만들수있도록의존관계와파일갱신시간정보로특정프로그램의실행지정 make 는 Makefile 에나열된파일간의존관계에따라, 조건이만족되었을때실행할프로그램수행 통합개발환경에서는 make 와 Makefile 을이용하여변경된소스프로그램을자동으로찾아필요한컴파일러, 어셈블러, 링커등의프로그램실행 Makefile Makefile 의구조는타깃, 선행조건, 명령으로구성 Makefile 의실행규칙은타깃파일과선행조건파일의갱신시간비교 선행조건이더최근이면아래줄에서 < 탭 > 문자뒤에있는명령실행

Section 03 통합개발환경과 make, Makefile 20/76 예시 main.c, foo.c, def.h 가모두최근에갱신된파일이라고가정 깊이우선탐색방법으로명령실행

Section 03 통합개발환경과 make, Makefile 21/76 타깃을찾아가며명령이실행되는흐름 프로그램실행순서

22/76 Section 04 컴파일러최적화옵션과라이브러리링크 최적화옵션과 volatile 지시어 프로그래머가작성한원시프로그램이타깃코드로변환될때 컴파일러에의해같은기능을유지하고, 크기는작게빠르게실행될수있게변환되는것이바람직함 이과정을최적화라하며, 옵션에따라크기와실행속도가달라짐 ( 예시 ) avr_gcc -Os main.c 생성되는타깃코드의크기를작게하는것을우선으로함

23/76 Section 04 컴파일러최적화옵션과라이브러리링크 최적화옵션의특징 -O0 최적화를하지않음 컴파일에걸리는시간을줄이고, 소스프로그램을대응되는명령어로변환 JTAG 인터페이스를사용하여디버깅할때는, 예측된값을정확히관찰할수있어야하므로, 최적화하지않는것이바람직함 -O 또는 -O1 가장기본적인최적화옵션 컴파일시간과컴파일할때사용되는메모리는더많이필요 -O2 -O1 옵션보다더욱많은최적화 gcc 컴파일러는메모리 - 속도절충은하지않지만, 가능한모든최적화기법수행 컴파일과정시간은더많이소요되지만, 코드크기는줄어듦 실행코드를배포하기위해서는이옵션이바람직함

Section 04 컴파일러최적화옵션과라이브러리링크 24/76 -O3 최고의최적화옵션 모든최적과옵션을활성화하고, 최적화진행 inline 기능을수행하여간단한함수호출은없애고, 프로그램내부로포함 크기는커질수있지만, 속도를높이기위해시도하는최적화옵션 마이크로컨트롤러에서는다운로드파일크기가너무커져바람직하지않음 -Os 코드의크기를줄이는목적으로수행 코드의크기를줄이면속도도향상될수있음 대부분마이크로컨트롤러는한정된크기의플래시프로그램메모리를사용하므로, 이옵션을사용하는것이바람직함

Section 04 컴파일러최적화옵션과라이브러리링크 25/76 ( 예시 ) 다운로드될프로그램크기비교

Section 04 컴파일러최적화옵션과라이브러리링크 26/76 volatile 지시어선언으로최적화제외 최적화가항상바람직한것은아님 최적화는속도를빠르게하고메모리사용량을줄일수있지만, 인터럽트를사용하는경우에는자칫원하지않는최적화실행 프로그램이설계와다르게작동할수있음 이러한오류를막기위해서는인터럽트서비스루틴에서사용할변수에 volatile 지시어를선언해서사용

Section 04 컴파일러최적화옵션과라이브러리링크 27/76 ( 예시 ) count 변수의 volatile 지시어사용 선언여부에따른컴파일결과 volatile unsigned char count=0; unsigned char count=0;

Section 04 컴파일러최적화옵션과라이브러리링크 28/76 라이브러리와링커옵션 라이브러리 라이브러리는미리컴파일된목적파일의집합 라이브러리파일명은보통 lib로시작하고확장자는.a 일반프로그래머도아카이버 ar 명령으로라이브러리를만들어사용

Section 04 컴파일러최적화옵션과라이브러리링크 29/76 sin( ), tan( ), printf( ) 등과같은함수 GNU 에서컴파일된형태로묶어라이브러리모듈로제공 수학함수라이브러리사용방법 원시프로그램앞부분에 #include <math.h> 포함 : math.h 파일을열어주프로그램에서수학함수호출을위한프로토타입포함 링커옵션에 -lm 추가 링크과정에서 libm.a 라이브러리탐색 주프로그램에서호출한수학함수라이브러리를기계어와연결

Section 04 컴파일러최적화옵션과라이브러리링크 30/76 printf( ), scanf( ) 함수의부동소수점사용 printf( ) 함수 vfprintf( ) 함수를기본으로변형된함수 vfprintf( ) 함수는 % 문자뒤에 d, c, u, f, o, x 등매우다양한출력기능 타깃코드의크기를위한 3가지링커옵션

Section 04 컴파일러최적화옵션과라이브러리링크 31/76 scanf( ) 함수 vfscanf( ) 함수를기본으로변형된함수 vfscanf( ) 함수는 % 문자뒤에 d, c, u, f, o, x 등매우다양한입력기능 타깃코드의크기를위한 3 가지링커옵션

Section 05 개발환경구축 32/76 통합개발환경 AVR Studio 4 8 비트 AVR 을지원하는통합개발환경 프로그램편집 컴파일 링크 ISP 다운로드 디버깅

Section 05 개발환경구축 33/76 AVR Studio 5 8 비트 AVR 과 32 비트 AVR 을모두지원하는통합개발환경 Visual C++ 프로그래밍개발환경과유사하게작업할수있도록개선

Section 05 개발환경구축 34/76 다운로딩가능장비 AVR Dragon AVR ONE! JTAGICE mkii AVRISP mkii STK600 QT600 STK500 AVRISP JTAG ICE 디버깅가능장비 AVR Dragon AVR ONE! ICE200 ICE40 ICE50 JTAG ICE JTAGICE mkii AVR Studio 4 통합개발환경구축절차

Section 05 개발환경구축 35/76 AVR 툴체인과 AVR Studio 4 설치 AVR 툴체인설치 WinAVR 툴체인설치 다운로드» ATMEL 사의 AVR 시리즈의 RISC 형마이크로컨트롤러와 AVR32 시리즈를위한개방형소스소프트웨어툴의모음» WinAVR 설치가종료되면 C:\WinAVR-20100110 폴더에실행파일과다양한파일의툴체인이설치됨

Section 05 개발환경구축 36/76 AVR Studio 4 설치 http://www.atmel.com 에서 AVR Studio 4 다운로드 클릭하여설치

Section 05 개발환경구축 37/76 ISP 다운로더 / 디버거설치 SPI 채널을이용한다운로더 MOSI, MISO, SCK 의 3 가지신호선을이용한시리얼통신방식 6 핀또는 10 핀의다운로드핀으로구성

Section 05 개발환경구축 38/76 ISP 다운로드가진행되는동안, 신호가 SPI 신호와충돌유의

Section 05 개발환경구축 39/76 JTAG 인터페이스방식을이용한디버거 ICE 또는디버거라고도함 바운더리스캔 (Boundary Scan) 방식을이용하여 IC 내부를모니터링하고, 내용을변경할수있음 플래시프로그램메모리에다운로드기능은물론명령어진행을정지시키고내부레지스터및 SRAM 데이터를관찰할수있음 PF4(TCK), PF5(TMS), PF6(TDO), PF7(TDI) 을포함한 10 핀인터페이스 10 핀 SPI 용 ISP 커넥터와혼돈되지않도록주의필요

Section 06 프로그램개발과실행 40/76 실험목적 (1) 프로젝트생성절차를알아본다. (2) 컴파일러, 링커의환경설정을알아본다. (3) 다운로드파일생성과정을알아본다. (4) 다운로더를설정하고, 연결하는방법을알아본다. (5) 디버깅방법을알아본다.

Section 06 프로그램개발과실행 41/76 실험절차 WinAVR 툴체인 WinAVR-20100110-install.exe 또는그이후버전을클릭하여설치 AVR Studio 4( 버전 : 4.18) 에해당되는 AvrStudio4Setup.exe 을더블클릭하여 AVR Studio 4 설치 ISP 다운로더또는 JTAG 디버거디바이스드라이버설치만일 USB 를이용한 STK500 또는 JTAG ICE 호환제품을사용한다면, 설치된 USB 시리얼포트번호를기억 실험회로구성

Section 06 프로그램개발과실행 42/76 새로운프로젝트작성 계속 1 AVR GCC 선택, 프로젝트이름 2 프로젝트마다폴더생성 3 Location 영역에서저장폴더 4 [Finish] 버튼클릭

Section 06 프로그램개발과실행 43/76 Project Configuration Options 1 Device : atmega128 2 Frequencey : ATmega128 보드 주파수값입력 3 최적화 : -Os 선택 Project Options : Libraries sin( ), cos( ) 수학함수는 libm.a

Section 06 프로그램개발과실행 44/76 Project Options: Custom Options 추가옵션빈영역에입력후 [Add] WinAVR 툴체인설치시, External Tools 영역에표시

Section 06 프로그램개발과실행 45/76 편집창에서간단히프로그램작성

Section 06 프로그램개발과실행 46/76 Build Build Build 메뉴클릭혹은메뉴아이콘클릭 Makefile 규칙에따라, 앞에서설정한컴파일과링크수행 지정폴더에생성한파일확인 test.hex : 타깃인 ATmega128에다운로드될파일 test.elf : 디버깅에사용될파일 test.lss : 어셈블리코드와주소가포함된파일 test.map : 함수, 변수, 인터럽트서비스루틴의위치정보포함파일

Section 06 프로그램개발과실행 47/76 다운로드프로그래밍 Tools Program AVR Connect... 메뉴클릭 STK500 호환다운로더를이용하여, SPI 채널 ISP 다운로드사례 Port 는 Auto 또는설정된포트번호선택후 Connect

Section 06 프로그램개발과실행 48/76 ISP mode 다운로드 다운로드할 Input HEX File 탐색선정 보드연결케이블을 ISP 커넥터에연결 [Program] 버튼클릭 창아래쪽영역에 다운로드절차출력 단계별동작이 OK! 이면, 성공적인프로그래밍

Section 06 프로그램개발과실행 49/76 JTAG mode 디바이스로디버깅사례 Tools Program AVR Connect... Platform 과 Port 를선택하고 [Connect...] 버튼클릭 JTAG ICE 호환장치사례

Section 06 프로그램개발과실행 50/76 퓨즈비트의 JTAGEN 비트가활성화되지않은경우메시지창 SPI 핀을사용하는 ISP 다운로더로 JTAGEN 비트를활성화하여사용, 성공적인 JTAG mode 메시지창

Section 06 프로그램개발과실행 51/76 JTAG 인터페이스를이용하여디버깅 Debug Start Debugging 메뉴를클릭하여디버거선택창출현 Debug platform 과 Device 선택

Section 06 프로그램개발과실행 52/76 디버깅창 명령어단위로프로그램수행가능 Processor 영역, I/O View 영역, 메모리영역의데이터관찰및수정가능

Section 06 프로그램개발과실행 53/76 JTAG 인터페이스를이용한디버깅 특정위치에서프로그램수행이논리동작에서벗어나는경우, 원인을알아내는데유용 의심나는프로그램위치의명령어를하나씩추적하면서, 레지스터값, 프로그램카운터의동작, 외부입출력상황등을모니터링하고, 원인찾아디버깅

Section 07 ATmega128 을위한 C 언어 54/76 C 언어프로그램의구성

Section 07 ATmega128 을위한 C 언어 55/76 전역변수와지역변수, 변수는사용하기전에선언 전역변수» 함수밖에서선언된변수» 선언위치아래에있는함수에서만사용가능» 프로그램이종료될때까지유효 지역변수» 중괄호로내부에해당되는블록에선언된변수» 프로그램의실행위치가블록안으로진입될때자동으로생성» 블록을벗어나면소멸 함수는선언또는정의한후에사용 함수를호출하려면, 그파일앞에서반드시선언또는정의한후사용» ➊ 위치에서 LCD_str_write( ) 함수호출» main.c 파일내부에 LCD_str_write( ) 함수의동작이미리정의되어있음

Section 07 ATmega128 을위한 C 언어 56/76 #include 지시어는그위치에파일내용을펼쳐놓은것과같음 #include "lcd.h 는그위치에 lcd.h 파일을끼워펼쳐놓은것과같음 ➋, ➌ 위치에서 LCD_init( ) 와 LCD_data_write( ) 함수호출 lcd.h 파일내용중, ➏ 위치에함수 LCD_init( ) 와 LCD_data_write( ) 의반환자료형과매개변수에대한자료형선언 #include <stdio.h> 는 stdio.h 파일을라이브러리헤더폴더에서탐색 " " 안에적힌파일은현재작업폴더에서탐색 < > 안에적힌파일은이미정해진라이브러리헤더폴더에서탐색 sprintf( ) 함수는라이브러리헤더폴더의 stdio.h 파일에서프로토타입선언 _delay_ms( ) 함수는라이브러리헤더폴더의하위폴더인 util/delay.h 파일에서프로토타입선언

Section 07 ATmega128 을위한 C 언어 57/76 링크할때다른파일에서선언또는정의된변수와함수의주소가연결 링크가진행될때 main.o, lcd.o, libc.a( 라이브러리 ) 가같이결합 호출하는함수의시작주소를알아낼수있음 다른파일에서정의된변수의위치주소를알아낼수있음 함수와변수의주소를연결하여다운로드파일생성 #define 매크로로, 상수또는복잡한식을레이블로대응하여사용 #define MAX_LCD_STRING 0x40 MAX_LCD_STRING 레이블이등장하면 0x40 으로대치

Section 07 ATmega128 을위한 C 언어 58/76

Section 07 ATmega128 을위한 C 언어 59/76 타깃이 ATmega128 인 AVR GCC 컴파일러자료형 타깃프로세서를 ATmega128 로하는 AVR GCC 와펜티엄 CPU 로하는 Visual C++ 컴파일러에서각자료형의 byte 크기비교

Section 07 ATmega128 을위한 C 언어 60/76 부호지시어 char, int와같은정수형변수에부호지시어사용 부호지시어를표시하지않으면, signed로간주 Project Configuration Options» -funsigned-char 를선택하였다면 char 를 unsigned char 로간주 기타지시어

Section 07 ATmega128 을위한 C 언어 61/76 숫자상수표현 특이사항 : AVR GCC 는 2 진수표현을위해 0bxxx 형식사용가능 PC 의 Visual C++ 에서는사용할수없음

Section 07 ATmega128 을위한 C 언어 62/76 printf() 함수에서출력을위한 % 포맷

Section 07 ATmega128 을위한 C 언어 63/76 printf() 함수에서 float 와 double 데이터를출력하는설정 Project Configuration Options Custom Options Linker Options 아래옵션내용추가 -Wl,-u,vfprintf -lprintf_flt scanf( ) 함수에서 float 와 double 형데이터를입력하는설정 Project Configuration Options Custom Options Linker Options 아래옵션내용추가 -Wl,-u,vfscanf -lscanf_flt -lm

Section 07 ATmega128 을위한 C 언어 64/76 enum 열거자료형 ( 사례 1)» 각레이블에할당되는값은왼쪽부터 0, 1,» READY 값은 0, WAIT 값은 1,

Section 07 ATmega128 을위한 C 언어 65/76 프로그램흐름제어명령어 if( ) 조건문 ( 사례 1)» 조건식 a > b» 참이면 max=a; 명령실행» 거짓이면 max=b; 명령실행

Section 07 ATmega128 을위한 C 언어 66/76 삼항조건연산자? : 조건식» 참이면 1 위치의연산값을변수에할당» 거짓이면 2 위치의연산값을변수에할당 ( 사례 1)» a 와 b 중큰값을 max 변수에대입하는명령

Section 07 ATmega128 을위한 C 언어 67/76 while( ) 반복문 조건식 A 순서로반복 반복을중단하기위해서는반드시조건식이거짓 ( 사례 1) 10 회반복한후, while( ) 문종료 ( 사례 2) 무한반복

Section 07 ATmega128 을위한 C 언어 68/76 for(;;) 반복문 1 위치를처음 1 회실행하고난후, 조건식 A 2 순서를반복 break 명령이실행되면, 조건식에관계없이즉시 for(;;) 문종료 ( 사례 1) while() 반복문의 ( 사례 1) 과동일 ( 사례 2) 무한반복

Section 07 ATmega128 을위한 C 언어 69/76 switch( 식 )-case 분기문 식의연산결과와정수값이일치하는위치의 case 부분이수행 식의결과값과 case 정수 n 의일치값이없을때 default : 위치수행 break 명령 switch( 식 )-case 분기문종료, 그렇지않으면계속실행 ( 사례 1) A 와 B 를번갈아실행함

Section 07 ATmega128 을위한 C 언어 70/76 비트연산 비트 OR 연산자 동일한위치의비트끼리 OR 연산수행 둘중하나가 1 이면결과는 1, 다시말해서둘다 0 일때만 0 a control 연산 : control 비트값에따라통과혹은 1 로매스킹

Section 07 ATmega128 을위한 C 언어 71/76 비트 XOR 연산자 ^ 동일한위치의비트끼리 XOR 연산수행 둘이서로다르면결과는 1, 둘다같으면 0 a ^ control 연산 : control 비트값에따라통과혹은반전

Section 07 ATmega128 을위한 C 언어 72/76 비트 AND 연산자 & 동일한위치의비트끼리 AND 연산수행 둘중하나가 0 이면결과는 0, 둘다 1 일때만 1 a & control 연산 : control 비트값에따라통과혹은 0 으로매스킹

Section 07 ATmega128 을위한 C 언어 73/76 왼쪽비트천이연산자 << 변수를좌측으로 n 비트만큼천이 천이되면서우측비트는 0 값이채워짐 1 비트왼쪽으로천이할때, MSB 값이변하지않으면 2 를곱한결과

Section 07 ATmega128 을위한 C 언어 74/76 오른쪽비트천이연산자 >> 변수를좌측으로 n 비트만큼천이 천이되면서채워지는 MSB 비트값» signed int 또는 signed char 같은부호가있는정수는부호값유지» unsigned int 또는 unsigned char 의경우는 0 1 비트오른쪽으로천이하면 2 로나눈결과 ( 사례 1) 부호를유지하면서, 오른쪽으로천이되어 2 로나눈값 -32 ( 사례 2) 1 비트우측으로이동할때 MSB 는 0 이되고, 결과는 32

Section 07 ATmega128 을위한 C 언어 75/76 연산자의우선순위 우선순위에따라연산순서가정해짐 <<, >> 은같은우선순위이지만, 왼쪽에서오른쪽으로수행 1 연산결과는 4, 2 연산결과는 1, 3 연산결과는 5, 4 마지막연산결과대입 x 값은 5

Section 07 ATmega128 을위한 C 언어 76/76 연산자우선순위및연산방향