关闭

uboot smdk6400.lds链接脚本分析

标签: u-boot链接脚本lds文件
68人阅读 评论(0) 收藏 举报
分类:

开头部分
文件格式、输入架构、ENTRY() 用来指明整个程序的入口

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)

指定程序链接地址有两种方法:

  • Makefile中的ld命令的flags用-Ttext [地址]来指定
  • 在链接脚本SECTIONS开头用.=[地址]来指定

在既在Makefile中使用-Ttext [地址],同时在lds链接脚本写明.=[地址]时,编译器会以Makefile中的-Ttext [地址]指定的为准

SECTIONS部分

SECTIONS
{
    . = 0x00000000;

    . = ALIGN(4); //设定4字节对齐,防止传过来的地址未对齐

    .text      :  
    {
      /*代码段必须要注意文件的排列顺序,前面是uboot的BL1
      部分,必须包含初始化,跳转的.o文件*/
      arch/arm/cpu/arm1176/start.o  (.text)
      arch/arm/cpu/arm1176/s3c64xx/cpu_init.o   (.text)
      *(.text)
    }

    . = ALIGN(4);
    .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }

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

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

    __u_boot_cmd_start = .;
    .u_boot_cmd : { *(.u_boot_cmd) }
    __u_boot_cmd_end = .;

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

    . = ALIGN(4);
    __bss_start = .;
    .bss : { *(.bss) . = ALIGN(4); }
    _end = .;
}

其中.text .data .rodata .bss是编译工具自带的段,__u_boot_cmd_start .mmudata等是uboot自带的段,对于uboot的命令操作等功能有重要作用

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4258次
    • 积分:345
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    最新评论