File : (TOPDIR)/board/samsung/mango210/u-boot.lds
LD(loader & Linker)의 input으로 주어져서, object 파일을 생성하는데 규칙을 제공한다.
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
cpu/s5pc11x/start.o (.text)
cpu/s5pc11x/s5pc110/cpu_init.o (.text)
board/samsung/mango210/lowlevel_init.o (.text)
cpu/s5pc11x/nand_cp.o (.text)
cpu/s5pc11x/movi.o (.text)
common/secure.o (.text)
common/ace_sha1.o (.text)
*(.text)
}
. = ALIGN(4);
.rodata : { *(.rodata) }
. = ALIGN(4);
.data : { *(.data) }
. = ALIGN(4);
.got : { *(.got) }
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
. = ALIGN(4);
.mmudata : { *(.mmudata) }
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
_end = .;
}
⊙ OUTPUT_FORMAT은 ELF32의 little endian으로 코드를 생성
⊙ OUTPUT_ARCH는 binary를 실행 할 수 있는 CPU architecture를 ARM으로 사용
⊙ ENTRY point은 프로그램의 시작을 가리키며, 시작되는 함수의 이름은 "_start"이다.
⊙ SECTIONS를 보면 text, rodata, data, got, mmudata, bss라는 section들이 정의되어 있다.
.text : 실행할 프로그램 코드 영역
.rodata : read-only data 영역 (const 등으로 지정된 데이터)
.data : initialized data 영역
.got : global offset table 영역
.mmudata : MMU data 영역
.bss : uninitialized data 영역
⊙ 특수한 링커 변수 dot `.' 는 항상 현재 출력 address point을 담고 있다.
address point 는 출력 섹션의 크기만큼 증가한다.
⊙ `*'는 어떤 파일명에도 대응한다. `*(.text)'는 모든 입력파일의 모든 입력 섹션 `.text'을 의미한다.
⊙ 프로그램 코드는 0x00000000에서 시작해서 4byte단위로 정렬된 text section에 놓여질 것이다.
⊙ U-boot의 시작은 Entry point에 선언된 _start부터 시작된다.
⊙ _start는 (TOPDIR)/cpu/s5pc11x/start.S에 정의되어 있다.
⊙ TEXT_BASE에의해 Linker수행 시 symbol들은 상대적 주소를 갖는다.
⊙ Power가 on 한 후 0x00번지(즉,flash)에서 시작하여 memory초기화를 거쳐 flash의 내용을 dram에 relocate
하면 비로써 dram 에서 동작 하게 된다.
⊙ Symbol들은 모두 TEXT_BASE의 상대적 주소 값을 가지고 있으므로, dram에 relocate전에는 offset branch
명령만 사용 해야 한다.(B,BL,ADR)
'[C-06] S5PV210' 카테고리의 다른 글
[mango210] start.S의 분석 (0) | 2011.03.17 |
---|---|
[mango210] u-boot hardware point (0) | 2011.03.16 |
[mango210] u-boot 디렉토리 구조 (0) | 2011.03.16 |
[mango210] ARM Architecture Reference Manual (0) | 2011.03.10 |
[mango210] S5PV210 Booting Sequence (0) | 2011.01.14 |