| |||
| Home > 스캐터 로딩 설명 파일 사용 > 스캐터 로딩 개요 > 스캐터 로딩 설명 파일을 통한 스택 및 힙 지정 | |||
ARM C 라이브러리는 __user_initial_stackheap() 함수의
여러 가지 구현을 제공하며 스캐터 로딩 설명 파일에 주어진 정보를 통해 해당 상황에 적합한 구현을 자동으로 선택합니다.
이중 영역 메모리 모델을 선택하려면 스캐터 로딩 설명 파일에 ARM_LIB_HEAP과 ARM_LIB_STACK이라는
두 개의 특별한 실행 영역을 정의합니다. 두 영역 모두에 EMPTY 특성이 있습니다.
따라서 다음 심볼 값을 사용하며 __user_initial_stackheap()의
기본 구현이 아닌 구현을 라이브러리에서 선택하게 됩니다.
Image$$ARM_LIB_STACK$$Base
Image$$ARM_LIB_STACK$$ZI$$Limit
Image$$ARM_LIB_HEAP$$Base
Image$$ARM_LIB_HEAP$$ZI$$Limit
하나의 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
EMPTY 특성을 갖는 ARM_LIB_STACKHEAP이라는
단일 실행 영역을 정의하여 __user_initial_stackheap() 함수가
결합된 스택/힙 영역을 사용하도록 할 수 있습니다. 이에 따라 __user_initial_stackheap()에서 Image$$ARM_LIB_STACKHEAP$$Base 및 Image$$ARM_LIB_STACKHEAP$$ZI$$Limit 심볼의
값을 사용합니다.
__user_initial_stackheap()을 다시 구현할 경우
모든 라이브러리 구현이 무시됩니다.