连接代码具体分析-pynq-z2-配置和引导

时间:2024-06-28 01:57:43
【文件属性】:

文件名称:连接代码具体分析-pynq-z2-配置和引导

文件大小:827KB

文件格式:PDF

更新时间:2024-06-28 01:57:43

ARM Uboot 源码分析

2.2 连接代码具体分析 以 u-boot-2012.04.01 版本为例。 u-boot-2012.04.01/arch/arm/cpu/u-boot.lds //设置输出文件大小端格式——OUTPUT_FORMAT(default,big,little),如果不指 定大小端,默认为小段;就算指定了大端,也以小端处理。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) //设置文件以 ARM 可执行文件格式输出 ENTRY(_start) //设置初始入口点,所有指令的入口点就是_start 标 号,见 3.1 章节 start.S 第一条指令 SECTIONS //告诉链接器如何将输入段组合映射到输出端,以及如何 在内存中放置这些段 { . = 0x00000000; //“.”代表位置计数器,紧跟 SECTIONS 命令的这句命令 是指定后面的段在内存中的起始位置,缺省为 0x0,所以该指令可以不要。 . = ALIGN(4); //指定 text 输出端以 4 字节对齐。 .text : { __image_copy_start = .; CPUDIR/start.o (.text) //text 段的第一个输入段是 start.o,即指定放到 0x0 地址 处的第一个可执行文件。CPUDIR 是一个宏,指定 start.s 的路径 *(.text) //其他文件的文本段紧跟 start.o 文件放置。 } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }//只读数据 段,首先将所有文件的只读数据段以名字(即 asc 码排序),然后以对齐方式排序存 放到 text 段后面。 . = ALIGN(4); .data : { *(.data) }//所有的数据段 . = ALIGN(4); .got : { *(.got) }// got 段是 uboot 自定义的一个段,不是 GNU 官方定义的标准 段。 . = .; __u_boot_cmd_start = .; // .u_boot_cmd : { *(.u_boot_cmd) } //指定 u_boot_cmd 段, uboot 把所有的 uboot 命 令放在该段. __u_boot_cmd_end = .;


网友评论