uboot之start.s分析..doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
uboot之start.s分析.

uboot之start.s分析 开始start.s分析,根据S3C2410来跟踪代码,参考了S3C2410的datasheet和网上各个帖子 一般来说,大家都是从start.s来分析UBOOT,但是事实是流程是从makefile中来的,也就是说是在敲入make smdk2410_config和make all后才进入start.s中,makefile在这里不做分析,韦东山的那本书有详细的说明,这里要提到的是makefile传进来的,我们在UBOOT中所设计到的LDFLAGS,这个标志确定了连接方式,其中的-T board/smd2410/U-Boot.lds -Ttext 0x33F8000(展开后的)指定了程序的布局和地址,U-Boot.lds如下(参考martree的专栏): /*******************************************************/ OUTPUT_FORMAT(elf32-littlearm, elf32-littlearm, elf32-littlearm) ;指定输出可执行文件是elf格式,32位ARM指令,小端 OUTPUT_ARCH(arm) ;指定输出可执行文件的平台为ARM ENTRY(_start) ;指定输出可执行文件的起始代码段为_start. SECTIONS { . = 0; 指明目标代码的起始地址从0x0位置开始,.代表的是当前位置 . = ALIGN(4) ; 代码以4字节对齐 .text : ;指定代码段 { cpu/arm920t/start.o (.text) ; 代码的第一个代码部分,指明start.s是入口程序代码,被放到代码段的开头 *(.text) ;其它代码部分 } . = ALIGN(4) .rodata : { *(.rodata) } ;指定只读数据段,RO段 . = ALIGN(4); .data : { *(.data) } ;指定读/写数据段,RW段 . = 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 : { *(.bss) }; 指定bss段 _end = .; 把_end赋值为当前位置,即bss段的结束位置 } /****************************************/ 从这里可以看出start.s是程序的入口点,下面是start.s代码 //global声明一个符号可被其它文件引用,相当于声明了一个全局变量,.globl与.global相同。 //该部分为处理器的异常处理向量表。地址范围为0x0000 0000 ~ 0x0000 0020,刚好8条指令。 .globl _start _start: b reset /*跳转到reset标号执行*/ ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq // .word伪操作用于分配一段字内存单元(分配的单元都是字对齐的),并用伪操作中的expr初始化。.long与.int作用与之//相同。 _undefined_instruction: .word undefined_ins

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档