howtouseiaravrcompiler -ewavrv3.10afull...

136
This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없 . 이 무단으로 이용할 수 없습니다 전문회사 . Firmware www.firmwarebank.com 1 How to use IAR AVR Compiler 사용설명서 - EWAVR V3.10A Full - 최종 저장일 : 2004 8 10 File : PAT_APP_D017_How to use IAR AVR Compiler_EWAVR_V310_V15.hwp 문서번호 : PAT-APP-D017 번호 담당 V1.0 2003.12.22 컴파일러 초기 사용자설명서 IAR EWAVR PM V1.1 2004.03.10 How to use IAR AVR Compiler_ EWAVR_V228a Modify PM V1.2 2004.03.23 추가 IAR C Library Function PM V1.3 2004.03.29 엔지니어 수정 IAR Compiler T/S V1.4 2004.05.28 자료 소유권 펌웨어뱅크사로 이전 PM V1.5 2004.08.10 추가 내부 함수 정리 Function , Conan

Upload: others

Post on 30-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 1

How to use IAR AVR Compiler

사용설명서- EWAVR V3.10A Full -

최종 저장일 : 년 월 일2004 8 10

File : PAT_APP_D017_How to use IAR AVR Compiler_EWAVR_V310_V15.hwp

문서번호 : PAT-APP-D017

번 호 갱 신 내 용 담 당

V1.0 2003.12.22 컴파일러 초기 사용자설명서IAR EWAVR PM

V1.1 2004.03.10 How to use IAR AVR Compiler_ EWAVR_V228a Modify PM

V1.2 2004.03.23 추가IAR C Library Function PM

V1.3 2004.03.29 엔지니어 수정IAR Compiler T/S

V1.4 2004.05.28 자료 소유권 펌웨어뱅크사로 이전 PM

V1.5 2004.08.10 추가 내부 함수 정리Function , Conan

Page 2: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 2

읽어두기

본 설명서는 스웨덴에 본사를 두고 있는 사의 컴파일러 에 한 내용이며 아트멜1. IAR (Compiler)

의 마이크로프로세서를 초기 시작하는 엔지니어들의 개발에 도(www.atmel.com) AVR Firmware

움이 될 수 있도록 작성한 원고입니다.

마이크로프로세서를 이용하여 을 만드는 엔지니어는 초기 환경을 익히는데2. Application Compiler

절 적인 학습 시간이 필요한 것이 현실입니다.

점점 복잡해지고 다기능화 되는 알고리즘을 독학에 의해 표현하기에는 어렵고 마이크로프로세서3.

라도 변경되는 날에는 처음부터 다시 해야 하는 불편이 있습니다.

언어 같은 고급 언어를 이용하여 코드를 만들면 어려운 알고리즘도 쉽게 구현이 가능하고 다른4. C

기종의 마이크로프로세서로 변경되어도 이식이 용이하며 이해하기 쉽고 디버깅 시에(Debugging)

좋은 장점이 있으며 다른 엔지니어가 개발한 을 쉽게 도입하는데도 일조 합니다Platform .

컴파일러는 사의 마이크로프로세서 전용으로 그5. EW(Embedded Workbench)AVR IAR Atmel AVR

기능과 성능이 탁월합니다 그러나 사용법이 다소 복잡한 것이 흠이 되기도 해서 이 설명서는.

를 보다 쉽게 사용 할 수 있도록 했습니다 또한 함수를 만들 때 코드생성을 하도록IAR Compiler .

하여 개발 시간을 단축 할 수 있는 유틸리티 프로그램에 해서도 설명할 예정입니다MakeApp .

출력된 원고는 가지 종류 중에서 에 개발 환경에 해서만 자세히 다루었6. IAR Compiler 20 EWAVR

습니다 다른 컴파일러에 해서는 언급되어 있지 않습니다. .

컴파일러를 보다 효율적으로 이용하기 위해 작성된 예제는 를 통한 실험을 통해서 이루7. Hardware

어졌으며 기술적 검증은 사내 사외 엔지니어와 함께 했습니다/ .

전자 출판 출시를 위해 파일로 만들어 졌고 원본은 로 쓰였습니다8. PDF HWP 2002 .

원고는 개발 업무에 잘 사용하시고 자료에 한 문의사항이나 기술지원 컴파일러는 펌웨어뱅크9. /

웹 사이트를 이용하시기를 바랍니다.

기술 자료나 설계방법 응용 프로그램에 해 더 학습하길 원한다면 여러 엔지니10. AVR , Source,

어가 만든 전공 문서나 다른 설명서를 참고 하시기를 바랍니다Application .

보드를 이용한 익히기 쪽 이상'PAT_APP_D107_AVR128_Board_Application_Vxx', Firmware , 100

빠른 컴파일러 사용 설명서 쪽 이하'D017_Quick Start IAR AVR Compiler_EWAVR_V310_Vxx', , 100

본 설명서는 다음 회사의 도움으로 본 원고는 완성되었습니다11. .

마이크로프로세서 강의 자료 펌웨어뱅크/ : www.firmwarebank.com ☎: 031-726-3208

보드 구입 문의 테라뱅크AVR : http://www.terabank.co.kr ☎: 02-488-7951

컴파일러 문의 마이크로비젼IAR : http://www.microvision.co.kr ☎: 02-3283-0101

프로세서 구입Atmel AVR : 프로차일드 http://www.prochild.com : 02-2619-9662☎

신화정보 http://www.shinhwa21.co.kr : 02-554-6431☎

마이크로프로세서 동호회Community : www.icbank.com/community/Conan

Page 3: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 3

How to use IAR EWAVR V3.10A Compiler

차 례

개요1. Compiler ·······················································································································4

설치2. EWAVR Compiler ·····································································································11

3. Quick Start ··························································································································20

4. C-SPY ··································································································································46

4.1. File ·······························································································································48

4.2. Edit ······························································································································50

4.3. View ·····························································································································54

4.4. Debug ·························································································································63

4.5. Simulator ····················································································································67

5. Down Menu ························································································································71

5.1. File ·······························································································································71

5.2. Edit ······························································································································73

5.3. View ·····························································································································77

5.4. Project ························································································································78

5.5. Tools ·························································································································111

5.6. Window ····················································································································117

5.7. Help ··························································································································118

6. MakeApp ····························································································································118

7. Appendix ···························································································································118

7.1. Header File ·············································································································118

정의파일7.2. AVR Register ······················································································129

파일7.3. Lib ·················································································································130

참고 자료8. ···························································································································133

찾아보기9. ·····························································································································134

Page 4: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 4

1. 개요Compiler

등의 마이크로프로세서를 이용하여 를 개발하기 위해서는 전자부품과 프로세서8/16/32bit Firmware

에 관련된 지식과 하드웨어 설계 심지어는 디자인과 신뢰성 등의 기본기술이 필요하게 되며 무엇보

다 적절히 운용할 수 있는 프로그램작성 등 여러 가지 관여해야 할 것이 상당히 많이 있다 그 중에.

서도 언어를 이용하여 프로그램을 작성하는 컴파일러 툴 에 해 설치하고 익히는 과정과C (Tool)

포팅 하는 기술은 혼자서 하기에는 까다로운 일이므로 본 지면을 통하여 설명하고자 한다(Porting) .

엔지니어이기도 한 본인은 학교에서 전자공학을 전공할 때에 기계어 코드를 적어 놓은 M68000 니모

닉 를 보고 프로그램 했다 조금 있다가 어셈블리를 이용해서 마이크로컨트롤러 마(Mnemonic) Sheet . (

이컴 의 프로그램을 작성하여 코드를 만들었고 연구소에서 근무할 때는 하이 레벨 언어인 를 사용) C

하여 프로그램을 작성하고 컴파일 하게 되었다 요즈음은 그때 보다 좋은 환경에서 개발하는 것 같.

은데 사실 만들어야 하고 신경 써야 할 것이 많은 지금에 비하면 상 적이기는 하다.

불과 몇 년 전에 비해 메모리의 비약적인 발달과 가격의 하락은 더 이상 엔지니어로 하여금 코드 사

이즈를 줄이는 기술만을 요구하지는 않는다 싼 제품 개발에 일가견이 있는 중국도 최근에는 언어. C

를 이용하여 를 설계한다 이제는 코드의 크기나 스피드보다는 복잡한 알고리즘을 어떻게Firmware .

구현하고 어떻게 서로 상관관계를 가지며 연결되는지 그리고 얼마나 정확히 빨리 프로젝트를 완성

하는가에 더욱 관심이 많다 예를 들어 어셈블리어로 비동기 통신의 구현이나 구조체활. Ring Buffer ,

용 통신 인식 시스템 선형 예측 등의 알고리즘을 구현한 기술자가 있다면 아마 신의 경, Protocol, ,

지에 이른 도인이라고 해도 과언이 아닐 것이라 생각한다.

여기서 예제로 든 는 스웨덴 에서 만든 컴파일러로써IAR C Compiler Quick Start (Sweden) EWAVR

를 바탕으로 설치에서부터 개발하는 방법과 장비와 인터페이스 하는 절차에 해 다루었다V3.10A .

기술 설명서인 동시에 활용서로 쓸 수 있도록 집필했으므로 환경을 익히는데 스트레스 받지 않았으

면 하는 바램 이다 특히 의 컴파일러는 를 이용하여. EWAVR AVR 'MakeApp Atmel Megaavr(4.00a)'

응용 프로그램을 만들 때 처음부터 함수를 만들고 등의 설정에서 고민하는 것을 방Timer, Interrupt

지하기 위해 코드 함수생성 프로그램이 있으므로 잘 활용하기를 바란다 이 프로그램은 라. MakeApp

고 하는데 에서 처음에는 무료로 제공하다가 최근에는 사용프로그램으로 판매되고 있으IAR Compiler

며 성능 또한 우수하다 엔지니어가 점점 부족한 현실이 되면 각광 받을 것으로 보인다 일 평가. . 30

판으로 기능 전부를 사용할 수 있는 버전을Demo www.iar.com에서 다운 받을 수 있다 프로그램.

작성할 때 엔지니어들이 가능한 세기 노가다를 적게 하고 보다 손쉽고 정확하게 응용 프로그램을21

만들었으면 한다 엔지니어의 경쟁력은 정확히 코딩하는데서 출발해야 한다고 생각하므로 아무쪼록.

개발 업무에 도움이 되었으면 하며 본인은 마이크로프로세서 응용관련 저자인 동시에 엔지니어의 한

사람으로 나의 시도가 기술 국의 나라로 만들 수 있기를 희망한다.

컴파일러를 처음 접하는 학생이나 초보 엔지니어들에게는 개발환경이 다소 생소하고 복잡하게 느껴

져서 컴파일러의 옵션과 개발 환경을 유용하게 적용하지 못하는 경향이 있다 일반적으로 계속 이용.

한 과 명령어만 알고 사용하게 된다 그래서 컴파일러를 경험하고 개발 실무를 접한 저자가Option .

관련 자료를 모아 원고로 쓰게 된 것이다 초안 원고는 본인이 했지만 수정과 추가는 컴파일러. IAR

리점의 담당자 그리고 개발 엔지니어가 공동으로 했으므로 실제적으로는 여러 사람이 뜻을 모아

개발했다고 볼 수 있다.

Page 5: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 5

알나간 알고 나면 간단( ) 사의IAR 시리즈EW(Embedded Workbench)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴퓨터를 이용하여 을 개발하는 과정에서 에디터 컴파일러 어셈블러Microprocessor Application , , ,

링크 디버그 등의 각각의 단계가 모두 하나의 프로그램 안에 통합되어 있는 것을 나타낸다 단어의, .

의미로는 작업 를 나타내므로 에 여러 가지 공구들을 올려놓고 작업한다는 의미로 컴파일러Table

회사가 붙인 이름이라고 판단된다 프로그램을 에디터로 작성하고 바로 컴파일러를 호출하여 컴파일.

과 링크를 거친 뒤 실행까지 시켜 볼 수 있다 무엇보다 기존의 에디터를 빠져 나와 컴파일을 하고.

디버깅 뒤에 다시 에디터를 호출하는 불필요한 반복적인 작업을 하지 않아 개발 기간을 단축시킬 수

있다 이런 소프트웨어를. 라고 하며IDE(Integrated Development Environment) 통합 개발 환경이라

고 번역하여 부른다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러의 국내 판매 종류는 제품에 따라 그리고 내용물의 구성 에 따라 여러 가지 버IAR Package

전이 있으므로 구입을 희망한다면 본사나 한국 리점 담당자에게 메일 또는 유선상으로 문의하IAR

길 바란다.

마이크로비젼 :㈜ www.microvision.co.kr 구로 단지: IT : 02-3283-0101 : [email protected]

본사IAR : www.iar.com 스웨덴: : 46-1816-7800 : [email protected]

본 설명서를 읽고 실행해 보면 어느 정도 컴파일러 개발 환경에 해 익히고 개발해야 하겠다는IAR

용기가 생기지만 그것만으로 디자인 하고 마이크로프로세서가 탑재 되어있는 하드웨어에 포팅이 되

는 것이 아님을 잘 알고 있을 것이다 기술자가 되기 위해서는 아직도 넘어야 되는 산이 많이 있다. .

본 원고는 의 내부나 레지스터에 해 학습하는 것이 아니며 지면을 통하여 복Microprocessor Core

잡한 통합 개발 환경 에 해 알 수 있을 뿐이다 컴파일러를 이용하여 를 설계할IDE( ) . IAR Firmware

정도가 되기 위해서는 각 컴파일러에 한 깊은 지식과 설계 디자인 기술 그리고Knowhow, ANSI

언어 저자 만듦 마이크로프로세서 응용 엔지니어를 위한 참조 나아가서C ( : PAT-APP-D001 ANSI C )

는 자세한 컴파일러 옵션과 내부 함수에 해서도 알고 있어야 설계와 디자인을 할 수 있다 어느.

정도 익숙해져서 응용 회로와 소스가 필요하다면 노트를 참고 하길 바PAT-APP-D05X Application

란다.

기술 습득 시리즈의 참고 자료

마이크로프로세서 응용 엔지니어를 위한PAT-APP-D001 ANSI C

기본운영서PAT-APP-D054 Atmel AVR EWAVR, AVR Studio, STK500 Board

레지스터 설명서PAT-APP-D107 ATmega128

관련 기술 프로세서별 통신PAT-APP-D080 USART _

컴파일러는 하이 레벨 언어를 매크로 어셈블리로 바꾸어 주는 도구에 불가하므로 다른 여러 가지 기

술이 뒷받침되어야 한다 예전에는 메모리 가격이 에 만원 정도 되었지만 날이 갈수록 크기에 비. 1M

해 저렴해지는 메모리와 더욱 빨라진 프로세서로 인해 더 이상 엔지니어에게 어셈블리어로Firmware

만 만들기를 고집하지는 않는다 좀더 복잡해진 알고리즘을 구현하기 위해서는 화 형식의 언어가.

필요하다 보통은 언어 개선된. C , 등을 이용하고 요즈음은 등의 고급언어로 개ANSI C C++, JAVA

Page 6: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 6

발하기도 하는데 어셈블리언어로 개발하는 것에 비해 알고리즘 구현하기와 시간절약을 도모할 수 있

다 참고로 어셈블리 언어는 다소 복잡한 알고리즘을 구현하기에는 능력이 떨어지는 프로그램의 구.

조를 가지고 있고 마이크로프로세서마다 부분 서로 다른 를 사용하므로 다른 어셈블리 코드( Core )

를 알고 있어야 프로그램이 가능하다.

마이크로프로세서를 가장 효율적으로 익히는 방법은 잘 설명된 컴파일러 교본을 따라 하면서 생성된

기계어 코드를 보드에 이식하여 동작을 확인하고 디버깅하면서 기술을 늘려나가는 방법이다 추가적.

으로 개발 환경과 프로세서에 해 물어 볼 수 있는 네트워크가 있어야 한다 자신이 잘 모르는 것.

은 남들이 알 수도 있기 때문이며 막히는 것을 가지고 계속 끙끙댄다고 해결책이 쉽사리 생기지는

않는다 흰머리만 늘어날 뿐이다. .

마이크로프로세서는 과 의 조합으로 구성되어 있는 기계어를 사용한다 비트 도 에서 사0 1 . 8 MPU PC

용하는 펜티엄 시리즈도 마찬가지이다 아무리 고급언어로 프로그램을 작성하더라도 최종적으로 프.

로세서에게는 먹기 좋은 떡에 해당하는 기계어로 바꾸어 주어야 한다 마이컴 내부에는 과 로 구. 0 1

성되어 있는 명령어의 코드를 차례로 불러 올 수 있는 역할을 하는 프로그램 카운터(PC : Program

가 있다 가 지정한 메모리 위치에서 한번에 불러올 수 있는 코드는 마이컴의 능력에 따라Count) . PC

비트 비트 비트 비트 등으로 나누어지는데 코드를 읽고 해석해서 주어진 동작을 하게 되어4 , 8 , 16 , 32

있다 비트 마이컴은 한번에 불러오고 처리할 수 있는 비트수가 비트이다 명령의 개수도 개. 8 8 . 256

이하로 되어있는데 프로그램을 하는 사람은 여러 개의 코드를 적절히 나열하여 정해진 일을(0~FF)

마이컴이 하도록 하면 된다 그러나 여러 가지 동작을 하는 기계어 코드를 하나하나 다 외우고 적절.

히 배치하기에는 고도의 훈련이 필요하므로 고수준의 이해하기 편한 고급 개발 언어로 일단 만든 후

컴파일러 와 링크 를 통해 기계어 코드로 바꾸어 주는 것이다(Compiler) (Linker) .

그림 에서 는 언어로 작성된 소스이고 은[ : Software Development Cycle] Source1, 2 C Source3

언어로 작성된 소스를 의미하고 문으로 되어 있다 반면 는 링크 입장에서는Assembly Text . Library

소스에 해당되지만 로 저장 되어 있지 않고 로 되어 있어 파일을 열어봐도 의미하Text Object Code

는 것을 알 수가 없다 소스는 각각의 단계를 거처 에러 없이 진행되면 부산물로 실행코드를 얻게.

된다.

Page 7: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 7

그림 1. Software Development Cycle

엔지니어는 언어나 어셈블리언어로 작성한Firmware C 소스프로그램 을 기계어 코드로(Source File)

바꾼 후에 메모리에 적재하여 마이컴을 운용한다 그래서 기계어 코드로 만들어 주는 컴파일러의 성.

능에 따라 코드의 크기가 줄어들기도 늘기도 하며 명령어 조합 방식에 따라 마이컴의 실행 속도가

결정되기도 한다 통합 개발 환경에서 만들어진 고급언어나 어셈블리어로 만들어진 소스코드는 컴파.

일과 어셈블리어를 이용 일차 가공된 뒤에 링크를 통해 서로 연결된 뒤 실행 가능한 기계어 코드

값으로 만들어진다 코드는 에 집적 포팅 하기도 하지만 이렇게 되면 개발HEX . HEX Target (Porting)

시간에 준비 작업이 많이 들어가게 됨으로 부분 ROM Emulator, MDS(Microprocessor

의 하드웨어 장비를 이용하여 검증하거나 여의치 않을Development System : www.embedded.com)

경우 소프트웨어 등으로 소프트 검정 단계를 거치는 것이 일반적이다 한번에 버그 없이Simulation .

되는 응용 프로그램은 없기 때문이다.

알나지 알고 나면 지식( ) 과학영재들 이공계 진학 해마다 줄어 조선일보, , 2004.1. 30

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

다음은 조선일보 특집기획 신기술 암흑기 온다 에 나온 기사이다 과학[ ] .

부문에 천재적 재능을 보이는 과학 영재 들의 이공계 기피도 심각해져 국‘ ’

가 장래에 암운 을 드리우고 있다 세 미만의 전 세계 과학 꿈나무( ) . 20暗雲

들이 두뇌 경연을 펼쳐 과학기술계 올림픽 이라 불리는 국제과학올림피아‘ ’

드 입상자들의 사례가 표적이다.

년부터 년까지 이 회 입상자는 명 년 이전까지만 해도1988 2003 248 . 97

수상자 명 중 절반 이상인 명 가 입 때 물리 수학 화학과 등111 51.4%(57 ) · ·

이학 계열을 선택했다 공학 계열이 명 로 그 뒤를 따랐고 의. 38.7%(43 ) ,

진학은 명 에 불과했다7.2%(8 ) .

그러나 년 이후 공학 계열을 선택한 학생은 수상자 명 중 명 로 급감했고 이학 계열98 137 22.6%(31 ) ,

도 하락 명 했다 반면 의 를 선택한 학생은 명 으로 배 늘었다 그러자 한국(45.3%·62 ) . 26.3%(36 ) 3.6 .

과학재단은 국제과학올림피아드 수상자 전원에게 지급하던 연구 장려금 금상 수상자의 경우 년간( 4

Page 8: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 8

총 여만원 을 작년부터 이공계 학과에 입학한 수상자에게만 선별 지급해 오고 있다2000 ) .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

현재 일반적으로 전 세계적으로 그래도 유명한 컴파일러에는 다음 전자잡지( Embedded Systems,

기사 참조 회사가 있다 시간적인 여유가 있을 때 한번 들어가 보는 것도 식견을 넓히Volume 13 ) .

는데 도움이 된다 우리나라 엔지니어도 컴파일러 디버그 장비를 만들면 어떨까. , ?

IAR System, www.iar.com

Archimedes Software, www.archimedessoftware.com

ARM, www.arm.com

Blue Earth Research LLC, www.BlueEarthResearch.com

Ceibo Inc, www.ceibo.com

Gimpel Software, www.gimpel.com

HI-TECH Software, www.htsoft.com

HIWARE, www.hiware.com

KEIL, www.keil.com

Mandeno Granville Electronics, www.designtools.co.nz

MDL Labs, www.mallabs.com

Tasking, www.tasking.com

알나간 알고 나면 간단( ) 컴파일(Compile)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

어떤 언어로 된 원시 프로그램으로부터 그와 동등한 일을 하는 다른 언어로 생성하는 작업을 통칭한

다 분야의 컴파일러는 좁은 의미로 고급언어로 된 원시 프로그램을 어셈블리 언어나 기계. Firmware

어 등의 저급 언어로 된 목적 프로그램으로 번역하는 작업을 칭한다 컴파일은 원시코드를 몇 단계.

로 통과시켜 의 원시코드를 기계어 코드로 변환하는데 과정을 세부적으로 보면 우선 첫 번째 단계C

에서는 C 프리프로세서 전처리기 가 호출된다 다음단계는 언어의 문법과 문형을( :Pre-Processor) . C

검사하고 어셈블리 코드로 변환한다 마지막으로 시스템에 맞는 이진 기계어 코드로 변환한다 이러. .

한 이진 코드를 오브젝트 코드라 하는데 여기까지 오면 링크 될 준비를 마친 것이다 링크 단계의.

목적은 프로그램을 실행 형태로 만들어 주는 것인데 오브젝트 코드와 외부 함수 라이브러리 루틴을,

참조한 후 연결하여 실행 가능한 코드파일로 만들어 준다.

Compiler

컴파일 작업을 하는 프로그램 즉 어떤 언어 주로 고급언어 로 된 원시 프로그램을 다른 언어 주로. ( ) (

기계어나 어셈블리 언어 로 된 목적 프로그램으로 바꾸는 프로그램 컴파일러는 원시 프로그램을 읽) .

어 들여 각 문장을 분석하고 그 의미를 알아내어 그에 응되는 목적 코드를 생성한다 또한 수행, .

중에 발생하는 에러의 처리와 복구를 하며 생성된 목적 프로그램과 라이브러리를 링크하기 위한 정

보를 생성한다.

Assembler

어셈블리 언어로 작성된 프로그램을 기계어로 번역하는 일을 하는 컴퓨터 프로그램 어셈블러는 어.

셈블리 언어의 원시 문장을 읽어 들여 코드를 해당되는 기계어 코드로 바꾸고 피연산자OP ,

에 나타내는(operand) 레이블 들을 실제의 주소로 변환하는 작업을 한다 또한 원시 프로그(Symbol) .

램에 한 리스팅을 생성하고 각종 오류 메시지와 진단 그리고 링크와 로드를 위한 재배치 정보를,

Page 9: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 9

만들어 낸다 부분의 경우 어셈블러에. 마크로 기능이 추가된 것이 보통인데 이런 어셈블러(Macro)

는 매크로 어셈블러라고 부르기도 한다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 10: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 10

의 종류에 해서 나타내면 다음 표와 같다 종류로는 비트부터 비트까지 다양한데IAR Compiler . 8 32

개발 환경은 비슷하다 이중에는 삼성에서 나온 비트 과 비트 의 컴파일도 있다. MPU 8 SAM8 32 ARM .

본 매뉴얼은 도표에서 회색부분 소프트웨어를 설명한다.

표 2 마이크로프로세서에 한 시리즈의 종류와 칩 밴드. IAR EW

Chip Manufacturer Microcontroller supportembedded

Workbench

EC++

support

Hardware

debugger

Acer Laboratories M6032, M6759 EW8051 ∨

Aeroflex UTMCUT80C196KD

EWX96 ∨ ∨UT69RH051

Analog Devices AduC8xx EW8051 ∨

ARMARM7, ARM9 ARM9E, ARM10

nitel®Xscale™EWAVR ∨ ∨

Atmel

AT89x, T8xC51xxx EW8051 ∨

AVR, AT90S EWAVR ∨ ∨

AT91x EWARM ∨ ∨

TSC8xx251xxx EW251 ∨

Cygnal Integrated

ProductsC8051Fxxx

EW8051 ∨Cypress Semiconductor EZ-USB FX

Dallas Semiconductor DS2xxx, DS5xxx, DSxCxx

Infineon C500

EW8051 ∨Integrated Silicon Solution IS80xxx, IS89xxx

IntelMCS®51

MCS® 96/296 EWx96 ∨ ∨

Matra MHS 80C3x, 80C5x, 80c154 EW8051 ∨

Microchip

PICmicro® 16,17

(all 14&16bit cores)EWPIC ∨

PICmicro® 18 EWPIC18 ∨ ∨

dsPIC™ EWdsPIC ∨

Motorola68HC11 EW6811 ∨

68HC12 EW6812 ∨

National Semiconductor

CR16, DIP

EWCR16

EWDIP

EWCR16-DIP

NSC800 EWZ80 ∨

COP8 EWCOP8 ∨

CR16C EWCR16C-C ∨ ∨

CR16C, SC14xx EWCR16C-SC ∨ ∨

Page 11: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 11

표 3 마이크로프로세서에 한 시리즈의 종류와 칩 밴드 계속. EW -

NEC

78K0, 78K0/S EW78000

78K4 EW78400

V85x, V850E, V850ES EWV850 ∨ ∨

OKIMSM8xC154, MSM8xC5x EW8051 ∨

ML67xxx EWARM ∨ ∨

Renesas(former

Hitachi and

Mitsubishi)

64180 EWZ80

H8/300, H8/300L EWH8300

H8/300H, H8S EWH8

SuperH EWSH

740 EW740 ∨

7700 EW7700 ∨

M16C/1x-3x, M16C/6x,

R8C/1xEWM16C ∨ ∨

M32C, M16C/8x EWM32C ∨

R8C Tiny EWR8C ∨ ∨

Philips 80C51

EW8051 ∨Standard

MicrosystemsCOM20051, USB97Cxxx

SamsungSAM8 EWSAM8 ∨

S3C4xxx, S3F4xxx EWARM ∨ ∨

2. 설치EWAVR Compiler

컴파일러 는 제품마다 거의 동일하게 지원되는 개발 환IAR (Compiler) GUI(Graphic User Interface)

경의 소프트웨어로써 코어별로 서로 다른 제품군을 이루고 있다 해당 마이크로프로세서의 제품을.

구입하면 와 매뉴얼 그리고 프린터포트에 연결하는CD 락키 가 노란색 에 포장되어 있(Lock Key) Box

는 것을 확인 할 수 있다 코어의 종류로는 시리즈 시리즈. AVR, 8051, X96 , ARM, PIC, 68XX , Z80,

등의 가지가 있다 사는 컴파일러의 이름을COP8, CR16C, SAM8 20 . IAR EW(Embedded

를 사용하여 제품에 적용하는데 예를 들어 이면 아트멜사의Workbench) ARM Compiler EWARM, AVR

컴파일러이면 이라고 부른다MPU EWAVR .

개발에 적용 실험하기 위해/ 평가 버전을 다운받기 위해서는 http://www.iar.com에 접속한 뒤

에서 원하는 프로세서 회사의 문자를 클릭하면 된다 보통 설치 뒤 일로 기간내에서 기능Product . 30

전부를 사용할 수 있는 컴파일러를 제공하므로 본 매뉴얼을 이용하여 충분히 검토가 가능하리Free

라고 본다 직접 웹으로 이동하기를 원한다면. 'http://www.iar.com/Products/?name=EWAVR 를 이용'

하자 컴파일러 부터는 웹 사이트에서 다운 받아 사용하는 평가 버전도 시리얼 번호가. AVR V3.10A

있는데 이 번호는 이메일을 통해 배포 된다 자신이 현재 받을 수 있는 메일을 정확히 기록해야 함.

은 물론이다 에 해당되는 것은 아니지만 어떤 컴파일러는 코드사이즈와 어셈블리 그리고 링크의. AVR

제한이 있는 것도 있다.

그림 웹 사이트를 통한 일 사용 평가버전 의 오른쪽 상단 일 사용 평가버[ : EWAVR 30 Download] 30

Page 12: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 12

전을 클릭하면 사용자정보를 기록하는 항목이 나오는데 절차를 밟아 기록 하면 다음 항목에서 다운

받을 수 있다 파일의 용량은 정도 된다 다운 받을 때 이메일로 설치 시리얼번호가 도착 할. 52.6M .

것이다.

그림 2 웹 사이트를 통한 일 사용 평가버전. EWAVR 30 Download

이지만 일만 사용할 수 있는 파일을 다운받은 뒤에 클릭하게Full Version 30 EWAVR-EV-310A.exe

되면 노란색 바탕의 화면이 나온다 이메일로 온 라이센스를 카피해서 넣으면 된다Setup . .

항목의 코드가 흐린 것은 저자의 번호를 넣고 화면 저장해서 이를 수정했기 때문이다"#license#' .

그림 3 설치화면 라이센스 기입. EWAVR V3.10A -

라이센스를 기입 한 다음 를 클릭하면 다시 라이센스 키를 묻는데 이 번호는 좀 길다 한'Next' . 100

자는 될 것 같은데 중요한 것은 끝의 까지 카피를 해서 다음의 그림 설치화'#' [ : EWAVR V3.10A

면 라이센스 키 기입 에 넣어야 한다- ] .

Page 13: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 13

그림 4 설치화면 라이센스 키 기입. EWAVR V3.10A -

해당 항목에 정상적으로 넣고 다음으로 넘어가면 설치 경로와 선택 항목이 나오는데'Full', 'Custom'

하드 디스크의 용량에 제한이 없다면 전부 설치 라디오 버튼을 클릭하자 만약 평가 버전을 사용하.

다가 일이 지난 다음에 또 설치가 불가능하다 또 설치를 원한다면 한 뒤 다시 하면 된다30 . Format .

다음의 문자 박스는 메일을 통해서 라이센스를 받은 내용이다.

Dear AVR User,

Thank you for evaluating our product. You have registered and downloaded the Embedded

Workbench for Atmel AVR, Evaluation Version v3.10A.

Your license number is:

9503-xxx-xxx-xxxx

Your activation key is:

CTGD51TPLK2KODEWV7UVJITZQF0HF06PQR1R5N6EXOTDFVFECXZUO65CP8OX04L48Z6FO1A

J2M47RLQLROEWW96FAUFRLSISIXLDYOQMMKA4QNFGG2DSGT20X1YAKTT1TBGCBVNGGR2XS

VDFEHBERT5IRENDW# Feature: EWAVR-EV Version: 05_WIN Temporary license

(Licno:9503-xxx-xxx-xxxx), expires 2004-03-20 Use the license number and the license

key to install the evaluation version of the product. The evaluation period is 30 days

starting today.

Kind regards,

IAR Systems

평가 버전이 아니고 정품을 구입하여 를 삽입하면 이 되어 다음과 같은 노란색 화면이CD Auto Run

나오게 되며 컴파일과 등을 설치 할 수 있다 왼쪽의 아이콘에 마우스 커서를 놓으면 간단한Tool .

정보가 나오고 클릭하면 해당부분으로 들어가게 된다 항목은 전부 개의 부분으로 되어 있다. 5 .

Page 14: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 14

라이센스 등록하는 방법과 안내문Quickstart Installation :

컴파일러 통합 환경 설치Install The IAR Embedded Workbench : AVR

설치컴파일러의 버전에 해당하는 등의 정보View the readme file : Update

내용을 탐색기로 볼 수 있도록 새로운 창이 뜬다Explore the CD : CD .

설치 초기 화면을 빠져 나간다Exit : CD .

그림 6 설치화면. IAR Compiler EWAVR

라이센스는 프린터 포트에 락키를 연결해야 컴파일이 되는 와 락키가 연결된'Stand-alone license'

한 의 에 으로 여러 명이 동시에 컴파일이 가능한PC Network 가 있다'Network license' .

라이센스는 여러 에 개발 환경을 마음 로 설치하여 사용할 수 있지만 락키가 해당Stand-alone PC

에 연결되어 있을 때만 컴파일이 가능하다 편집 환경을 자주 옮기는 개발 에 적합하다고PC . System

하겠다 라이센스는 개씩 개별로 구입할 수 있으나 가격이 다소 비싼 편이고 락키 동글. Network 1 ( )

한 개가 반드시 필요 하지만 이 구성된 곳에서는 자유롭게 사용할 수 있는 장점이 있다 동Network .

시에 접속할 수 있는 사용자를 늘릴 경우 추가 라이센스를 취득해야 한다.

Page 15: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 15

한 만 사용하는 방식 중 버전은 인증 절차가 없으므로 웹 사이트를 통해PC Stand-alone Demo

다운 받아 즉시 사용할 수 있지만 정품은 구입 후 인증을 거처야만 정상적으로 사용할 수 있다 정.

품에는 커버에 가 주어지는데 이는 최초 설치 후 일만 사용할 수 있도록 되어CD Quick Start Key 30

있으며 이 기간 내에 마이크로비젼이나 본사로 고객정보가 기입된 등록증을 보내 주면 영구 사IAR

용할 수 있는 를 메일로 보내준다 받은 시리얼 번호는 기준으로 시작Permanent Key . XP ' /IAR

프로그램을 실행하고 프린터포터에System/IAR Systems License Manager' 락키 동글 를 설치한 뒤( )

를 클릭하여 메일을 통해 받은 시리얼 번호를 기입한 뒤 하면 된다 정상적으'Install license' 'Install' .

로 되면 프로그램을 여러 의 에 설치하여 락키를 옮겨 다녀도 컴파일을 할 수 있다PC .

그림 7. IAR Systems License Manage

알나간 의 종류와IAR Compiler Download

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

사는 년 기준으로 약 개사에서 생산되고 있는 마이크로프로세서 코어의 컴파일러를 제공IAR 2003 32

하고 있으며 판매되는 컴파일러는 개 정도가 된다 회사마다 지원되는 프로세서의 열람은15 . www.ia

r.com사 또는 한국 리점의 웹 사이트(http://www.microvision.co.kr/compiler/compiler_list.htm 에)

서 정보를 얻을 수 있다 평가버전의 프로그램 다운로드는 스웨덴에 있는 웹 사이트 또는 마이. IAR

크로비전 홈 피에서 가능하며 제품에 따라 평가 일수 또는 코드의 한계가 있다 한글 사용자 매뉴얼.

은 http://www.microvision.co.kr/compiler/compiler_main.htm의 사이트를 이용하면 손쉽게 얻을 수

있다 컴파일러는 가지의 큰 종류가 있으며 아시아 제품은 하드웨어 락키가 있어야 컴파일과 링크. 4

가 가능하다 의 제품군은 다음과 같이 가지가 있다. Compiler EW 4 .

IAR① Embedded Workbench

- IARIDEPM IAR Embedded Workbench Application, Project Manage

- NWTDAVR IAR Embedded Workbench Target Descriptor

- ICCAVR 와 컴파일러는 두 가지 제품IAR ANSI C/EC++ Compiler (C C++ )

- AAVR IAR Assembler

- AVRPROC IAR C-SPY Debugger processor descriptor for AVR

- AVRSIM IAR C-SPY Debugger simulator driver for AVR

Page 16: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 16

- AVRICE200 IAR C-SPY Debugger ICE200 Emulator driver

- AVRJTAGICE IAR C-SPY Debugger JTAG ICE driver

- ATMEL2IAR IAR Atmel to IAR assembly translator

- POSTLINK IAR PostLink

- CLIB IAR C Runtime Library

- DLIB IAR C/EC++ Runtime Library

- XLINK IAR XLINK Linker

- XLIB IAR XLIB Librarian

- XAR IAR XAR Library Builder

- LICMAN IAR License manager

- AVRCCR IAR C-SPY Crypto Controller driver, C-SPY Debugger Simulator

- SSD Dongle Driver

- UBROF

IAR Embedded Workbench② LE(Limited Edition)

- IARIDEPM IAR Embedded Workbench IDE

- NWTDAVR IAR Embedded Workbench Target Descriptor

- ICCAVR IAR ANSI C Compiler

- AAVR IAR Assembler

- ATMEL2IAR IAR Atmel to IAR assembly translator

- POSTLINK IAR PostLink

- CLIB IAR C Runtime Library

- DLIB IAR C/EC++ Runtime Library

- XLINK IAR XLINK Linker

- XLIB IAR XLIB Librarian

- XAR IAR XAR Library Builder

- LICMAN IAR License manager

- SSD Dongle Driver

과 동일하지만 기능이 제외된 제품이다IAR Embedded Workbench C-SPY Debugger .

IAR③ Embedded Workbench Professional

의 제품으로 다음 사항을 포함한다IAR Embedded Workbench Upgrade .

- Designer : 로 개발 내용을 상태도로 설계하면 함UML(Unified Modeling Language) State Chart

수로 생성해준다 설계 프로그램과 연계. IAR Visual State

상태도 상에서의 확인 및 시연- Validator : (State Chart) .

프로젝트 자료를 자동 생성- Document : .

IAR④ BL(Base Line)

에서 몇 가지 기능에 제한이 있으며 에 비해 약 가격으로 사용할IAR Embedded Workbench EW 1/2

수 있도록 되어있다 그리고 매뉴얼 책자가 포함되지 않으며 일간의 보증서와. 90 SUA(Support and

적용을 받을 수 없다Upgrades Agreement) .

- Editor

Page 17: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 17

- Project manager

- IAR C Compiler

- IAR Assembler

- IAR Xlink Linker

- IAR XLIB Librarian

- Run-time libraries

- IAR C-SPY Debugger Simulator

- Extensive on-line documentation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

다음의 내용은 의 설치한 뒤의 정보를 보여 준다 컴파일러 설치가 끝나면 약EWAVR V3.10A . 675M

정도의 하드디스크 용량과 개의 폴더가 생긴다 에 비해 약 두 배 정도에 해당된다29 . V2.28a .

표 4 내용. IAR EWAVR Compiler Version 3.10A CD

설치 폴더CD 구성 내용

DOC설치안내서 라이센스 취득에 한 설명 파일, : PDF

사용설명서 환경사용법 파일, : PDF, Html

Dongle 동글에 한 설치파일 설명서 제약사항, ,

Ewavrpro 컴파일러 통합 환경 설치파일

표 5 의 설치 폴더내용. IAR EWAVR Compiler Version 3.10A

설치된 뒤의 폴더 구성 내용 평가 버전 기준( )

AVR

bin 통합 개발 환경의 실행 파일들이 들어 있다Compiler .

Config 파일SFR , Target Platform

Doc 설명서

Inc Header File

layouts 파일이 들어 있다Default.lew .

Lib 파일 같은 라이브러리*.r90

Src 폴더CSPY, LIB, Template

Tutor 예제Sample

Common

Bin 통합 환경 등의 실행파일Xlink, Xlib,

Doc 설명서

Src Xlink Source

컴파일러 통합 환경을 다 설치하면 오른쪽 하단의 작업 표시줄 아이콘 박스에 태양이 떠오르는 적' '

색 아이콘 가 있게 된다 아이콘은 여러 종류의 컴파일러를 모아서 관리하는 것으로'IAR Launcher' .

설치된 컴파일러가 많다면 이용하도록 추천한다 저자의 에 과. PC EWAVR 8051, EWAVR2.28a, UML

를 설치했을 때의 환경이다 아이콘의 환경을 수정하기 위해서는 아이콘에 화Tools . 'IAR Launcher'

살표를 놓고 마우스의 오른쪽 버튼을 클릭하면 된다.

Page 18: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 18

그런데 왜 라는 단어를 사용했을까 사전에는 발사'Launcher' ? 1)라고 되어 있는데 스웨덴의 프로그

래머들은 그렇게 생각되나 하는 의구심이 생겼다 나중에 기회가 닿으면 한번 질문할 계획을 가지고.

있는데 사실 프로그램을 작성하고 제품을 만들었을 때 작명 이것 또 잘 안될 때는 무지하게 스트레,

스로 다가온다 이럴 때면 사전이라는 사전은 다 꺼내놓고 단어 공부를 하는데 그래도 이름 짓기가.

만만하지 않을 때가 있다.

그림 8 설치된 컴파일러. IAR Launcher 그림 9. 프린터포트 락키 동글( )

시리즈 컴파일러가 실행된 상태에서 또 다른 프로젝트 파일을 클릭하거EW(Embedded Workbench)

나 통합 환경을 프로그램을 실행하면 계속해서 화면에 나오게 된다 이유는 개발자가 각각 다른 환.

경의 프로젝트를 띄워 놓고 프로그램 작성이 가능하도록 하기 위한 실행이다 의 프린터포Multi . PC

트에 연결되는 락키 그림[ : 프린터포트 락키 는 프로그램을 실행하거나 프로그램을 편집할 때는 없]

어도 되지만 통합 환경을 실행 하거나 컴파일 할 때 그리고 를 사용할 때는 락키의 고유값을C-SPY

읽어오기 위해 실행전에 점검을 한다 락키는 에 전원이 공급되어 있는 상태에서 체결을 변경하면. PC

전기적 정전기에는 문제없다 으로 파손될 우려가 있으므로 전원을 한 뒤 변경하는 주의가 필( ) PC Off

요하다.

만약 프린터 포트에 락키가 없는 프로그램을 상태에서 실행하게 되면 일 경우 다음과 같은V3.10

가 나오게 된다Pop up Window .

그림 10 락키 없을 경우. Error Pop up

1) 최진만 의 의견 의 을 클릭하면 그 위로 메뉴가 튀어 올라오기 때문에 그렇게 명명한 것 같음: Task Bar Icon .氏

Page 19: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 19

알나간 라이센스 구성요소IAR Compiler

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

사용방식 종류LOCK 인 증 방 식

Stand

Alone

H/W Lock과 본사에서 받은 를 등록 정품인증H/W LOCK(Dongle) IAR PERMANENT KEY

후 사용 은 컴파일과 링크 할 때만 필요. Print Port Lock

S/W Lock본사에서 받은 만으로 등록하여 정품인증 후 사용할 수IAR PERMANENT KEY

있지만 아시아에서는 구입 할 수 없다 최초 인스톨한 컴퓨터에서만 사용가능. .

Network H/W Lock

한 의 서버에서 H/W Lock 과 본사에서 받은 를Dongle IAR PERMANENT KEY

등록 정품인증 후 네트웍으로 연결된 정해진 다수의 개발자가 사용가능함 단.

동시 사용자수 만큼 구입해야함.

Demo Version또는 마이크로비젼 웹 사이트에서 제공하는 데모 컴파일러는 사용일 기능에IAR /

제한을 두어 무료로 사용 할 수 있으며 특별한 인증절차가 필요 없다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러의 버전은 년 분기에 이며 이 진화 할 때 같이 하는 추AVR 2004 1/4 V3.10 AVR Version Up

세다 에서 지원되는 은 다음과 같다. V3.10 AVR Chip Item .

ATtiny13, ATtiny22L, ATtiny2313, ATtiny26, ATtiny26L, AT90S2313-4, AT90S2313-10,

AT90S2323, AT90LS2323, AT90S2333, AT90LS2333, AT90S2343, AT90LS2343, AT90S4414-4,

AT90S4414-8, AT90S4433, AT90LS4433, AT90S4434, AT90LS4434, AT90S8515-4,

AT90S8515-8, AT90C8534, AT90S8535, AT90LS8535, ATmega8, ATmega8L, ATmega16,

ATmega16L, ATmega32, ATmega32L, ATmega48, ATmega48V, ATmega64, ATmega64L,

ATmega88, ATmega88V, ATmega103, ATmega103L, ATmega128, ATmega128L, ATmega161,

ATmega161L, ATmega162, ATmega162L, ATmega162V, ATmega163, ATmega163L,

ATmega168, ATmega168V, ATmega169L, ATmega169V, ATmega323, ATmega323L,

ATmega8515, ATmega8515L, ATmega8535, ATmega8535L, AT94K05AL, AT94K10AL,

AT94K40AL, AT94S05AL, AT94S10AL, AT94S40AL.

위 상세 설명Chip : http://atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC

알나간 통합 개발 환경 실행파일의 이름과 버전EWAVR V3.10A

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

IARIDEPM V3.2.10B IAR Embedded Workbench ApplicationNWTDAVR V3.10A IAR Embedded Workbench Target DescriptorICCAVR V3.10A 서로 다른 제품IAR ANSI C/EC++ Compiler ( )AAVR V3.10A IAR AssemblerAVRPROC V3.10A IAR C-SPY Debugger processor descriptor for AVRAVRSIM V3.10A IAR C-SPY Debugger simulator driver for AVRAVRICE200 V3.10A IAR C-SPY Debugger ICE200 Emulator driverAVRJTAGICE V3.10A IAR C-SPY Debugger JTAG ICE driverAVRCCR V3.10A IAR C-SPY Crypto Controller driverATMEL2IAR V1.24 IAR Atmel to IAR assembly translatorPOSTLINK V1.11A IAR PostLinkCLIB V3.34O IAR C Runtime Library

Page 20: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 20

DLIB V1.00A+ IAR C/EC++ Runtime LibraryXLINK V4.56F IAR XLINK LinkerXLIB V3.29G IAR XLIB LibrarianXAR V1.03H IAR XAR Library BuilderLICMAN V1.22A IAR License managerSSD V5.41.1 Dongle DriverUBROF version: 10.0━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러 는IAR EW 규격을 표준으로 사용하므로 언어ANSI(American National Standard Institute) C

를 사용하는 개발자는 로 프로그래밍 하면 되며 언어 학습에 관련해서 공짜 파일로 공부를ANSI C C

하고 싶은 엔지니어는 www.winapi.co.kr 또는 저자가 만든 엔지니어를 위한 를'Firmware ANSI C'

이용하면 된다 역시 기본은 언어를 잘 알아야 코딩이 부드럽게 된다는 것을 명심하자 사이트의. C .

위치는 주 마이크로비젼의 웹 사이트 자료실에 있으며( ) http://www.microvision.co.kr/board2/boardv

iew.asp?BoardName=microftp&Num=249&ScrollAction=Page 파일 이름은 마이크1 'PAT_APP_D001_

로프로세서 응용 엔지니어를 위한 이다 관련 통합 개발 환경도 지원되는ANSI C' . Embedded C++ E

도 있으므로 로 컴파일 할 경우 이를 이용하면 된다 하지만 사에서 나오는WAVR C++ . MS Visual C++

소스 코드는 약간의 수정이 되어야 컴파일러에 적용이 가능하다EC++ .

3. Quick Start

사에서 판매되고 있는 의 종류는 가 있는데 거의 동일한Atmel RISC AVR ATtiny, AT90S, ATmega

를 가지고 있다 본 설명서는 의 사용법과 구현에 목적이CPU Core . IAR Compiler AVR Application

있으므로 년 현재까지의 최상위 버전인 메가급의 을 이용해서 프로젝트 만들기와2003 ATmega128

컴파일 링크에 해 빠르게 구현 해 볼 수 있도록 를 설명한다Quickstart .

은 프로그램 메모리가 바이트가 되고ATmega128 128KB(Kilo Byte), SRAM 4KB, EEPROM 4KB I/O

개가 되어 주로 기기의 주 제어로 많이 활용된다 무엇보다도 의 구조를Port 7 H/A, F/A, O/A . RISC

가지고 있으며 가 언어를 쉽게 수용하고 가장 효율이 높게 최적화 되어 있다 다시 말해 언Core C . C

어 컴파일러의 성능만 좋으면 은 날개를 단것이나 다름없다 또 은 내부적으로AVR . AVR 32 Working

가 있고 한 사이클의 명령어 인터페이스 등의 막강한 기능을 자랑하는 동급의 비트Registers , SPI 8

에서는 최강인 것으로 보인다.

프로세서의 는 파일을 참고하고 개발에 들어가ATmega128 Data Sheet 'ATmega128_doc2467.pdf'

기 전에 반드시 정독을 해 놓아야 한다 모든 개발은 매뉴얼에서 시작해야 할 때 시간. Chip Debug

을 줄일 수 있다 여기저기서 모은 회로도와 소스 만 믿고 개발에 자신 있다고. , Application Firmware

한다면 착각이다.

알나간 CISC, RISC, EISC

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CISC 는 마이크로프로그래밍을 통해 고급 언어에 각기 하나씩의(Complex Instruction Set Computer)

기계어를 응시킴으로써 명령어 집합이 커지고 가변 길이의 다양한 명령어를 가진다 그러나 주로, .

쓰이는 명령어는 일부에 불과하고 구조가 복잡하므로 가격이 비싸고 전력소모도 크다는 단점이 있,

다 그래서 자주 쓰이지 않는 명령어들은 소프트웨어로 구현하고 자주 쓰이는 명령어만 간략화 하여.

Page 21: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 21

의 성능을 높인 가 고안되었다 는 범용 마이크CPU RISC . RISC(Reduced Instruction Set Computer)

로프로세서의 명령세트를 축소하여 설계한 컴퓨터를 말한다 범용으로 사용되는 마이크로프로세서.

구성 요소에는 명령세트 레지스터 메모리 등이 있는데 명령세트는 와 로 분류할 수 있다, , RISC CISC .

는 소프트웨어 특히 컴파일러 작성을 쉽게 하기 위해 하드웨어로 할 수 있는 것은 가능한 모두CISC ,

하드웨어에게 맡긴다는 원칙 아래 설계된 컴퓨터이다 반면 는 실행 속도를 높이기 위해 가능한. RISC

한 복잡한 처리는 소프트웨어에게 맡기는 방법을 택한 컴퓨터이다.

RISC 는 첫째 명령의 부분은 머신 사이클에 실행되고 명령(Reduced Instruction Set Computer) , 1 ,

길이는 고정이며 명령세트는 단순한 것으로 구성되어 있는데 가령 메모리에 한 액세스는, ,

명령으로 한정되어 있다 둘째 어드레싱 모드가 적으며 마이크로프로그램에 의한 제어Load/Store . ,

를 줄이고 와이어드 로직을 많이 이용하고 있다 반면에 레지스터수가 많으며 마이크로프로그램을, .

저장하는 칩의 공간에 레지스터를 배치한다 셋째 어셈블러 코드를 읽기 어려울 뿐 아니라 파이프라. ,

인을 효과적으로 사용하기 위해서 일부 어셈블러 코드를 시계열로 나열하지 않은 부분이 존재하여

컴파일러의 최적화가 필요하다 최적화를 하지 않으면 파이프라인을 유효하게 이용할 수 없고. , RISC

을 사용하는 의미가 없어진다.

EISC 는 확장 레지스터 와 확장 플래(Extensible Instruction Set Computing) (ER : Extension register)

그 라는 새로운 개념을 도입하여 고정길이명령어로 구조를 구현한 것이다 컴퓨(E : Extension flag) .

터의 명령어는 동작을 나타내는 와 그 동작을 받는 로 구성되며 는 단순Op-Code Operand , Operand

한 이고 실제의 의미를 부여하는 것이 이다 를 와 독립적인bit string Op-Code . Operand Op-Code bit

으로 해석하면 가 필요로 하는 길이만큼 를 확장하는 명령어 구조 체계를 만string Op-Code Operand

들 수 있는데 이를 응용한 것이다 명령어 구조는 길이를 필요한 만큼 임의 길이로. EISC Operand

확장이 가능하므로 마이크로프로세서를 모두 동일 명령어 구조로 설계할 수 있다16/32/64 bit .

의 국제 특허를 가지고 있는 회사는 이다EISC www.adc.co.kr .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러를 이용하여 프로그램 한다는 것은 구태여 어셈블리를 모르거나 마이크로프로세서에 해

그렇게 자세히 알지 못해도 운영 프로그램을 만들 수 있는 환경을 개발자에게 제공해 주Application

는 장점이 있다 예전에는 비교적 여러 엔지니어들이 힘을 모아 공동으로 기능 별로 나누어 코. Part

딩을 했지만 외환위기 이후에는 개발 인원이 줄고 준비 기간도 짧아져 실제로 개발자들이 상당한 스

트레스를 받는 것이 현실이다 여기에 프로세서라도 바꿀 양이면 그 가중감은 이루 말할 것이 없다.

고 생각된다 가 이런 상황을 어느 정도 해결해 주는데 이때 사의 컴파일러처럼 가. Compiler IAR GUI

비슷한 개발 환경은 코딩에 보다 빠르게 접근하게 해준다 여기서 학습한 것으로 마이크로프로세서.

엔지니어와 관련되는 분들의 빠르고 정확한 컴파일러 환경에 해 익히는 기회가 되었으면 한다.

통합 실행 아이콘IAR Launcher ( 을 클릭하여 컴파일러를 선택하면 다음과 같은) EWAVR V3.10A

화면 그림 실행 화면 이 나오게 된다 옵션 사항을 선택하는가에 따라 설치 뒤에 바로 샘플[ : EWAVR ] (

프로젝트를 불러 올수도 있다 설치된 경로에서 실행파일로 하고 싶을 경우는 윈도우의 시작). Run '

에서/Program/IAR Systems/IAR Embedded Workbench for Atmel AVR' IAR Embedded

Workbench( 를 선택하거나 설치된 경로에서 파일을 실행해도 개) 'Common Bin IarIdePm.exe'\ \

발 통합 환경이 뜨게 된다.

Page 22: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 22

그림 12 실행 화면. EWAVR

통합 환경 을 실행하여도 한번도 프로젝트를 만든 적이 없을 경우는 화면에 아무것도 나오지EWAVR

않는다 만약 처음으로 한다면 일단 프로젝트를 만들고 컴파일 후에 를 돌려 보기 위해 프로. C-SPY

젝트와 소스파일을 만들 적절한 경로를 마음속으로 정하고 풀다운 메뉴로 들어가 보자'File/New' .

새로 만들기 화면이 나오게 된다 통합 환경으로 컴파일러가 진화 하면서 소스 파일과 관리 파일 모.

두를 프로젝트라는 것으로 일괄 관리하는 경향이 있으며 최근에 나온 부터는 이 프로젝트를 다3.10A

시 전체적으로 관리하는 파일이 존재하게 된다.

프로젝트 파일에는 미리 정해둔 확장자로 등으로 소스를 구분하고 등록되지 않은 것은 컴파*.c, *.h

일과 링크되지 않는 이외의 파일로 취급 하게 된다 우선 시작 하려고 하면 메뉴 과. 'File/New'( File

를 차례로 선택 의 풀다운 메뉴의 새로 만들기에서 두 번째 를 선택하고 확인을 누New ) 'Workspace' ' '

르자 부터는 에 비해 프로젝트를 관리하는 개념이 생긴 것이 다르다 즉 하. V3.10A 2.28 Workspace .

나의 에 다수의 프로젝트를 둘 수 있으며 옵션에 다양한 코드를 얻을 수 있다Workspace .

그림 13 화면 만들기. File/New _Workspace

새로운 는 이름을 짓는 것으로부터 출발한다 는 프로젝트들을 관리하는 것 이Workspace . Workspace

Page 23: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 23

외에는 관여하지 않는다 다시 말해 프로젝트의 이름으로 컴파일과 링크를 마친 뒤에 파일과 디. Hex

버그 그리고 보고서의 파일이름으로 나오게 되므로 워크스페이스 파일로 저장 의 이름은 이들(*.eww )

프로젝트를 한눈에 알 수 있을 이름을 넣는 것이 좋겠다 주로 의 이름을 넣는 것이 아. Target Board

니고 더 큰 것에 해당하는 기간이나 과제물로 이름을 만드는 것이 좋으리라 판단된다, . Workspace

나 이름은 고민하게 되는데 자꾸 만들다 보면 도사가 된다Project .

그림 14 작명. Workspace

의 작명된 이름으로 윈도우가 만들어 지면 이제 프로젝트 작명과 파일 추가를 하자 풀다Workspace .

운 메뉴의 를 선택하면 된다 프로젝트의 개념은'Project/Create New Project .' . EWAVR V2.28A……

와 동일하게 생각하면 되는데 예전에는 동일 환경에서 한 개 이상 만들기가 불가능했지만 새로운 버

전은 프로젝트를 무한 로 만들 수 있다는 것이 다르다 하면 작명된 이름으로 프로젝트 윈. 'Create'

도우 책갈피가 만들어지고 나중에는 최종적으로 파일 보고서 등이 동일한 이름으로 생성될 것HEX ,

이다 그래서 프로젝트는 소스 파일이 있는 곳에 만들면 관리가 편하다 프로젝트의 확장자는. . *.ewp

인데 참고적으로 버전에서는 이다 새로운 버전이 예전 것의 는 불러 올수 없2.28A *.prj . Workspace

지만 프로젝트는 안으로 불러 올수 있다 확장자가 틀린 것은 사에서 나오는Workspace . Atmel AVR

에서 사용되는 프로젝트 확장자와 동일하기 때문에 이를 피하기 위해 변경한 것으로 보인다Studio .

그림 15 프로젝트 작명.

Page 24: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 24

와 를 작명했다면 파일 추가를 하자 소스 코드는 이며 실험을 위해서Workspace Project . int_128.c

사전에 만들어 놓았다 메뉴의 를 하거나 마우스의 오른쪽 버튼을 프로젝트. 'Project/Add Files .'……

가 있는 위에서 클릭하면 된다 해당 경로에서 소스 파일을 넣으면 의 하위로 첨부 된다Root . Root .

알나간 의 확장자EWAVR 3.10A

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러 중에 의 통합 개발 환경의 확장자에 한 구분은 다음과 같다 이외의 파IAR EWAVR3.10A .

일은 소스에 해당되지 않으므로 컴파일과 링크를 취해도 기계어 코드에 영향을 주지 않는다.

Workspace : *.eww

Project : *.ewp

Source : *.c, *.cpp, *.cc

Header File : *.h, *.hpp

Assembler File : *.asm, *.s*, *.mas

Library : *.r*

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

새로운 그룹도 추가해보자 보통은 이곳에 개발 관련 를 정리한 파일을 등록 하거나. History

를 놓아두어 참고 하도록 하게 해준다 등록 하는 방법은 프로젝트의 에서 마우스의Datasheet . Root

오른쪽 버튼을 클릭하거나 하면 된다'Project/Add Group .' .……

그림 16 추가. Group

화면에 보는 것처럼 컴파일과 링크를 거치면 프로젝트 경로 이후에 와Debug 폴더가 자동Release

생성되어 실행파일 보고서 등이 하위로 생기게 된다 메뉴의 항, . 'New Project' 'Target CPU Family'

목은 선택의 여지가 없이 인데 열어 보면 하나 뿐이 없다 프로젝트 파일은 확장자가 로AVR . *.ewp

되어 있으며 개발에 한 모든 통합 환경을 저장한다.

Page 25: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 25

프로젝트를 생성한 뒤에는 자동으로 두개의 폴더가 생성되는데 실제적으로는 동일한 소스로Config

서로 개발 환경이 다른 것이다. 2) 는 타겟에 이식하기 전에 시뮬레이션으로 검정하는 옵션으로Debug

주로 맞춤 되어 있고 는 양산할 경우에 실행파일로 만들어서 포팅 하는 것과 관련 있다 사Release .

실 강제로 옵션을 조정하게 되면 되지만 이렇게 경로로 나누고 기본적인 설정을 사용하는 것이 관리

측면에서는 더욱 이로운 것을 나중에는 느낄 것이다 단 중요한 것은 어떤 것이나 동일한 소스를 이.

용하여 컴파일과 링크를 하지만 옵션이 다르므로 기계어코드 파일 등의 결과물은 서로 다르, Report

다는 것은 알아두자 새로운 항목을 만들고자 할 때는 메뉴 을 선택. 'Project/Edit Configuration .'……

하여 절차 로 하면 된다 여기서는 를 추가하기 위한 화면을 나타낸다. 'Self-test' .

그림 17. New Configuration

알나간 의 종류AVR Compiler

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

아트멜 사의 마이크로프로세서 전용으로 나온 컴파일러로는 표적으로(www.atmel.com) AVR C IAR

사에서 나오는 EWAVR, ImageCraft C, CodeVision C, 등 네 가지가 있다AVRGCC . 은 상EWAVR

적으로 고가이지만 뛰어난 압축률과 안정된 컴파일 그리고 전 세계적으로 컴파일러AVR Platform

표준으로 자리 잡고 있다 또한 만으로 구성되어 있는 아트멜에서 제공되는 가. Assembler AVR Studio

있다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

프로젝트에 두개의 소스코드를 등록하기 위해서 저자는 다음과 같은 코드를 미리 만들어 놓고 컴파

일과 링크 그리고 를 실행했다 여기서는 소스에 해 분석하기 보다는 잘 알고 있다면 상관C-SPY . (

없지만 그 로 타이핑해서 해보자 컴파일러는 다른 사람이 만든 것이지만 소스 코드는) Quick Start .

자신이 만든 것이므로 여하간 개인의 책임이다.

두개의 소스와 참고 된 헤드 파일은 다음과 같다.

2) 로는 와 폴더가 프로젝트 경로에 만들어 지고 다시 하위에 폴더가 생성된다Default Debug Release EXE, LIST, OBJ .

Page 26: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 26

메인 함수가 들어 있다int_128.c : .

한 개의 함수가 있는데 특정 메모리에 가지 숫자로 초기화 한다memory_test.c : 1~9 .

iom128.h 에 관련된 정보가 들어 있다: ATmega128 .

inavr.h : same ina90.h = inavr.h + comp_a90.h

기본적인 입출력 이 정의 되어 있다stdio.h : Proto-type .

해당 경로에 있는 자작 코드"D:₩work₩App₩Header₩IAR₩time_com_IAR.h" :

"D:₩work₩App₩Header₩IAR₩AVR_type.h" 변수 상수 정의: ,

보드의 하드웨어에 관련된 정보"D:₩work₩App₩Header₩IAR₩SDK500_hardware.h" : Target

참고적으로 파일을 새로 만들기 위해서는 메뉴에서 새로 만들기의 항목을'File/New' Source/Text

선택하여 코드를 입력한 다음 를 거처 파일이름을 등록하고 프로젝트에 추가하면 된'File/Save As'

다 같은 방법으로 로 파일과 프로젝트에 한 메모 사항을 적고 프로젝트에 파일을 추. History.Text

가 하면 모든 준비를 마친 것이다.

// =====================================================================

/*

Purpose : 500 Board Test by V310A_test test1_project.ewp

File Name : INT_128.C

History : history.TXT

구입Compiler: EWAVR V3.10A IDE ( : www.microvision.co.kr)

V1.0 : Modify Program

---------------------------------------------------------------------

Copyright(c) by Conan Kim All Rights Reserved.

*/

#include <iom128.h>

#include <inavr.h> // same ina90.h=inavr.h + comp_a90.h

#include <stdio.h>

#include "D:₩work₩App₩Header₩IAR₩time_com_IAR.h" // D:₩work₩App₩Header₩IAR

#include "D:₩work₩App₩Header₩IAR₩AVR_type.h" // D:₩work₩App₩Header₩IAR

#include "D:₩work₩App₩Header₩IAR₩SDK500_hardware.h"

// Initial

void init_serial(uint); // 19200Bps setting

uchar init_hardware(void); // uchar=unsigned char

void 타이머 의 초기화init_timer(void);// 0,1,2

void init_uart(void);

void init_interrupt(void);

// Utility

void putstring(uchar *str); 문자열 출력// Point

Page 27: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 27

void putbyte(uchar c);

uint Timer0_Check(void); // Read Tick of Timer0 Interrupt

void check_chip(void);

void title_print(void);

void loop_delay(void);

// Communication

void init_qbuffer(void); // q-buffer setup

uchar check_pop(void); // check SBUF Point

외부소스 에 들어 있다extern void init_memory_test(void);// memory_test.c .

struct ring q;

uint uint_tick=0;

uchar uchar_key;

uchar uchar_flag;

uchar get_char;// Serial read buffer

void main(void){

인라인 어셈블리어asm("nop");// for test,

인라인 어셈블리어 밑에 것과 같다asm("CLI");// for test, , .

__disable_interrupt(); 인터럽트 아직 실행 하지 않음//

if(init_hardware()){

프로그램 위치// if 1 then error Display,

}

init_serial(BPS19200_1MZ);//BPS19200_11_0592);

init_interrupt();

(void)init_hardware(); 리턴값이 잇으나 무시하기 위해 사용// void

__enable_interrupt(); // 인터럽트 실행

uchar_flag=0;

init_memory_test();// Memory initial test

시리얼 통신으로 정해진 문자 전송title_print(); //

for(;;){ // endless main loop

PORTB=ledout;

loop_delay();

if(ledout==0x0)ledout=0x01;

else ledout<<=1;

if(check_pop()){ 시리얼 통신으로 입력되었는지 검사//

putchar(get_char);

switch(get_char){

case(0x0D):

putstring("₩nCMD>"); // check q-buffer and run

Page 28: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 28

break;

case('h'):case('H'):case('?'):

putstring("This is Test Program Help ₩n Home page1(1), Tech_Support(2), This Massage Display(H)₩nCMD>");

break;

case('1'):case('!'): // Clock read

putstring("http://www.microvision.co.kr");

putstring("₩nCMD>");

break;

case('2'):case('@'):

putstring("www.allmcu.com ₩nCMD>");

break;// end case('2')

default: break;

} // end switch(get_char)

}// end if

if(!(uchar_flag & KEY_FLAG) && (PIND!=0xFF) && (uchar_key!=0xFF)) {

uchar_flag|=KEY_FLAG;// Key input

uint_tick=0x0;// Tick initial

uchar_key=~PIND;// Key INPUT Store,

PORTB=0xFF;// All oFF

}// end if

}// end for

}// end main

// ========================================================

// ======================== Utility routine ===============

// ========================================================

void putbyte(uchar c){

UCSR0A |= (ENABLE << UDRE0);

UDR0 = c; 데이터를 직렬 버퍼에 쓴다// .

}

void putstring(uchar *str){ 문자열 출력// Point

unsigned int i;

for(i=0;str[i]!='₩0';i++) {

엔터 검사if(str[i]=='₩n') {

putbyte(0x0a); 줄 바꿈// 0x0a = Line Feed( )

디버깅에 편하기 위해 넣음__no_operation(); // NOP,

putbyte(0x0d); 커서를 좌측 끝// 0x0d = Carriage Return( )

}

else putbyte(str[i]);

}

}

Page 29: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 29

void check_chip(void){

은 이곳에// program

}

void title_print(void){

putstring("1234567890fortest*₩n");// for test

putstring("* AVRt Training Target Board Test Program *₩n");

putstring("*********************************************************₩n");

putstring("You select 19200bps your RS-232c PC Port ₩n₩n");

putstring("Push ' ? or H ' key then COMMANDs display₩n");

putstring("Hello This is test Program₩n");

}

uchar check_pop(void){

if(q.wp!=q.rp){

get_char=(q.buffer[q.rp]); // pop get char by check flag

q.rp++; // Increment Read Point

if(q.rp>QSIZE) q.rp=0; 번지증가// Read

return (1);

}

get_char='₩0'; 입력이 없으면 공 문자// ( )空

return 0;

}

void loop_delay(void){

unsigned int delay_time=0x001f;

unsigned int j;

unsigned char i=0xFF;

for(j=0;j<=delay_time;j++){

while(i--);

}

}// end loop

// ========================================================

// ======================== Initial routine ===============

// ========================================================

void init_interrupt(void){

TIMSK |= TOIE0_EN;

}

Page 30: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 30

아트멜사에서 나오는 보드 기준 설정uchar init_hardware(void){// STK 500, 501

MCUCR=0x0;// 0 is Default, MCU Control Register

DDRB = 0xFF; // set PORTB as output to drive the LEDS on STK500

PORTB = 0xff; // All LED OFF

DDRD = 0x00; // set PORTE as input to read the SWITCHES on STK500

ledout = 0x0; // LED All ON

ACSR |= (1<<ACD);// disable AC Convertor Compare

return 0;

}

void init_timer(void){

TCCR0 |= TCCR0_CK1024; // 1024

TCNT0=TCNT0_3_685Mhz_1024_10ms; // 10ms

OCR0=0x0;//TCNT0_3_685Mhz_1024_10ms;

}

void init_qbuffer(void){ 링 버퍼 초기화 루틴//

q.rp=0; // Read point value = 0

q.wp=0; // write point value = 0

}

void init_serial(uint bps){// 19200

UBRR0L = (unsigned char) bps;// BPS Setting

UBRR0H = (unsigned char)(bps>>8); // BPS Setting

UCSR0B = (ENABLE<<RXCIE0)|(ENABLE<<TXEN0) | (ENABLE<<RXEN0);

UCSR0C = (3<<UCSZ00); // character size = 8 bit

DDRE =0xFE;// 1111 1110, OE0/RXD Input

}

// ========================================================

// ======================== Interrupt Routine =============

// ========================================================

있어야 한다#pragma vector=TIMER0_OVF_vect // .

__interrupt void tmr0ovf_isr(void){

uint_tick++;

if((uchar_flag & KEY_FLAG)==KEY_FLAG){// work interrupt

PORTB=~uchar_key;

if(uint_tick>=5){

uchar_flag &=~KEY_FLAG;// Disable flag

uchar_key=0x0; // led off

uint_tick=0; // tick value initial

PORTB=0xFF;// All oFF

Page 31: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 31

}// end if

}// end if

TCNT0=TCNT0_3_685Mhz_1024_10ms; // 10ms, Check Please

}

#pragma vector=USART0_RXC_vect

__interrupt void usartrcv_isr(void){

q.buffer[q.wp]=UDR0; 로 옮김// Write Point

q.wp++; // Increment Write point

if(q.wp>QSIZE) q.wp=0; 가 넘치지 않게// Write Point (Ring Buffer)

}

// =====================================================================

이제 순서 로 소스와 기타 파일들을 만들고 프로젝트에 등록했다면 옵션 환경을 하고 컴파Setting

일을 하도록 하자 알다시피 소스파일은 어셈블리 언어 라이브러리 등의 여러 가지가 될 수 있으. , C ,

며 컴파일과 링크가 정상으로 되지 않았을 경우는 실행 파일이 만들어지지 않는다.

알나간 에서 통상적으로 사용되는 파일IAR Compiler

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

확장자*.eww : IAR Embedded workbench Workspace

확장자 이상의 버전에서 사용*.ewp : IAR Embedded Workbench Project , V3.10

확장자 이하의 버전에서 사용*.prj : IAR Embedded Workbench Project , V3.10

언어로 작성된*.c : C Program Source

언어 파일 설치된 프로그램 폴더 에 있다*.h : C Header Source , ' inc' .\

어셈블러*.inc : 매크로(Header File)

링크 를 거친 뒤의 최종 보고서 내용물을 숙지하는 버릇을 들인다*.map : (Xlink) , .

컴파일러 뒤에 생성되는 보고서*.lst :

*.mac : C-SPY Macro Definition

초기화 하는 파일*.xcl : Extended Command,

*.xlb : Librarian Command

에서 사용*.ddf : Device Description File, C-SPY

*.r90 : Object Code

컴파일과 링크 를 거친 뒤의 디버그 정보가 포함되어 있는 출력파일*.d90 : (Xlink)

과 동일*.dbg : d90

를 거친 뒤 생성되는 코드 파일*.a90 : Xlink HEX

어셈블리 언어로 만들어진*.s90 : Source

는 숫자로 된 접미어를 통해 를 구분한다IAR Compiler CPU .

파일 형식03 : 8051

파일 형식32 : 80x96

사의 파일 형식43 : TI MSP430

파일 형식79 : ARM

아트멜사의 파일 형식90 : AVR

Page 32: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 32

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

의 통합 개발 환경은 화면처럼 크게 개의 윈도우 가 있으며 풀다운EWAVR 3 (Project, Edit, Message)

메뉴에는 의 개의 메뉴가 있다 은 항File, Edit, View, Project, Tools, Window, Help 7 . V2.28 Tools

목이 더 있지만 새로운 버전 이후 은 다른 메뉴에 흡수되었다 화면이 복잡하면(V3.10A ) .

같은 메뉴를 이용해서 적절하게 자신이 편집하고 이해하기 쉽도록 윈도우를 배치'Window/Cascade'

하자 저자는 다음과 같은 임의로 얻은 화면으로 설명한다. .

그림 18 설정후의 전체 화면. Project

프로젝트 윈도우 와 를 일괄로 관리 할 수 있도록 한꺼번에 보여 준다 특히 컴: Workspace Project .

파일을 정상적으로 마친 뒤는 첨부된 헤드파일도 하위로 나타나게 되어 프로젝트

파악이 용이하다.

편집 윈도우 소스 코드를 작성하기 위한 편리한 기능과 등록된 키워드는 다른 색으로 보여줘 편리:

성을 더했다.

메시지 윈도우 에러와 워닝에 관련된 정보와 기입된 옵션 등의 종합 정보를 나타낸다: .

프로젝트를 관리하는 의 이름Workspaceⓐ

프로젝트의 이름Rootⓑ

프로젝트에 첨부된 소스코드의 이름ⓒ

소스코드에 첨부된 파일ⓓ

메모리의 크기 함수 소스의 변환이 코드가 된다Code . , .ⓔ

Page 33: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 33

메모리의 크기 사용된 변수의 총합에 해당 된다Data , .ⓕ

소스코드에 들어 있는 함수 의 리스트를 보여준다(Function) .ⓖ

프로그램을 작성하고 컴파일 하기 전에 적어도 한번은 설정해야 되는 중요한 옵션이 있는데 Quick

에서는 중요한 것만 하고 나머지 자세한 것은 항목에서 다루도록 했다 의 코어를Start Option . CPU

기준으로 조금씩 틀린 환경과 에 연결되어 있는 메모리 맵에 따라 환경을 설정해 주Firmware Target

어야 하는데 이것이 의 메뉴이다 컴파일러와 링크의 통합 환경을 이곳을 잘'Project/Options .' .……

해야 보드가 원하는 동작을 하게 된다 알고리듬에 관련된 프로그램을 잘 작성하는 것도 기Setting .

술이지만 하드웨어에 맞게 올바르게 맞추는 것도 단한 눈치이다 실제로 부분의 버그는 환경 설.

정이 올바로 되지 않아 발생하는 것을 개발 지원을 할 때 자주 경험하게 된다 이렇게 중요한 만큼.

항목은 반드시 잘 익히도록 하자 하지만 여기서는 빠르게 익히는데 목적이 있으므'Project/Options' .

로 일단 간단히 익히고 자세한 것은 후반에서 다룬 를 참조하자 항목은 프로젝트Document . Options

윈도우의 폴더에서 마우스의 오른쪽 버튼을 눌러 를 선택해도 된다Root 'Options .' .……

항목은 가지의 큰 항목과 또한 세부 항목으로 이루어져있으며 간단히 요약하면 다음과 같Option 6

다.

종류 선택 출력파일 경로 설정General : Atmel AVR , Memory Model, , Stack

의 설정 각각 다른 제품 보고서 전처리기ICCAVR : C/EC++ ( ), Optimization, ,

언어 관련 설정 보고서 전처리기AAVR : Assembly , ,

링크에 한 출력파일 형식 보고서Xlink : ,

사용자 생성의 편집Custom Build : Tool

디버그 설정 사용자 설정C-SPY : Driver , CC ROM Monitor, ICE200, JTAG,

의 상이 되는 의 회로도는 다음과 같으며 관련 설명은 항목을 보자Quick Start Target Option .

Page 34: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 34

그림 19 설명을 위해 계획된 회로도. How to use IAR AVR Compiler ATmega128

의 항목은 보드에 관련된 코어로 된 프로세서의 종류를 고르고 메모리 모델을General ‘Target’ AVR

의 용량에 따라 선택하는 곳이다 회로도에 있는 을 설계했을 경우라고 가정하므로 여기MPU . Target

서는 은 을 은 을 선택한다 다음Processor Configuration '--cpu=m128 .' Memory Model 'Small' .……

의 는 실행 파일 파일을 저장하는 경로를 나타내는 것인데 별다른 사항'Output' Code, Object , List

이 아니라면 그 로 출력 파일을 관리하는 것이 좋겠다 경로는 는 이지만 하. Default Debug Porting

기 위한 최종 출력 파일은 항목이다 이들 항목은 프로젝트 윈도우의 상단에 있으며Release . Toot

새로 추가 되기 전에는 두개가 기본으로 되어 있다.

의 모든 종류가 다운 메뉴로 들어 있다 선택Processor Configuration : AVR Chip . 128

Memory Model : Tiny, 에 따라 다르다 선택Small(Processor Configuration ), Small

System 파일 신으로 설정을 사용한다 항목 참조Configuration : *.XCL . System Tab

Page 35: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 35

그림 20. Project/Options/General/Target

에서 반드시 익히고 가야 하는 사항은 메모리 모델을 올바로 적용하기 위하여 설정을 어Quick Start

떻게 해야 하는지에 한 사항과 코드를 만드는 옵션이다 코드는 특별한 지정을 하지 않Hex . Hex

으면 절 로 만들어지지 않는다 사실 개발 할 때 코드 작성 시마다 실행 파일이 필요한 것은 아니.

다 다만 과 연동하여 평가 디버깅할 수 있는 실행코드가 필요하다. Target / .

알나간 최초의 인텔CPU 4004

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

실리콘 벨리에서 년 창립한 인텔 회사가 년에 일본의 신형 전자계산기에 사용하고자 개발1968 1971

했던 마이크로프로세스 이다 는 개의 트랜지스터를 집적했고 비트 데이터버스와4004 . 4004 2,250 4

비트 어드레스 핀 세라믹 패키지로 이루어졌으며 이후에 마이크로 프로세스의 기본이 되12 , 16 , DIP

었다 또 년에는 핀 의 모체가 되기도 했다. 1972 24 DIP 4040 .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

개발 할 때 완제품이 나오기 위해서는 아무리 못해도 번 이상의 컴파일과 링크를 하리라고 보는100

데 회로가 복잡 할수록 기능이 많을수록 더욱 그러하고 엔지니어의 디버깅 기술이 없을수록 더욱 컴

파일과 링크를 많이 한다 프로젝트 마다 이렇게 많은 컴파일과 링크를 해서 코드를 만들 필요. HEX

가 있을까 하드 디스크만 혹사당할지도 모른다 특히 여기서는 최종 코드를 포팅 하기 전에? . Hex

같은 장비와 인터페이스 하는 것을 토 로 만들었다MDS ICE .

항목에서 항목은 출력 파일의 형식을 설정하는 것으로 일단은 소프트웨어'Xlink/Output' Format

로 실행하기 위해서 파일이 필요 없는 를 선택한다 그럼 위의(Simulator) Hex 'Debug Info' . 'Output

의 의 파일은 디버그 정보가 들어가 있는 실File' 'Override Default' TEST128_for_V310_int_eep.dbg

행 파일이 된다 를 선택하지 않으면 프로젝트 이름으로 컴파일과 링크 후 에러가. 'Override Default'

없을 경우 파일이 생성된다 즉 파일형식의 결정은 확장자명에 의한 것이 아니라 에 의*.d90 . Format

Page 36: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 36

해 만들어진다.

그림 21 하기위한 설정. Debug Format

의 은 항목을 클릭하여 별도의 이름으로 자신이Project/Options/XLINK/Output Output file Override

확장자를 만들어도 되고 그냥 놔두어 프로젝트 이름으로 된 또는 파일로 두어Default *.a90 *.d90

도 된다 기계어 코드와 디버그 코드는 실행파일 이기 때문에 최종적으로 프로젝트가 있는. 'Debug

경로에 있게 된다 물론 에러가 없어야 함은 당연하다Exe' . .\

하기 위한 파일 생성Debug Info : C-SPY Simulator

통신이 있을 경우 이용Debug Info with Terminal I/O : Serial C-SPY

아트멜 사에서 출시되는 소프트웨어와 디버그 장비 그리고 타 회사의 디버그 과 인터페Other : Tool

이스 하기 위한 다양한 파일 형식 지원

자 이제 컴파일과 링크를 해보자 은 고급 언어로 되어 있는 소스를 일차적으로 매크로 어. 'Compile'

셈블리로 번역 하는 것임으로 다른 소스와 연계되는 는 하지 않고 해당 소스의 번역만 해 주는Link

것이다 물론 컴파일에서는 파일의 크기와 시작 번지 등의 을 만드는 과정도 포함된다. Table . 'Make'

는 컴파일을 한 뒤 컴파일 된 파일을 서로 연계하도록 해 준다 은 컴파일과 링크를 전. 'Rebuild All'

부해서 출력 형태의 으로 정해진 파일을 지정된 경로에 파일을 출력해준다 최종 출력되는 경로Form .

는 에서 설정된 폴더이며 이곳에 실행 파'General/Output/Output Directories/Executable_Libraries'

일이 생성된다 디버깅용 파일이나 파일을 만들기 위해서는 프로젝트 윈도우에서 마우스의 오른. Hex

쪽 버튼을 누르면 다음의 그림 실행파일 만들기 처럼 나오게 되는 명령을 클릭해도 되고[ : ]

의 풀다운 메뉴에서 선택해도 된다'Project/Build All' .

Page 37: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 37

그림 22 실행파일 만들기.

저자의 경로는 프로젝트가 생성된 폴더의 밑 에 프로젝트이름 파일이 있다 디버그'Debug Exe' .d90 .\

파일도 마이크로프로세서 측면에서 보면 실행 파일이므로 경로에 있는 것은 당연하다Exe .

알나간 컴파일러IAR EWAVR 변수의 선언

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

프로세서 안에서 사용되는 기본적인 변수는 바이트 워드 롱 워드 등이 있는데 각각AVR , , 8, 16,

비트로 설명될 수 있다 궁극적으로는 비트들의 묶음으로 관리되기 때문에 변수를 정의하고32, 64 .

난 다음에는 컴파일러가 알아서 배치하게 된다 물론 옵션에 따라 다르게 될 수 있다. .

unsigned char test1; 부호 없는 바이트// 1

char test1; 결정은 컴파일러가 한다 보통은// signed, unsigned . signed

// signed char : -128 ~ +127, unsigned char : 0 ~ 255

signed int test2; 부호 있는 바이트// 2

int test2; 에서는 한계값이 얼마인지 몰라 위험할 수 있다// Firmware .

// signed int : -32768 ~ +32767, unsigned int : 0 ~ 65,535

short test2; 와 동일// int test2

signed short test2; // 16 bits -32768 ~ 32767

unsigned short test2; // 16 bits 0 to 65535

signed long test3; // 32 bits -231 ~ 231-1

unsigned long test3; // 32 bits 0 ~ 232-1

signed long long test4; // 64 bits -263 to 263-1, -2,147,483,648 ~ 2,147,483,647

unsigned long long test4; // 64 bits 0 to 264-1, 0 ~ 4,294,967,295

float test5; // ±1.175494E-38 to ±1.402823E+38

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

컴파일러를 잘 사용하기 위해서는 뭐니 뭐니 해도 를 잘 사용해야 한다 알고리듬에 따라 작ANSI C .

성된 로 코딩을 해야 한다 그래야 디버깅이 쉽다 소스는 개발자가 작성하게 되므로Flow Chart . .

책임이 따르는데 컴파일러는 자신이 아닌 다른 회사에서 만들게 되므로 성능에 맞기는 것이 좋다. C

Page 38: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 38

언어로의 개발 이것은 여러 가지 꼼꼼함이 깃들여 있다 그중에서 에서 사용되는 변수의 크기. EWAVR

와 표기법을 정리하면 다음과 같다 언어에 관련된 보다 한 학습은 마이크. C Detail 'PAT_APP_D001_

로프로세서 응용 엔지니어를 위한 를 참고 하자 가 넘는 책 한권의 분량에 항목 별ANSI C' . 100 page

로 자세히 설명되어 있다.

표 6 의. IAR EWAVR 데이터 타입

용 어 비트 바이트/ 범 위 보 기

signed char 8 / 1 -128 ~ +127 signed char test;

char

unsigned char8 / 1 0 ~ 255

char PORTD=0x08;

unsigned char test;

int

short

signed int

signed shot

16 / 2 -32,768 ~ +32,767signed int code test=-1234;

는 생략해도 된다signed .※

unsigned int

unsigned shot16 / 2 0 ~ 65,535 unsigned int d=0xFFFF;

long

signed long32 / 4

-2,147,483,648~

2,147,483,647signed long test;

unsigned long 32 / 4 0~4,294,967,295 unsigned long test;

float 32 / 4±1.175494E-38~

±3.402823E+38float test;

signed long long 64 / 8 -263~(263-1) signed long long test;

unsigned long long 64 / 8 0~(264-1) unsigned long long test[3];

알나간 IAR EWAVR 키워드(Keyword)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

에서 미리 등록해 놓고 사용하는 단어로 프로그램 작성할 때에는 변수이름이나 함수IAR Compiler ,

루틴이름을 키워드에 있는 단어와 동일하게 사용할 수 없다 키워드는 문자 소문자를 구분하는데. ,

컴파일러 내부적으로 사용하는 단어는 보통 와 함께 소문자로 되어 있다 박스 안에Under Bar .

에서 사용하는 키워드의 일부를 나타내었다EWAVR .

unsigned, char, int, long, __tiny, __near, __far, __huge, __tinyflash, __flash, __farflash,

__hugeflash, __regvar, __io, __eeprom, __generic, __no_init, __root, __interrupt, __monitor,

__task, __version_1, __root, __nearfunc, __farfunc,

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

소스 코드를 컴파일하고 나면 소스 파일과 동일한 이름의 파일이 생성된다 파일은C *.lst . List C

소스를 어셈블리로 만든 리스트와 메모리 사용의 결과 보고서를 나타낸다 처음 컴파일하고. Porting

하기 전에는 절 적으로 꼼꼼히 살펴보는 습관을 기르도록 하자 파일을 만들기 위해서는 당연. List

히 소스가 있어야 하고 컴파일러 항목인 에서 최소한 하나 이상의 옵션을 클릭해C/C++ ICCAVR/List

야 한다 파일은 프로젝트 윈도우에 등록된 소스의 개수만큼 만들어 지는데 에서는. *.lst Quick Start

정상적으로 컴파일 되었을 때 의 두개의 보고서가 나오게 된다int_128.lst, memory_test.lst .

Page 39: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 39

그림 23 의 기본 보고서 선택. ICCAVR/List

그림[ : 의 기본 보고서 선택 환경처럼 체크버튼을 클릭한 뒤 컴파일이나ICCAVR/List ] 'Project/Build

하게 되면 다음의 결과 보고서가 프로젝트경로 경로에 나오게 된다 항목All' ‘ Debug LIST’ . 'List'\ \

에서 아무것도 선택하지 않으면 보고서는 만들어지지 않는다 그리고 는 파일로 되어 있. Report Text

으므로 이외에도 다른 편집기를 통해 확인할 수 있으나 컴파일 할 때 마다 갱신되므로 주의EWAVR

가 필요하다 보고서는 많은 정보를 가지고 있으므로 꼭 확인하는 습관을 길어야 버그를 효율적으로.

잡을 수 있다 또 프로젝트경로 에는 정보를 포함 하고 있는 실행 파일 소스. ' Debug Exe' DEBUG\ \

파일이름 이 있다 이 파일은 열어 보아도 읽을 수가 없고 디버그 장비나 에서 사용하게.d90 . C-SPY

된다.

Page 40: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 40

int_128.C --> int_128.LST

버전 번호와 보고서 만든 시간 출력# IAR Atmel AVR C/EC++ Compiler V3.10A/W32,

적용된 옵션#Command line = List

# Object file = D:₩PART₩APP_DOC₩D17₩TEST₩Debug_D17₩Obj₩INT_128.r90

이 항목에서 소스파일을 그 로 출력한다 여기서는 생략됨// .

Function CSTACK RSTACK 함수에서 사용됨 메모리//

-------- ------ ------

check_chip 0 2 함수 이름과 사용메모리 함수는 리턴 주소를 저장하기위해 바이트 필요// , RSTACK 2

중략...

main 1 2 은 임시변수와 로칼 변수를 저장// CSTACK Dat Stack,

-> init_hardware 1 2 화살표는 메인 함수에서 호출되어 사용된 함수//

중략...

-> putstring 1 2

putbyte 0 2

putstring 4 2 은 전달인수가 포인터이고 로칼 변수가 바이트 사용 또한 번 호출// CSTACK 2 , putbyte3

-> putbyte 4 2

-> putbyte 4 2

-> putbyte 4 2

title_print 0 2 함수에서 호출된 함수 설명//

-> putstring 0 2

중략...

tmr1cmpB_isr 2 2

usartrcv_isr 9 2

Function/Label Bytes 코드에서 사용된 변수의 크기//

-------------- -----

q 9 는 구조체로써 바이트 사용// Q 9

uint_tick 2 부호 없는 바이트// 2

uchar_flag 1 부호 없는 바이트// 1

main 220 함수에서 전체적으로 사용된 변수//

중략...

usartrcv_isr 102

?<Initializer for <Constant "Hello This is tes 28 함수에서 사용된 상수 의 크기// 'DB'

중략..

?<Constant "₩nCMD>"> 6

중략...

Others 34

17 bytes in segment ABSOLUTE 꼭 필요한 코드 컴파일러가 알아서 생성하게 된다// ( )

812 bytes in segment CODE 생성 코드의 크기 해당 소스코드에 한 사항// ,

14 bytes in segment INITTAB

20 bytes in segment INTVEC

404 bytes in segment NEAR_I

404 bytes in segment NEAR_ID

14 bytes in segment NEAR_Z

컴파일 뒤의 코드 크기 이중에서 바이트는 중첩됨 진수1 236 bytes of CODE memory (+ 14 bytes shared), 14 , 10

사용된 영역의 크기418 bytes of DATA memory (+ 17 bytes shared), Data

Errors: none, Warnings: none 에러와 워닝에 한 개수//

여기까지는 컴파일 단계인데 이제 링크를 하고 난 뒤의 결과 보고서를 보도록 하자 컴파일과 링크.

의 과정을 눈으로 확인 될 수 있는 것은 아니지만 그 결과는 해당 디렉토리에 놓이게 된다 컴파일.

러에서는 에러가 발생 하지 않더라도 각각의 라이브러리나 코드를 서로 연결할 때 메모리 설Object

정이나 배치에 관련된 사항이 올바르지 않으면 에러가 발생하게 된다 엔지니어 입장에서. Firmware

는 이 링크 보고서 프로젝트이름 파일을 생산제품의 을 관리하는 도구로 사용하는 것' .map' Version

이 바람직하다 어찌되었던 보다 나은 기술을 얻기 위해서는 과거를 잘 발판 삼아야 하기 때문이다. .

저자는 이 정보를 이용하여 보고서 작성과 공장 이관 등의 양산 관리 리스트로 활용했다.

Page 41: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 41

그림 25 링크 보고서 선택. Xlink/List

그림 링크 보고서 선택 처럼 를 통해 옵션을 선택한 뒤 프로젝트를[ : Xlink/List ] Check Box Make

하면 컴파일과 링크를 거처All 프로젝트 이름으로 생성된 파일이 경로에 생긴다 옵션을Map List .

더 추가 할수록 더욱 리스트의 길이는 길어지는데 좀더 자세히는 항목에서 살펴보도록 하자Option .

파일은 전체 코드의 길이와 전체 변수 사용에 한 보고서 그리고 각각의 데이터변수와 코드의Map

어드레스 번지 길이를 알 수 있다, .

Page 42: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 42

셍성된 보고서 의 파일 내용test1_project.MAP

파일의 내용// Test1_Project.map

# IAR Universal Linker V4.56F/386 링크의 버전 정보 시간 표시// ,

# Target CPU = A90 사용된 이름// CPU

생략 사용된 옵션에 관한사항이 있지만 여기서는 생략됨# Command line = , //

ENTRY ADDRESS REF BY

===== ======= ======

_..X_EXT_RSTACK_END 00000100 사용된 변수의 어드레스//

중략...

_..X_INTVEC_SIZE 0000008C

SEGMENTS IN THE MODULE

======================

NEAR_Z

Relative segment, address: DATA 000002D5 - 000002DD (0x9 bytes), align: 0

Segment part 52. Intra module refs: check_pop

usartrcv_isr

ENTRY ADDRESS REF BY

===== ======= ======

q 000002D5

-------------------------------------------------------------------------

생략...

1 515 bytes of CODE memory (+ 64 range fill )

483 bytes of DATA memory (+ 17 absolute )

Errors: none, Warnings: none

컴파일과 링크를 거친 뒤에 에러가 절 로 발생하지 않았다면 최종적으로 폴더에 디버그 파일'EXE'

이 생성된 것을 볼 수 있다 에 하기 위해서는 파일이 있어야 하지만 이곳에서는. Target Porting HEX

하드웨어 없이 소프트웨어로 을 흉내 내는 것이므로 아직은 실행 기계어 코드가 의미 없다 옵션AVR .

또는 를 선택 했다면 로 프로젝트이름 파일'Debug info' 'Debug info with Terminal I/O' Default .a90

이 이 폴더에 생성된다.

이제 디버깅을 하는 즐거움만 남아 있다 디버깅에는 버그를 없애는 것으로 작성된 소스의 알고리(?) .

듬을 수정하거나 변수 또는 레지스터 등의 값이 적절히 들어갔나를 알아보는 것이다 엔지. Firmware

니어는 이 디버그에 상품의 질과 가격이 결정되므로 최선을 다해야 하는데 설계보다 어찌 보면 더욱

힘이 들고 어렵다 방법적인 측면에서는 하드웨어에 의한 방법과 소프트웨어에 의한 디버깅 방법이.

있다.

소프트웨어 디버깅은 입 출력 관계를 고려하지 않는다면 충분한 실험을 할 수 있다 개발 로 인/ . Flow

해 하드웨어가 나오지 않았거나 알고리듬만 점검해야 할 경우는 소프트웨어에 의해 점검도 가능하

다 을 소프트웨어로 흉내는 것을 라 하고 하드웨어가 없어도 프로그램이 과 동일. AVR Simulator AVR

한 환경에서 운영해준다 이를 에서는 라고 한다 그림 설정. IAR Compiler C-SPY . [ : C-SPY Setup ]

Page 43: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 43

과 같이 만든 다음 아이콘( 을 클릭하면 환경으로 옮겨간다 단 워닝은 상관없지만 에러) C-SPY .

가 발생하면 디버그 환경으로 전환 할 수 없다 좀더 자세히 자신의 타겟과 개발 환경에 맞추기 위.

해서는 항목과 항목을 자세히 살펴본 뒤 시작해 보자Option C-SPY .

그림 27 설정. C-SPY Setup

하드웨어적인 디버그는 측면에서 이 갖추어 진 상태에서 운영해보고 실제적인Input/Output Target

입 출력과 메모리 액세스 등의 에러를 고려 할 수 있으므로 무엇보다 정확하다 그림/ . [ : AVRStudio

에서 사용하기 위한 설정 은 의 와 인터페이스 하기 위해 와 연계하] Atmel ISP JTAG-ICE AVR Studio

기 위한 설정 방법이다 의File Format . 'Format Variant' 번까지 와 인터페이스가UBROF 5~8 Studio

가능하다.

그림 28 에서 사용하기 위한 설정. AVRStudio

Page 44: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 44

두 가지 방법의 디버깅은 나름 로 요령을 필요로 한다 무턱 고 몇 줄 고치고 코드나 디버그. Hex

정보를 만든 다음 로딩 후 원하는 동작이 안나온다고 또 고치고 로딩하고 하는 것은 엔지니어를 다

분히 지치게 만든다 경험에서 우러나오는 디버깅 노하우를 터득 하는 길이 엔지니어의 수명을 연장.

할 수 있다.

만약 디버그가 필요 없고 가 있어서 바로 에 하기를 원한다면 그렇게Target Board Hardware Porting (

해야 할경우가 있다 다음처럼 그림 하면 된다 은) [ : Option/Xlink/Output/Output File, Format] . AVR

노르웨이 사람이 학 다닐 때 내부 구조를 구상했다는 이야기가 있다 이때는 의 마이크로프로. Intel

세서를 배우는 상태였으므로 논리적으로 그 쪽을 벗어 날수 없었을 것이라고 추측된다 그래서 나만.

의 생각인지 모르지만 의 출력 형식도 로 해야 한다 프로젝트의 이AVR Intel-Extend, Intel-Standard .

름으로 를 인위적으로 만들었는데 확장자는 프로젝트 파일이름에 파일이다*.Hex Default *.a90 .

그림 29. Option/Xlink/Output/Output File, Hex Format

알나지 알고나면지식( ) 밥벌이의 지겨움 파란잉어 전자신문, , 2004. 2.28,

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

사람들이 체로 그러하지만 나 역시 어떤 책을 읽다가 필 이 꽂히면 그 사람이 쓴 책은 부(feel)~

분 읽어버리는 습관을 갖고 있다 여고시절 이문열 황석영이 그랬고 지금은 영 아니지만 이후 박. , ( ...)

완서 양귀자 오숙희 김소진이 그랬다 지금은 또 김훈이다, , , . .

칼의 노래와 자전거 여행을 읽고난 후 김훈의 철지난 저서를 뒤적이다 밥벌이의 지겨움이라는 책을

접했다 밥벌이의 지겨움은 자전거 여행과 일맥상통하는 세상살이에 한 글 모임이다 자전거 가. . ...

전국을 여행하면서 느낀 자연과 인간에 한 고찰이라면 밥벌이 는 제목 그 로 개인 일상이나 당...

시 화제가 된 뉴스 월드컵 등 를 중심으로 저자의 시각을 풀어가는 글이다( ) .

체로 내용은 자전거나 칼의 노래를 넘어서지 못했다 아니 이 책이 전작이니 후속작의 모태가 되.

었다고 볼 수도 있다 이 책 가운데에서 가장 좋았던 글을 노동과 놀이에 한 김훈의 생각이다 부. .

록에 인터뷰로 실려 있는 내용이다...

Page 45: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 45

남재일 장정일의 내게 거짓말을 해봐 에는 노동하지 않고 살고자하는 인간이 등장한다 그런 캐릭" [ ] .

터는 좌우를 막론한 공공의 적이다 한마디로 근 의 적으로 규탄받는다 노동에 한 생각이 궁금한. .

데..."

김훈 나는 노동을 싫어한다 불가피해서 한다 노는게 신성하다 노동엔 인간을 파괴하는 요소가 있" . . .

다 그러나 이 사회는 노동에 의해 구성돼 있다 나도 평생 노동을 했다 노동을 하면 인간이 깨진다. . .

는 거 놀아보면 안다 나는 일할 때도 있었고 놀 때도 있었지만 놀 때 인간이 온전해지고 싶어지는.

걸 느꼈다 기자를 보면 기자 같고 형사를 보면 형사 같고 검사를 보면 검사같이 보이는 자들은 노.

동 때문에 망가진거다 뭘 해먹고 사는지 감이 안와야 그 인간이 온전한 인간이다 그런데 노는 거. . ,

그게 말이 쉽지 해보면 어렵다 놀면서 돈 쓰고 돌아다니는 거는 노는 게 아니라 노동의 연장이다. .

돈에 의지하지 않으면 못 노는 거는 돈 버는 노동세계와 연결돼 있어서 노는게 아니다 노는 거는.

그 자리에 있는 세상하고 단둘이 노는 거다"

붉은색 부분을 읽을 때는 끄 응하는 신음소리가 절로 나왔다 뭘 해먹고 사는지 감이 안와야 그 인~ ..

간이 온전한 인간이라는 말 기자생활을 하면서 정말 기자님처럼 보여요 라는 말을 듣고 내심 우쭐... " "

했는데 결국 그게 온전한 인간이 못되고 그럼 이무기 노동으로 피폐해진 인성이 어디선가 파편... ( ???)

처럼 나타났다는거 아닌가...

나 혼자 힘으로는 느끼지 못했던 것을 누군가가 알게 해준다는 건 그리고 그런 예민한 선지자가 세,

상 곳곳에 있다는 건 정말 감사해야 할 일인 것 같다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 46: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 46

4. C-SPY

언어의 소스를 보면서 디버그를 처럼 할 수 있다고 해서C Spy 라고 하지 않았나 하는 생각이C-SPY

다 개발 프로젝트에 임하다 보면 짧은 시간에 원리 구현과 기본 기술을 매뉴얼을 보면서 익히고 샘.

플 보드를 가지고 분석하고 적은 개발 인원으로 제품을 만드는 것이 생각만큼 그리 쉽지 않다 개발.

에 복병은 에 따라 다르지만 디버그라고 본인은 생각되는데 개발한 시간만큼 실제적으로 디Platform

버깅 시간이 필요하다 디버깅은 엔지니어의 노하우와 깊이 연관되며 보다는 꾀라고 할 수 있는. IQ

지혜가 필요하다 자신이 그렇지 않다고 판단되면 나 을 잘 이용하는 것이. Emulator Simulator Tool

바람직하다.

는 버전을 구매 했을 경우IAR Compiler Full C-SPY 시뮬레이터가 지원되고 안에 특별히 하C-SPY

드웨어 지원이 될 수 있도록 디바이스가 설치되어 있는데 어떤 것이 지원되는가는 매뉴얼이나 'Proje

항목에서 확인해 봐야 한다ct/Option/C-SPY/Setup/Driver' .

프로젝트 파일을 시뮬레이션하기 위해서는 두 가지의 옵션을 먼저 선택한 뒤에 컴파일과 링크를 해

야 하는데 에 있는 항목을 로 했다면 특별히 수정 할 필요는 없다Workspace Window 'Debug' .

로 환경이 설정되기 때문이다 일단 다음과 같이 되었는지에 한 확인은 하자Default . .

우선 어셈블러가 아닌 소스 레벨로 디버깅을 하길 원한다면 두 가지 항목을 확인하자 첫째로 그C . [

림 의 을 체크하여 컴파일러 부분에 디버그: Option/ICCAVR/Output] 'General Debug Information'

정보를 넣어 주어야 하고 둘째로 그림 링크항목에서 시리얼 통신이 없을 경[ : Option/Xlink/Output]

우는 를 선택하여 프로젝트의 실행 파일에 디버그 정보가 들어가도록 해야 한다'Debug Info' .

'Debug Info with 는 터미널 흉내를 내주기 때문에 의 시리얼 통신 프로그램이Terminal I/O' RS-232

있을 경우 유용하다 하지만 이때는 확장자가 이 될 수 있도록 에서. *.d90 'Output File' 'Override

를 해야 한다Default' Disable .

그림 30. Option/ICCAVR/Output 그림 31. Option/Xlink/Output

에러가 발생하지 않도록 컴파일과 링크 한 뒤에 를 사용하기 위해 에 있'Rebuild All' C-SPY EWAVR

는 아이콘( 을 클릭해도 되고 항목을 선택해도 된다 그림 실행화) 'Project/Debugger' . [ : C-SPY

면 은 에 녹색으로 되어 있는 커드를 실행하기 전의 상태에서 화면 캡처를 한 윈도우를 보] C Source

여주는 것이다 참고적으로 디버깅 환경은 환경과는 별도로 프로그램이 구동되지만 새로 화면을. Edit

열지 않고 가 실행된다C-SPY .

Page 47: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 47

그림 32 실행 환경. C-SPY

여기서 간단히 실행해 보자 화면의 구성을 왼쪽에서 오른쪽으로 상단에서 하단으로 간단하게 설명.

하면 다음과 같다 아이콘과 자세한 실행 명령어는 뒷부분을 참고 하자. .

소스 파일 윈도우 녹색은 실행할 코드 적색은Memory_test.c : , , Break

고급 언어를 으로 변환 된 윈도우 실제로는 이것이 실행된다Disassembly : AVR ASM , .

함수가 실행되는 윈도우Terminal I/O : Printf

내부 외부 의 메모리 공간모니터 번지부터Memory : Code, Data, EEPROM, I/O, / SRAM . 70Hex 1~

를 기록한 것을 볼 수 있다5 .

소스에서 사용된 함수 지정된 변수 내용을 볼 수 있다Watch : , .

소스에서 사용된 로칼 변수 내용을 볼 수 있다Local : .

사용된 스택 영역 상단의 것이 가장 최근에 된 것Call Stack : , Push

내에서 실행된 명령어의Log : C-SPY History

실행된 명령의 메시지 출력 윈도우Message :

프로젝트 위도우Project :

다음의 코드는 에서 리스트를 공개 하지 않은 두 번째 소스 파일이다 소스에Quick Start . int_128.c

서 파일을 호출하게 되어 있다 내용은 메모리 테스트 초기값 설정 와 기록된 메모리memory_test.C . ( )

의 번지값을 출력하는 역할을 한다Point .

//====================================================================

/* Purpose : EWAVR test for Simulator

File Name : memory_test.C

History : history.TXT

Page 48: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 48

Compiler: EWAVR V3.10A IDE (www.microvision.co.kr)

V1.0 : Modify Program

v1.1 : Memory Initial Sample

---------------------------------------------------------------------

Copyright(c) by MicroVision All Rights Reserved. */

#include <iom128.h> 을 설치하면 생성되며 의// EWAVR ATmega128 Header File

#include <stdio.h> 함수 사용// printf

#include "D:₩work₩App₩Header₩IAR₩AVR_type.h"

#include "D:₩work₩App₩Header₩IAR₩SDK500_hardware.h"

uchar number='1'; 초기 변수 정의//

void init_memory_test(void){ 특정 포인터 변수 정의와 번지 출력//

uchar *ptr; 부호 없는 바이트의 포인터 변수 정의// 1

ptr=(uchar*)0x70; 와 같다 을 번지로 할당// uchar *ptr=(uchar*)0x70; . ptr 70

do{ 조건이 맞을때 까지 실행// while

*ptr++ = number++; 증가된 값을 포인터 변수에 넣고 주소 포인터를 하나 증가// .

printf("₩nPoint Address=%X",ptr );

}while(number != 0x3A);// end while

}// end main

//====================================================================

여기서부터 의 항목에 해 보다 자세히 알아보고 디버그에 활용하자 저자가 개발을 하다 보C-SPY .

면 사실 남는 것은 머릿속에 와 레지스터 그리고 개발 환경을 완전히 익혔던 것이다 환Data Sheet .

경에 해 잘 알고 처 하다보면 손에 익어 효율이 높아진다 반드시 처음에는 꼼꼼히 익히도록 하.

는 것이 바람직하다 그럼 순서 로 되어 있는 개의 를 차례로 알아보자. 9 Full Down Menu .

4.1. File

그림 33. C-SPY File

Page 49: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 49

'New'( 는 파일등을 새로 만들 때 사용한다) Workspace, Project, Text, Source .

'Open'( 은 기존 저장 되어있는 환경을 불러 올 때 사용하며 에디터의 과 동일하다 특별히) Open .

디버그 환경만을 불러 오는 역할은 못한다.

현재 활성화 되어 있는 윈도우를 닿는다 환경에 따라 가 안되는 것도 있다'Close' . Close .

확장자가 로 되어 있는 를 해당 경로에서 파일을 불러와 윈도'Open Workspace' *.eww Workspace

우를 활성화 한다.

현재 활성화 되어 있는 를 저장한다'Save Workspace' Workspace .

'Save'( 파일 저장에 관련된 메뉴), 'Save As...', 'Save All'

'Page Setup...', 'Print...'( 는 인쇄 설정과 출력에 관련된 사항이다) .

현재까지 통합 환경에서 불러왔던 모든 파일의 파일이름과 확장자를 보여준다 기본'Recent Files' .

적으로는 개의 를 보여준다 번이 가장 최근에 불러 왔던 파일을 나타낸다8 History . ‘1’ .

현재까지 물러왔던 의 리스트를 보여준다 번이 가장 최근에 불러'Recent Workspace' Workspace . ‘1’

와서 실행된 것이다.

디버그 이외에도 통합 개발 환경 을 빠져 나간다 그림 의 실행 에서 확인'Exit' (IDE) ([ : Debug Exit ] ' '

하면)

그림 34 의 실행. Debug Exit

Page 50: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 50

4.2. Edit

그림 35. C-SPY Edit

메뉴는 버전에 비해 항목도 많아지고 세분되어 적절히 잘 사용하면 하다 특Edit 2.28A Power Full .

별한 경우를 제외 하고는 키와 병행하게 되므로 자주 사용되는 명령어는 익히게 될 것이다Ctrl .

'Undo'( ), 'Redo'( 실행한 것을 취소하거나 취소한 것을 다시 할 수 있는 기능이다 개 이상의) . 1

명령을 편집 화면에서 실행했을 경우 활성화 된다.

'Cut'( ), 'Copy'( ), 'Pastes'( 은 편집 윈도우에서 오리기 복사하기 붙이), 'Paste Special .' , ,……

기 선택해서 붙이기 기능이다, .

그림 36 윈도우. Paste Special

편집 윈도우에 있는 모든 를 블록화 하여 전체 소스 문장을 오리기 복사하기 붙이'Select All' Text , ,

기 쉽게 해준다.

Page 51: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 51

찾기와 또 찾기'Find .', 'Find Next'……

찾은 다음 바꾸기와 경로에서 찾기 기능이다'Replace', 'Find in Files .' .……

는 편집 윈도우에서 해당 위치로 커서와 화면을 이동 하는 명령어이다 반 로 현재 커'Go To .' .……

서가 있는 위치에서 하면 커서의 현재 위치를 몇 줄 몇 번째인지 알려준다 편집 윈도우의Ctrl+G , .

상단 파일 이름 옆에 가 있는 것은 원본과 비교하여 수정이 이루어졌을 경우에 표시된다'*' .

그림 37 편집환경에서 실행. Go to Line

컴파일 뒤에 에러가 발생 했을 경우 이 명령을 실행하면 메'Next Error/Tag', 'Previous Error/Tag'

시지 윈도우와 편집 윈도우에서 잘못된 부분으로 커서를 이동시켜 개발자의 손 발이 되어 준다/ .

편집 윈도우에서 한행의 책갈피를 표시해준다 한번은 선택되고 또 한번은 해지'Toggle Bookmark' .

되는 토글스위치 이다(Toggle Switch) .

는 책갈피 해 놓은 곳으로 한다 북마크는 한 행의 갈피가 아니라 사실 현'Go to Bookmark' Jump .

재 커서가 있는 위치까지도 북마크가 되는 것이므로 실행은 줄과 칸으로 이동하는 것과 같다goto .

처음 알파벳 머리글자를 치고 이 명령을 실행하면 그동안 한번이라도 사용되었던 단어가'Complete'

차례로 나오게 된다 예를 들어 를 입력한 뒤 하면 그동안 사용되었던 단어. 'P' Ctrl+Space "Printf",

등의 완성된 단어가 차례로 나타난다 소문자 구분은 되지 않으며 아쉽게도 한글은 머리글자"print" .

에 상관없이 전부 나오게 된다.

는 코딩 할 때 가장 많이 발생하는 에러를 줄이는 기능이다 언어는 언어'Match Brackets' . C/EC++

내부에 포함된 기호를 많이 사용하게 되는데 이들의 개수가 짝수가 아닐 때 컴파일러는 을 정Table

상적으로 만들 수 없기 때문에 많은 에러를 유발 한다 에서 사용되는 기호와 짝이 맞는지. ANSI C

Page 52: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 52

검사 상이 되는 기호는 그리고 가 된다 현재 커서가 있는 위치에서 앞으로 또는 뒤로 인(), [] {} .

식하여 검정색 블록으로 맞는 짝을 찾아 표시해준다.

는 코딩 실행 중 멈추는 기능을 하는 것으로 한번은 선택 또 한번은 해지 한다'Toggle Breakpoint' .

소스의 적색 부분은 하면 멈추게 되는 이다 된 문장은 윈도우의 왼쪽 행 번호가Run Break . Break

적히는 부분에 굵게 표시가 된다 추가적으로 문 같은 중복 문장은 구분되어 할 수 있"X" . For Break

다.

그림 38 사용 예. Break/Enable/Disable

는 일시적으로 기능을 상실하게 하는 것이며 완전히 기능'Enable/Disable breakpoint' Break Break

을 윈도우에서 없애지는 않는다 즉 현재의 에서 활성화 하는가 아닌가에 한 사항이다. Break Line .

설정된 문장을 편집할 수 있는 기능이다 특히 변수값 등의 특'Breakpoint .' Break . Code, Data,……

별한 조건에서 를 걸 수 있다 그림 설정 예제 는 각각의 종류별로 를 설Break . [ : Breakpoint ] Break

정해 놓았다 뒤 문장에 있는 다음에는 어셈블리일 경우는 함수가 저장 되어 있는 변지수. Code @

를 나타내며 언어 소스일 경우는 중괄호 안에 파일이름 위치를 나타낸다 뒤 문장은 데이터C , . Data

영역의 또는 둘 다 인지를 나타내며 변수값의 크기를 설정하여 한다Read, Write, Break . Immediate

도 동일하다.

Page 53: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 53

그림 39 설정 예제. Breakpoint

알나지 알고 나면 지식( ) 그래도 힘을 내야 하는 이유 전자신문, 2004.03.13 ETNEWS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

수출이 연중 최고치를 경신하는 등 바깥으로의 장사는 그나마 좀 나은 편이긴 하지만 아직 내수와,

국내 물가는 불안심리가 팽배하다 그나마 국회의원 선거라는 거사를 앞두고 정치권의 공방마저 국.

민들 마음을 편치 않게 하고 있으니 정말 능력이라도 되면 이민을 가고 싶다는 사람들의 마음도 이

해가 간다 전 국민의 로또열풍을 헛된 사행심 조장이라는 비판이 높지만 한편으로는 오죽했으면. 8

백만분의 일의 확률에 모든 것을 걸어보고 싶을 만큼 지금이 좋지 않다는 반증밖에 더 되겠는가!

년 박정희 통령의 수출드라이브는 경제를 살리기 위한 유일한 방편이었다는 데에 이제는 이견70

이 없는 듯 하다 전쟁과 오랜 정쟁으로 정말 가난한 나라에 있는 것은 오직 노동력뿐이었으니 독재. ,

를 년간에 걸쳐 자행한 독재자에게도 그나마 잘한 일이 있다면 경제를 육성하는 것에 등한시 않18

고 일관했다는 것일 게다 물론 그 당시부터의 정책과 행정의 안일함이 지금까지 내려오고 있다는, .

한계성을 보이기는 해도 지금같이 젊은 실업자 수백만의 현실 앞에서는 그때가 좋았지 라는 자탄이" !"

나올 만도 하다.

그러면 과연 방법은 없는 것일까 흔히 우리가 알고 있는 국가를 얘기할 때 적어도 하나씩의 특징은?

그릴 수 있게 된다 미국은 자유 를 프랑스는 예술 일본은 기술 중국은 상술 로 예전부터 이름. " " " ", " ", " "

나지 않았던가 그럼 과연 한국은 무엇일까 근면 창의 뭐 갖다 붙이자면 여러 유형의 것들이. ? " ", " "...

있겠지만 내 개인적인 생각으로는 투지 로 하면 어떨까 싶다, " " .

고 정주영 현 회장이 영국에서 투자를 받기 위해 오백원 짜리에 그려진 거북선을 보여주며 한국인

은 기술이 있는 민족이다고 강변했다는 일화는 사뭇 재밌기도 하거니와 한국인의 특성을 그 로 보

여주는 단적인 예 같다 흔히들 뻥 이라고 하는 개의 사안은 아직 이뤄지지 않은 것을 뜻 로 할. " "

수 있다는 어떻게 보면 무모한 자신감 아닐까 싶다.

Page 54: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 54

라는 초유의 위기도 단시일 내에 돌파한 민족이다 흔히 자랑하는 한강의 기적은 세계사에 유래IMF .

가 없는 경제 발전 속도의 자랑이다 아무리 고되고 힘든 상황에서도 정말 위급상황에서도 서로 나. ,

누고 아끼면서 끈끈하고 끈질기게 지탱해온 모진 목숨줄이다 년 지금 한국인임이 자랑스럽다. 2004 ,

는 건 맨주먹에서 시작한 드라마틱한 드라마가 아직 진행 중이기 때문이다 어렵다 어려운 시기다. . .

그래도 아직 죽을 때는 아니다 삶이 더 많이 남아있으니까 한국인의 투지로 뚫을 수 없는 난관은. .

아직 이르다는 생각이 든다 쌩키. [ ]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.3. View

그림 40. C-SPY View

윈도우를 통해 보여주는 유틸리티를 나타내며 의 레지스터 메모리 등의 상태를 관찰 할 수 있는AVR

디버그의 실제적인 정보를 제공한다 진짜로 잘 활용할 필요가 있다 메뉴 명령어는. . Full Down View

전부 기능은 없다Toggle Switch .

메시지 윈도우를 활성화'Messages'

프로젝트가 들어 있는 윈도우를 활성화'Workspace'

현재 실행되는 소스 코드가 들어 있는 윈도우를 활성화 하는데 와는'Dedicated Editor' Disassembly

다르다.

는 고급 언어를 어셈블리언어로 전환해서 나타내준다 사실 언어로 디버그를 하는'Disassembly' . C

것처럼 보이지만 어셈블리언어를 고급 언어에 하여 눈속임으로 보여 주는 것이 된다 녹색Matching .

라인은 실행 할 코드 분홍색은 설정된 문을 잠시 한 것을 나타낸다 윈도우의 오른쪽, Break Disable .

Page 55: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 55

상단의 적색 원부분의 아이콘은 토글스위치인데 한번은 어셈블리 언어와 언어를 혼용해서 나오게C

하고 또 한번 클릭하면 어셈블리 언어만 나올 수 있도록 선택 할 수 있다.

그림 41. Disassembly Window

메모리의 값들을 볼 수 있도록 윈도우를 지원해 준다 영역은'Memory' . Code, Data, EEPROM, I/O

등이 있으며 디스플레이도 바이트를 선택 할 수 있다 그리고 에서는 의미 없지만1, 2, 4 . AVR

방식으로 볼 수 있도록 해 준다 은 방식으로 되어 있다Little/Big Endian . AVR Little Endian .

그림 42. Memory Window

윈도우는 내부에 있는 레지스터를 실시간으로 확인 하면서 디버그를 할 수 있도록'Register' CPU

하기 위한 것이다 그래서 에 있는 모든 레지스터가 들어 있고 바이트 단위로 확인이 가능하며. AVR

다수의 윈도우를 열어 복수로 띄워 놓을 수가 있다 그림 소스코드의 실행과 보기 에서. [ : Register ]

의 왼쪽 윈도우는 현재 디버깅하고 있는 소스를 나타내며 적색 부분은 녹색 부분은 현재 실Break,

행 예정의 문장을 나타낸다 소스에서 보듯이 레지스터에 상수값을 넣고 실행한 다음의 레. UCSR0B

지스터 변화를 오른쪽의 윈도우에서 적색 부분으로 바뀐 상수값을 확인 할 수 있다 준비된 예제는.

비동기 통신 모드로 설정하는 것이다USART 19200BPS, N, 8, 1 .

Page 56: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 56

그림 43 소스코드의 실행과 보기. Register

변수를 볼 수 있도록 지원해 주는 윈도우인데 왼쪽의 녹색이 실행 예정인 소스코드'Watch' Global

이며 오른쪽 윈도우는 현재까지 실행된 결과의 변수값을 나타낸다 역시 적색 상수는 바로 변경된.

값을 의미한다 윈도우에는 까지의 탭이 있어 다양한 변수를 모니터링 할 수 있다. Watch Watch1~3 .

에서는 변수 이외에 효용의 가치는 미미하지만 함수의 상태도 볼 수 있다 윈도우에서 변수의Watch .

디스플레이 형태를 바꾸고자 할 경우는 마우스의 오른쪽 버튼을 눌러 변경이 가능하다.

그림 44 소스코드의 실행과 보기. Watch

에 등록하기 위해서는 소스 코드의 변수 위에서 마우스의 오른쪽 버튼을 누르면Watch 'Quick

윈도우가 나오게 되는데 간단히 보거나 윈도우 에 등록할 수 있다Watch' Watch ('Add Watch') .

그림 45. Quick Watch Window

는 로칼 변수값을 볼 때 유용하다 소스코드의 함수에는 부호 없는 바이'Locals' . INT_128 putstring 2

트 를 정의 했다 이때의 값이 에 나온 것을 확인 할 수 있다 녹색은 문에서 초‘i’ Locals Window . for

Page 57: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 57

기화 하고 비교를 할 상태인데 그때의 값은 이 된다 또한 함수는 전달 인수의 값도 나타내므로‘i’ ‘0’ .

함수의 변화 값을 보는 데는 그만이라고 판단된다 알아두어야 할 것은 도 함수이므로 로칼. main()

변수가 함수 내에서 사용되었다면 변수 확인을 실시간으로 할 수 있다.

그림 46. Local Window

은 스택 영역을 살펴 볼 수 있는 기능을 제공한다 윈도우에서 하단에 있을수록 예전에'Call Stack' .

된 것이고 상단에 있을수록 바로 된 것을 의미한다 이곳에는 인터럽트와 경유하면 함수Push Push .

를 호출하면 할수록 스택 영역이 가득 차게 되는데 이를 살펴 볼 수 있도록 한다 만약 되. Overflow

면 의 영역 는 을 여유롭게 늘려주면 된다 그림'Option/General/System' RSTCK (Default 16) . [ : Call

는 왼쪽 소스 녹색라인의 멈춘 상태에서의 호출된 스택을 나타낸다Stack Window] .

그림 47. Call Stack Window

는 어디에다가 사용해야 되는지 모르지만 디버그 하면서 생긴 이벤트를 요일 월 시간 등의 정'Log' , ,

보와 함께 디스플레이 한다.

그림 48. Log Window

는 등의 함수의 출력과 입력을 할 수 있도록 해주는 윈도우다'Terminal I/O' printf(), scanf() I/O .

항목은 내부 함수의 시리얼 출력을 나타내며 항목은 키보드를 통해 시리얼 입력의'Output' 'Input'

을 할 수 있다 아쉽게도 내부 함수 이외의 자작한 시리얼 코드의 출력과 입력은 지원되지Simulation .

Page 58: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 58

않음으로 주의가 필요하다.

그림 49. Terminal Window

예를 들어 다음의 함수 결과값은 에서 볼 수 없다'Terminal I/O' .

//============================================================

void putbyte(uchar c){ 실행해도 에서 볼 수 없다// Terminal Window .

UCSR0A |= (ENABLE << UDRE0);

UDR0 = c; 데이터를 직렬 버퍼에 쓴다// .

}

void putstring(uchar *str){ 문자열 출력// Point

unsigned int i;

for(i=0;str[i]!='₩0';i++) {

if(str[i]=='₩n'){

putbyte(0x0a); 줄 바꿈// 0x0a = Line Feed( )

putbyte(0x0d); 커서를 좌측 끝// 0x0d = Carriage Return( )

}

else putbyte(str[i]);

}

}

//============================================================

는 개발한 프로그램과 가 공장 이관하기 전에 한번 이상은 점검해 볼 필요'Code Coverage' Firmware

가 있다 특히 컴파일 뒤에 코드 사이즈가 메모리에 민감해서 코드를 줄일 경우가 생긴다면 특히 자.

세히 봐야 하는 이다 함수의 개수나 크기는 와 비례하게 되므로 꼭 활용하기를 추Utility . Code Size

천한다 단 전체 코드를 한번 정도 실행 하고 난 뒤에 평가를 해줌으로 을 한 뒤에 알 수 있으며. Run

이므로 외부 메모리나 외부 와 연결되어 처리되는 함수는 로 나오게 된다 일Simulator I/O 0% . 100%

경우는 함수를 전부 사용한 것이 되므로 코드를 줄이거나 지우는 것은 어렵다고 판단하면 되고 사용

율이 적은 것일수록 사이즈를 줄일 수 있다 이것을 한눈에 볼 수 있도록 마름모꼴의 적색 녹색으로. ,

표시한 친절이 돋보인다 사용자는 적색이 많은 함수를 찾아 집중적으로 수정하면 좋은 결과를 얻을.

수 있다 노란색은 함수의 위치와 사용된 사이클을 나타내며 상단에 등. Clear, Fresh, Auto-Refresh

의 메뉴가 있다.

Page 59: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 59

그림 50. Code Coverage Window

함수의 실행 측면을 또는 막 그래픽으로 분석하는 것으로'Profiling' % Code Coverage Window

와 혼합하여 사용하면 효율을 더 높일 수 있다 왼쪽부터 항목을 설명하면 함수 이름 호출한 숫자. , ,

실행한 실행시간 막 가 길수록 큼 을 나타낸다Cycle, ( ) .

그림 51. Profiling Window

다음은 의 왼쪽 상단에 있는 아이콘에 한 설명이다'Profiling' .

우선 이 아이콘을 선택해야 을 시작한다Activate : 'Profiling' .

전부 으로 만든다Clear : 0 .

숫자로 되어 있는 영역을 누워 있는 파란색 막 그래프로 바꾸어 준다Graph : Time(%) . Toggle

자세히 보고자 하는 윈도우의 함수를 한번 클릭하고 실행하면 보다 자세한Show Details : Profiling

정보를 얻는다.

다시 정보를 읽어 온다Refresh : .

Page 60: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 60

자동으로 정보를 읽어 온다Auto Refresh : .

는 코드 실행의 를 추적해서 보여 주므로 프로그램의 실행이 어떤 순서로 어떻게 진행'Trace' History

되는지를 알아야 할 경우에 유용하다 왼쪽부터 실행된 를 나타내고 차례로. PC(Program Count)

하고자 하는 함수와 변수의 상태를 나타낸다 저자의 는 함수와Monitor . Trace init_memory_test ptr

변수 변수에 한 를 실험한 것이다, init_tick History .

그림 52. Trace Window

의 왼쪽 상단에 있는 아이콘과 하단의 탭에 한 설명이다'Trace' .

이 아이콘을 선택해야 를 된다 그림 의 왼쪽Activate/Deactivate : Trace Enable . [ : Trace Window]

상단처럼 눌러진 모습으로 상태를 바꾼다.

를 시작하며 과 같다Go with trace : Trace Run .

탭의 정보가 모두 지워진다Clear : 'Output' Trace .

와 혼합하여 디스플레이 된다 스위치이다Toggle Mixed-Mode : Source . Toggle .

찾기 기능Find :

탭 하고자 하는 함수를 등록한다 하면 간단히 등록할 수 있다Expression : Trace . Drag and Drop .

탭 실제 된 를 볼 수 있다Output : Trace Story .

아이콘을 선택 할 수 있으며 스위치이다 상단 과 하단 항목이 있다'Toolbars' Toggle . Main( ) Debug( ) .

Page 61: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 61

그림 53. Main/Debug Tool Bar

는'Status Bar' 통합 개발 환경 오른쪽 하단에 기본 상태를 한다 한번은 선택되고 한번IED( ) Display .

은 된다 만약 편집 소스편집 윈도우가 활성화 되어 있다면 현재 커서의 위치가 첫 번째 적Disable .

색 동그라미처럼 나오게 되고 키보드의 소문자 겹쳐 쓰기 키가Cap Lock( / ), Number Lock, Insert( )

눌러지면 두 번째 적색 동그라미처럼 디스플레이 된다 코딩할 때 역시 보이게 하는 것이 좋겠다. .

그림 54. Status Window

알나지 타임 레그 혹은 시 착오 전자신문, 2003.12.27, ETNEWS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

제목을 보고서 혹 여의도 인근에 서식하는 한 무리의 집단을 떠올릴지도 모르겠다 그 얘기를 하려.

는 것은 아니다.

내가 어릴 적 초등학교를 다닐 무렵 어른들의 인사는 가지였다 아침 자셨습니까 점심때면 점심, 2 . " ?"(

자셨습니까 로 바뀌고 저녁에는 별로 들어보지 못한 것 같다 아직 전기가 귀하고 개 새벽같이 일? , .

어나서 활동하던 시절이라 저녁에는 별로 다니지를 않았던 것이다 그리고 어디 가십니까 다.) " ?" .

그때 한 외국인이 이렇게 쓴 글을 본 기억이 난다 한국인들은 참 이해하기 어려운. "

인사법을 갖고 있다 남의 프라이버시에 관한 질문을 왜 그렇게 마구 할까 남이 식. ?,

사를 했는지 여부가 뭐가 그렇게 궁금한지 라는 요지의 글이었다?" .

아 완전히 다른 시각으로 보면 일상적인 인사말에 해서도 이렇게 의문을 가질 수' ,

가 있구나라는 게 어린 마음에 첫 느낌이었지만 그 뒤로 이 외국인이 문화적으로 상당히 무지하거' ,

나 아주 성실하지는 않은 사람이라는 생각을 갖는 쪽으로 바뀌게 되었다, .

그때는 전형적인 농경문화기의 끝물 무렵이었다 마을은 개 같은 성씨들이 모여 사는 집성촌이었.

고 모두들 한집안이나 진배가 없다 지난 가을에 수확한 양식은 바닥이 나고 보리는 미처 여물지 않, .

은 월 보릿고개가 오면 너나없이 하루하루 사는게 팍팍하게 마련인 시절이었다 그때 아침 자5~6 , . "

셨습니까 는 남의 프라이버시를 건드리는 따위의 질문이 아니었던 것이다 아주 특별한 일이 아니면?" .

동구밖으로 나설 일이 없던 농경문화기의 집성촌에서 길을 나서는 집안 어른을 보고 어디 가십니, "

까 라고 묻지 않는다면 그것도 이상한 일일 터이겠고?" .

시간은 많이 흘렀고 농경문화의 시 는 지나갔다 보릿고개의 기억을 갖고 있는 사람도 하나둘 사라, .

져가고 있고 그새 인사말도 안녕하세요 가 아니면 하이루 방가방가 로 바뀌었다 시 가 바뀐, " " " ^^*" .

것이다.

올해에는 정부의 조달 관행이 여러 차례 화제가 되었다 손으로 만질 수도 없는 소프트웨어나 서비.

Page 62: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 62

스에 해 무작정 가격으로 조달업체를 결정하는 관행도 도마에 올랐고 보이지도 않는 소프트웨어를-

품질도 보지 않고 어떻게 값을 정할 수 있다는 것인지가 참 궁금하지 않을 수 없다 중소기업 육성,

을 위해 일정 규모 이하의 프로젝트에 해서는 기업의 참가를 제한하자는 안도 나왔다.

그중에서도 희한하게 여겨진 것은 정부가 정한 조달단가보다 더 싸게 관공서에 납품한 경우에는 그

업체에 차액만큼의 벌금을 물린다는 규정이었다 게다가 싸게 납품할 것을 요청하거나 심지어 강요.

한 해당 관공서는 아무런 제재를 받지 않는다.

정부에 조달을 하고 있는 업체더러 왜 조달단가보다 낮게 공급하셔서 벌금 낼 일을 자초하고 계IT "

시냐 라고 한번 물어보라 갑자기 날아오는 주먹이 닿지 않도록 이상은 떨어져서 물어볼 것을?' . ( 3m

권장하고 싶다.)

관공서가 조달단가를 지키지 않을 수 있는 방법은 기기묘묘하다 예를 들어 프로젝트를 형 업체. SI

에게 맡기고 필요한 소프트웨어와 서비스 일체를 이 업체더러 사오라고 한 다음에 각 소프트웨어와, ,

서비스의 조달단가를 모두 합한 금액의 쯤을 주면 된다 덤핑을 강요한 것은 이 업체지 정부40% . SI ,

는 아니다.

리스로는 하드웨어밖에 구매할 수 없다 라고 규정이 되어 있으면 하드웨어 업체를 고른 다음에 필요" "

한 소프트웨어 리스트를 주고 이것들을 모두 번들로 달라라고 하면 그만이다 번들로 덤핑을 강요한.

것은 관공서가 아니다.

사정이 이러하지만 조달단가보다 낮추어 공급한 사실을 들키는 날에 경을 치는 것은 작고 힘없는,

업체의 팔목을 비튼 관공서도 형 업체도 하드웨어 업체도 아니다 그러니 울며 겨자를 먹을, SI , .

수 밖에 이런 이런. , ..…

이런 사태의 큰 부작용 가운데 하나는 본의 아니게 외국의 거 기업들에 아주 유리한 환경을 만들,

어주고 있다라는 것이다 마이크로소프트나 오러클은 아무리 잡고 비틀어봐야 팔목이 돌아갈 턱이.

없다 늘 제 값을 받아가신다는 것이다 그러니 작고 힘없는 한국의 신생 기업들이 몇 년동안 고. . IT

생만 죽으라고 하다가 결국 문을 닫는 사이에 해외 기업들은 잠재적인 경쟁자도 없이 무혈입성을,

하게 되는 것이다 마치 양잔디를 키우려고 제초제를 엄청 뿌린 골프장과 같다고나 할까. .

한국의 기업들의 이력이 결코 짧지 않은데도 변변한 패키지 소프트웨어 회사 이름을 보라고 하IT

면 한글과컴퓨터 나모인터렉티브 안철수연구소 정도밖에 떠오르지 않는데는 이런 배경이 없다고 할, ,

수가 없을 것이다.

어떻게 이런 일이 있을 수 있을까?

조달사업에 관한 법률이 제정된 것은 아주 오래 전의 일이다 그때 조달업무의 가장 큰 과제는 오로.

지 어떻게 하면 조달과정에서 부정부패를 없앨수 있을까 라는 것이었다 너나없이 어려웠던 시절이? .

었고 떡값과 선물 그리고 뇌물의 경계도 지금보다는 훨씬 흐릿했던 시절이었다 결정적으로 소프트, .

웨어와 서비스라는 상품은 그때 조달품목에서는 거의 찾아보기가 어려웠다 애초에 중요한 고려의.

상도 아니었던 것이다.

이제 세상은 바뀌었다 바뀐 세상은 새로운 잣 를 필요로 한다 더 이상 아침 자셨습니까 라고 인. . " ?"

사를 할 수가 없게 됐다는 것이다.

정부의 업무의 효율성은 기업의 기준과는 달라야 한다 가령 정부의 전기공급을 맡은 곳이 오직 비.

용 절감과 수익증 만을 생각할 때 캘리포니아의 규모 정전사태와 같은 일이 생긴다.

정부의 조달업무가 오직 비용 절감과 부정부패의 제거만을 생각할 때 토종 중소기업의 도살과IT IT ,

외국 형업체의 독식 현상이 나타난다.

소프트웨어는 못이나 톱 책상이나 철근이 아니다 정부의 조달은 오직 비용을 깎기 위해서만 존재하, .

Page 63: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 63

는 것도 아니다 세계적 수준의 품질 기준을 세워 민간기업의 품질 수준 향상을 유도하고 가령 미국. -

정부에 납품하려는 소프트웨어업체는 품질기준인 인증을 필수적으로 받아놓아야 한다 합리적CMM -

인 마진을 보장해서 실력 있는 작은 중소기업이 튼실하게 커나갈 모판을 제공해야 한다 그것이 공.

공의 이익이다 몇 푼 깎자고 몇 백억 몇천 억원을 놓쳐서야 쓰겠는가. , .

저 늘 식사하고 다닙니다 더 이상 식사 하셨냐 고 물어보지 말아 주십시오 박태웅. ? . [ ]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.4. Debug

그림 55. C-SPY Debug

디버그는 소스코드를 소프트웨어적인 방법으로 을 구동해 볼 수 있는 측면에서 보다 정확하고AVR

빠르게 알고리즘을 점검 할 수 있다 외부의 메모리나 외부에 연결된 센서값은 불러 올 수 없지만.

전체적으로는 훌륭한 검증기라고 할 수 있다 그림 개념 블록도 를 보면 노란색 출력했을. [ : C-SPY ] (

경우 회색 부분 이 통합개발환경 이며 오른쪽의 흰 부분이 장비와 보드를 나타낸다) IDE( ) Target .

Page 64: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 64

그림 56 개념 블록도. C-SPY

'Go'( 는 현재 에서 불러온 디버그 실행 파일을 하며 무한루프의 프로그램일 경우) C-SPY Run

되기 전에는 정지하지 않는다Break .

'Break'( 상태인 실행프로그램을 정지하며 정지된 현재의 위치를 소스코드에 나타내준다) Go .

를 실행해도 되지 않을 경우는 적색의 손이 나오지 않고 손 모양의 아이콘만 디스플레이 된다Break .

'Reset'( 를 처음으로 돌려놓고 함수를 시작할 수 있도록 해준다 모든 변) Program Count Main() .

수를 초기화 하지는 않는다 변수값의 초기화는 소스코드에 들어 있어야 하기 때문이다. .

'Stop Debugging'( 를 빠져나가서 편집환경으로 되돌아간다) C-SPY .

'Step Over'( 소스의 함수를 완전히 실행한다 어셈블리측면으로는 까지 실행하는 것과) C . Return

같다 함수의 내부로 들어가지 않은 상태에서 최종 결과값만 디버그에 디스플레이 된다. .

'Step Into'( 소스와 어셈블리 언어 측면 모두 한 명령어씩 실행한다 함수를 만나든지 을)C . Call

만나도 그곳으로 하여 실행한다 특히 함수 같은 언어 내부함수도 어셈블리를 강제로Jump . printf C

호출하여 실행 한 명령어씩 실행한다.

'Step Out'( 함수에 있는 을 실행하고 다음 실행 코드까지 오게 한다 함수의 실행을 종결) Return .

할 때 유용하다.

'Next Statement'( 와 동일하지만 명령어까지 실행하므로 리턴값이 있는 함수) 'Step Over' return

의 끝까지 실행하는데 적격이다.

'Run to Cursor'( 커서가 있는 위치 전까지의 코드를 실행한다) .

는 현재 커서가 위치해 있는 함수 변수의 상태를 즉시 확인할 수 있는 윈도우를'Quick Watch .' /……

Page 65: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 65

생성하게 한다 예를 들어 왼쪽의 녹색으로 마크되어 있는 함수를 실행할 순서인데 이때. Quick

를 보게 되면 이때의 코드 영역과 리턴값 등을 알 수 있다Watch .

그림 57. Quick Watch Window

는 에 해당된다'Refresh' Reload .

는 다음 명령처리로 지정하는 것이며 소스 코드 윈도우 에서만 활성화 된다'Set Next Statement' .

는 하나씩 하나씩 하는 디버그의 명령을 한꺼번에 등록했다가 일괄 처리하는 이다'Macro .' Utility .……

그림 실행 의 왼쪽 화면에 있는 파일은 을 설치하면 자동으로 생성[ : Macro Window] *.mac EWAVR

되는 경로에 있는 샘플인데 복잡하고 자주 사용하는데 귀찮은 디버그 명령을 이런 식으로Tutorial

편집하면 된다.

그림 58 실행. Macro Window

일단 작성된 매크로를 불러오면 에 등록되고 그 내용이 에'Selected Macro File' Registered Macros'

표시된다 이때 은 사용자가 정의 한 것만 은 가 보유한 기존 기능 은 모두를. 'User' 'System' IDE , 'All'

디스플레이 한다.

은 디버그의 실행 를 파일로 저장하는 이다 두 가지 모드가 있는데 를 저장하'Logging' Log Utility . Log

는 출력 결과를 저장하는 이 그것이다'Set Log File', 'Set Terminal I/O Log File' .

Page 66: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 66

저장 기능을 활성화시키기 위해서 사각형으로 되어 있는 를 클릭하여Log Check Box 'Enable log

한다 항목에 하면 해당 이벤트가 생겼을 때만 기록한다 밑의 파일이름과 경로file' . 'Include' Check .

는 변경이 가능하다.

그림 59 설정. Log File Window

그림 설정 처럼 설정하고 디버그를 실행한 다음 파일의 내용이다[ : Log File Window] .

//===========================================================

Fri Mar 19 14:39:50 2004: execUserExit() called

Fri Mar 19 14:39:50 2004: Error in C:₩Toolfirm₩IAR₩EWAVR310₩avr₩tutor₩SetupAdvanced.mac at line 91, col 20: Operation error.

Fri Mar 19 14:39:50 2004: Error while calling macro execUserExit.

Fri Mar 19 14:39:50 2004: Code coverage deactivated

Fri Mar 19 14:39:50 2004: Profiler deactivated.

//===========================================================

같은 방법으로 를 활성화 시킨 뒤 로그 파일을 불러 오면 다음과 같다 역시 소스코드'Terminal I/O' .

에 있는 프린터함수의 결과물이다.

그림 60 설정. Terminal File Window

//===========================================================

Point Address=75

Point Address=76

Point Address=77

Point Address=78

//===========================================================

은 가지 이상의 윈도우가 만약 하는데 필요하다면 모니터 화면 가득히'Load Layout .' 10 C-SPY……

찰 것이다 아무리 잘 나누어도 화면이 많게 되는데 이때 이미 등록된 윈도우의 환경을 불러오는.

Page 67: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 67

이다 확장자는 로 되어 있다Utility . *.lew .

현재 설정된 환경을 저장하는 역할을 하고 확장자는 로 되어 있'Save Layout As .' C-SPY *.lew……

다.

파일을 즉시 불러와서 원도우를 한다 어지러운 모습의'Load Default Layout' Default.lew Setting .

환경을 빨리 바꾸는데 제격이다.

현재의 개발 디버그 환경을 파일에 즉시 저장한다'Save Current Layout As Default' Default.lew .

4.5. Simulator

그림 61. Simulator

는 인터럽트에 한 모든 사항이 들어 있는데 이들을 활성화 하는 역할을 한다 저자'Interrupt .' .……

는 처음에 을 소스에서 코드로 활성화하는 루틴을 넣어서 시뮬레이션에서 별다른 설Interrupt Enable

정을 안 해도 소프트웨어적으로 인터럽트가 발생하는 데는 지장이 없다고 생각했었다 하지만 그렇.

게 하면 아무리 실행해도 타이머 인터럽트가 발생하지 않는다 소스코드에 설정해도 이 부분을 꼭.

활성화해야 인터럽트 루틴으로 들어갈 수 있다.

그림 62. Interrupt Window

인터럽트 소스 선택Interrupt :

활성 시간Activation Time :

반복 간격Repeat Interval :

실행 횟수Probability :

Page 68: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 68

유지시간Hold Time :

변동Variance :

설정된 인터럽트Installed Interrupts :

된 메모리의 내용을 으로 특정 파일 이름으로 기록한다'Memory Save .' Dump Intel Hex Format .……

그림 63 저장. Memory Dump

메모리 영역Zone :

시작 어드레스Start AD :

끝 번지Stop AD :

저장하고자 하는 파일이름 사용자 정의 로 저장된다File name : , , Text .

알나간 알고 나면 간단( ) 인텔 HEX Format

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

인텔 은 바이너리 코드를 등으로 다운로드하기 위해 만들어진 형식으로HEX File Format ROM Writer

데이터를 바이트 단위로 한 뒤 코드로 표현한다 예를 들어 코드의 진수 는ASCII . 16 ‘09‘ 0x30(‘0’),

의 상태로 전송한다 다음에 제시된 핵사코드는 이해를 돕기 위해 만들어진 인데 실0x39(‘9’) . Sample

제로 첫줄을 분석해보도록 하자.

:09000F00D2A0C2A0B28080F82248

:03000000020003F8

:0C000300787FE4F6D8FD75810702000F3D

:00000001FF

인텔 의 레코드 시작:-> Hex Format (Record)

의 데이터 바이트의 수 밑줄 부분의 의 개수를 나타낸다 밑줄 친 부분은 어셈블리09-> Record , Hex .

소스의 니모닉 코드에 해당한다.

데이터 바이트를 저장할 의 어드레스 위치 번지를 나타낸다000F-> ROM 000Fh .

형식 이면 마지막 를 나타낸다00-> Record , 01 Record .

D2~22 컴파일 후의 실제로 이 부분을 영역에 기록한다-> Hex Data, Code Memory .

의 의 보수 합을 구한 후 반전하고 다시 을 더함 값을 나48-> 09+00+F0+00+D2+A0+~+F8+22 2 ( 1 )

타낸다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 69: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 69

는 코드를 특정 메모리 영역에 한다 와 반'Memory Restore .' Hex Write . 'Memory Save .'…… ……

의 역할이다.

그림 64 기록. Memory Dump

알나지 알고 나면 지식( ) 조금만 멀리 보면 전자신문 뉴스레터, , 2004.3.27,

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

흔히들 인사가 만사 라고 한다 어떤 일을 하건 사람이 가장 중요하다는 뜻이다 정치도 그렇고 경" " . , . ,

영도 그렇듯이 제품 개발도 결국은 사람들이 하는 일이다 따라서 좋은 사람들을 잘 써야 한다, . .

일을 하고 다니다보면 하드웨어나 소프트웨어를 다루는 엔지니어들을 많이 만나게 된다 평소에 별, .

일 없을 때야 뭐 하던 일 계속 하면서 개발 작업도 여유 있게 하고 그런다 문제는 일이 터졌을 때, . ,

다 개발 중인 제품에 문제가 생겼을 때도 그렇고 더 심각하게는 개발을 완료하고 납품을 한 제품. , ,

에 하자가 생겼고 이로 인해서 회사가 엄청난 재정적 손실을 입게 될 상황이 생겼을 때 개발자들은, ,

몇날 며칠씩 날밤을 새가며 디버깅을 해야 하고 회사로서도 눈에 보이는 혹은 눈에 보이지 않는 손,

실을 입게 된다.

아주 간단한 예를 들어보자 개발을 완료하고 납품을 한 제품에 치명적인 결함이 발견되었다고 해보.

자 이로 인해서 회사가 입게 되는 손실이 금전적으로 따졌을 때 억원이라고 한다면 이를 최 단. 100 ,

시간 안에 해결해 줄 수 있는 디버깅 도구를 억원 주고 구매를 해서 손실을 억원으로 줄여줄 수1 , 50

있다면 이 억 원짜리 개발 도구를 안살 사람이 있겠는가1 ?

그런데 문제는 사고가 터진 시점에 그런 개발 도구를 살 경우는 보통 좀 늦은 경우가 많다는 것이, ,

다 구매 절차도 그렇거니와 그 도구를 잘 쓰도록 배우는 시간도 필요하고 해서 당장 필요한 문제. , ,

에 적용을 하기에는 좀 무리가 있다 그러면 개발 기간 중에 이런 문제점을 예상하고 미리미리 장. , , ,

비나 개발 도구를 사 놓고 불의의 사태에 비할 수도 있을 것이다 뭐 일종의 보험 같은 것이라고.

할 수 있을 것이다 물론 당장 사용하는 억원이 좀 아깝기는 하겠지만 나중에 문제가 생겼을 때 그. 1 ,

진가를 발휘 할 것이다.

자 그러면 아예 그런 문제가 발생하지 않도록 개발 과정 자체를 완전하게 만들면 어떤가 방법은, , ?

간단하다 개발자에게 그 억원을 주고 완전한 개발을 독려하는 것이다. 1 ... :)

위의 첫 번째 경우처럼 사고가 터진 뒤에도 개발자들에게 노가다만을 강요하는 회사가 매우 많은 지

금의 상황에서 말도 안 되는 소리일 수도 있다 개발에 매우 큰 도움이 될 것 같지만 눈에 보이는. ,

비용이 증가한다는 이유로 매우 열악한 하드웨어나 소프트웨어 환경에서 작업을 해야 하는 상황도

늘 보게 된다 그러니 인사가 만사 라고 하며 개발자에게 투자를 해야 한다는 소리는 허황된 소리. , " "

일지도 모른다 나는 아직도 믿어지지가 않지만 어쩌면 내가 주변에서 보는 이런 불합리한 일들이. ,

소위 이공계 기피현상 의 원인인지도 모르겠다" " .

그러나 난 믿고 싶다 좋은 개발 환경을 갖춘 상태에서 여유 있는 일정으로 개발한 제품이 결국 그.

Page 70: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 70

가치를 발휘하듯이 최고의 우를 받는 최고의 개발자들을 보유한 회사가 결국 최고가 된다는 걸,

믿고 또 그렇게 회사를 이끌어 가는 분들이 많이 계시다는걸 포졸, . [ ~]……

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 71: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 71

5. Down Menu

시리즈는 와 프로세서마다 각각 코드를 생성하는 방법IAR Compiler EW CPU High Level Language

이 마다 틀려 종류가 약 가지가 되며 개발 환경은 프로세서에 특별한 지정을 제외하고Architecture 31

는 비슷비슷한 를 가지고 있다 환경이 비슷하다는 장점은 만약 비트GUI(Graphic User Interface) . 8

프로세서를 이용하여 개발 하다가 속도 메모리 용량 처리 한계 때문에 프로세서를 바꿀, Application

경우가 생기는데 이때 갑자기 비트로 바꾸어도 개발 환경에 한 스트레스는 별로 받지 않는다32 .

그리고 엔지니어가 제품 개발 사이클이 빨라지고 짧아지는 현실을 감안 한다면 새로운 프로세서를

학습 한다는 것은 노력과 정성 그리고 절 적인 시간을 필요로 하기도 한다.

제조업의 개발실에서 그리고 연구소에서 있었던 저자는 이렇게 많은 학습량에 비해 성취도가 적고

날이 갈수록 복잡해지는 마이크로프로세서와 간단하지 않은 알고리즘 적은 개발 인원 그리고 잦은,

제품 등이 나를 괴롭혔다 지금도 그런 것들에 해 탈출 한 것은 아니지만 역시나 갈 길이Update .

멀다 이런 이유로 간단히 빨리 그리고 참을성이 없는 세 들로 하여금 공학관련 엔지니어의 수를. ,

점차 줄이는 것이 아닌가 하는 생각이다.

본 챕터 에서는 컴파일러 환경의 풀다운 메뉴의 에 해 보다 자세히 알고(Chapter) IAR EW Option

개발에 적용했으면 하는 바램으로 작성되었다 아무쪼록 외국 소프트웨어의 개발 환경을 빨리 익혀.

이득 되는 엔지니어가 되길 바란다 일단 소프트웨어를 구매 한 뒤는 본전을 뽑아야 한다는 것이 저.

자의 지론이다 부분의 연구원들이 도 제 로 사용하지 못하는 것을 감안할 때 안타깝다. 50% .

설명서의 주요 내용은 로 작성되었다 메뉴는 에서부터 까지 개가 있는데EWAVR V3.10A . File Help 7

비교적 몇 개를 제외하고는 평상시에 잘 사용되는 것이다 하나씩 자세히 알아보자 메뉴 밑에는 마. .

이컴이 있어 빠르게 특정 명령을 실행 할 수 있다.

그림 65. Menu & Icon

5.1. File

그림 66. Menu File

Page 72: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 72

'New'( 는 파일등을 새로 만들 때 사용한다) Workspace, Project, Text, Source .

'Open'( 은 기존 저장 되어있는 환경을 불러 올 때 사용하며 에디터의 과 동일하다 특별히) Open .

디버그 환경만을 불러 오는 역할은 못한다.

현재 활성화 되어 있는 윈도우를 닿는다 환경에 따라 가 안되는 것도 있다'Close' . Close .

확장자가 로 되어 있는 를 해당 경로에서 파일을 불러와 윈도'Open Workspace' *.eww Workspace

우를 활성화 한다.

현재 활성화 되어 있는 를 저장한다'Save Workspace' Workspace .

'Save'( 파일 저장에 관련된 메뉴), 'Save As...', 'Save All'

'Page Setup...', 'Print...'( 는 인쇄 설정과 출력에 관련된 사항이다) .

현재까지 통합 환경에서 불러왔던 모든 파일의 파일이름과 확장자를 보여준다 기본'Recent Files' .

적으로는 개의 를 보여준다 번이 가장 최근에 불러 왔던 파일을 나타낸다8 History . ‘1’ .

현재까지 물러왔던 의 리스트를 보여준다 번이 가장 최근에 불러'Recent Workspace' Workspace . ‘1’

와서 실행된 것이다.

디버거 이외에도 통합 개발 환경 을 빠져 나간다 그림 의 실행 에서 확인'Exit' (IDE) ([ : Debug Exit ] ' '

하면)

그림 67 의 실행. Debug Exit

Page 73: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 73

5.2. Edit

그림 68. C-SPY Edit

메뉴는 버전에 비해 항목도 많아지고 세분되어 적절히 잘 사용하면 하다 특Edit 2.28A Power Full .

별한 경우를 제외 하고는 키와 병행하게 되므로 자주 사용되는 명령어는 익히게 될 것이다Ctrl .

'Undo'( ), 'Redo'( 실행한 것을 취소하거나 취소한 것을 다시 할 수 있는 기능이다 개 이상의) . 1

명령을 편집 화면에서 실행했을 경우 활성화 된다.

'Cut'( ), 'Copy'( ), 'Pastes'( 은 편집 윈도우에서 오리기 복사하기 붙이), 'Paste Special .' , ,……

기 선택해서 붙이기 기능이다, .

그림 69 윈도우. Paste Special

편집 윈도우에 있는 모든 를 블록화 하여 전체 소스 문장을 오리기 복사하기 붙이'Select All' Text , ,

기 쉽게 해준다.

Page 74: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 74

'Find .'(…… ), 'Find Next'( 찾기와 이어서 찾기)

'Replace'( 찾은 다음 바꾸기와 경로에서 찾기 기능이다), 'Find in Files .' .……

'Go To .'(…… 는 편집 윈도우에서 해당 위치로 커서와 화면을 이동 하는 명령어이다 반 로 현재) .

커서가 있는 위치에서 하면 커서의 현재 위치를 몇 줄 몇 번째인지 알려준다 편집 윈도우의Ctrl+G , .

상단 파일 이름 옆에 가 있는 것은 원본과 비교하여 수정이 이루어졌을 경우에 표시된다'*' .

그림 70 편집환경에서 실행. Go to Line

컴파일 뒤에 에러가 발생 했을 경우 이 명령을 실행하면 메'Next Error/Tag', 'Previous Error/Tag'

시지 윈도우와 편집 윈도우에서 잘못된 부분으로 커서를 이동시켜 개발자의 손 발이 되어 준다/ .

편집 윈도우에서 한행의 책갈피를 표시해준다 한번은 선택되고 또 한번은 해지'Toggle Bookmark' .

되는 토글스위치 이다(Toggle Switch) .

는 책갈피 해 놓은 곳으로 한다 북마크는 한 행의 갈피가 아니라 사실 현'Go to Bookmark' Jump .

재 커서가 있는 위치까지도 북마크가 되는 것이므로 실행은 줄과 칸으로 이동하는 것과 같다goto .

처음 알파벳 머리글자를 치고 이 명령을 실행하면 그동안 한번이라도 사용되었던 단어가'Complete'

차례로 나오게 된다 예를 들어 를 입력한 뒤 하면 그동안 사용되었던 단어. 'P' Ctrl+Space "Printf",

등의 완성된 단어가 차례로 나타난다 소문자 구분은 되지 않으며 아쉽게도 한글은 머리글자"print" .

에 상관없이 전부 나오게 된다.

는 코딩 할 때 가장 많이 발생하는 에러를 줄이는 기능이다 언어는 언어'Match Brackets' . C/EC++

내부에 포함된 기호를 많이 사용하게 되는데 이들의 개수가 짝수가 아닐 때 컴파일러는 을 정Table

상적으로 만들 수 없기 때문에 많은 에러를 유발 한다 에서 사용되는 기호와 짝이 맞는지. ANSI C

검사 상이 되는 기호는 그리고 가 된다 현재 커서가 있는 위치에서 앞으로 또는 뒤로 인(), [] {} .

Page 75: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 75

식하여 검정색 블록으로 맞는 짝을 찾아 표시해준다.

는 코딩 실행 중 멈추는 기능을 하는 것으로 한번은 선택 또 한번은 해지 한다'Toggle Breakpoint' .

소스의 적색 부분은 하면 멈추게 되는 이다 된 문장은 윈도우의 왼쪽 행 번호가Run Break . Break

적히는 부분에 굵게 표시가 된다 추가적으로 문 같은 중복 문장은 구분되어 할 수 있"X" . For Break

다.

그림 71 사용 예. Break/Enable/Disable

는 일시적으로 기능을 상실하게 하는 것이며 완전히 기능'Enable/Disable breakpoint' Break Break

을 윈도우에서 없애지는 않는다 즉 현재의 에서 활성화 하는가 아닌가에 한 사항이다. Break Line .

설정된 문장을 편집할 수 있는 기능이다 특히 변수값 등의 특'Breakpoint .' Break . Code, Data,……

별한 조건에서 를 걸 수 있다 그림 설정 예제 는 각각의 종류별로 를 설Break . [ : Breakpoint ] Break

정해 놓았다 뒤 문장에 있는 다음에는 어셈블리일 경우는 함수가 저장 되어 있는 변지수. Code @

를 나타내며 언어 소스일 경우는 중괄호 안에 파일이름 위치를 나타낸다 뒤 문장은 데이터C , . Data

영역의 또는 둘 다 인지를 나타내며 변수값의 크기를 설정하여 한다Read, Write, Break . Immediate

도 동일하다.

Page 76: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 76

그림 72 설정 예제. Breakpoint

알나지 알고 나면 지식( ) 그래도 힘을 내야 하는 이유 전자신문, 2004.03.13 ETNEWS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

수출이 연중 최고치를 경신하는 등 바깥으로의 장사는 그나마 좀 나은 편이긴 하지만 아직 내수와,

국내 물가는 불안심리가 팽배하다 그나마 국회의원 선거라는 거사를 앞두고 정치권의 공방마저 국.

민들 마음을 편치 않게 하고 있으니 정말 능력이라도 되면 이민을 가고 싶다는 사람들의 마음도 이

해가 간다 전 국민의 로또열풍을 헛된 사행심 조장이라는 비판이 높지만 한편으로는 오죽했으면. 8

백만분의 일의 확률에 모든 것을 걸어보고 싶을 만큼 지금이 좋지 않다는 반증밖에 더 되겠는가!

년 박정희 통령의 수출드라이브는 경제를 살리기 위한 유일한 방편이었다는 데에 이제는 이견70

이 없는 듯 하다 전쟁과 오랜 정쟁으로 정말 가난한 나라에 있는 것은 오직 노동력뿐이었으니 독재. ,

를 년간에 걸쳐 자행한 독재자에게도 그나마 잘한 일이 있다면 경제를 육성하는 것에 등한시 않18

고 일관했다는 것일 게다 물론 그 당시부터의 정책과 행정의 안일함이 지금까지 내려오고 있다는, .

한계성을 보이기는 해도 지금같이 젊은 실업자 수백만의 현실 앞에서는 그때가 좋았지 라는 자탄이" !"

나올 만도 하다.

그러면 과연 방법은 없는 것일까 흔히 우리가 알고 있는 국가를 얘기할 때 적어도 하나씩의 특징은?

그릴 수 있게 된다 미국은 자유 를 프랑스는 예술 일본은 기술 중국은 상술 로 예전부터 이름. " " " ", " ", " "

나지 않았던가 그럼 과연 한국은 무엇일까 근면 창의 뭐 갖다 붙이자면 여러 유형의 것들이. ? " ", " "...

있겠지만 내 개인적인 생각으로는 투지 로 하면 어떨까 싶다, " " .

고 정주영 현 회장이 영국에서 투자를 받기 위해 오백원짜리에 그려진 거북선을 보여주며 한국인은

기술이 있는 민족이다고 강변했다는 일화는 사뭇 재밌기도 하거니와 한국인의 특성을 그 로 보여주

는 단적인 예 같다 흔히들 뻥 이라고 하는 개의 사안은 아직 이뤄지지 않은 것을 뜻 로 할 수. " "

있다는 어떻게 보면 무모한 자신감 아닐까 싶다.

Page 77: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 77

라는 초유의 위기도 단시일 내에 돌파한 민족이다 흔히 자랑하는 한강의 기적은 세계사에 유래IMF .

가 없는 경제 발전 속도의 자랑이다 아무리 고되고 힘든 상황에서도 정말 위급상황에서도 서로 나. ,

누고 아끼면서 끈끈하고 끈질기게 지탱해온 모진 목숨줄이다 년 지금 한국인임이 자랑스럽다. 2004 ,

는 건 맨주먹에서 시작한 드라마틱한 드라마가 아직 진행 중이기 때문이다 어렵다 어려운 시기다. . .

그래도 아직 죽을 때는 아니다 삶이 더 많이 남아있으니까 한국인의 투지로 뚫을 수 없는 난관은. .

아직 이르다는 생각이 든다 쌩키. [ ]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.3. View

그림 73. Menu View

는 환경과는 다른 메뉴가 나오며 여기서는 편집 환경의 메뉴이다 아이콘을View Menu C-SPY View .

생성하기도 하고 윈도우에서 사라지게도 하는 토글 스위치이다.

메시지 윈도우를 활성화'Messages'

프로젝트가 들어 있는 윈도우를 활성화'Workspace'

아이콘을 선택 할 수 있으며 스위치이다 상단 과 하단 항목이 있는'Toolbars' Toggle . Main( ) Debug( )

데 항목은 편집환경에서는 나타나지 않는다Debug .

그림 74. Main/Debug Tool Bar

는 통합 개발 환경 오른쪽 하단에 기본 상태를 한다 한번은 선택되고 한번'Status Bar' IED( ) Display .

은 된다 만약 편집 소스편집 윈도우가 활성화 되어 있다면 현재 커서의 위치가 첫 번째 적Disable .

색 동그라미처럼 나오게 되고 키보드의 소문자 겹쳐 쓰기 키가Cap Lock( / ), Number Lock, Insert( )

눌러지면 두 번째 적색 동그라미처럼 디스플레이 된다 코딩할 때 역시 보이게 하는 것이 좋겠다. .

그림 75. Status Window

Page 78: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 78

5.4. Project

그림 76. Menu Project

안에 프로젝트를 생성하고 파일을 프로젝트에 등록 할 때 사용'Add Files .' Workbench……

프로젝트 안에 새로운 그룹을 생성한다 은 기본적으로'Add Group .' . Group 'Debug', Release'……

항목 아래로 생성된다 그림 의 예 에서는 를 생성한 것을 보였다. [ : Add Group ] Document Folder .

그림 77 의 예. Add Group

Page 79: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 79

은 기본적으로 설정되는 이외의 항목을 추가 하는 것으'Edit Configuration .' 'Debug', Release'……

로 왼쪽의 에서 항목을 확인 할 수도 있고 를 눌러 새로이 추가가 가능하다'Configuration' 'New' .

그림 78 추가 예. Configuration

처음에는 선택 할 수 없지만 에서 프로젝트 생성 후 활성화 되는데 이때부터'Remove' Workspace

삭제가 가능하기 때문이다 마우스 오른쪽 버튼의 의 과 동일하다. Pop-up Menu 'Clean' .

새로운 프로젝트를 생성한다 프로젝트의 구분은 책갈피처럼 생긴 하단의'Create New Project .' .……

탭을 이용한다.

버전 아래의 프로젝트를 등록 할 때 사용된다 확장자는 로'Add Existing Project .' V3.10 . *.ewp……

되어 있으며 버전에서 주로 사용된 프로젝트를 에 등록 할 때 사용한다2.28A Workspace .

항목은 통합 환경에서 코드와 을 연결해 주는 중요한 다리 역할을 하며'Options .' AVR Target……

여러 가지 선택 항목이 있다 엔지니어와 코딩 개발자는 보다 정확히 이 부분을. Firmware Software

익혀야 한다 이하의 항목을 보자. 5.4.1

'Make'( 컴파일 된 오브젝트 코드를 이용하여 링크 동작을 행한다 는 의 약어로) . Xlink Cross Link

컴파일러로 생성된 소스코드의 을 서로 연결 시켜 주는 역할을 한다 링크를 거치고 코드Table . Hex

생성기의 유틸리티를 거치게 되면 기계어 코드가 만들어 진다.

'Compile'( 은 언어로 되어 있는 소스 코드를 링크로 보내 주기 위해 변수와 함수 그리고 해당) C

동작을 매크로 어셈블리어로 변경해 준다 물론 이때의 변형된 어셈과 니모닉코드는 에서 처리가. AVR

가능한 소스코드가 된다.

은 소스 코드를 컴파일과 링크를 항상 시행한다 와 은 소스코드가 다수'Rebuild All' . 'Make' 'Compile'

있을 때 수정된 코드만 컴파일과 링크를 행한다.

코드의 컴파일과 링크에 한 결과값을 다시 얻기 위해 등의 활성화되어'Clean' *.lst, *.r90, *.d90

있는 프로젝트에 한해 파일을 지운다.

도스 명령어에서처럼 일괄처리 하기 위해 파일을 만드는 이다 추천'Batch Build .' Batch Utility .……

Page 80: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 80

하는 사용법은 의 컴파일과 링크를 한꺼번에 할 때 유용하다 오른쪽의'Debug', Release' . 'Edit

윈도우는 왼쪽의 윈도우의 를 클릭했을 때 생성되며 이때 개발 환Batch Build' 'Batch Build' 'New'

경의 항목을 선택 할 수 있다 이때 원하는 항목을 선택하여 이동한 다음 의 오른. 'Edit Batch Build'

쪽으로 이동한 다음 하면 에서 원하는 작업을 수행 할 수 있다'Ok' 'Batch Build' .

에서

그림 79 상용 예. Batch Build

'Stop Build'( 컴파일과 링크를 행할 때 동작을 정지 할 수 있다 평상시에는 활성화 되지 않는) .

다.

'Debug'( 는 항목으로 넘어간다 단 이때 디버그 옵션이 정상적으로 설정 되어 있어야 하) C-SPY .

며 또 무엇보다 에러가 발생하면 안 된다.

5.4.1. Project/Option/General

는 환경에서 가장 중요한 윈도우설정이므로 어느 정도 자세히 익히도록 하자 코딩'Options' IDE .

기술은 근래에 들어와서 옵션 설정과 맞물리는 경우가 많으므로 소홀히 하는 것은 제품의(Coding)

성능과 개발자의 편의를 망각한다고 생각된다.

알나간 통합개발환경(IDE)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

는 컴퓨터를 이용하여 을 개발하는 과정에서IDE(Integrated Development Environment) Application

에디터 컴파일러 어셈블러 링크 디버그 등의 각각의 단계가 모두 하나의 프로그램 안에 통합되어, , , ,

있는 것을 나타낸다 소스 프로그램을 에디터로 작성하고 바로 컴파일러를 호출하여 컴파일과 링크.

를 거친 뒤 실행까지 시켜 볼 수 있다 기존의 에디터를 빠져나와 컴파일을 하고 디버깅 뒤에 다시.

에디터를 호출하는 불필요한 반복적인 작업을 하지 않아 개발 기간을 단축시킬 수 있다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

아트멜사의 은 년 분기 현재 의 가지'Option/General/Target' AVR 2003 4/4 ATtiny, AT90, ATmega 3

분류와 개의 종류가 있다 이 칩에 한 특성을 컴파일과 링크할 때 올바르게 참조하기 위해21 .

이라는 항목에서 현재 에서 사용되는 를 선택한다 일단 선택'Processor Configuration' Target CPU .

되면 그 사항이 환경에 적용되고 활성화해야 할 아이콘이 모습을 드러낸다 프로세서를 선택하면 확.

Page 81: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 81

장 명령어를 선택 할 수 있는 아이콘 와 비트에서 비트로 변수를 사용'Enhanced Core' 32 64 Double

할 수 있도록 해주는 그리고 가 있다'Use 64-bit Doubles' 'No RAMPZ Register' . 'Memory Model'

은 설계하고자 하는 의 내부 만 사용할 경우 외부메모리 와 연계 되어 있Target (0xFF) 'Tiny', (0XFFFF)

을 경우는 항목을 선택하면 된다 의 선택에 따라 의 메뉴가 달라진다'Small' . Processor Drop Down .

항목은 을 로 정의한 을 사용하지 않고 의'System Configuration' Option File *.xcl Tab 'System

항목에서 설정한 처럼 사용한다는 의미이다Configuration' GUI .

그림 80. Option/General/Target

는 와 그리고 사용자가 집적 만든 이름에 해'Output Directories' Debug Release EXE, OBJ, LIST

의 하위 폴더로 각각 생성된 실행파일이나 오브젝트 코드 그리고 보고서를 해당 경로에 파일들을,

저장한다.

디버그정보 코드 의 프로젝트 파일 등Executable : *.d90( ),*.a90(Hex ), *.hex, *.ini, *.asp(AVRStudio )

의 부분 마이크로프로세서가 실행할 수 있는 파일이 이 폴더로 들어간다.

등의 소스파일 개수만큼 오브젝트 파일이 보관된다Object Files : *.r90 .

소스파일 만큼 컴파일 보고서 생성 어셈블리 링크List Files : *.lst( ), *.s90( ), *.map( )

은 의 내부 함수에 관련된 사항이다 를'Library Configuration' Compiler . 'Enable bit definitions .'……

선택하면 비트 정의된 내부 파일을 시킨다 비트 정의를 코드 내에서 사용하게 되면 선택하Include .

자 은 언어 라이브러리를 지원하던가 아니면 내의 라이브러. 'Library Type' C/Embedded C++ IAR C

리를 지원해 주던가를 선택한다 주로 함수에 한 사용 설정으로 둘 중에 하나는 선택. printf, scanf

해야 한다 은 메모리에서 초기화 영역과 영역 사이를 영. 'Dynamic Memory Allocation' Stack Heap

역이라고 하는데 그 를 설정한다 다음 사항은 와 함수를 사용할 때의 해당 옵션으로Size . printf scanf

출력 입력 장치가 없는 마이크로프로세서 측면으로는 부담스러운 내부 함수이기도 하다Standard / . C

함수에 해 어느 정도 익숙해지면 개발자가 만들어서 운용하는 것이 바람직하다 지원되는 내. I/O

부 함수는 코드의 길이를 무척 부담스럽게 하기도 한다 경우에 따라서는 함수는 실행될 때 인. printf

터럽트와 원활하게 동작을 지원하지 않아서 프로세서가 정지 할 수도 있다.

Page 82: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 82

그림 81. Option/General/Library Configuration

언어에서는 동적메모리 할당으로C 과malloc 함수를 보통 사용한다 동적메모리는 사용자의 정free .

의에 의해 생성되고 소멸되는 것을 말하는데 변수를 효율적으로 관리하기 위해 보통 에서Firmware

사용한다 은 상에서 공간을 할당 받아 포인터변수에게 접근 권한을 넘기는 과정이고. malloc heap

는 이와 반 로 메모리 사용권한을 포기하는 것이다free .

Page 83: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 83

은 파일의 설정 신에 사용하기 위한 항목인데 활성화되기 해서는 우'System Configuration' *.XCL

선 에서 의 를 선택해야 된다'Option/General/Target' 'Configure System using Dialogs' Check box .

여기서는 과 의 크기를 정의하고 외부 메모리의 기타 등의Cstack Rstack RAM, ROM, Flash Memory

시작 번지를 초기화시킨다 윈도우의 밑에 있는 는 사용하지 않는 인터. 'Initial Unused Interrupt .'……

럽트 루틴에 어셈블리 언어 를 넣어 해당 인터럽트가 걸리더라도 자동 복귀RETI(Return Interrupt)

할 수 있도록 해준다.

그림 82. Option/General/System Configuration

은 으로 변수와 그리고 인터럽트 때 발생하는 임시변수를 저장하Cstack Data Stack Local Parameter

는데 사용한다 응용프로그램에 따라 다르지만 값이 작으면 된다. Over writer .

은 으로 함수를 호출 하기위해 하는 주소를 저장하는데 사용되는데 바Rstack Return Stack Return 2

이트씩 필요하다 마찬가지로 정의된 값이 작으면 된다. Over writer .

관련 정보는 스택과 같은 관련 정보는 설명서에 명시해 두었다Heap AVR Application .

알나지 알고 나면 지식( ) 도 자유 즐겨라CEO

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

몇 년 전 세계적 컨설팅 회사인 맥킨지가 한국의 들에 해 한 가지 뼈아픈 지적을 했다 한국CEO . “

의 들은 순발력이나 개인적 역량은 탁월하지만 정부나 노조를 상 하는 데 너무 많은 시간과CEO ,

에너지를 소비한다 그래서 정작 글로벌 시 의 최고경영자에게 필수인 자기개발에 투자할 여력이.

없다 이 점이 개선되지 않으면 장기적으로 한국 들의 경쟁력이 치명적으로 약화될 수 있다. CEO .”

맥킨지는 의 자기개발 요소로 주로 핵심 임원들을 파악하고 그들과 화하는 것 현장의 소리를CEO ,

발로 뛰며 듣는 것 여러 가지 책들을 읽고 다양한 사람들과 만나 화함으로써 넓고 새로운 사고방,

식을 구축하는 것 조용히 생각하며 전략을 구상하는 것 등을 들었다, .

피터 드러커는 중소기업의 강점으로 최고경영자의 조직 파악력을 지적했다 중요 직책을 맡은 직원.

Page 84: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 84

들의 야심과 불만과 생각과 행동방식 장점과 한계 잠재력을 기업보다 잘 파악하고 있어 이것이, ,

엄청난 플러스 요소로 작용한다는 얘기다.

기업이 커질수록 최고경영자는 이 감각을 잃지 않기 위해 필사적으로 자신만의 방해받지 않는 자유‘

시간 을 만들어야 한다 이 자유시간은 먼저 주요 임원들과 지속적으로 만나 화하고 서로를 자극’ . ,

하는 데 투자되어야 한다 조직이 커지고 일이 많아질수록 사람을 세워 일을 위임할 수밖에 없는데. ,

일은 위임해도 사람은 그냥 방치해두면 안 된다 끊임없이 핵심 스태프의 필요에 귀를 기울이고 그. ,

들의 육체적 정신적 컨디션을 체크하며 그들을 격려하고 도전하고 배려해야 한다 최고경영자는 무· , .

슨 일이 있어도 사무실에만 틀어박혀 있어서는 안 된다.

그리고 는 조직 외부를 위한 시간 즉 최근의 시장 고객 기술CEO , · · ·

정보를 접하기 위한 시간도 어떻게 해서든 확보해야 한다 사외이.

사나 고문 등을 두어 외부 의견을 널리 반영하여 시야를 넓혀야,

한다 의 생각의 넓이와 속도 깊이에 따라서 조직의 운명이. CEO ,

결정된다 끊임없이 학습하고 낡은 것을 탈 학습하는 습관을 들. , ( )脫

여야 한다 어떤 시점에서 배움이 끝난다고 생각하거나 배움은 학. ,

교에서나 이루어지는 것이라는 생각은 아예 접어두라.

에게 특히 중요한 배움은 인간에 한 학습이다 성공적 기업인인 사장은 사업 초기엔 경영에CEO . B

관한 책을 주로 읽었는데 요즘은 인간을 이해하는 데 도움을 주는 책들을 주로 읽는다 자신을 파악, .

하고 타인을 이해하고 예술과 철학과 문학과 역사에 한 폭넓은 배움이 필요하다 많은 사람들을, , .

이끄는 책임자라면 이미 일을 경영하고 있는 게 아니라 인생을 경영하는 것이다 당신의 자기개발.

시간관리는 어떠한가?

한홍 온누리교회 목사 한동 겸임교수 한홍의 리드십 강좌 조선일보 년 월 일( · · ) 2003 12 16

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 85: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 85

5.4.2. Project/Option/ICCAVR

항목은 언어와 만 해당된다 언어와 코드 사이즈 그리고 전처'Option/ICCAVR' C Embedded C++ . C

리기 등에 한 것이 있는데 설정할 때 컴파일러의 성능과 특성이 잘 나타나도록 해야 한다.

는 와 언어에 한 항목인데 다음과 같다'Option/ICCAVR/Language' C C++ .

언어 해석을 하지 않는다Disable Embedded C++ Syntax : Embedded C++ .

확장 코드를 해석하지 않는다Disable Extension : .

언어의 문법과 명령어를 엄격하게 적용Strict ISO/ANSI : ANSI C .

특별한 경우가 아니라면 선택하지 않는다Char is signed char : .

그림 83. Option/General/System Configuration

Page 86: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 86

는 와 레지스터 사용을 더욱 유연하게 하기 위한 옵션이다'Option/General/Code' Memory .

에 관련된 사항Memory Utilization

우선 영역의 상수와 문자 변수 저장 공간을 확보하는 옵션Place String literals : RAM .……

Place aggregate Initializers in flash memory :

Utilize inbuilt EEPROM :……

Force Generation of global and static variables :

에 관련된 사항Register Utilization

Number of Register :……

Use ICCA90 :……

그림 84. Option/ICCAVR/Code

Page 87: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 87

은 소스를 컴파일 할 때 코드를 효율적으로 만들기 위한 옵션이다'Option/ICCAVR/Optimization' C .

항목은 우선인가 우선인가를 제외 하고도 개 정도가 에는 더 있는 셈인데 다음Size Speed 5 V2.28a

과 같다.

공통적으로 사용된 코드 함수 계산식 등 를 별도로 묶거나Common sub-expression Elimination : ( , )

삭제한다 과 를 선택했을 경우는 소용없다. None Low .

함수를 인라인으로 변환해 주어 코드사이즈는 줄어들지 않지만 시행 시간을 단축Function inlining :

하는 효과가 있다 상태에서만 실행되며 그 이외는 소용없다. High level .

반복적으로 실행되는 루틴 속에서 연산의 결과가 항상 같은 경우에 이 표현식을 고Code Motion :

정코드로 만들어 주는 역할을 한다 반복적인 계산을 피할 수 있도록 해 주므로 코.

드 길이와 실행 속도에 영향이 있다 상태에서만 실행되며 그 이외는 소. High level

용없다.

함수를 자주 호출 하는 개념으로 전환하기 때문에 실행속도를 높여 주지만Cross Call(1~5) :

이 증가하고 코드의 길이는 늘어 날수 있다 활성화 되는 번호는Rstack . Rstack

의 사용량을 감소시킬 때 쓰이며 까지 가능하다 기본은 번이며1~5 . 2 High

상태에서만 유효하다level .

동일한 어드레스를 사용하는 다발의 변수를 해준다Clustering of Variable : Optimization .

번 항목 을 기본적으로 사용하게 된다Always do Cross Call Optimizatior : Cross Call(2 ) .

그림 85. Option/ICCAVR/Optimization

Page 88: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 88

은 출력으로 생성되는 파일에 관한 옵션이다'Option/ICCAVR/Output' .

프로그램 개념이 아니고 개념으로 오브젝트 코드를 만들어 준다Make Library Module : Library .

모듈의 이름을 집적 입력한다Object Module Name : .

언어로 디버깅을 하고 싶을 경우 선택한다 또는General Debug Information : C . C-SPY

와 인터페이스 하여 로 디버깅할 때 는AVRStudio C Source Level

반드시 선택하자 단 코드만을 생성 할 때는 필요 없다. Hex .

파일로 생성된 파일에서 메시지 부분을 빼어 사이즈를No Error Message in Output Files : UBROF

줄여준다.

그림 86. Option/ICCAVR/Output

Page 89: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 89

는 프로젝트를 컴파일 한 다음 폴더로 출력되는 보고서를 어떤 모양으로'Option/ICCAVR/List' LIST

할 것인가에 한 옵션이다 아무것도 선택하지 않으면 폴더에는 파일이 전혀 생성되지 않. LIST *.lst

는다 저자는 이 항목에서 제일 추천해 주고 싶은 것은 이다 언어로 작. 'Assembler mnemonics' . C

성되지만 최종은 어셈블리로 변경되므로 좀 이상하다 싶으면 확인이 필요하다.

컴파일 할 때 사용되었던 옵션과 행 번호가 있는 소스 그리고 사용된 코드와 메모리C List File : C

사이즈를 알려 준다 마지막으로 에러와 경고 메시지의 개수를 나타나는데 전체적으로.

올바른 크기와 메모리 사용에 한 보고서는 아니다 를 거처야 정확히 알 수 있. Link

다.

소스코드를 어떤 어셈블리 코드로 변경했는지를 추가해준다Assembler mnemonics : C .

디버그나 와는 상관없는 내부적으로 진단 코스를 거친 보고서를 만든다Diagnostics : C-SPY .

소스를 어셈블리 언어로 변환하여 의 파일로 만든 다음 폴더에 저장Assembler File : C *.S90 LIST

한다 여기다 옵션을 추가 하면 어셈블리 언어 사이에 언어 소스도. 'C Source' C

행 번호와 함께 출력된다 물론 언어는 주석 처리되어 최종적으로 파일은 어셈. C

블리와 문제를 일으키지 않는다.

그림 87. Option/ICCAVR/List

는 언어의 전처리기 에 해당되는 사항이다'Option/ICCAVR/Preprocessor' C (Preprocessor) .

헤드 파일이 있는 경로를 추가 할 때 사용한다Include Paths : .

기본설치경로 경로에 있을 경우#include <ina90.h>// IAR EWAVR AVR INC\ \ \ \

이럴 경우 에 경로를 놓지 않으면 참조 에러발생#include "C: test ina90.h" // 'Include Paths'\ \

이럴 경우도 마찬가지로 참조 에러발생#include <"C: test ina90.h"> //\ \

전처리기에서 단어처리 항목에 해당된다 가 가지고 있는 고유의 것이며Define Symbols : . ANSI C

모든 컴파일러는 이 항목이 지원된다 언어에 한 자료. ANSI C

마이크로프로세서 응용 엔지니어를 위한 는(PAT_APP_D001_ ANSI C.pdf)

에서 참조하면 되겠다www.icbank.com .

Page 90: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 90

전처리기 항목만 따로 추려서 파일로 생성해 주어야 하는데 버Preprocessor out to File : V2.28A

전을 기준으로 생성되지 않는다 버그라고 판단되는데 시간을 두고 확인.

해야겠다.

추가 옵션을 기입하는 것으로 컴파일러를 구입하게 되면 제공되는Additional Options : “AVR IAR

표지가 노란색인 단행본에 나온 옵션 문장을 사Compiler Reference Guide”

용하여 기입해야 한다.

그림 88. Option/ICCAVR/Preprocessor

다음의 소스 예제는 와 항목을 전처리기에 넣어 처리한 예를 보인 것이다DEBUG TEST .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#ifdef DEBUG 아래 문장은 컴파일 된다// . If Define

test1=1;

#endif

아래 문장은 컴파일 되지 않는다#ifndef TEST // . If Not Define

test2=2;

#endif

while(2004){

point_num++;

*ptr++=point_num;

sum =test1+test2;

sum -=test2;

sum *=test1;

}// end while

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

그림 처럼 설정하고 위의 프로그램을 컴파일 한 뒤의 보고서[ : Option/ICCAVR/Preprocessor] .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 91: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 91

27 #ifdef DEBUG 와 같다 는 전처리기에 있으므로 컴파일 된다// If Define , DEBUG .

28 test1=1;

₩ 00000008 E001 LDI R16,1

₩ 0000000A 9300 . STS test1,R16……

29 #endif

과 같다 가 전처리에 있으므로 컴파일하지 않는다30 #ifndef TEST // If Not Define . TEST .

31 test2=2;

32 #endif

33 while(2004){

34 point_num++;

₩ ??main_0:

₩ 0000000E .... LDI R26,LOW(point_num)

₩ 00000010 .... LDI R27,(point_num) >> 8

중략...

35 *ptr++=point_num;

₩ 00000018 9100.... LDS R16,point_num

중략...

₩ 0000004A CFE1 RJMP ??main_0

39 }// end while

41 }// end main

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 92: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 92

은 에러 나 워닝 을 좀더 자세히 관찰하여 소스에 표시해'Option/ICCAVR/Diagnostic' (Error) (Warning)

주는 기능인데 프로그램을 운영하면서 총체적으로 에러를 평가하지는 못한다 예로 다음과 같이 하.

면 코드의 위치 파일이름 행 번호 의 경고“ , ( ) : Remark[Pe236]: controlling expression is constant”

가 발생한다 괄호 안에 상수를 사용한 방법이 올바르지 않다고 경고한 것이다. .

경고를 무시하고 컴파일러하기 위해서 이라고 기록하고 컴파Suppress These Diagnostics : Pe236

일하면 에 해당하는 워닝이 무시된 메시지가 나오게 된다 다Pe236 .

수의 경고를 무시하기 위해서는 를 이용한다‘,’ . ex)Pe236, Pe123

소스코드에서 행 라인을 찾아 주며 과 도 가능하다Treat these as Remark : Warning Error .

워닝을 에러로 판단하게 해주는 옵션Treat Warnings as Error : .

워닝이 발생하면 코드를 생성하지 않는 옵션Warning Affect the Exit Code : .

그림 89. Option/ICCAVR/Diagnostic

5.4.3. Project/Option/AAVR

은 어셈블리언어만 해당 사항이 있다 어셈블리 코드도 컴파일러 측면에서 소스코드에'Option/AAVR' .

해당되므로 자신의 프로그램이 만 있다고 하더라도 프로젝트 이름을 생성하여 옵션을 설Assembler

정한 다음 해야 한다 이때 비로소 보고서와 실행 파일이 만들어 진다 어셈블리언어의 사Make all . .

용은 컴파일러의 성능을 사용하지 않는다.

5.4.4. Project/Option/Xlink

은 각각의 소스들을 컴파일을 한 뒤 만들어진 코드를 이용하여 그들의 함수길이'Option/Xlink' *.obj

시작 번지수 변수이름 등에 한 정보를 가지고 한데 묶어주는 역할을 한다 그래서 는 문장, . Xlink

에 한 검사보다는 메모리 함수의 지정과 같은 배치에 한 에러가 많이 발생한다Location .

은 링크후의 결과 파일을 출력하기 위한 옵션으로 코드나 파일의'Option/Xlink/Output' Hex Debug

확장자와 파일이름을 부여하고 실행파일의 을 결정한다Format .

Page 93: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 93

옵션이 활성화 되면 프로젝트이름 으로 로 되어있는 파일이름과 확장자를Output File : .d90 Default

바꿀 수 있다 보통은 그 로 사용하거나 저자처럼 로 바꾸어도 사용할 수 있. *.Hex

다.

항목은 출력 형식을 지원하는 것으로 에서 소프트웨어 적으로 을 흉내 내기 하Format : C-SPY AVR

기위한 설정으로 파일형식이 있어야 한다 시뮬레이터만을 사용하기 위해서는UBROF .

를 설정하면 된다 는 를 실행하면서'Debug Info' . 'Debug info with Terminal I/O' C-SPY

시리얼 윈도우와 인터페이스하기 위한 형식으로 변환해 준다 항목. 'Other/Output Format'

은 다양한 출력 파일을 지원하기 위해 준비되어 있지만 를 선택해야'Intel-Standard' AVR

가 탑재 되어 있는 하드웨어에 포팅 할 수 있다 는 메모리 어드MPU . 'Intel-Extended' 64K

레스 이상일 때 선택한다 는 어떤 것을 선택해도 마지막. 'Format Variant' Intel Hex Code

를 추가해 준다 은 을 링크할 때 전부 가지고 오는가 아니면 컴파. 'Module-Local' Symbol

일에 관련된 것만 가지고 오는가 아니면 전부 무시하는가에 한 것이다.

위쪽 상단의 을 클릭하면 로 설정된 값을 바꾼다'Factory Setting' Default .

그림 90. Option/Xlink/Output

은 링크를 실행 시킬 때 참조하기 위한 문자를 기입하는 항목으로 한 줄에 한'Option/Xlink/#define'

문장만 기입해야 한다 링크 할 때 에 있는 문장 항목이 없으면 가 발생한다. #define Error .

는 링크할 때 에러와 워닝에 관계된 것으로 특정부분만 꼼꼼히 그리고 느'Option/Xlink/Diagnostics'

슨하게 검사 설정이 가능하다.

항목을 선택하면 에러가 발생하지 않아도 관련 정보가 파일 링All Ways Generate Output : *.MAP

크 보고서에 출력된다.

링크할 때 자주 발생하는 메모리 중첩에 해당하는 경고를 에Segment Overlap Warning : Overlap

러로 바꾸어준다.

변수형 검사를 하지 않고 건너 띄는 것으로 프로그램이 완벽하다고 생No Global type Checking :

각할 때만 지정하자.

항목은 어드레스와 관련된 에러와 워닝을 검사하는 것으로 다음과 같다'Range Check' .

Page 94: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 94

검사 후 에러 생성Generate Errors : Address Range

검사 후 에러 발생하면 으로 변경 후 생성Generate Warnings : Address Range Warning

어드레스와 관련된 에러와 워닝을 무시한다Disable : .

는 특정 에러나 워닝을 걸러주어 출력해주는 기능이다 특'Option/Xlink/Diagnostics/Warning Error' .

정 경고를 무시하고 컴파일러하기 위해서는 에 이라고 기록하고'Suppress These Diagnostics' Pe236

컴파일하면 에 해당하는 워닝이 무시된 메시지가 나오게 된다 반 로 기록하게 되면 링크의Pe236 .

결과에서 특정 워닝과 에러를 찾아 주는 와 가 있'Treat these as Warnings' 'Treat these as Errors'

다.

그림 91. Option/Xlink/Diagnostics

는 파일을 만들 때 보고서에 한 항목으로 항목을 선'Option/Xlink/List' Map 'Generate link Listing'

택하지 않고 출력하면 다음과 같다 파일이름은 프로젝트의 이름과 같고 확장자는 이 된다. *.MAP .

파일을 잘 활용하면 양산에 한 관리와 의 특성에 다른 를 만들 수 있다 개Map Target Document .

발과 양산을 할 때 여러 가지 모델을 관리하기가 어렵다면 측면에서 포팅 버전을 관리하라Firmware

고 적극 추천한다 다음은 프로젝트 이름으로 만들어진 파일의 중요사항을 설명한 것이다. Map .

// =====================================================================

의 내용과 설명// TSTS401.MAP

# IAR Universal Linker V4.53O/WIN 링크의 버젼//

# Target CPU = A90 종류// MPU

링크에서 선택한 모든 옵션을 보여준다 생략// . ...

은 사용된 레지스터를 보여준다// RUNTIME MODEL .

R10 = REG

R11 = REG

중략...

R8 = REG

Page 95: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 95

R9 = REG

__64bit_doubles = disabled

__cpu = 3

__cpu_name = AT90Mega128

__enhanced_core = enabled

__has_elpm = true

__memory_model = 2

__no_rampd = enabled

__rt_version = 2.30

은 변수 함수 메모리의 어드레스 시작 번지수와 크기에 해 알려 준다// MODULE MAP .

에 관련된 보고서는 잘 알고 있어야 이 된다// MODULE MAP, SEGMENTS IN ADDRESS ORDER Skill up .

SEGMENT SPACE START ADDRESS END ADDRESS SIZE TYPE ALIGN

======= ===== ============= =========== ==== ==== =====

INTVEC CODE 00000000 - 00000003 4 com 1

?FILL1 CODE 00000004 - 0000008B 88 rel 0

CODE CODE 0000008C - 00000177 EC rel 1

INITTAB CODE 00000178 - 0000017E 7 rel 0

ABSOLUTE (ABS) DATA 0000001C rel 0

CSTACK DATA 00000100 - 0000011F 20 dse 0

RSTACK DATA 00000120 - 0000013F 20 dse 0

NEAR_I DATA 00000140 dse 0

NEAR_Z DATA 00000140 - 00000143 4 rel 0

항목은 가장 많이 보는 정보일 것이다// END OF CROSS REFERENCE .

247 bytes of CODE memory (136 range fill)

68 bytes of DATA memory

Errors: none Warnings: none

// ======================================================================

Page 96: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 96

항목을 선택하고 에서의 가지는 다음 사항에 따'Option/Xlink/List/Generate link Listing' 'Symbols' 3

른다.

출력물에는 옵션 설정상태 사용된 코드와 메모리에 해서만 보여준다None : Map , .

사용 와 에 관련된 어드레스 맵을 리스트 한다Symbol Listing : Module , Code Data .

사용 모듈을 포함하여 출력 할 수 있는 모든 링크 보고서Module Map : .

출력할 때 유용하게 사용할 수 있다 당 라인수를 나타낸다Lines/Page : . 1 Page .

그림 92. Option/Xlink/List

알나간 에러 체크 방법

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

에서 간단한 에러 검출방법으로는 비트에 의한 방법과 에 의한 에러 검출Firmware Parity check-sum

방법이 있지만 비트에 의한 방법은 데이터 중에 한꺼번에 비트나 비트 짝수로 변하게 되면Parity 2 4

검출을 할 수 없고 에 의한 방법도 한 바이트에서 다른 바이트에서는 로 에러가, check sum +1, -1

생기는 경우의 에러는 검출 되지 않는다 이들 방법으로는 에러를 검출해 낼 수 있는 확률이 단히.

낮아 정확한 데이터를 주고받고 하는 상황에서는 올바르지 않다.

는 시리얼 전송에서 데이터의 신뢰성을 검증하기 위한 에러 검출 방CRC(Cycle Redundancy Check)

법의 일종이다 이 방법은 높은 신뢰도를 확보하며 에러 검출을 위한 오버헤드가 적고 랜덤 에러나. ,

버스트 에러를 포함한 에러 검출에 매우 좋은 성능을 갖는 것을 특징으로 한다 보통 가지 종류가. 2

사용 되는데 마이크로프로세서와 같이 간단한 용도에서는 이 사용되고 이보다 더욱 정확한CRC-16 ,

에러 검출이 필요한 경우에는 를 보통 사용한다 에서 사용되는 과 같은CRC-32 . PC ZIP, ARJ, RAR

압축 프로그램이나 플로피 디스크 등의 데이터 검증 용도에 널리 사용되고 있다.

의 알고리듬은 비트의 주어진 정보가 있을 때 이를 비트만큼 자리를 올리고 미리 약속한CRC n , k k

비트의 키 값으로 나누면 비트의 나머지가 남게 된다 송신측에서는 원래의 정보 비트를 비트 자r . k

리 올린 것에 비트의 나머지를 더해서 비트의 데이터를 만들어 보낸다 수신측에서는 수신된r n+r .

비트의 데이터를 키 값으로 나누어 보고 나머지가 정확히 이 되는지를 검사하면 된다 이 때n+r 0 .

가 비트이면 비트이면 가 되고 키 값으로는 수학자들에 의해 정해진 값을k 16 CRC-16, 32 CRC-32

Page 97: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 97

주로 사용한다 에는 에는 이 많이 사용된다 그리고 비트의. CRC-16 0x8005, CRC-32 0x04c11DB7 . r

나머지를 Frame Check 라고 부른다Sequence(FCS) .

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

는 첨부 파일의 경로와 라이브러리 추가에 관련된 옵션이다'Option/Xlink/Include' .

라이브러리 소스가 있는 폴더 경로를 입력하는 것으로 한 줄에 한 개의 경로를 입Include Paths :

력한다.

링크할 때 첨부하는 라이브러리로 를 선택하면 입력된 경로의 해Library : 'Override Default Library'

당 파일이 링크할 때 추가 된다 을 설치한 경로의 폴더에는 여러 가지 라이. EWAVR LIB\

브러리가 제공되고 있다 밑의 은 라이브러리 파일에 있는. 'Ignore CSTARTUP in .'……

코드를 사용하지 않는 선택 항목이다 보통 자신이 에 맞게 를 만들었Start up . Target BIOS

다면 이 항목을 선택하여 두 번 정의하는 것을 피해야 한다.

이때까지 상황에서 선택하고 결정한 옵션과 메모리 을 파일에 의Override Default : GUI Location

해 결정 할 수 있도록 해준다 에서. 'General/Target Processor .' AVR MPU……

를 선택하면 환경에 맞게 파일이 맞춤으로 되는데 자신이 스스로 고칠*.xcl

경우는 파일이름을 달리해서 기존의 것을 잘 보관해 주어야 한다 문으로. Text

되어 있기 때문에 변경하기는 쉬우나 매뉴얼을 사용하지 않고서는 복잡하고 종

류가 많아 이해하기 어려워 쉬운 일은 아니다 자동차로 빗댄다면 파일. *.XCL

을 사용하는 것은 수동 으로 기어를 변속한다고 하겠다 옵션에 관한 종(Stick) .

합 판이라고 할 수 있는 파일은 설치경로*.xcl “ EWAVR AVR SRC\ \ \

에 있으며 에는 개 파일이 있다template” V3.10A 55 .\

그림 93. Option/Xlink/Include

는 링크할 때 오브젝트 코드와 라이브러리 그리고 프로그램을 링크할 때 사용하'Option/Xlink/Input'

는 라고 할 수 있다Utility .

일반적인 방법으로 링크에 관련된 모든 것 수행Inherent :

실행파일 생성할 때 참조 하지 않으며 특정 소스에만 옵션을 정할수도Inherent, No Object Code :

Page 98: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 98

있다 프로젝트 윈도우의 소스에서 마우스 오른쪽 버튼 이용. .

라이브러리 모듈을 실험할 때 사용한다Load as Program : .

코드를 실험할 때 사용한다Load as Library : CSTARTUP .

그림 94. Option/Xlink/Input

알나지 비즈니스 심리학 실패에 한 두려움으로 책임 회피[ ]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

팀장님 이번 일 시작할까요“ ?”

현주씨가 양 팀장에게 새 프로젝트 기획안을 실행에 옮겨도 될지 물어봤다.

시작이 반이기는 한데 한 번 엎어진 물을 주워 담을 수도 없고 현주씨 이 일 책임질 수 있어“ , , ?”

현주씨는 맥이 빠져버렸다 아무도 예측할 수 없다는 걸 알지만 팀장이란 사람이 이렇게 애매. 100%

모호한 선문답만 하고 있으면서 책임지라는 말만 하니 말이다 양 팀장은.

팀원의 못마땅한 일을 지적할 때에도 그랬다 집에서 키우는 개가 있는. “

데 처음에 버릇을 잘못 들였더니 아주 개판을 쳐서 말이야 팔아버려야.

하나 이런 식으로 우회적으로 돌려 말하니 도 체 무슨 의중으로 그런.” ,

말을 했는지 팀원들끼리 따로 모여서 토론을 하기 일쑤다.

관리직에 있는 사람 중에 이렇게 모호한 표현을 즐기는 경우를 본다 모.

호하게 표현하면 해석의 여지를 다양하게 줄 수 있기 때문에 말을 하는

입장에서 볼 때에는 안전판을 두는 것이나 다름없다 나중에 결과를 본.

뒤 둘러댈 수 있는 여지를 남겨둘 수 있기 때문이다.

양 팀장과 같이 모호한 표현을 자주하는 사람들은 실패에 한 두려움이 과도하게 많은 경향이 있

다 애매한 표현을 해서 도망갈 구멍을 만들어 놓고 지금의 불안을 모면하려는 것이다. .

정치하는 사람이라면 절묘한 비유적 표현이 그의 존재 가치를 높이는 길이겠지만 실제로 일을 결정

하고 구체적인 금전거래가 오가는 비즈니스의 영역에서 이런 모호한 표현은 오해의 여지만 만들 뿐

이다 직원들을 통솔해야 하는 관리자는 최 한 구체적으로 분명한 의사표현을 하는 것이 전체 조직.

을 매끄럽게 이끌어가는 매우 중요한 일 중의 하나다 선장의 애매한 말 한 마디 때문에 배가 산으.

로 가는 수가 있다.

하지현 용인정신병원 과장( [email protected] 조선일보) 2004. 1. 14.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Page 99: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 99

은 링크를 거친 뒤에 실행속도나 옵션에 따라 사용하지 않는 메모리 공간'Option/Xlink/Processing'

이 생길수도 있는데 이때를 어떤 값으로 넣을 것인가에 한 선택이다 보통은 이나 값이 강. ‘0’ NOP

제적으로 채워졌다 영역이 메모리 이라면 가 유리하다 초기화 할 때도 쉽고. Program Flash 0XFF .

특별하게 퓨즈를 건들지 하지 않아 플래시메모리의 수명을 늘릴 수 있다. 'Fill Unused Code

항목을 선택하면 에 있는 비트 값으로 채워진다 은 가지가Memory' 'Fill' 8 . 'Generated Checksum' 4

있는데 생성된 기계어코드의 마지막에 논리적인 자리 수는 늘어나지 않음 만 할 것인가 아니면Sum( )

의 보수 의보수를 취하는 도 할 것인가를 선택하는 것이다1 2 CRC Check .

정해진 바이트를 자리 올림 없이 연속해서 더한 결과 값Arithmetic Sum :

괄호 안에 있는 다항식 사용CRC16(0x11021) : CRC

괄호 안에 있는 다항식 사용CRC32(0x4C11DB7) : CRC

다항식을 집적 입력CRC Polynomial :

보수를 취하는 방법을 나타내는데 의 보수 의 보수 현 상태 를 선택 할 수Compliment : 1 , 2 , (As Is)

있다.

순서를 정할 때 상위 비트부터 할 것이지 하위 비트부터 할 것인지 선택 하는 것으로Bit Order : 3)

와MSB(Most Significant Bit) 4) 가 있다LSB(LSB : Least Significant Bit) .

그림 95. Option/Xlink/Processing

알나간 CRC

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

는 같은 동기식 전송의 경우에 많CRC(Cycle Redundancy Check) HDLC(High Level Link Control)

이 사용하는 오류 검출 방식으로 원리는 보내는 데이터를 고차의 메시지 다항식으로 간주하고 정해,

진 생성다항식으로 나눈 후 계산한 값의 나머지 를(Checking Polynomial) (BCC:Block Check Code)

데이터 다음에 추가하여 송신한다 수신측은 보낼 때 계산한 생성다항식과 동일한 다항식을 이용하.

여 계산 후 나머지가 없으면 전송된 데이터가 정확하다고 판단한다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3) 용어도 있다MSB(Most Significant Byte) .

4) 용어도 있다LSB(Least Significant Byte) .

Page 100: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 100

5.4.5. Project/Option/C-SPY

는 장비와 인터페이스 혹은 를 소프트웨어 흉내 내기 위한 두 가지가 있는데 용'Option/C-SPY' MPU

어로는 전자를 후자를 라 한다Emulator Simulator .

는 디버그의 환경을 결정하므로 가장 먼저 선택해야하는 항목이다 는'Option/C-SPY/Setup' . 'Driver'

다음 를 기준으로 다음 사항이 있다V3.10A .

를 통하여 모니터 운용 파일이 관여한다CC ROM-Monitor : RS-232 , ravrcc.cdr .

디버그 장비와 인터페이스 드라이브 파일ICC200 Emulator : , eavr.cdr

디버그 장비와 인터페이스JTAG Emulator : JTAG , javr.cdr

을 소프트웨어적으로 운영할 수 있다Simulator : AVR . savr.cdr

사용자가 환경을 설정할 수 있다Third-Party Driver : .

나 를 실행했을 때 소스 코드의 메인 함수부터 시작 할 수 있도록 해Run to : Emulator Simulator C

준다 코드 등의 사전 실행 프로그램은 한 뒤에 함수 처음으로 온다. Startup Run main .

장비와 시뮬레이터의 기본 설정에 한 것으로 매크로 파일로 명령어와 보고 싶은 변수Setup File :

등을 일괄 처리할 수 있다 보통 사용자가 제작한 매크로 파일을 사용하고자 할 때 선.

택한다 확장자는 로 되어 있다. *.mac .

에 한 정보를 정의한 파일인데 레지스터와 인터럽트 벡터 정Use Device Description File : MPU

보가 로 기록되어 있다 새로운 가 가Text . MPU IAR Compiler

되기 전에 나온다면 이를 수정하면 된다 설치경로Upgrade . " avr\

에 기준으로 개의 파일이 있다config" V3.10A 36 *.ddf .\

그림 96. Option/C-SPY/Setup

//=================================================================

설치경로 파일 내용// avr src cspy eeprom.mac\ \ \ \

Page 101: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 101

를 이용하여 의 기능을 수행 할 수 있도록 해준다 안에// C-Spy EEPROM segment . EEPROMseg()

매크로를 사용자가 미리 설정해야 한다__openFile() .

var readfile,temp,i,byte,l,ile,row,CHKSUM,add,address;

var RECLEN,OFFSET,RECTYP,field,BA,USBA,ULBA,linear;

// This macro function reads two ASCII hexadecimal bytes from the output

// file and converts them to one byte of binary that is returned.

make_hex(){

l = temp =(unsigned char)0;

for(ile=0; ile < 2; ile++) {

temp = __readFile(readfile);

if(temp >= 48 && temp <= 57)l = (l << 4) + temp - 48; // 1 - 9 in ASCII

else // : in ASCII

if(temp == 58)ile = 2;

else // A - F in ASCII

if(temp >= 65 && temp <= 70)l = (l << 4) + temp - 65 + 10;

else // end of row ASCII signs

if(temp == 13 || temp == 10)l = 0;

else

message "₩nWrong input from file: ",temp:%X;

}

return(l);

}

EEPROMseg(){

// Open the intel-extended output file.

__openFile(readfile,"C:₩₩Calls₩₩general₩₩a90v1.40B₩₩1165₩₩Debug₩₩Exe₩₩hugeconst.

a90", "rb");

CHKSUM = (unsigned char)0;

// The address at which a particular byte is loaded in the EEPROM memory is

// calculated as BA+OFFSET+byte(study an Intel Extended specification).

while(RECTYP != 1) {

temp = (unsigned char)make_hex();

CHKSUM += temp;

field++;

// Set the length of the record.

if(field == 2)i=RECLEN = temp;

// Set the offset.

if(field == 3){

if(linear == 1){

OFFSET = (unsigned long)temp<<8;

Page 102: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 102

temp = (unsigned long)make_hex();

OFFSET += temp;

CHKSUM += temp;

byte = (unsigned long)byte;

}

if(linear == 0){

OFFSET = (unsigned int)temp<<8;

temp = (unsigned int)make_hex();

OFFSET += temp;

CHKSUM += temp;

byte = (unsigned int)byte;

}

}

// Set the type of record.

if(field == 4)RECTYP = temp;

if(field > 4 && i > 0){

// Data Record: Write a byte to the right address

if(RECTYP == 0){

if(linear){

// MOD 4G

address = (unsigned long)BA + (unsigned long)OFFSET + (unsigned long)byte;

}

else{

// MOD 64K

add = (unsigned int)OFFSET + (unsigned int)byte;

address = (unsigned long)BA + add;

}

__writeMemoryByte(temp,address,"EEPROM");

byte++;

}

// Extended Segment Address Record

if(RECTYP == 2){

linear = 0;

USBA = (unsigned long)temp<<8;

temp = (unsigned long)make_hex();

USBA += temp;

CHKSUM += temp;

BA = (unsigned long)USBA<<4;

i--;

}

// Extended Linear Address Record

Page 103: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 103

if(RECTYP == 4){

linear = 1;

ULBA = (unsigned long)temp<<8;

temp = (unsigned long)make_hex();

ULBA += temp;

CHKSUM += temp;

BA = (unsigned long)ULBA<<16;

i--;

}

i--;

}

// Checksum byte and end of line byte

if(field > 4 && i == 0){

row++;

temp=make_hex();

CHKSUM += temp;

if((unsigned char)CHKSUM != 0)message "₩nBit error on row ",row;

CHKSUM = (unsigned char)0;

temp=make_hex();

field=byte=0;

}

}

__closeFile(readfile);

}

//=================================================================

알나간 시뮬레이터(Simulator), 에뮬레이터(Emulator), C-SPY

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

에뮬레이터는 호환되지 않은 다른 기종의 기능을 모방하여 작동시키는 것으로 에서는 특정Firmware

마이크로프로세서의 내부 구조를 하드웨어적으로 흉내 낸다는 의미이다 장비를 지칭하기도 하며 개.

발의 편의를 위해 장비와 소프트웨어가 실시간 인터페이스 하게 되어 있다 시뮬레이터는 실제로.

보드를 가지고 있지 않더라도 소프트웨어적으로 흉내 낼 수 있는 것을 지칭하며 프로그램만Target

으로 구동되는 것이 주류이다 는 컴파일러 전 제품에서 각각의 마이크로프로세서마다 지. C-SPY IAR

원 할 수 있도록 하는 소프트웨어로써 로도 동작되고 장비와 인터페이스 하여 를Simulator Emulator

지원하기도 한다 예로 은 다음의 드라이브가 디버그와 에 내장되어 있. AVR Compiler EWAVR C-SPY

다.

SAVR V3.10A IAR C-SPY Simulator driver

EAVR V3.10A IAR C-SPY ICE200 Emulator driver

JAVR V3.10A IAR C-SPY JTAG ICE driver

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

//====================================

Page 104: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 104

설치경로 파일avr config iom128.ddf\ \ \

;; * Definitions of I/O register description file, interrupt/exception vectors, interrupt control

registers, I/O register reset values.

;; * Copyright 2001-2003 IAR Systems. All rights reserved.

;; * $Revision: 1.13 $

[CORE]

AVR

[CHIP]

ATmega128

;; I/O Register description file ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[SfrInclude] 를 나타냄// SFR Include

File = iom128.sfr

;; Memory information ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Used to define address zones.

;;

;; Name may be almost anything

;; AdrSpace one of CODE, DATA or EEPROM

;; StartAdr start of memory block

;; EndAdr end of memory block

;; AccType type of access, read-only (R) or read-write (RW)

[Memory] 내부 외부 메모리의 을 나타낸다// Memory Map .

;; Name AdrSpace StartAdr EndAdr AccType

Memory0 = InternalSram DATA 0x000100 0x0010FF RW

Memory1 = ExternalSram DATA 0x001100 0x00FFFF RW

;; Interrupt definitions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[InterruptList] 의 인터럽트가 전부 있다// 128 .

; Name

Interrupt0 = RESET

Interrupt1 = INT0

Interrupt2 = INT1

Interrupt3 = INT2

Interrupt4 = INT3

Interrupt5 = INT4

Interrupt6 = INT5

Interrupt7 = INT6

Interrupt8 = INT7

Interrupt9 = TIMER2 COMP

Page 105: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 105

Interrupt10 = TIMER2 OVF

Interrupt11 = TIMER1 CAPT

Interrupt12 = TIMER1 COMPA

Interrupt13 = TIMER1 COMPB

Interrupt14 = TIMER1 OVF

Interrupt15 = TIMER0 COMP

Interrupt16 = TIMER0 OVF

Interrupt17 = SPI STC

Interrupt18 = USART0 RXC

Interrupt19 = USART0 UDRE

Interrupt20 = USART0 TXC

Interrupt21 = ADC

Interrupt22 = EE READY

Interrupt23 = ANA COMP

Interrupt24 = TIMER1 COMPC

Interrupt25 = TIMER3 CAPT

Interrupt26 = TIMER3 COMPA

Interrupt27 = TIMER3 COMPB

Interrupt28 = TIMER3 COMPC

Interrupt29 = TIMER3 OVF

Interrupt30 = USART1 RXC

Interrupt31 = USART1 UDRE

Interrupt32 = USART1 TXC

Interrupt33 = TWSI

Interrupt34 = SPM READY

//=======================================

는 항목에서 가 선택되어야만 활성화 된다 모'Option/C-SPY/Serial Port' 'Setup' 'CC ROM-Monitor' .

니터는 기본적으로 를 통해 인터페이스 되며 실행 코드를 의 영역에 다운로RS-232 Port Target RAM

드 하여 번지를 이쪽으로 옮긴 다음 실행하기 때문이다 는 까지 있으며 통신 속도. COM Port 1~4 ,

를 설정 할 수 있는 항목이 있다 모니터 프로그램에서 요구하는 사항을 설정하면 된다Parity bit . .

은 동작의 상태정보를 로 해당 파일의 이름으로 저장한다'Log Communication' Text .

Page 106: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 106

그림 97. Option/C-SPY/Serial Port

은 에서 로 를 결정해야만 처럼 활성화 된다'Option/C-SPY/CCR' Setup Serial Port Driver 'Serial Port' .

이 부분은 시리얼을 통해 모니터의 를 다운 로딩 할 때 데이터 수수의 에 한 사항과Code Protocol

로딩 후 데이터를 검사하는 방법을 나타내는 항목이 있다'Target Consistency Check' .

그림 98. Option/C-SPY/CCR

Download Control

Fast Download :

Suppress Download :

Allow Download Data :

Target Consistency Check

Page 107: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 107

None :

Verify Boundaries :

Verify All :

의 에뮬레이터 환경을 설정하는 것이다 에서 를 선'Option/C-SPY/ICE200' . Setup 'ICE200 Emulator'

택해야 이 부분이 활성화 된다 장비를 연결했을 경우에 유용하다. ICE(In Circuit Emulator)

그림 99. Option/C-SPY/ICE200

고속 통신 선택High Speed(Disable Serial Communication Setup) : , COM1~COM4

Restore EEPROM :

Single Setup Timers :

Reset Delay :

Download Control

Suppress Download :

Allow Download Data :

Target Consistency Check

None :

Verify Boundaries :

Verify All :

에서 부분이 먼저 선택 되어야 한다 디버'Option/C-SPY/JTAG ICE1' Setup 'JTAG Emulator' . JTAG

그 를 위한 옵션이다ICE(In-Circuit Emulator) .

Page 108: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 108

그림 100. Option/C-SPY/JTAG ICE1

고속 통신 선택High Speed(Disable Serial Communication Setup) : , COM1~COM4

JTAG Port

Frequency In Hz :

이 꼬리에 고리를 물로 연결되어 있을 경우Target Device is part of a JTAG Daisy Chin : JTAG

Download Control

Suppress Download :

Allow Download Data :

Target Consistency Check

None :

Verify Boundaries :

Verify All :

는 디버그 를 위한 추가 옵션에 해당한다'Option/C-SPY/JTAG ICE2' JTAG ICE(In-Circuit Emulator) .

Page 109: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 109

그림 101. Option/C-SPY/JTAG ICE2

Run Timer in Stopped Mode :

Preserve EEPROM Contents if Device is Reprogrammed :

Hardware Reset On C-SPY reset :

Restore Fuses When Ending Debug Session :

는 장비의 실행 알고리듬과 환경을 불러오기 위한 것으로 확장자는 로'Option/C-SPY/Plugin' *.DLL

되어 있다.

그림 102. Option/C-SPY/Plugin

Page 110: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 110

파일은 설치경로 경로에 개의 파일이 있으며 파일이름과 요약은 다음과 같다*.DLL “ avr bin” 7 .\ \

avrice200.dll :

avrJtagIce.dll :

avrLibSupport.dll :

avrproc.dll :

avrsim.dll :

cwtdavr.dll :

nwtdavr.dll :

는 의 드라이버 항목에서 를 먼저 선택해야 활성화 된'/C-SPY/Third-Party Driver' 'Setup' 'Third-Part'

다 과 협의 되지 않은 드라이버가 없는 회사에서 제작된 장비와 인터페이스 할 때 사용한다. IAR .

그림 103. Option/C-SPY/Third-Party Driver

IAR Debugger Driver Plugin :

Suppress Download :

Verify All :

Log Communication :

은 를 운영할 때 추가되는 옵션에 해 전달하는 윈도우로 한'Option/C-SPY/Extra Option' C-SPY

라인에 한 문장씩 넣으면 된다.

Page 111: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 111

그림 104. Option/C-SPY/Extra Option

여기까지 를 운영하기 위한 프로그램 환경과 의 환경에 해 알아보았다 개발을 하다Project Target .

보면 한곳에 빠져서 해결하는데 급급한 나머지 주변 것을 잃어버리고 신경 못쓰는 경우가 많다 개.

발 환경 옵션도 한 가지만 하게 되므로 주변의 항목을 실험할 여유조차 갖지 못하고 를 끝마Project

칠 경우가 있는데 아무쪼록 배우고 익히고 개발하는데 효율을 극 화 했으면 하는 바램이다.

5.5. Tools

그림 105. Menu Tools

단어 그 로 작업 위의 연장에 관한 사항이 들어 있다 이 메뉴는 개발 할 때 잘 사용하면 편한.

같은 것이다Utility .

은 편집 환경에 한 모든 설정이 들어 있다 로 사용해도 별 무리는 없지만 개발 환'Option' . Default

경을 남다르게 해 놓고 코딩 하는 것도 나름 로의 개성을 살리는 것이라 하겠다 이곳에서는 개의. 8

탭이 있다.

는 외부의 편집기를 불러오기 위한 것이다 먼저 외부 편집 실행파일'Tools/Options/External Editor' .

Page 112: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 112

을 불러오기 위해 항목을 선택 한 뒤 활성화된 에는'Use External Editor' , 'Type' "Command Line"

을 항목에는 실행파일의 경로와 파일이름을 넣으면 된다 모두 설정한 뒤 프로젝트 윈도우에'Editor' .

서 소스코드를 더블클릭하게 되면 원하는 편집기가 되면서 클릭한 파일을 불러온다Open .

그림 106. Tools/Options/External Editor

는 보통 사용되는 폰트에 관련된 설정이다 소스 코드 편집환경에는'Tools/Options/Common Fonts' .

영향을 미치지 않으며 환경의 에 관련된 사항이다IDE GUI .

그림 107. Tools/Options/Common Fonts

는 메뉴로 이동할 때 키보드만으로 빠르게 환경으로 갈수 있도록 설정'Tools/Option/Key Bindings'

하는 이다 그림 예제 는 의 을 선Option . [ : Option/Setting/Key Bindings ] Project Option for Target

택하기 위한 고속 키를 정의한 것으로 항목에서 매칭하고 싶은 키보드'Press Shortcut Key' ‘Ctrl+

를 누르고 하면 등록된다 키보드 값을 등록할 때 이미 다른 메뉴로 등록 되어 있으면 을‘ 'Set' . 'Set'

눌러도 입력되지 않는다 이때는 를 사용하여 지운 다음 재등록 하면 된다 등록이 완료되면. 'Clear' .

메뉴에 고속으로 이동이 가능한 키보드 값이 나오게 된다Pull Down . Option for Target, Rebuild

항목은 자신이 편한 키보드에 의해 제어 할 수 있도록 만들 것을 권장한다All, Match Brackets .

Page 113: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 113

그림 108. Tools/Option/Key Bindings

는 통합 개발 환경의 메시지를 출력 하는 것으로 메시지 전부가'Tools/Option/Key Message' IED

로 디스플레이 되는 항목이 로 되어 있다 사용자가 원하지 않으며 해당Text 'All' Default . 'Show

항목을 선택하면 된다Build Message' .

그림 109. Tools/Option/Key Message

는 한번의 이동값과 띄어쓰기 와 들여쓰기 에 한'Tools/Option/Editor' Tab (Tab Size) (Indent Size)

설정을 할 수 있다 은 그 자체를 이용하는 것과 띄어쓰기로 을 신 하. 'Tab Key Function' Tab Tab

는 것이 있다.

소스의 예약어 를 구분하지 않고 동일한 색과 굵기로 보여준다Syntax Highlighting : (Keyword) .

소스 편집할 때 엔터를 치면 윗줄에서 사용된 자동 들여쓰기 시행Auto Indent :

편집 화면 왼쪽에 별도의 항목으로 행 번호를 보여준다Show Line Numbers : .

환경 이외의 다른 곳에서 해당 파일이 수정되었는지를 검사한다 편Scan for Changed Files : IDE .

집 환경을 을 사용하지 않을 경우는 반드시 선택한다IAR .

Page 114: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 114

책갈피를 보여 준다 로 되어있다Show Bookmarks : . Default .

들여쓰기 할 때 가상적인 띄어쓰기를 삽입한다Enable Virtual Space : .

사용자 정의 편집환경 설정 영문자 기준Use Default size : , Text

마지막 문장의 기호에 관한 사항이며 가 있다EOL Characters : PC, Unix, Preserve .

사용자가 설정한 키워드를 등록할 때 사용된다Custom Keyword File : .

그림 110. Tools/Option/Editor

는 편집화면에서 사용되는 소스코드 의 예약어와 상수'Tools/Option/Color and Fonts' C /EC++ Text

값 등의 폰트 색 을 사용자가 원하는 로 변경할 수 있다/ /Style .

그림 111. Tools/Option/Editor

는 컴파일과 링크를 할 때 사용된다 각각의 선택은 항상 질문'Tools/Option/Project' . Always( ),

질문항목 없음 가능할 경우 질문 가 있다Never( ), ASK( ) .

컴파일과 링크를 진행할 때 해당 항목을 정지할 수 있는 옵션Stop Build Operation On :

Page 115: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 115

하기 전 질문 사항에 한 선택Save Editor Windows before Building : Build

컴파일과 링크를 하지 않고 디버그를 선택 했을 때 질문 사항Make before debugging :

프로그램을 실행할 때 최근 마지막에 실행했던Reload Last Workspace at startup : EWAVR

를 불러와 실행하기 위한 선택Workspace Check Box.

컴파일과 링크 뒤에 사운드 발생Play a Sound after build operations : Check Box.

그림 112. Tools/Option/Project

는 디버깅 환경에서 소스 편집에 한 허용을 설정 할 수 있도록 해준다'Tools/Option/Debugger' .

그림 113. Tools/Option/Debugger

디버깅 때 편집 윈도우를 활성화 한다Use a Dedicated Edit window for Debugging : .

디버그를 마쳐도 동일한 소스코드 편집 윈도우를Show the same source code in edit window :

활성화 한다.

디버그를 마치면 소스코드 편집 윈도우를 닫는다Just Close the Dedicated window : .

는 환경에서 실행 파일을 바로 할 수 있도록 풀다운 메뉴'Configure Tools' EWAVR IDE Run 'Tools'

에 등록할 수 있다 은 로딩하고 디버깅하는데 에서 제공되는 를 제일 많이 사. AVR Atmel AVR Studio

용한다 이들 경로를 찾아 실행 파일을 그림 호출 설정 예 처럼 설정한 뒤 메뉴에서. [ : AVR_STUDIO ]

클릭하면 가 바로 새로운 윈도우로 실행된다 편집기 등을 등록하여 편리하게 이Studio . ROM Writer,

용해도 된다 항목은 실행 전에 집적 명령코드를 넣기 위해 입력 윈도. 'Prompt for Command Line'

Page 116: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 116

우가 별도로 실행 전에 열린다 를 통해 등록 하면 그림 추가된 모습 처럼. Configure Tools [ : ] “AVR

메뉴가 등록 되어 있는 것을 확인 할 수 있다Studio” .

그림 114 호출 설정 예. AVR_STUDIO그림 115 추가된 모습.

의 환경에서 사용되는 확장자를 미리 등록 하여 처리 할 수'Filename Extension .' EWAVR IDE……

있도록 한다 소스 파일 어셈블리 파일 링크 파일 등의 확장자를 이외의 확장자로 등록 할. , , Default

수 있다.

그림 116. Filename Extension Overrides

Page 117: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 117

는 내부 함수 라이브러리에 새로운 라이브러리 함수를 추가 하거나 특정 함수를 삭제'XLib Librarian'

할 때 그리고 라이브러리와 다른 라이브러리를 취합 할 때 사용되는 이다 도스에서 동작되며Utility .

특별히 의 키워드가 따로 있다Prompt .

그림 117. XLib Librarian Dos Window

5.6. Window

그림 118. Menu Window

윈도우의 정렬과 호출에 관한 사항이며 편집 환경을 보기 편하게 만들 수 있다 특별히 은 하. 'Split'

나의 편집 화면을 최 개까지 분할 할 수 있어 긴 소스를 상하로 참조 할 경우에 알맞다 마지막4 .

은 윈도우 에 한 를 나타내므로 예전에 불러 들었던 파일을 간단히 선택만으로 환경을Open History

불러 올수 있다.

Page 118: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 118

5.7. Help

그림 119. Menu Help

클릭하면 파일 안내서와 관련 윕 사이트를 링크시켜 주어 별도의 화면에 디스플레이 해준다*.PDF .

6. MakeApp

하드웨어와 연계하기 위해 준비 중에 있다AVR Mega128 .

7. Appendix

7.1. Header File

컴파일러에는 다른 사용 제품처럼 컴파일러 내부에 미리 준비되어 있는 함수가 들어IAR Standard

있다 이때는 함수마다 되어야 하는 헤드파일이 틀리므로 기능과 을 확인한 뒤 사. Include Data Type

용하는 것이 바람직하다 본 자료는 의 파일을 토 로 작성되었다. EWAVR V3.10 CLibrary.pdf .

다음은 컴파일러의 중요한 내장함수에 해 정리해 놓았다 내장함수는 컴파일러 내부에서C . Library

형태로 제공됨으로 함수의 이름과 전달인수 변수 그리고 리턴값을 잘 알고 있어야 사용하기, Type

쉽다 언어를 이용해서 보다 빠른 프로그램을 작성하기 위해서는 함수를 잘 숙지해 둘 필요가. C C

있는데 자주 사용하지 않는 함수는 외울 수 없음으로 부록을 참조해야 한다.

두 가지 사항이 있다 하나는 헤드 파일위주로 설명한 것이고 하나는 내부 함수만 설명한 것이다. .

헤드파일 위주로 된 것은 설치경로 와 설치경로 에 있는 내용이다 다른 하나는' /inc/clib' ' /inc/dlib' .

의 의 알파벳 순서로 되어 있는 내부 함수 내용을 재편집 한 것'IAR C Library Function' CLibrary.pdf

이다.

assert.h

#undef assert

#if defined NDEBUG

#define assert

(test) (void)0

#else

#define assert

Page 119: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 119

(test) <void expression>

#endif

comp_a90.h

ctype.h

int isalnum(int c);

int isalpha(int c);

int iscntrl(int c);

int isdigit(int c);

int isgraph(int c);

int islower(int c);

int isprint(int c);

int ispunct(int c);

int isspace(int c);

int isupper(int c);

int isxdigit(int c);

int tolower(int c);

int toupper(int c);

errno.h

#define EDOM<#if expression>

#define EILSEQ<#if expression>

#define ERANGE<#if expression>

#define errno<int modifiable lvalue>

float.h

#define DBL_DIG<integer rvalue >= 10>

#define DBL_EPSILON<double rvalue <= 10^(-9)>

#define DBL_MANT_DIG<integer rvalue>

#define DBL_MAX<double rvalue >= 10^37>

#define DBL_MAX_10_EXP<integer rvalue >= 37>

#define DBL_MAX_EXP<integer rvalue>

#define DBL_MIN<double rvalue <= 10^(-37)>

#define DBL_MIN_10_EXP<integer rvalue <= -37>

#define DBL_MIN_EXP<integer rvalue>

#define FLT_DIG<integer rvalue >= 6>

#define FLT_EPSILON<float rvalue <= 10^(-5)>

#define FLT_MANT_DIG<integer rvalue>

#define FLT_MAX<float rvalue >= 10^37>

Page 120: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 120

#define FLT_MAX_10_EXP<integer rvalue >= 37>

#define FLT_MAX_EXP<integer rvalue>

#define FLT_MIN<float rvalue <= 10^(-37)>

#define FLT_MIN_10_EXP<integer rvalue <= -37>

#define FLT_MIN_EXP<integer rvalue>

#define FLT_RADIX<#if expression >= 2>

#define FLT_ROUNDS<integer rvalue>

#define LDBL_DIG<integer rvalue >= 10>

#define LDBL_EPSILON<long double rvalue <= 10^(-9)>

#define LDBL_MANT_DIG<integer rvalue>

#define LDBL_MAX<long double rvalue >= 10^37>

#define LDBL_MAX_10_EXP<integer rvalue >= 37>

#define LDBL_MAX_EXP<integer rvalue>

#define LDBL_MIN<long double rvalue <= 10^(-37)>

#define LDBL_MIN_10_EXP<integer rvalue <= -37>

#define LDBL_MIN_EXP<integer rvalue>

fstream.h

ina90.h

inavr.h

iso646.h

limits.h

#define CHAR_BIT<#if expression >= 8>

#define CHAR_MAX<#if expression >= 127>

#define CHAR_MIN<#if expression <= 0>

#define INT_MAX<#if expression >= 32,767>

#define INT_MIN<#if expression <= -32,767>

#define LONG_MAX<#if expression >= 2,147,483,647>

#define LONG_MIN<#if expression <= -2,147,483,647>

#define MB_LEN_MAX<#if expression >= 1>

#define SCHAR_MAX<#if expression >= 127>

#define SCHAR_MIN<#if expression <= -127>

#define SHRT_MAX<#if expression >= 32,767>

#define SHRT_MIN<#if expression <= -32,767>

#define UCHAR_MAX<#if expression >= 255>

#define UINT_MAX<#if expression >= 65,535>

#define ULONG_MAX<#if expression >= 4,294,967,295>

#define USHRT_MAX<#if expression >= 65,535>

Page 121: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 121

locale.h

#define LC_ALL<integer constant expression>

#define LC_COLLATE<integer constant expression>

#define LC_CTYPE<integer constant expression>

#define LC_MONETARY<integer constant expression>

#define LC_NUMERIC<integer constant expression>

#define LC_TIME<integer constant expression>

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

struct lconv;

struct lconv *localeconv(void);

char *setlocale(int category, const char *locale);

math.h

#define HUGE_VAL<double rvalue>

double abs(double x); [C++ only]

float abs(float x); [C++ only]

long double abs(long double x); [C++ only]

double acos(double x);

float acos(float x); [C++ only]

long double acos(long double x); [C++ only]

float acosf(float x); [optional]

long double acosl(long double x); [optional]

double asin(double x);

float asin(float x); [C++ only]

long double asin(long double x); [C++ only]

float asinf(float x); [optional]

long double asinl(long double x); [optional]

double atan(double x);

float atan(float x); [C++ only]

long double atan(long double x); [C++ only]

float atanf(float x); [optional]

long double atanl(long double x); [optional]

double atan2(double y, double x);

float atan2(float y, float x); [C++ only]

long double atan2(long double y, long double x); [C++ only]

float atan2f(float y, float x); [optional]

long double atan2l(long double y, long double x); [optional]

double ceil(double x);

float ceil(float x); [C++ only]

long double ceil(long double x); [C++ only]

float ceilf(float x); [optional]

long double ceill(long double x); [optional]

Page 122: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 122

double cos(double x);

float cos(float x); [C++ only]

long double cos(long double x); [C++ only]

float cosf(float x); [optional]

long double cosl(long double x); [optional]

double cosh(double x);

float cosh(float x); [C++ only]

long double cosh(long double x); [C++ only]

float coshf(float x); [optional]

long double coshl(long double x); [optional]

double exp(double x);

float exp(float x); [C++ only]

long double exp(long double x); [C++ only]

float expf(float x); [optional]

long double expl(long double x); [optional]

double fabs(double x);

float fabs(float x); [C++ only]

long double fabs(long double x); [C++ only]

float fabsf(float x); [optional]

long double fabsl(long double x); [optional]

double floor(double x);

float floor(float x); [C++ only]

long double floor(long double x); [C++ only]

float floorf(float x); [optional]

long double floorl(long double x); [optional]

double fmod(double x, double y);

float fmod(float x, float y); [C++ only]

long double fmod(long double x, long double y); [C++ only]

float fmodf(float x, float y); [optional]

long double fmodl(long double x, long double y); [optional]

double frexp(double x, int *pexp);

float frexp(float x, int *pexp); [C++ only]

long double frexp(long double x, int *pexp); [C++ only]

float frexpf(float x, int *pexp); [optional]

long double frexpl(long double x, int *pexp); [optional]

double ldexp(double x, int exp);

float ldexp(float x, int exp); [C++ only]

long double ldexp(long double x, int exp); [C++ only]

float ldexpf(float x, int exp); [optional]

long double ldexpl(long double x, int exp); [optional]

double log(double x);

float log(float x); [C++ only]

Page 123: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 123

long double log(long double x); [C++ only]

float logf(float x); [optional]

long double logl(long double x); [optional]

double log10(double x);

float log10(float x); [C++ only]

long double log10(long double x); [C++ only]

float log10f(float x); [optional]

long double log10l(long double x); [optional]

double modf(double x, double *pint);

float modf(float x, float *pint); [C++ only]

long double modf(long double x, long double *pint); [C++ only]

float modff(float x, float *pint); [optional]

long double modfl(long double x, long double *pint); [optional]

double pow(double x, double y);

float pow(float x, float y); [C++ only]

long double pow(long double x, long double y); [C++ only]

double pow(double x, int y); [C++ only]

float pow(float x, int y); [C++ only]

long double pow(long double x, int y); [C++ only]

float powf(float x, float y); [optional]

long double powl(long double x, long double y); [optional]

double sin(double x);

float sin(float x); [C++ only]

long double sin(long double x); [C++ only]

float sinf(float x); [optional]

long double sinl(long double x); [optional]

double sinh(double x);

float sinh(float x); [C++ only]

long double sinh(long double x); [C++ only]

float sinhf(float x); [optional]

long double sinhl(long double x); [optional]

double sqrt(double x);

float sqrt(float x); [C++ only]

long double sqrt(long double x); [C++ only]

float sqrtf(float x); [optional]

long double sqrtl(long double x); [optional]

double tan(double x);

float tan(float x); [C++ only]

long double tan(long double x); [C++ only]

float tanf(float x); [optional]

long double tanl(long double x); [optional]

double tanh(double x);

Page 124: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 124

float tanh(float x); [C++ only]

long double tanh(long double x); [C++ only]

float tanhf(float x); [optional]

long double tanhl(long double x); [optional]

new.h

pgmspace.h

setjmp.h

typedef a-typejmp_buf;

void longjmp(jmp_buf env, int val);

#define setjmp(jmp_buf env) <int rvalue>

signal.h

#define SIGABRT<integer constant expression >= 0>

#define SIGFPE<integer constant expression >= 0>

#define SIGILL<integer constant expression >= 0>

#define SIGINT<integer constant expression >= 0>

#define SIGSEGV<integer constant expression >= 0>

#define SIGTERM<integer constant expression >= 0>

#define SIG_DFL<address constant expression>

#define SIG_ERR<address constant expression>

#define SIG_IGN<address constant expression>

int raise(int sig);

typedef i-typesig_atomic_t;

void (*signal(int sig, void (*func)(int)))(int);

stdarg.h

#define va_arg(va_list ap, T) <rvalue of type T>

#define va_end(va_list ap) <void expression>

typedef do-typeva_list;

#define va_start(va_list ap, last-par) <void expression>

stddef.h

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

#define offsetof(s-type, mbr) <size_t constant expression>

typedef si-typeptrdiff_t;

typedef ui-typesize_t;

typedef i-typewchar_t; [keyword in C++]

Page 125: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 125

stdio.h

#define _IOFBF<integer constant expression>

#define _IOLBF<integer constant expression>

#define _IONBF<integer constant expression>

#define BUFSIZ<integer constant expression >= 256>

#define EOF<integer constant expression < 0>

typedef o-typeFILE;

#define FILENAME_MAX<integer constant expression > 0>

#define FOPEN_MAX<integer constant expression >= 8>

#define L_tmpnam<integer constant expression > 0>

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

#define SEEK_CUR<integer constant expression>

#define SEEK_END<integer constant expression>

#define SEEK_SET<integer constant expression>

#define TMP_MAX<integer constant expression >= 25>

void clearerr(FILE *stream);

int fclose(FILE *stream);

int feof(FILE *stream);

int ferror(FILE *stream);

int fflush(FILE *stream);

int fgetc(FILE *stream);

int fgetpos(FILE *stream, fpos_t *pos);

char *fgets(char *s, int n, FILE *stream);

FILE *fopen(const char *filename, const char *mode);

typedef o-typefpos_t;

int fprintf(FILE *stream, const char *format, ...);

int fputc(int c, FILE *stream);

int fputs(const char *s, FILE *stream);

size_t fread(void *ptr, size_t size, size_t nelem, FILE *stream);

FILE *freopen(const char *filename, const char *mode, FILE *stream);

int fscanf(FILE *stream, const char *format, ...);

int fseek(FILE *stream, long offset, int mode);

int fsetpos(FILE *stream, const fpos_t *pos);

long ftell(FILE *stream);

size_t fwrite(const void *ptr, size_t size, size_t nelem, FILE *stream);

int getc(FILE *stream);

int getchar(void);

char *gets(char *s);

void perror(const char *s);

int printf(const char *format, ...);

int putc(int c, FILE *stream);

Page 126: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 126

int putchar(int c);

int puts(const char *s);

int remove(const char *filename);

int rename(const char *old, const char *new);

void rewind(FILE *stream);

int scanf(const char *format, ...);

void setbuf(FILE *stream, char *buf);

int setvbuf(FILE *stream, char *buf, int mode, size_t size);

typedef ui-typesize_t;

int sprintf(char *s, const char *format, ...);

int sscanf(const char *s, const char *format, ...);

#define stderr<pointer to FILE rvalue>

#define stdin<pointer to FILE rvalue>

#define stdout<pointer to FILE rvalue>

FILE *tmpfile(void);

char *tmpnam(char *s);

int ungetc(int c, FILE *stream);

int vfprintf(FILE *stream, const char *format, va_list ap);

int vprintf(const char *format, va_list ap);

int vsprintf(char *s, const char *format, va_list ap);

stdlib.h

#define EXIT_FAILURE<rvalue integer expression>

#define EXIT_SUCCESS<rvalue integer expression>

#define MB_CUR_MAX<rvalue integer expression >= 1>

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

#define RAND_MAX<integer constant expression >= 32,767>

void abort(void);

int abs(int i);

long abs(long i); [C++ only]

extern "C++" int atexit(void (*func)(void)); [C++ only]

extern "C" [C++ only] int atexit(void (*func)(void));

double atof(const char *s);

int atoi(const char *s);

long atol(const char *s);

extern "C++"

void *bsearch(const void *key, const void *base, size_t nelem, size_t size, int (*cmp)(const void *ck, const void *ce)); [C++ only]

extern "C" [C++ only]

void *bsearch(const void *key, const void *base, size_t nelem, size_t size, int (*cmp)(const void *ck, const void *ce));

void *calloc(size_t nelem, size_t size);

div_t div(int numer, int denom);

ldiv_t div(long numer, long denom); [C++ only]

Page 127: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 127

typedef Tdiv_t;

void exit(int status);

void free(void *ptr);

char *getenv(const char *name);

long labs(long i);

ldiv_t ldiv(long numer, long denom);

typedef Tldiv_t;

void *malloc(size_t size);

int mblen(const char *s, size_t n);

size_t mbstowcs(wchar_t *wcs, const char *s, size_t n);

int mbtowc(wchar_t *pwc, const char *s, size_t n);

void qsort(void *base, size_t nelem, size_t size, int (*cmp)(const void *e1, const void *e2));

extern "C++"

void qsort(void *base, size_t nelem, size_t size, int (*cmp)(const void *e1, const void *e2)); [C++ only]

extern "C" [C++ only]

void qsort(void *base, size_t nelem, size_t size, int (*cmp)(const void *e1, const void *e2));

int rand(void);

void *realloc(void *ptr, size_t size);

typedef ui-typesize_t;

void srand(unsigned int seed);

double strtod(const char *s, char **endptr);

long strtol(const char *s, char **endptr, int base);

unsigned long strtoul(const char *s, char **endptr, int base);

int system(const char *s);

typedef i-typewchar_t; [keyword in C++]

size_t wcstombs(char *s, const wchar_t *wcs, size_t n);

int wctomb(char *s, wchar_t wchar);

string.h

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

void *memchr(const void *s, int c, size_t n); [not in C++]

const void *memchr(const void *s, int c, size_t n); [C++ only]

void *memchr(void *s, int c, size_t n); [C++ only]

int memcmp(const void *s1, const void *s2, size_t n);

void *memcpy(void *s1, const void *s2, size_t n);

void *memmove(void *s1, const void *s2, size_t n);

void *memset(void *s, int c, size_t n);

char *strcat(char *s1, const char *s2);

char *strchr(const char *s, int c); [not in C++]

const char *strchr(const char *s, int c); [C++ only]

char *strchr(char *s, int c); [C++ only]

Page 128: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 128

int strcmp(const char *s1, const char *s2);

int strcoll(const char *s1, const char *s2);

char *strcpy(char *s1, const char *s2);

size_t strcspn(const char *s1, const char *s2);

char *strerror(int errcode);

size_t strlen(const char *s);

char *strncat(char *s1, const char *s2, size_t n);

int strncmp(const char *s1, const char *s2, size_t n);

char *strncpy(char *s1, const char *s2, size_t n);

char *strpbrk(const char *s1, const char *s2); [not in C++]

const char *strpbrk(const char *s1, const char *s2); [C++ only]

char *strpbrk(char *s1, const char *s2); [C++ only]

char *strrchr(const char *s, int c); [not in C++]

const char *strrchr(const char *s, int c); [C++ only]

char *strrchr(char *s, int c); [C++ only]

size_t strspn(const char *s1, const char *s2);

char *strstr(const char *s1, const char *s2); [not in C++]

const char *strstr(const char *s1, const char *s2); [C++ only]

char *strstr(char *s1, const char *s2); [C++ only]

char *strtok(char *s1, const char *s2);

size_t strxfrm(char *s1, const char *s2, size_t n);

time.h

#define CLOCKS_PER_SEC<integer constant expression > 0>

#define NULL<either 0, 0L, or (void *)0>[0 in C++]

char *asctime(const struct tm *tptr);

clock_t clock(void);

typedef a-typeclock_t;

char *ctime(const time_t *tod);

double difftime(time_t t1, time_t t0);

struct tm *gmtime(const time_t *tod);

struct tm *localtime(const time_t *tod);

time_t mktime(struct tm *tptr);

typedef ui-typesize_t;

size_t strftime(char *s, size_t n, const char *format, const struct tm *tptr);

time_t time(time_t *tod);

typedef a-typetime_t;

struct tm;

wchar.h

wctype.h

Page 129: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 129

yfuns.h

ymath.h

yvals.h

7.2. 정의파일AVR Register

다음의 헤드파일은 의 레지스터와 해당 어드레스 등을 기록해 놓았다AVR Chip , Vector Address . "

설치경로 의 폴더에 있다EWAVR avr inc" .\ \ \

io1200.h

io2313.h

io2323.h

io2333.h

io2343.h

io4414.h

io4433.h

io4434.h

io8515.h

io8534.h

io8535.h

ioat94k.h

ioavr.h

iom103.h

iom128.h

iom16.h

iom161.h

iom162.h

iom163.h

iom169.h

iom32.h

iom323.h

iom603.h

iom64.h

iom8.h

iom83.h

iom8515.h

iom8535.h

iomacro.h

iomanip.h

iostream.h

iotiny10.h

iotiny11.h

Page 130: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 130

iotiny12.h

iotiny15.h

iotiny22.h

iotiny26.h

iotiny28.h

7.3. 파일Lib

하드웨어와 정보와 관련이 있는 미리 정의된 파일이다 설치경로 의 폴더에Link . " EWAVR avr lib"\ \ \

있으며 기준으로 개의 파일이 있다V2.28a 136 Library .

cl0t-64.r90

cl0t-ec-64.r90

cl0t-ec.r90

cl0t.r90

cl1s-64.r90

cl1s-ec-64.r90

cl1s-ec.r90

cl1s.r90

cl1t-64.r90

cl1t-ec-64.r90

cl1t-ec.r90

cl1t.r90

cl2t-64.r90

cl2t-ec-64.r90

cl2t-ec-sf-64.r90

cl2t-ec-sf.r90

cl2t-ec.r90

cl2t-sf-64.r90

cl2t-sf.r90

cl2t.r90

cl3s-64.r90

cl3s-ec-64.r90

cl3s-ec-sf-64.r90

cl3s-ec-sf.r90

cl3s-ec.r90

cl3s-sf-64.r90

cl3s-sf.r90

cl3s.r90

cl3t-64.r90

cl3t-ec-64.r90

cl3t-ec-sf-64.r90

cl3t-ec-sf.r90

Page 131: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 131

cl3t-ec.r90

cl3t-sf-64.r90

cl3t-sf.r90

cl3t.r90

cl4l-64.r90

cl4l-ec-64.r90

cl4l-ec-sf-64.r90

cl4l-ec-sf.r90

cl4l-ec.r90

cl4l-sf-64.r90

cl4l-sf.r90

cl4l.r90

cl4s-64.r90

cl4s-ec-64.r90

cl4s-ec-sf-64.r90

cl4s-ec-sf.r90

cl4s-ec.r90

cl4s-sf-64.r90

cl4s-sf.r90

cl4s.r90

cl5s-64.r90

cl5s-ec-64.r90

cl5s-ec.r90

cl5s.r90

cl5t-64.r90

cl5t-ec-64.r90

cl5t-ec.r90

cl5t.r90

cl6l-64.r90

cl6l-ec-64.r90

cl6l-ec.r90

cl6l.r90

cl6s-64.r90

cl6s-ec-64.r90

cl6s-ec.r90

cl6s.r90

dl0t-64.r90

dl0t-ec-64.r90

dl0t-ec.r90

dl0t.r90

dl1s-64.r90

dl1s-ec-64.r90

Page 132: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 132

dl1s-ec.r90

dl1s.r90

dl1t-64.r90

dl1t-ec-64.r90

dl1t-ec.r90

dl1t.r90

dl2t-64.r90

dl2t-ec-64.r90

dl2t-ec-sf-64.r90

dl2t-ec-sf.r90

dl2t-ec.r90

dl2t-sf-64.r90

dl2t-sf.r90

dl2t.r90

dl3s-64.r90

dl3s-ec-64.r90

dl3s-ec-sf-64.r90

dl3s-ec-sf.r90

dl3s-ec.r90

dl3s-sf-64.r90

dl3s-sf.r90

dl3s.r90

dl3t-64.r90

dl3t-ec-64.r90

dl3t-ec-sf-64.r90

dl3t-ec-sf.r90

dl3t-ec.r90

dl3t-sf-64.r90

dl3t-sf.r90

dl3t.r90

dl4l-64.r90

dl4l-ec-64.r90

dl4l-ec-sf-64.r90

dl4l-ec-sf.r90

dl4l-ec.r90

dl4l-sf-64.r90

dl4l-sf.r90

dl4l.r90

dl4s-64.r90

dl4s-ec-64.r90

dl4s-ec-sf-64.r90

dl4s-ec-sf.r90

Page 133: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 133

dl4s-ec.r90

dl4s-sf-64.r90

dl4s-sf.r90

dl4s.r90

dl5s-64.r90

dl5s-ec-64.r90

dl5s-ec.r90

dl5s.r90

dl5t-64.r90

dl5t-ec-64.r90

dl5t-ec.r90

dl5t.r90

dl6l-64.r90

dl6l-ec-64.r90

dl6l-ec.r90

dl6l.r90

dl6s-64.r90

dl6s-ec-64.r90

dl6s-ec.r90

dl6s.r90

8. 참고 자료

과 그 응용 진달복 양서각ATmega128 , , , 2003

마스터 윤덕용AVR ATmega128 , , Ohm, 2004

The AVR Advantage, Atmel, 1996

Embedded Systems, Volume 13

EWAVR V3.10A CD Document File

IAR ftp, ftp://ftp.iar.com/pub/mirror/EWMIRROR

프로차일드, http://prochild.com

Wooky's AVR World, http://micro.new21.org/avr

윤덕용 교수님의 마이크로프로세서 월드, http://control.cntc.ac.kr/cpu

Page 134: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 134

9. 찾아보기

(4)

4004 35

(A)

Acer Laboratories 10

Aeroflex UTMC 10

Analog Devices10

ANSI C 20, 5

Archimedes 8

Arithmetic 99

ARM 10, 8

Assembler 8

ATmega128 20

Atmel 10

AVRGCC 25

(B)

BL 16

Blue Earth Research LLC 8

(C)

C-SPY 46

Ceibo 8

CISC 20

Clustering 87

CodeVision 25

Compiler 8

Compliment 99

Configuration 34

Control 67

CRC 99

Cygnal Integrated Products 10

Cypress Semiconductor 10

(D)

Dallas Semiconductor10

Debug 24

Diagnostics 89

Dongle 17, 19

(E)

EAVR 103

Edit 50, 73

EISC 21

Embedded Workbench 15

Embedded Workbench Professional 16

EW(Embedded Workbench) 5

EWAVR 19, 25

Ewavrpro 17

은EWAVR 25

Execute 63

(F)

FCS 97

File 48, 71

free 82

(G)

Gimpel Software 8

(H)

Header 118

HEX 68

HI-TECH 8

HIWARE 8

(I)

IAR Compiler 15

ICC200 100

ICCAVR 39

IDE 5

IED 61

ImageCraft 25

Infineon 10

Inherent 97

Integrated Silicon Solution 10

Intel 10

Page 135: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 135

(J)

JAVR 103

JTAG 100

(K)

Keyword 38

(L)

Launcher 18

LE 16

Librarian 31

Library 97

license 12

Lock Key11

(M)

Macro31, 9

MakeApp 118

malloc 82

Mandeno 8

Map 41

Matra MHS 10

MDL Labs 8

Memory Mode 34

Microchip 10

Motorola 10

(N)

National Semiconductor 10

NEC 11

Network license 14

(O)

Object 31

OKI 11

Override 97

(P)

PC6

Permanent 15

Philips 11

Program Count 6

Project 78

(R)

Release 24

Renesas 11

RETI 83

RISC 21

ROM-Monitor 100

(S)

Samsung11

SAVR 103

Simulator 100

Small 34

Stand-alone license 14

Standard Microsystems 11

Suppress92

Symbol 8

(T)

Tasking 8

Terminal 46

Tiny 34

Tools 111

Treat 92

(U)

UBROF 43

UML 16

(V)

View 54, 77

(W)

Window 117

Workspace 22

ᄂ( )

니모닉(Mnemonic) 4

ᄃ( )

데이터 38

Page 136: HowtouseIARAVRCompiler -EWAVRV3.10AFull -사용설명서pds14.egloos.com/pds/200901/15/58/IARAVRCompiler_EWAVR_V31… · V1.0 2003.12.22 IAR EWAVR컴파일러 초기사용자설명서

This item is originally designed by FirmwareBank 원고의 내용이나 문구를 펌웨어뱅크사 협의 없.

이 무단으로 이용할 수 없습니다 전문회사. Firmware www.firmwarebank.com 136

동글 15

ᄅ( )

라이센스 14

락키 15

레이블 8

ᄆ( )

마크로 9

매크로 31

ᄇ( )

변수 37

ᄉ( )

소스프로그램 7

시뮬레이터 46

ᄋ( )

알나간 알고 나면 간단( ) 8

에러 96

에뮬레이터(Emulator), 103

워크스페이스 23

ᄌ( )

전처리기 8

ᄏ( )

컴파일(Compile) 8

키워드 38

ᄐ( )

통합개발환경 5

통합개발환경(IDE) 80

ᄑ( )

평가 버전 11

프린터포트 18

프린터포트락키 18