3.1.4. 이미지 진입점

이미지의 진입점은 프로그램 실행이 시작될 수 있는 위치입니다. 다음과 같은 두 가지 유형의 진입점이 있습니다.

초기 진입점

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

이미지에는 초기 진입점이 하나만 있을 수 있습니다. 초기 진입점은ENTRY 지시어가 설정하는 진입점 중 하나일 수는 있지만 반드시 그럴 필요는 없습니다.

ENTRY 지시어가 설정한 진입점

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

ENTRY 지시어로 이미지에 여러 진입점을 지정할 수 있습니다. 이 지시어는 사용하지 않는 섹션 제거를 수행할 때 섹션을 제거하지 말라고 링커에 지시하는 ENTRY 키워드로 출력 코드 섹션을 표시합니다.

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

ENTRY 지시어에 대한 자세한 내용은 어셈블러 설명서를 참조하십시오.

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

초기 진입점 지정

프로그램에 대해 최소한 하나의 초기 진입점을 지정해야 합니다. 그렇지 않으면 링커에서 경고가 생성됩니다. 모든 소스 파일에 진입점이 있을 필요는 없습니다. 단일 소스 파일에 여러 개의 진입점을 사용할 수는 없습니다.

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

초기 진입점은 다음과 같은 조건을 충족해야 합니다.

  • 이미지 진입점은 항상 실행 영역 안에 있어야 합니다.

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

초기 진입점을 지정하는 데 --entry 옵션을 사용하지 않을 경우,

  • 입력 객체에 ENTRY 지시어가 설정한 진입점이 하나 있으면 링커는 해당 진입점을 이미지의 초기 진입점으로 사용합니다.

  • 링커는 다음 중 한 가지 경우에 초기 진입점을 포함하지 않는 이미지를 생성합니다.

    • ENTRY 지시어를 사용하여 둘 이상의 진입점이 지정된 경우

    • ENTRY 지시어를 사용하여 지정된 진입점이 없는 경우

자세한 내용은 다음 항목을 참조하십시오.

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0206IK
Non-Confidential