OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm","elf32-littlearm")

//指定输出可执行文件是elf格式,32ARM指令,小端
OUTPUT_ARCH(arm)

//OUTPUT_ARCH(arm)定义输出的目标处理器的架构

ENTRY(_start)

//定义了程序运行时候的第一个运行模块。该模块定义在cpu\arm920t\start.S文件中。
SECTIONS
{

       . = 0x00000000;     //0x0位置开始

       . = ALIGN(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) }    //指定got,got段式是uboot自定义的一个段, 非标准段

      . = .;

      __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赋值为当前位置,即结束位置

     . = ALIGN(4);

     __bss_start = .;     //__bss_start赋值为当前位置,bss段的开始位置
    
.bss
      (NOLOAD) : { *(.bss) . = ALIGN(4); }
  //指定bss

      _end = .;   //_end赋值为当前位置,bss段的结束位置
}

12-14 11:55