最开始系统上电后 从uboot.lds开始引导
OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips") /* 这里是生成格式为elf。大端,mips */
OUTPUT_ARCH(mips) /* mips架构 */ENTRY(_start) /* 入口点为_start ,在cpu/mips/start.S中定义*/SECTIONS{/*指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。必须使编译器知道这个地址,通常都是修改此处来完成*/
. = 0x00000000; /* 从0x0位置开始 */. = ALIGN(4); /* 代码4字节对齐 */
.text: /* 这个是程序存放的地方 ,代码段 */ { *(.text*) }. = ALIGN(4); /* 表示以4字节对齐 */
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } /* 指定只读数据段 */. = ALIGN(4);
.data : { *(.data*) } /* 指定读/写数据段 */. = .;
_gp = ALIGN(16);.got : { /* 指定got段, got段式是uboot自定义的一个段, 非标准段 */
__got_start = .; *(.got) __got_end = .; }. = ALIGN(4);
.sdata : { *(.sdata*) } /* 指定静态读/写数据段 */__u_boot_cmd_start = .; /* 把__u_boot_cmd_start赋值为当前位置, 即起始位置 */
.u_boot_cmd : { *(.u_boot_cmd) } /* 指定u_boot_cmd段, uboot把所有的uboot命令放在该段. */ __u_boot_cmd_end = .; /* 把__u_boot_cmd_end赋值为当前位置,即结束位置 */uboot_end_data = .; /* 把uboot_end_data赋值为当前位置,即作为data段结束位置 */
num_got_entries = (__got_end - __got_start) >> 2; /* 指定 num_got_entries 地址 */. = ALIGN(4);
.sbss : { *(.sbss*) } .bss : { *(.bss*) . = ALIGN(4); } /*指定bss段,告诉加载器不要加载这个段*/ uboot_end = .; /*把_end赋值为当前位置,即bss段的结束位置*/}