Chapter. 4 Internal Memory의이해artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제4... ·...
Transcript of Chapter. 4 Internal Memory의이해artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제4... ·...
1. ATMega128 데이터 메모리 구조
2. AVR Studio 디버깅 모드 시작
3. AVR Studio로 내부 메모리와 레지스터
이해하기
Internal Memory의 이해
ATMega128 데이터 메모리 구조
¨ ATMega128 내장데이터 메모리
¤ RAM
n 레지스터
n 범용레지스터
n I/O레지스터
n 확장 I/O 레지스터
n SRAM
¤ ROM
n EEPROM
ATMega128 데이터 메모리 구조
¨ I/O 레지스터와 확장 I/O 레지스터
¤ 내장된 각종 I/O 장치를 제어하기 위한 레지스터
주소 레지스터명 주소 레지스터명
$00($20) PINF $01($21) PINE
$02($22) DDRE $03($23) PORTE
$10($30) PIND $11($31) DDRD
$12($32) PORTD $13($33) PINC
$14($34) DDRC $15($35) PORTC
$16($36) PINB $17($37) DDRB
$18($38) PORTB $19($39) PINA
$1A($3A) DDRA $1B($3B) PORTA
$34($54) MCUCSR $35($55) MCUCR
$3F($3F) SREG
ATMega128 데이터 메모리 구조
¨ 확장 I/O 레지스터
¤ ATmega128에 추가된 각종 I/O 장치를 제어하기 위한 레지스터
주소 레지스터명 주소 레지스터명
$61 DDRF $62 PORTF
$63 $64 DDRG
$65 PORTG $6A EICRA
$7C ETIFR $7D ETIMSK
AVR Studio 디버깅 모드 시작
¨ AVR Studio 디버깅 모드 : Configuration Option 설정
¤ AVR Studio의 Project -> Configuration Option Select
AVR Studio 디버깅 모드 시작
¨ 디버깅 모드 화면 : Processor 창
¤ AVR 내부 레지스터 값을 표시
¤ 프로그램 카운터와 스택 포인터, 범용 레지스터의 값 확인 가능.
AVR Studio 디버깅 모드 시작
¨ 디버깅 모드 화면 : I/O View 창
¤ 입출력 레지스터 및 타이머 등의레지스터 값을 표시
¤ 포트A~G 레지스터 및 타이머, UART 레지스터가 표시되는 걸 볼 수있음.
AVR Studio 디버깅 모드 시작
¨ 프로그램 실행 : 레지스터값 변화 관찰
¤ Step Into(F11)
¤ Step Into(F11) 반복
¤ Step Into(F11) 한번 더
AVR Studio 디버깅 모드 시작
¨ 디버깅 모드 화면 : Break Point
¤ 디버깅을 해보고 싶은 부분부터 디버깅을 할 수 있게 해주는 기능
Break Point
현재 실행라인
AVR Studio 디버깅 모드 시작
¨ 디버깅 모드 화면 : Break Point
¤ 프로그램 리셋(Debug -> Reset )
¤ Run (Debug -> Run (F5))
노란 화살표 main()에 위치
노란 화살표 Break Point 에 위치
실습 4: 내부 메모리와 레지스터 이해
¨ 실습 개요
¤ 하나의 예제 프로그램 작성
¤ AVR Studio의 메모리 Dump 및 변수 확인 창 등을 활용하여 내부메모리와 레지스터의 변화를 관찰
¨ 실습 목표
¤ 내부 메모리의 동작 방식을 이해하고
¤ 프로그램이 실행되면서 내부 메모리들을 어떻게 사용하는지를 이해한다.
실습 4: 내부 메모리와 레지스터 이해
¨ 예제 프로그램 작성
¤ AVR Studio4 실행
¤ New Project 생성
¤ 예제 프로그램 작성
¨ 소스 분석(변수 선언)
¤ A,B,C : 전역 변수n 프로그램시작과 함께 일정영역을 할당
n 할당받은 영역에 초기값 저장(0xAA, 0xBB, 0xCC)
n Unsigned char이므로 1byte 할당
¤ ADD : 포인터 변수
n 역시 내부 일정영역 할당
n 메모리 영역에 데이터가 아닌 주소를주소를 저장(0x130)
n 0x130은 SRAM의 영역
실습 4: 내부 메모리와 레지스터 이해
¨ 변수관찰 창¤ 변수 관찰 창의 Name부분 빈칸을 더블 클릭하여 변수 명을 적는다.
¤ 여기서는 ‘A’를 넣었음.
변수명
변수값
변수 데이터형
변수에 할당된메모리 주소 :SRAM 영역
실습 4: 내부 메모리와 레지스터 이해
¨ 내부메모리 관찰 창¤ 내부메모리 관찰 창에서
Data선택.
변수 A 영역
(0x100번지)
변수 B 영역
(0x101번지) 변수 C 영역 (0x102번지)
실습 4: 내부 메모리와 레지스터 이해
¨ 변수관찰 창¤ 변수 관찰 창에 A
DD 변수를 입력.
¤ ADD변수 왼쪽의+기호를 누름
ADD변수값
ADD가 가리키는메모리에 저장된 데이터 값
실습 4: 내부 메모리와 레지스터 이해
¨ 프로그램 실행
¤ Step Into 명령(F11)
¨ 메모리 관찰창
¤ I/O 레지스터 선택
¤ 0x1B 번지 관찰
0x1B : PORTA 레지스터 주소
실습 4: 내부 메모리와 레지스터 이해
¨ 프로그램 실행
¤ Step Into 명령(F11)
¨ 메모리 관찰창
¤ Externded I/O 선택
¤ 0x1B 번지 관찰
0x62 : PORTF레지스터 주소