로그인 | 회원가입
   이용안내    장바구니    주문조회    마이쇼핑    게시판
상품검색 검색 
아이디  
비밀번호
보안접속 보안접속
회원가입
  아이디찾기
  비밀번호찾기
상품목록
  ARM
  PIC
  AVR
  DSP
  MAXQ
  MSP430
  OTHER
게시판
공지사항
자유게시판
강좌-USB기타
자료실
샘플 기획전
전화: 031-429-0845
팩스: 031-477-1407
운영시간
  09:00 ~ 18:00
 
현재위치: > 게시판 > 자료실
자료실
자료실입니다.


찾기
제목 실습1 0  추천하기
작성자 글쓴이 2012-04-04 10:31:07 474
   
   
1. ARM General Registers

General-purpose register는 R0-R15로 뱅크와 특별하게 사용되어지는 것에 의하여 3개의 그룹으로 나눌수 있다.

A) Unbanked register(R0-R7) : 각각의 Unbanked Register들은 모든 프로세서 모드에서  같은 32-bit의 physical register에 귀속되어 있으며 구조상 특별하게 사용되지 않는 순수하게 일반적인 목적의 register여서 명령을 하면 일반적인 목적의 레지스터가 명시되어지는 곳마다 사용될 수 있다.

B) Banked registers(R8-R14) : 각각의 Banked Register에 의해 명시된 Physical Register는 현재의 프로세서 모드에 의해 결정된다. 특별한 Physical register가 필요한 곳에서는 현재의 프로세서 모드의 영향을 받지 않고 좀더 명확한 명칭(아래와 같이 서술한 것처럼)이 사용된다. 명령을 하면 Banked Register는 일반적인 목적의 레지스터가 허락되는 곳에서 대부분 사용될 수 있다. R8에서 R12까지의 레지스터에는 각각 두가지 Banked physical register가 있다. 하나는 FIQ 모드 말고 모든 프로세서 모드에서 사용되고 다른 하나는 FIQ모드에서 사용된다.

어떤 버전이 명시되어 있는지 분명하게 해 둘 필요가 있는 곳에서 첫번째 그룹의 레지스터는 [R8_usr to R12_usr]로 나타나고 두번째 그룹은 [R8_fiq to R12_fiq]로 나타난다. [Registers R8 to R12]는 구조상 특별한 목적을 가지고 있지 않다. 그러나 [registers R8 to R14]만을 사용하여 프로세서가 될 정도로 간단한 interrupt에 한해서는 이 레지스터들의 각각의 FIQ 모드 버전이 존재함으로써 아주 신속하게 인터럽트 프로세서를 할 수 있다.

Registers R13 와 R14에는 각각 여섯개의 banked physical register들이 있다. 하나는 사용자 모드와 시스템 모드에서 사용되고 반면 나머지 5개는 각각 다섯개의 예외 모드 중 한곳에서 사용된다. 어떤 버전이 명시되어지고 있는 지 확실하게 해 둘 필요가 있는 곳에서는 R13_ 와 R14_의 명칭을 사용하며 여기서 는 usr, svc (관리자 모드), abt, und, irq, fiq에 대한 적절한 명칭이다. Register R13는 일반적으로 stack pointer로써 사용되며 또한 SP로 알려져 있다. ARM 명령을 설정할 때, Register R13은 오로지 규정에 따른 것으로  특별한 방법으로 R13을 사용하는 명령 또는 기타 기능성을 가지고 있는 것은 아니다. 하지만 Thumb 명령을 설정할 때는 그와 같은 명령들이 있긴 하다.

각각의 예외 모드에는 R13에 대한 자체의 Banked version이 있어서 일반적으로 그러한 예외 모드 전용의 stack을 설정할 수 있도록 초기화해야 한다. 입력할 때, 전형적으로 예외 처리기(exception handler)는 기타 레지스터 값을 stack에 저장한다. 예외 처리기가 리턴할 때 이 값들을 레지스터에 재저장함으로써 예외가 발생할 때 실행되어지고 있었던 프로그램 상태를 방해하지 않을 수 있다.  

Register R14(Link register 또는 LR이라고도 함)에는 구조상 두가지 특별한 기능이 있다.

·         각각의 모드에서 R14에 대한 모드 자체의 버전은 서브루틴 리턴 어드레스를 가지기 위해 사용된다. 서브루틴 콜이 BL 또는 BLX 명령어에 의해 실행될 때 R14가 서브루틴 리턴 어드레스에 설정된다. 서브루틴 리턴은 프로그램 카운터에 R14를 다시 복사함으로써 실행된다.

·         예외가 발생할 때 R14에 대한 적절한 예외 모드 버전은 예외 리턴 어드레스에 설정된다(일부 예외에 대한 적은 상수값에 의한 오프셋). 예외 리턴은 서브루틴 리턴과 유사한 방법으로 실행되지만 다른 명령어들과 조금 다르게 사용됨으로써 예외가 발생할 때 실행되고 있었던 프로그램의 상태를 완전히 복구할 수 있다. 

Register R14는 평소에 일반적인 목적의 레지스터로서도 사용될 수 있다.

C) Register R15에는 Program Counter (PC)가 있어서 일반 목적의 registers R0 에서 R14의 장소에서 사용될 때가 있다. 따라서 일반 목적의 레지스터의 하나로 인식되고 있다. 하지만 사용할 때 명령어에 대한 특별한 규제 및 특별 목적의 레지스터 또한 많이 있다. 이 내용은 개별명령에 관한 설명(Individual instruction descriptions)에서 언급되고 있다. R15가 이러한 규제로부터 자유로운 방식에서 사용되면 이 명령을 예측하지 못하는 것이 일반적이다.

 

2. Memory Format

ARM 구조는 단하나의 플랫 어드레스 공간을 사용한다. 바이트 어드레스는 부호가 없는 숫자로써 0에서 232- 1까지 나타낼 수 있다. 어드레스 공간은  230 32-bit 워드들로 구성되고 각각의 어드레스는 워드로 정렬되어 있다. 즉, 어드레스는 4등분 될 수 있음을 의미한다. 워드로 정렬된 어드레스가 A인 워드는 A, A+1, A+2, 와 A+3의 어드레스를 가진 4개의 바이트로 구성되어 있다. ARM 구조 버전 4와 그 이상에서 어드레스 공간은 또한 231 16-bit의 하프워드로 구성되어 있으며 각각의 어드레스는 하프워드로 정렬되어 있다.  

  • 리틀 엔디안 메모리 시스템(little-endian memory system):최상위 자라의 바이트부터 앞의 주소에 차례대로 기억됨(사람이 보기에 순서대로 저장됨)
  • 빅 엔디안 메모리 시스템(big-endian memory system):데이터의 최상위 비트가 가장 높은 주소에 저장되며 사람이 보기에는 거꾸로 보임.

 

3. GNU  기초 지식

Embest IDE는 GNU 어셈블리(as), 컴파일러(gcc), 그리고 링커(ld)에 바탕을 두고 있다. 그래서 프로그래밍할 때는 GNU의 구문과 규칙이 따른다. as, gcc 그리고 ld을 사용하려면 앞의 강좌의 내용들을 참조하거나 CD안에 있는 ProgRef.chm을 참조하면 다음과 같은 기초 지식을 볼 수 있다. :

1) . equ

.equ는 변수, 레지스터를 바탕으로 하는 값, 프로그램의 레벨 등과 같은 기호를 정의할 때 사용한다.

Syntax Format:

.equ symbol, expr

expr는 레지스터의 어드레스 값, 32-bit 어드레스 변수 또는 32-bit 변수가 될 수 있으며 기호는 .equ에 의해 정의된 expr라는 문자명칭이 될 수 있다.

예제:

.equ Version, 0.1

 

2) .global 와 .globl

.global는 다른 파일들이 사용할 수 있는 전역변수(global variable)를 나타낸다. .global 와 .globl는 같은 것이다.

Syntax Format:

.global symbol

.global에 의해 정의된 문자명칭이며 대문자와 소문자를 구별한다. 

예제:

.global My AsmFunc

 

3) .text

.text 유사 오퍼레이터는 컴파일러에게 코드 섹션 또는 하위 섹션부터 시작할 수 있도록 컴파일된 코드를 입력하라고 지시한다.

Syntax Format:

.text {subsection}

예제:

.text

.text {subsection}

4) .end

.end는 어셈블리 파일의 마지막 표기법이다. 이 표기 이후의 코드는 처리되지 않는다.

Syntax Format:

.end

 

3.1.5 Lab 1 Operation Steps

1. Lab A

(1)    새로운 프로젝트 만들기

Embest IDE을 실행하고 File->New Workspace 메뉴를 선택하면 새로운 대화창이 뜰것이다. 그때 그림 3-1과 같이 내용을 입력한다.

                       Figure 3-1 새로운 작업공간 만들기

OK 버튼을 클릭하면 새로운 프로젝트가 생성되고 프로젝트와 마찬가지의 명칭을 사용하여 새로운 작업공간 또한 만들어 질것이다. 그리고 작업공간 창에 새로운 작업공간과 프로젝트가 IDE에 의해 열린다.

주목:workspace name이 생성된 후 왼쪽 창에 나타나는 Workspace name: n project(s)의 오른쪽 위에 새로운 프로젝트를 추가한다. 여기서 n은 일반적으로 현재 작업공간에 있는 프로젝트의 전체 숫자를 나타낸다. 새로운 프로젝트를 컴파일하려면 프로젝트를 활성화시켜야 한다. 

(2) 소스 파일 만들기

FileàNew을 선택하면 특정 타이틀이 없는 새로운 에디터 창이 뜨고 입력 커서가 차의 첫 줄에 나타난다. 같은 소스 코드인 asm_a.s을 입력한다. 소스 파일 편집이 끝나면 프로젝트 디렉토리에 있는 asm_a.s로 파일을 저장한다.

(3) 소스파일을 프로젝트에 추가한다. 먼저 프로젝트 소스를 클릭한다면 다음과 같이 실행한다:

ProjectàAdd To Project->Files을 선택하거나 바로 프로젝트 창에 있는 프로젝트 명칭을 클릭하면 파일 선택 창이 뜬다. 방금 생성된 asm_a.s파일을 선택한다.

(4) Basic Settings:

ProjectàSettings 선택하거나 Alt+F7을 누르면 프로젝트 설정 대화창이 뜬다. 그림 3-2와 같이 Processor 페이지를 선택한 다음  타겟 보드 프로세서를 arm7으로 설정한다.

                Figure 3-2 새로운 작업공간에서 프로세서 설정하기

(5)오브젝트 코드 생성하기:

BuildàBuild asm_a을 선택하거나 F7을 눌러서 오브젝트 코드를 생성한다. 아니면 그림 3-3 처럼 툴바 위의 버튼을 클릭한다.

                      Figure 3-3 Embest IDE Compiling Buttons

 

(6) 디버그 설정:

ProjectàSettings 등등을 선택하거나 Alt+F7을 누르면 프로젝트 설정 대화창이 뜬다. Remote페이지를 선택하여 그림 3-4처럼 디버그 디바이스를 설정한다.

Figure 3-4 새로운 작업공간에서의 Emulator 설정

 

Debug페이지를 선택하여 그림 3-5처럼 디버그 모듈을 설정한다.

(7) Debug àRemote Connect를 선택하고 Debug à Download 그리고, Register를 선택한다.

(8) Memory를 열고 address 0x8000-0x801F , 0xFF0-0xFFF를 본다.

(9) Single step을 실행하면 메모리안에 값과 저장된 것을 볼 수 있을 것이다.

(10)프로그램이 작동되는 것을 지켜보시고 관련된 기술자료들을 검토하시기 바랍니다. ARM 명령어를 어떻게 사용할 것인지에 대해서 이해를 할 수 있을 것입니다.

(11) 이해를 하고 나면 Lab A를 마스터 하고, Lab 1의 마지막 부분에서 실험을 해 볼것이다.

 

 

                 Figure 3-5 Debugger Settings of the Workspace

 

1.      Lab B

(1) Add New Project to Workspace…”

(2) Lab A를 참조하여 project sam_b를 컴파일하라.

(3) Lab A를 참조하여 object code 를 생성하고 debugging을 완료한다..

(4) Lab A를 이해하고 Lab 1의 마지막에 실행하라.

3.1.6 Sample Programs of Lab 1

1.      Lab A Sample Program

 

 

2.      Lab B Sample Program

위의 프로그램을 단계별로 실행하게 되면 레지스터 값과 각각의 명령어가 실행될 때 변화되는 메모리의 위치가 어떻게 변화되는지 볼 수 있을 것이다.

 Step-by-step을 실행하라

 

 

댓글달기 회원에게만 댓글 작성 권한이 있습니다. 회원가입하여 정보공유를 하면 좋겠습니다.
첨부파일
  스팸신고 스팸해제
글쓰기
 
이전글 실습2
다음글 예제샘플1
 
 
| 회사소개 | 이용약관 | 개인정보취급방침 | 이용안내
Copyright ⓒ 2010 KitKorea All rights reserved.
전화 : 031-429-0845 FAX : 031-477-1407
Contact open@kitkorea.com for more information.
법인명(상호):인터전자 주식회사 주소:14120 경기도 안양시 동안구 흥안대로 112-1 (호계동)
사업자 등록번호 안내 [138-81-28277] / 통신판매업 신고 제 안양 1753호 [사업자정보확인]
개인정보보호책임자 :홍성호(open@kitkorea.com) / 대표자(성명):홍성호
cafe24