3.1.4. 이미지 엔트리 포인트

이미지의 엔트리 포인트는 프로그램 실행이 시작될 수 있는 위치입니다. 다음과 같은 두 가지 타입의 엔트리 포인트가 있습니다.

초기 엔트리 포인트

이미지의 초기 엔트리 포인트는 ELF 헤더 파일에 저장된 단일 값입니다. 운영 체제 또는 부트 로더가 RAM으로 로드한 프로그램의 경우, 로더는 이미지의 초기 엔트리 포인트로 제어권을 이전하여 이미지 실행을 시작합니다.

이미지에는 초기 엔트리 포인트가 하나만 있을 수 있습니다. 초기 엔트리 포인트는 ENTRY 지시문이 설정하는 엔트리 포인트 중 하나일 수 있지만 반드시 그래야 하는 것은 아닙니다.

ENTRY 지시문이 설정한 엔트리 포인트

이들은 ENTRY 지시문으로 어셈블리 언어 소스에서 설정되는 엔트리 포인트입니다. 임베디드 시스템에서 이 지시문은 일반적으로 RESET, IRQFIQ와 같은 프로세서 예외 벡터를 통해 입력되는 코드를 표시하는 데 사용됩니다.

ENTRY 지시문으로 이미지에 여러 엔트리 포인트를 지정할 수 있습니다. 이 지시문은 사용하지 않는 섹션 제거를 수행할 때 링커에게 섹션을 제거하지 말라고 지시하는 ENTRY 키워드로 출력 코드 섹션을 표시합니다.

C 및 C++ 프로그램의 경우, C 라이브러리의 __main() 함수도 엔트리 포인트입니다.

ENTRY 지시문에 대한 자세한 내용은 RealView Compilation Tools 버전 3.0 핵심 설명서를 참조하십시오.

임베디드 이미지는 로더에 의해 사용될 경우 헤더에 지정된 단일한 초기 엔트리 포인트를 가져야 합니다. 자세한 내용은 초기 엔트리 포인트 지정을 참조하십시오.

초기 엔트리 포인트 지정

--entry 링커 옵션으로 초기 엔트리 포인트를 지정할 수 있습니다. --entry 옵션은 한 번만 지정할 수 있습니다. 자세한 내용은 armlink 명령 구문의 설명을 참조하십시오.

0에 ROM이 있는 임베디드 응용 프로그램의 경우 --entry 0x0을 사용하십시오(또는 선택적으로 높은 벡터를 가진 CPU의 경우 0xFFFF0000을 사용).

초기 엔트리 포인트는 다음과 같은 조건을 충족해야 합니다.

  • 이미지 엔트리 포인트는 항상 실행 영역 안에 있어야 합니다.

  • 실행 영역은 오버레이가 아니어야 하며 루트 실행 영역(로드 주소가 실행 주소와 동일)이어야 합니다.

초기 엔트리 포인트를 지정하는 데 --entry 옵션을 사용하지 않을 경우,

  • 입력 개체에 ENTRY 지시문이 설정한 엔트리 포인트가 하나 있으면 링커는 해당 엔트리 포인트를 이미지의 초기 엔트리 포인트로 사용합니다.

  • 링커는 다음 중 한 가지 경우에 초기 엔트리 포인트를 포함하지 않는 이미지를 생성합니다.

    • ENTRY 지시문을 사용하여 둘 이상의 엔트리 포인트가 지정된 경우

    • ENTRY 지시문을 사용하여 지정된 엔트리 포인트가 없는 경우

    두 가지 상황 모두에 링커는 다음 경고를 발행합니다.

    L6305W: 이미지에 엔트리 포인트가 없습니다. (여러 선택 항목으로 인해 지정되지 않거나 
    설정되지 않음)
    

    이 경고를 수정하려면 --entry로 고유한 엔트리 포인트를 지정합니다.

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