1. 程式人生 > >Uboot之u-boot.lds的連結指令碼

Uboot之u-boot.lds的連結指令碼

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)        //指定程式的入口點,在start.s中的_start。
SECTIONS
{
    . = 0x00000000;

    . = ALIGN(4);    //4個位元組對齊
    .text :        //文字段
     {
        cpu/arm920t/start.o    (.text)
        *(.text)
    }

    . = ALIGN(4);
    .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }     //資料只讀段

    . = ALIGN(4);
    .data : { *(.data) }                 //資料段

    . = ALIGN(4);
    .got : { *(.got) }

    . = .;                             //存放uboot中的命令
    __u_boot_cmd_start = .;
    .u_boot_cmd : { *(.u_boot_cmd) }
    __u_boot_cmd_end = .;
                                             //BSS段,block by start symbol
    . = ALIGN(4);
    __bss_start = .;
    .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
    _end = .;
}
由u-boot.lds的內容可以看出,start.o在連結時被安排到最開始的位置。將編譯生成的.o和.a檔案按照board/samsung/config.mk檔案的程式碼段起始地址即TEXT_BASE = 0x33F80和uboot.lds連結指令碼進行連線。
因此可得到elf格式的uboot。
ELF:Linux作業系統下的可執行映像檔案。
AXF:ARM的除錯檔案,ADS常試用。
BIN:真正的可執行檔案,可寫到Flash或RAM中執行。