Uboot之u-boot.lds的連結指令碼
阿新 • • 發佈:2019-01-07
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中執行。