| |||
| Home > 스캐터 로딩 설명 파일 사용 > 단순 이미지에 대한 해당 스캐터 로딩 설명 > 유형 3, 로드 영역 두 개와 연속되지 않는 실행 영역 | |||
유형 3 이미지는 로드 뷰에 있는 두 로드 영역과 실행 뷰에 있는 세 실행 영역으로 이루어져 있습니다. 이 이미지는 유형 2의 단일 로드 영역이 이제는 두 로드 영역으로 분할된다는 점을 제외하고 유형 2 이미지와 유사합니다.
다음 링커 옵션을 사용하여 로드 영역을 재배치하고 분할합니다.
--reloc--reloc --split 조합은 이미지를 단순 유형
3과 유사하게 만들지만 두 로드 영역이 이제는 RELOC 속성을 갖습니다.
--ro-base=address1RO 출력 섹션을 포함하는 영역의 로드 및 실행 주소를 지정합니다.
--rw-base=address2RW 출력 섹션을 포함하는 영역의 로드 및 실행 주소를 지정합니다.
--splitRO 및 RW 출력 섹션을 포함하는 기본 단일 로드 영역을 두 로드 영역으로 분할합니다. 한 로드 영역은 RO 출력 섹션을 포함하고 다른 하나는 RW 출력 섹션을 포함합니다.
Example 5.22에서는 --ro-base=0x010000 --rw-base=0x040000 --split의
사용에 해당하는 스캐터 로딩 설명을 보여 줍니다.
이 예제에서는 다음과 같습니다.
이 설명은 로드 주소가 0x010000과 0x040000인 LR_1과 LR_2라는
두 로드 영역이 포함된 이미지를 만듭니다.
이미지에는 각각 RO, RW 및 ZI 출력 섹션을 포함하는 ER_RO, ER_RW 및 ER_ZI라는
세 실행 영역이 있습니다. ER_RO의 실행 주소는 0x010000입니다.
ER_RW 실행 영역은 ER_RO와
연속되지 않으며 실행 주소는 0x040000입니다.
ER_ZI 실행 영역은 선행 실행 영역 ER_RW의
끝 부분 바로 뒤에 배치됩니다.
Example 5.22. 다중 로드 영역
LR_1 0x010000 ; The first load region is at 0x010000.
{
ER_RO +0 ; The address is 0x010000.
{
* (+RO)
}
}
LR_2 0x040000 ; The second load region is at 0x040000.
{
ER_RW +0 ; The address is 0x040000.
{
* (+RW) ; All RW sections are placed consecutively into this region.
}
ER_ZI +0 ; The address is 0x040000 + size of ER_RW region.
{
* (+ZI) ; All ZI sections are placed consecutively into this region .
}
}
또한 이 유형 3 이미지는 로드 뷰에 있는 두 로드 영역과 실행 뷰에 있는 세 실행 영역으로 이루어져 있습니다.
그러나 --reloc는 두 로드 영역이 이제 RELOC 속성을 가지도록
지정하는 데 사용됩니다.
Example 5.23에서는 --ro-base
0x010000 --rw-base 0x040000 --reloc
--split의 사용에 해당하는 스캐터 로딩 설명을 보여 줍니다.
Example 5.23. 재배치 가능 로드 영역
LR_1 0x010000 RELOC
{
ER_RO + 0
{
* (+RO)
}
}
LR2 0x040000 RELOC
{
ER_RW + 0
{
* (+RW)
}
ER_ZI +0
{
* (+ZI)
}
}