lds文件说明
主要符号说明
1、OUTPUT_FORMAT(bfdname)
指定输出可执行文件格式。
2、OUTPUT_ARCH(bfdname)
指定输出可执行文件所运行CPU平台
3、ENTRY(symbol)
指定可执行文件的入口段
段定义说明
1、段定义格式
SECTIONS { ...
段名:{
内容
}
...
}
u-boot.lds 文件说明
- OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
- /* 指定输出可执行文件是elf格式,32位ARM指令,小端模式 */
- /*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
- OUTPUT_ARCH(arm)
- /* 指定输出可执行文件的平台是ARM */
- ENTRY(_start)
- /* 指定输出可执行文件的起始代码段为 _start */
- SECTIONS
- {
- /* 指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。
- 必须使编译器知道这个地址,通常是修改此处来完成 */
- . = 0x00000000;
- . = ALIGN(4); /* 代码以4字节对齐 */
- .text :
- {
- cpu/arm920t/start.o (.text) /* 代码的第一个代码部分 */
- *(.text) /* 其他代码部分 */
- }
- . = ALIGN(4); /* rodata 以4字节对齐 */
- .rodata : { *(.rodata) } /* 指定只读数据段 */
- . = ALIGN(4); /* .data 以4字节对齐 */
- .data : { *(.data) } /* 指定读,写数据段 */
- . = ALIGN(4); /* .got 以4字节对齐 */
- .got : { *(.got) } /* 指定got段,got段是uboot自定义的一个段,非标准段 */
- . = .;
- /* 把__u_boot_cmd_start 赋值为当前位置,即起始位置 */
- __u_boot_cmd_start = .;
- /* 指定u_boot_cmd 段,uboot把所有的uboot命令放在该段 */
- .u_boot_cmd : { *(.u_boot_cmd) }
- /* 把__u_boot_cmd_end 赋值为当前位置,即结束位置 */
- __u_boot_cmd_end = .;
- . = ALIGN(4);
- __bss_start = .; /* 把__bss_start 赋值为当前位置,即bss段的开始位置 */
- .bss : { *(.bss) } /* 指定bss段 */
- _end = .; /* 把_end 赋值为当前位置,即bss段的结束位置 */
- }