5.1.2. 스캐터 로딩 설명 파일을 통한 스택 및 힙 지정

ARM C 라이브러리는 __user_initial_stackheap () 함수의 여러 가지 구현을 제공하며 스캐터 로딩 설명 파일에 주어진 정보를 통해 해당 상황에 적합한 구현을 자동으로 선택합니다.

2-영역 메모리 모델을 선택하려면 스캐터 로딩 설명 파일에 ARM_LIB_HEAPARM_LIB_STACK이라는 두 개의 특별한 실행 영역을 정의합니다. 두 영역 모두에 EMPTY 속성이 있습니다. 따라서 다음 기호 값을 사용하며 __user_initial_stackheap ()의 기본 구현이 아닌 구현을 라이브러리에서 선택하게 됩니다.

하나의 ARM_LIB_STACK 또는 ARM_LIB_HEAP 영역만 지정할 수 있으며 다음 예와 같이 크기를 할당해야 합니다.

ARM_LIB_HEAP 0x20100000 EMPTY 0x100000-0x8000  ; Heap starts at 1MB
                                               ; and grows upwards
ARM_LIB_STACK 0x20200000 EMPTY -0x8000         ; Stack space starts at the end
                                               ; of the 2MB of RAM
                                               ; And grows downwards for 32KB

Note

위의 스택 함수를 사용하는 경우에는 어셈블리 소스에 IMPORT __use_two_region_memory를 포함하거나 C/C++ 소스에 #pragma import (__use_two_region_memory)를 포함해야 합니다. 2-영역 모델은 자동으로 선택되지 않기 때문입니다.

EMPTY 속성을 갖는 ARM_LIB_STACKHEAP이라는 단일 실행 영역을 정의하여 __user_initial_stackheap () 함수가 결합된 스택/힙 영역을 사용하도록 할 수 있습니다. 이에 따라 __user_initial_stackheap ()에서 Image$$ARM_LIB_STACKHEAP$$BaseImage$$ARM_LIB_STACKHEAP$$ZI$$Limit 기호의 값을 사용합니다.

Note

__user_initial_stackheap ()을 다시 구현할 경우 모든 라이브러리 구현이 무시됩니다.

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