下载此文档

基于S3C6410的U-boot启动代码分析.doc


文档分类:IT计算机 | 页数:约28页 举报非法文档有奖
1/28
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/28 下载此文档
文档列表 文档介绍
预备知识可执行文件由许多链接在一起的对象文件组成。对象文件有许多节,如文本、数据、 init 数据、 bss 等。这些对象文件都是由一个称为链接器脚本( *lds )的文件链接并装入的。这个链接器脚本的功能是将输入对象文件的各节映射到输出文件中;换句话说,它将所有输入对象文件都链接到单一的可执行文件中,将该可执行文件的各节装入到指定地址处。因此在分析 u-boot 代码是,首先应关注的是 u- 文件,它位于$(U-BOOT_SRC_ROOT)/board/$(BOARD_NAME) 目录下。 U-Boot 启动过程分析 U-Boot 的启动过程可以分为两个阶段,两个阶段分别完成如下功能: ( 1)第一阶段的功能??硬件设备初始化??加载 U-Boot 第二阶段代码到 RAM 空间??设置好栈??跳转到第二阶段代码入口(2)第二阶段的功能??初始化本阶段使用的硬件设备??检测系统内存映射??将内核从 Flash 读取到 RAM 中??????为内核设置启动参数第一阶段对应的文件是 和 。 U-Boot 启动第一阶段流程如下: 首先分析 u- 文件/** OUTPUT_FORMAT(default, big, little) ,在链接的时候,如果使用了-EB 的命令行参数,则使用这里的 big * 参数指定的字节序,如果使用了-EL; 的命令行参数,则使用这里的 little 参数指定的字节序,如果没有使用* 任何命令行参数,则使用这里的 default 参数指定的字节序。*由$(SRC_ROOT)/board/samsung/smdk6410/u- 中的定义可见, 不管在链接的时候使用了何种命令行参数, * 输出的目标文件都是使用 elf32-littlearm 方式的字节序。*/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/ /* 以上语句是指定输出可执行文件是 elf 格式,32 位 ARM 指令, 小端*/ /* 指定输出可执行文件的平台为 ARM*/ OUTPUT_ARCH(arm) /* 指定输出可执行文件的起始代码段为_start.*/ ENTRY(_start) SECTIONS { /* 定位当前地址为 0x0 地址*/ .= 0x00000000; /* 指定代码以 4 字节对齐*/ .= ALIGN(4); /* 指定代码段*/ .text :{ cpu/s3c64xx/ (.text) /* 代码的第一个代码部分*/ cpu/s3c64xx/s3c6410/ (.text) cpu/s3c64xx/ (.text) cpu/s3c64xx/ (.text) cpu/s3c64xx/ (.text) *(.text) lib_arm/ }.= ALIGN(4); .rodata :{ *(.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); .mmudata :{ *(.mmudata) }.= ALIGN(4); __bss_start = .; /*把__bss_start 赋值为当前位置,即 bss 段的开始位置*/ .bss :{ *(.bss) } /* 指定 bss 段*/ _end = .; /*把_end 赋值为当前位置,即 bss 段的结束位置*/ }由 u- 文件可知: 第一个链接的是 文件,因此 u- n 的入口代码在 start. o中, 其源代码为 , u- n

基于S3C6410的U-boot启动代码分析 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数28
  • 收藏数0 收藏
  • 顶次数0
  • 上传人6188
  • 文件大小0 KB
  • 时间2016-04-21