RealView ® CompilationTools 개발자 설명서

버전 3.0


Table of Contents

서문
설명서 정보
대상 독자
설명서 사용
Typographical conventions
추가 정보
사용자 의견
RealView Compilation Tools에 대한 사용자 의견
설명서에 대한 사용자 의견
1. 소개
1.1. RVCT
1.1.1. 예제 사용
1.2. 일반 프로그래밍 문제
1.2.1. 정렬되지 않은 포인터
1.2.2. 구조체의 정렬되지 않은 필드
1.2.3. 코드 이식 및 정렬되지 않은 액세스 감지
1.3. ARM 프로세서용 소프트웨어 개발
1.3.1. 임베디드 소프트웨어 개발
1.3.2. ARM 코드와 Thumb 코드의인터워킹
1.3.3. C, C++ 및 어셈블리 언어 조합
1.3.4. 프로세서 예외 처리
1.3.5. AAPCS 사용
1.3.6. 레거시 오브젝트 및 라이브러리와의 호환성
1.4. ARM 아키텍처 버전 6 지원
1.4.1. 명령어 생성
1.4.2. 정렬 지원
1.4.3. 엔디안 지원
1.4.4. 예제 1- 부호/0 확장
1.4.5. 예제 2 - 패킹된 구조체
2. 임베디드 소프트웨어 개발
2.1. 임베디드 소프트웨어 개발
2.1.1. 예제 코드
2.2. 타겟 시스템이 없을 경우의 기본 컴파일 도구 동작
2.2.1. 세미호스팅
2.2.2. C 라이브러리 구조
2.2.3. 기본 메모리 맵
2.2.4. 링커 배치 규칙
2.2.5. 응용 프로그램 시작
2.2.6. 빌드 1의 예제 코드
2.3. 타켓 하드웨어에 맞게 C 라이브러리 조정
2.3.1. C 라이브러리 타겟 조정
2.3.2. C 라이브러리 세미호스팅 사용 안 함
2.3.3. 빌드 2의 예제 코드
2.4. 타켓 하드웨어에 맞게 이미지 메모리 맵 조정
2.4.1. 스캐터 로딩
2.4.2. 스캐터 로딩 설명 파일 구문
2.4.3. 스캐터 로딩 설명 파일 예제
2.4.4. 스캐터 로딩 설명 파일에 오브젝트 배치
2.4.5. 루트 영역
2.4.6. 스택 및 힙 배치
2.4.7. 런타임 메모리 모델
2.4.8. 빌드 3의 예제 코드
2.5. 리셋 및 초기화
2.5.1. 초기화 시퀀스
2.5.2. 벡터 테이블
2.5.3. ROM/RAM 재매핑
2.5.4. 로컬 메모리 설정 고려 사항
2.5.5. 스캐터 로딩 및 메모리 설정
2.5.6. 스택 포인터 초기화
2.5.7. 하드웨어 초기화
2.5.8. 실행 모드 고려 사항
2.5.9. 빌드 4의 예제 코드
2.6. 추가 메모리 맵 고려 사항
2.6.1. 스캐터 로딩 설명 파일에 타겟 주변 장치 배치
2.6.2. 스캐터 로딩 설명 파일에 스택 및 힙 배치
2.6.3. 빌드 5의 예제 코드
3. 위치 독립적인 코드 및 데이터 작성
3.1. 위치 독립성
3.1.1. AAPCS 사용
3.2. 읽기 전용 위치 독립성
3.2.1. ROPI를 포함한 레지스터 사용
3.2.2. ROPI용 C 및 어셈블러 코드 작성
3.2.3. 코드 링크
3.2.4. FPIC 주소 지정
3.2.5. 코드 예제
3.3. 읽기/쓰기 위치 독립적
3.3.1. 재진입 루틴
3.3.2. RWPI를 포함한 레지스터 사용
3.3.3. 위치 독립적 데이터의 주소 지정
3.3.4. RWPI용 어셈블리 언어 작성
3.3.5. 코드 링크
3.3.6. 코드 예제
4. ARM과 Thumb의 인터워킹
4.1. 인터워킹
4.1.1. AAPCS 사용
4.1.2. 인터워킹을 사용하는 경우
4.1.3. /interwork 옵션 사용
4.1.4. 인터워킹 호출 감지
4.1.5. 링커에서 생성된 비니어
4.2. 어셈블리 언어 인터워킹
4.2.1. 분기 및 전환 명령어
4.2.2. 어셈블러 모드 변경
4.2.3. ARM 헤더 예제
4.2.4. ARM 아키텍처 v5T 이상과 인터워킹
4.2.5. Thumb 코드의 레이블
4.3. C 및 C++ 인터워킹 및 비니어
4.3.1. 인터워킹을 위한 코드 컴파일
4.3.2. C 및 C++ 인터워킹의 기본 규칙
4.3.3. Thumb 상태의 함수에 대한 포인터
4.3.4. 동일한 함수의 두 가지 버전 사용
4.4. 비니어를 사용한 어셈블리 언어 인터워킹
4.4.1. 비니어를 사용한 어셈블리 전용 인터워킹
4.4.2. 비니어를 사용한 C, C++ 및 어셈블리 언어 인터워킹
5. C, C++ 및 어셈블리 언어 조합
5.1. 인라인 및 임베디드 어셈블러 사용
5.1.1. 인라인 어셈블러의 기능
5.1.2. 임베디드 어셈블러의 기능
5.1.3. 인라인 어셈블리 코드와 임베디드 어셈블리 코드의 차이점
5.2. 어셈블리 코드에서 C 전역 변수 액세스
5.3. C++에서 C 헤더 파일 사용
5.3.1. 시스템 C 헤더 파일 포함
5.3.2. 사용자 고유의 C 헤더 파일 포함
5.4. C, C++ 및 ARM 어셈블리 언어 간 호출
5.4.1. 언어 간 호출을 위한 일반적인 규칙
5.4.2. C++ 관련 정보
5.4.3. 언어 간 호출 예제
6. 프로세서 예외 처리
6.1. 프로세서 예외
6.1.1. 예외 타입
6.1.2. 벡터 테이블
6.1.3. 예외별 모드 및 레지스터 사용
6.1.4. 예외 우선순위
6.2. 프로세서 상태 확인
6.3. 예외 발생 및 종료
6.3.1. 예외에 대한 프로세서 응답
6.3.2. 예외 핸들러에서 복귀
6.3.3. 복귀 주소 및 복귀 명령어
6.4. 예외 처리
6.5. 예외 핸들러 설치
6.5.1. 예외 핸들러 설치 방법
6.5.2. 리셋 시 핸들러 설치
6.5.3. C에서 핸들러 설치
6.6. SVC 핸들러
6.6.1. 호출할 SVC 결정
6.6.2. 어셈블리 언어의 SVC 핸들러
6.6.3. C 및 어셈블리 언어의 SVC 핸들러
6.6.4. 관리자 모드에서 SVC 사용
6.6.5. 응용 프로그램에서 SVC 호출
6.6.6. 응용 프로그램에서 동적으로 SVC 호출
6.7. 인터럽트 핸들러
6.7.1. 외부 인터럽트 수준
6.7.2. C의 간단한 인터럽트 핸들러
6.7.3. 재진입 인터럽트 핸들러
6.7.4. 어셈블리 언어의 예제 인터럽트 핸들러
6.8. 리셋 핸들러
6.9. 정의되지 않은 명령어 핸들러
6.10. 프리페치 abort 핸들러
6.11. 데이터 abort 핸들러
6.12. 예외 핸들러 연결
6.12.1. 단일 확장 핸들러
6.12.2. 연결된 여러 개의 핸들러
6.13. 시스템 모드
7. 디버그 통신 채널
7.1. 디버그 통신 채널
7.1.1. 세미호스팅
7.2. 타겟에서의 데이터 전송
7.3. 폴링 방식 디버그 통신
7.3.1. 통신 데이터 제어 레지스터
7.3.2. 타겟에서 디버거로의 통신
7.3.3. 디버거에서 타겟으로의 통신
7.4. 인터럽트 구동 디버그 통신
7.5. Thumb 상태에서 액세스

소유권 고지 사항

® 또는 ™ 표시가 있는 단어와 로고는 ARM Limited 소유의등록 상표 또는 상표입니다. 이 설명서에 언급된 기타 브랜드와 이름은 해당 소유자의 상표일 수 있습니다.

이 설명서에 포함된 전체 또는 일부 정보나 설명된 제품은 해당 저작권 소유자의 사전 서면 승인 없이는 어떤형태로도 개조되거나 복제될 수 없습니다.

이 설명서에 설명된 제품은 지속적으로 개발 및 개선될 수 있습니다. 이 설명서에 포함된 모든 제품 명세와해당 사용법은 ARM의 신뢰하에 제공됩니다. 그러나 ARM에서는 상품성 또는 특정 목적에의 적합성을 비롯하여 그 밖의묵시적이거나 명시적인 모든 보증을 부인합니다.

이 설명서는 제품 사용자를 지원하는 용도로만 만들어졌습니다. ARM Limited는 이 설명서 정보의 사용,정보의 오류나 누락 또는 제품의 잘못된 사용에 따른 어떠한 손실이나 손상도 책임지지 않습니다.

기밀 상태

이 설명서는 기밀 문서가 아닙니다. 이 설명서의사용, 복사 및 공개에 대한 권한은 ARM과 ARM으로부터이 설명서를 제공받은 당사자가 동의한 계약 조건에따라 라이센스 제한의 적용을 받을 수 있습니다.

제품 상태

이 설명서의 정보는 개발된 제품에 대한 최종정보입니다.

Revision History
Revision A 2002년8월 릴리스 1.2
Revision B 2003년1월 릴리스 2.0
Revision C 2003년9월 RVDS 버전 2.0용 릴리스 2.0.1
Revision D 2004년1월 RVDS 버전 2.1용 릴리스 2.1
Revision E 2004년12월 RVDS 버전 2.2용 릴리스 2.2
Revision F 2005년5월 RVDS 버전 2.2 SP1용 릴리스 2.2
Revision G 2006년3월 RVDS 3.0용 릴리스 3.0
Copyright © 2002-2006 ARM Limited. All rights reserved. ARM DUI 0203GK
Non-Confidential