2.2.5. 이미지에 대한 메모리 맵 정보 지정

메모리 맵을 지정하려면 다음 옵션을 사용합니다.

--ro-base address

address에 RO 출력 섹션을 포함하는 영역의 로드 및 실행 주소를 모두 설정합니다. address는 워드로 정렬되어야 합니다. 이 옵션을 지정하지 않고 스캐터 로드 파일을 지정하지 않은 경우 기본 RO 기본 주소는 0x8000입니다.

--rw-base address

address에 RW 출력 섹션을 포함하는 영역의 실행 주소를 설정합니다. address는 워드로 정렬되어야 합니다.

--ropi

RO 출력 섹션을 포함하는 로드 및 실행 영역을 위치 독립적인 영역으로 만듭니다. 이 옵션을 사용하지 않으면 영역이 절대 영역으로 표시됩니다. 일반적으로 각 읽기 전용 입력 섹션은 읽기 전용 위치 독립적(ROPI)이어야 합니다. 이 옵션을 선택하면 링커에서 다음을 수행합니다.

  • 섹션 사이의 재배치가 유효한지 확인합니다.

  • 인터워킹 비니어와 같이 armlink 자체가 생성한 코드가 읽기 전용 위치 독립적이 되도록 합니다.

--rwpi

RW 및 ZI 출력 섹션을 포함하는 로드 및 실행 영역을 위치 독립적인 영역으로 만듭니다. 이 옵션을 사용하지 않으면 영역이 절대 영역으로 표시됩니다. 이 옵션에는 --rw-base 값이 필요합니다. --rw-base 값을 지정하지 않으면 --rw-base 0으로 간주됩니다. 일반적으로 각 쓰기 가능 입력 섹션은 읽기/쓰기 위치 독립적(RWPI)이어야 합니다.

이 옵션을 선택하면 링커에서 다음을 수행합니다.

  • PI 특성이 읽기/쓰기 실행 영역에 대한 입력 섹션에서 설정됩니다.

  • 섹션 사이의 재배치가 유효한지 확인합니다.

  • Region$$Table 테이블의 엄격한 정적 기준 엔트리를 생성합니다.

    이것은 영역이 복사, 압축 해제 또는 초기화될 때 사용됩니다.

--fpic

위치 독립적 코드(PIC) 즉, /fpic 한정자를 사용하여 컴파일된 코드를 링크할 수 있도록 합니다. 상대 주소 지정은 코드에서 System V 공유 라이브러리를 사용하는 경우에만 구현됩니다.

--split

RO 및 RW 출력 섹션을 포함하는 기본 로드 영역을 다음과 같은 두 개의 로드 영역으로 분할합니다.

  • RO 출력 섹션을 포함하는 한 개 영역. 기본 로드 주소가 0x8000이지만 --ro-base 옵션을 사용하여 다른 주소를 지정할 수 있습니다.

  • RW 및 ZI 출력 섹션을 포함하는 나머지 한 개 영역. --rw-base 옵션을 사용하여 로드 주소가 지정됩니다. 이 옵션에는 --rw-base 값이 필요합니다. --rw-base 값을 지정하지 않으면 --rw-base 0으로 간주됩니다.

두 영역은 모두 루트 영역입니다.

--rosplit

기본 RO 로드 영역을 두 개 RO 출력 섹션(RO-CODE용 하나와 RO-DATA용 하나)으로 분할합니다.

--pad num

패딩 바이트의 값을 설정할 수 있도록 합니다. 링커는 이 값을 로드 또는 실행 영역에 삽입된 모든 패딩 바이트에 할당합니다.

num은 16진수 형식으로 제공할 수 있는 정수입니다. 예를 들어, num0xFF로 설정하면 ROM 프로그래밍 시간을 단축하는 데 도움이 될 수 있습니다. num0xFF보다 크면 패딩 바이트는 (char)num으로 설정됩니다.

Note

패딩은 다음 위치로만 삽입됩니다.

  • 로드 영역 안으로 삽입됩니다. 로드 영역 사이에는 패딩이 없습 니다.

  • 고정 실행 영역 사이에 삽입됩니다(강제적 정렬 수행 외에). 패딩은 맨 위에 고정 실행 영역이 있는 경우는 제외하고 최대 로드 영역 길이까지는 삽입되지 않습니다.

  • 정렬 제한을 준수하도록 섹션 사이에 삽입됩니다.

--scatter file

file에 있는 스캐터 로딩 설명을 사용하여 이미지 메모리 맵을 만듭니다. 이 설명에는 이미지에 있는 다양한 영역과 섹션의 그룹화 및 배치에 대한 세부 정보가 제공되어 있습니다. 자세한 내용은 Chapter 5 스캐터 로딩 설명 파일 사용을 참조하십시오.

--scatter 옵션은 메모리 맵 옵션 --ro-base, --rw-base, --ropi, --rwpi, --rosplit, --split, --reloc, --startup--partial과 함께 사용할 수 없습니다.

Note

이 옵션을 사용하는 경우 스택 및 힙 초기화 함수 __user_initial_stackheap()을 다시 구현해야 할 수 있습니다. 자세한 내용은 Chapter 5 스캐터 로딩 설명 파일 사용을 참조하십시오.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential