28
AVR Studio 4 이용한 ATmega128 디버깅 발표자: 이정법 연암공업대학 S/W과 3학년 2012. 09. 10. 2019-04-25 1

실전 ATmega128 디버깅

  • Upload
    others

  • View
    17

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 실전 ATmega128 디버깅

AVR Studio 4를 이용한ATmega128 디버깅

발표자: 이정법연암공업대학 S/W과 3학년

2012. 09. 10.

2019-04-25 1

Page 2: 실전 ATmega128 디버깅

순서

1. 개요

2. 생김새

3. AVR Studio 4 설치

4. AVR Studio 4 실행/프로젝트 생성

5. JTAG 사용 준비

6. JTAG을 이용한 디버그

7. 질의 응답

2019-04-25 2

Page 3: 실전 ATmega128 디버깅

개요

• 목표: AVR Studio 4와 타겟 보드 사이를JTAG 인터페이스를 통해 연결

• 장점: 실제 보드상에서 동작하는 프로그램을 실시간으로 디버깅 가능(포트/레지스터 단위 상태 조회 및 제어, 중단점 설정 등 가능)

호스트 PCJTAG

Emulator타겟 보드

2019-04-25 3

Page 4: 실전 ATmega128 디버깅

개요

• 준비물: ATmega128 보드 세트

(AB-M128Pro-A V03)

JTAG Emulator

(AD-JTAG V02)

ISP

(AD-USBISP V4.0)

컴퓨터

(USB Port 필수)

2019-04-25 4

드라이버는http://www.newtc.co.kr

에서모델명으로

찾을 수 있습니다

Page 5: 실전 ATmega128 디버깅

개발 보드 생김새

JTAG 포트PORT F와 단자 공유

GPIO PORT E0 ~ 7

ISP 연결 단자

GPIO PORT B0 ~ 7

GPIO PORT D0 ~ 7

리셋스위치

GPIO PORT C0 ~ 7

GPIO PORT A0 ~ 7

7-SegmentPORT A, C 사용

전원 연결 단자DC 12V/1A

2019-04-25 5

Page 6: 실전 ATmega128 디버깅

JTAG Emulator 생김새

USB LINKUSB 연결시 점등

USB DATAUSB 자료 소통시 점등

JTAG DATAJTAG 자료 소통시 점등 JTAG CONN.

JTAG 연결시 점등

2019-04-25 6

JTAG Emulator에 커넥터를 꽂을 때 들어가지 않는다고 무리한 힘을 가하지 마세요. 모든 일에는 그럴만한 이유가 있는 겁니다. (커넥터 연결방향 존재)

Page 7: 실전 ATmega128 디버깅

AVR Studio 4 설치

• http://www.atmel.com/Images/AvrStudio4Setup.exe

에서 다운로드 후 설치 진행

* 주의사항 *

설치 도중 드라이버 설치를 물어볼 경우

함께 설치 후 설치 속행

필히 설치 완료 후 ISP 연결!

2019-04-25 7

Page 8: 실전 ATmega128 디버깅

AVR Studio 4 실행

• 시작→프로그램→Atmel AVR Tools→AVR Studio 4

2019-04-25 8

Page 9: 실전 ATmega128 디버깅

프로젝트 생성

자동으로 나타나지 않거나 실수로 닫았다면 Project→Project Wizard

Type은 Atmel AVR Assembler로,저장 경로는 입맛대로 설정

2019-04-25 9

Page 10: 실전 ATmega128 디버깅

ISP 연결

• ISP를 보드의 ISP 커넥터와 컴퓨터의USB Port에 연결 후 장치 드라이버 설치

• JTAG으로 디버깅이 목적인데ISP를 연결해야 하는 이유는?>> 보드 출고 당시 기본적으로 JTAG을 사용하지 않게 되어있기 때문.

(JTAG을 enable하게 되면 PORT F의 8핀 중 4핀을 사용할 수 없음)

(근거: ATmega128 Datasheet)

ISP로 먼저 enable 해주어야 함

2019-04-25 10

http://www.newtc.co.kr에서 자료실→AVR 참고

Page 11: 실전 ATmega128 디버깅

JTAG 사용 준비과정

• AVR Studio에서Tools→Program AVR →Connect…

COM Port 번호는 PC마다 다를 수 있으니 장치 관리자에서 확인 후 사용>> 시작 – 컴퓨터 – 마우스 오른쪽 눌러서 속성 – 장치 관리자로 가서

포트(COM & LPT) 쪽 확인

Platform은?

STK500설정 확인 후

Connect!

2019-04-25 11

Page 12: 실전 ATmega128 디버깅

JTAG 사용 준비과정

OCDEN, JTAGEN이 check되어 있는지 확인 후

Program 프로그램 완료 후 JTAG을 연결

2019-04-25 12

Page 13: 실전 ATmega128 디버깅

JTAG 연결

• JTAG Emulator를 보드의 JTAG 커넥터와컴퓨터의 USB Port에 연결 후 장치 드라이버 설치

2019-04-25 13

http://www.newtc.co.kr에서 자료실→AVR 참고

Page 14: 실전 ATmega128 디버깅

JTAG 연결

• AVR Studio 4 에서

Tools→Program AVR→Connect...

Platform은?

JTAG ICE설정 확인 후

Connect!

2019-04-25 14

Page 15: 실전 ATmega128 디버깅

JTAG 연결

ATmega128을 선택 후 read signature를 눌러서선택된 장치와 서명이 일치합니다 라고 나오면 JTAG 정상 작동

2019-04-25 15

Page 16: 실전 ATmega128 디버깅

JTAG으로 디버그 해보기

• AVR Studio 4에서 프로젝트 생성 후다음의 예제 코드를 활용

idunno.asm 파일의 내용:1 .include "m128def.inc"2 .dseg3 .org 0x01004 MOLLA: .byte 15 .cseg6 .org 0x00007 RESET: RJMP MAIN8 .org 0x00809 MAIN: RJMP IL10 IL: RJMP IL11 .exit

*map 파일*(include것은 생략함)

DSEG MOLLA 0x00000100CSEG RESET 0x00000000CSEG MAIN 0x00000080CSEG IL 0x00000081

2019-04-25 16

Page 17: 실전 ATmega128 디버깅

간략한 디버거 사용법

• Label RESET, IL에 중단점 지정

커서를 RESET, IL에 놓고 F9를 누르거나

Debug 메뉴의 Toggle Breakpoint를 이용

중단점이각각 RESET, ILLabel에 지정됨

2019-04-25 17

Page 18: 실전 ATmega128 디버깅

간략한 디버거 사용법

• Debug 시작/종료

필히 타겟 보드와의연결상태를 확인 후

시도하세요!

주의: 디버그를 하게 되면 기존에 Flash내에 들어 있는 프로그램은지워집니다

2019-04-25 18

주의: 디버그 중에 코드가 변경되면 디버그를 중지 후다시 실행해야 합니다

Page 19: 실전 ATmega128 디버깅

Troubleshooting

• Debug를 시작하게 했지만 다음과 같이나오면서 잘 되지 않을 경우

COM1과 COM4 사이에 JTAG COM Port가 없거나 기타 알 수 없는 이유로인식 할 수 없기 때문에 위와 같은 이야기가 나옴

앞에서 Platform이나 COM Port를 정확히 확인하여 지정하였는지Cross Check 후 다시 진행

2019-04-25 19

Page 20: 실전 ATmega128 디버깅

중단점

디버그 실행 후 자동으로 RESET이 있는곳에서 실행이 정지되어 있는 상태

이 상태에서 F11을 누르면

2019-04-25 20

Page 21: 실전 ATmega128 디버깅

중단점

RESET Label에 있는 한줄을 수행하여위치가 MAIN으로 옮겨옴

참고로 PC값은 0x0080이 되나아직 0x0080에 있는 명령은아직 수행되지 않은 상태임

2019-04-25 21

Page 22: 실전 ATmega128 디버깅

레지스터 값 확인

여러 레지스터의 상태값을 표시

Register별 값 확인 및 수정 가능실행 사이클 확인 가능

위의 예시는 SREG의 Sign Flag을 ON한 모습

2019-04-25 22

Page 23: 실전 ATmega128 디버깅

I/O 제어

여러 범주의 입출력 가능 레지스터들이 존재

포트별로 연결된 주변 장치부터 먼저 확인

PORT A: 7-Segment 데이터PORT C: 7-Segment 위치

2019-04-25 23

Page 24: 실전 ATmega128 디버깅

I/O 제어

원하는 PORT를 찾아서마우스 클릭으로 각 PORT의 출력 상태를

변경 가능

위의 예시는 DDRA, PORTA를 전부 0으로 만든 모습임

Bits 칸은 총 8개이며 가장 왼쪽이 1번 핀에 대응됨검게 칠해져 있으면 1, 그렇지 않으면 0

2019-04-25 24

Page 25: 실전 ATmega128 디버깅

I/O 제어

• 7-segment 전부 켜보기(켜보고 싶으면 PORT를 다음과 같은 상태로 만든다)

상기 예시를 응용하면 다른 장치의 특성을 알아보는데 도움이 됩니다

(일일이 5V를 인가하는 것보다 더 나을지도…)

2019-04-25 25

Page 26: 실전 ATmega128 디버깅

Fusing

• 코딩을 완료 후 Build를 수행하면 프로젝트 경로에hex 파일이 생성됨

• Tools→Program AVR→Connect… 에서Platform과 Port 선택 (앞의 과정과 동일)

2019-04-25 26

Flash부분에서Input HEX File을

선택하고파일 선택

Program을 클릭(밑의 로그 메시지를

읽어봐서잘 되었는지 확인)

Program 전에Erasing이 자동으로

수행됨

Page 27: 실전 ATmega128 디버깅

Troubleshooting

• Programming을 하는데 JTAG이 연결된COM Port가 명단에 나오질 않습니다

포트를 사용하는 작업을 중지한 후에 다시 시도해 보십시오만약 디버그 중이라면 디버그를 중지하고 다시 시도해보시는 건

어떻겠습니까?

2019-04-25 27

Page 28: 실전 ATmega128 디버깅

질의 응답

감사합니다

2019-04-25 28