u-boot启动流程分析.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
这个链接脚本,可以知道目标程序的各先看 board/smsk2410/u-boot.lds 这个链接脚本,可以知道目标程序的各 部分链接顺序。 OUTPUT_FORMAT (elf32-littlearm , elf32-littlearm , elf32-littlearm ) /*OUTPUT_FORMAT (elf32-arm , elf32-arm , elf32-arm )*/ OUTPUT_ARCH (arm ) ENTRY (_start) SECTIONS { .=0; /*指定可执行image文件的全局入口点,通常这个 地址都放在ROM (flash )0x0位置。必须使编译器知道这个地址,通常都 是修改此处来完成*/ .=ALIGN (4); .text : { cpu/arm920t/start .o (.text ) *(. text ) } .=ALIGN (4); .rodata : { *(. 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); __bss_start =.; .bss : { *(. bss) } _end =.; } 第一个要链接的是 cpu/arm920t/starto ,那么U-Boot的入口指令一 定位于这个程序中。下面详细分析一下程序跳转和函数的调用关系以及函数 实现。 1 . Stage1 : cpu/arm920t/start.S 这个汇编程序是 U-Boot的入口程序,开头就是复位向量的代码 K£it TWtTl^rfUp irdt_seqiieii£e [: mkii_loop() U-Boot启动代码流程图 _start : b reset // 复位向量;;设置异常向量表 ldr pc , _undefined_instruction ldr pc , .software」n terrupt ldr pc , _prefetch_abort ldr pc , _data_abort ldr pc , _not_used ldr pc ,」rq //中断向量 ldr pc , _fiq //中断向量 / * the actual reset code */ reset : //复位启动子程序 / *设置CPU为SVC32模式*/ mrs r0 ,cpsr bic r0 ,rO,#Ox1f ;;位清除,将某些位的值置 0 : r0 = r0 AND ( !0x1f) orr r0 ,r0 ,#0xd3 ;;逻辑或,将r0与立即数进行逻辑或,放在r0中(第 一个) msr cpsr ,r0 /*关闭看门狗*/ / * turn off the watchdog */ #if defined (CONFIG_S3C2400 ) define pWTCON 0define INTMSK 0/ addresses */ define CLKDIVN 0/ #elif defined (CONFIG_S3C2410 define pWTCON 0define INTMSK 0x4A000008 / addresses */ Interupt -Controller base * clock divisor register */ ) Interupt - Controller base # define INTSUBMSK 0x4A00001C # define CLKDIVN 0x4C000014 / clock divisor register */ #endif #if defined (CONFIG S3C2400 ) || defined (CONFIG S3C2410 ) Idr r0 , = pWTCON mov r1 , #0x0 str r1 , [r0] /*禁止所有中断和设置 CPU频率*/ / * * mask all IRQs by setting all bits in the INTMR - default */ mov r1 , #0xffffffff ldr r0 ,=INTMSK str r1 , [r0] if defined (CONFIG_S3C2410 ) ldr r1 , = 0x3ff ldr r0 ,=INTSUBMSK str

文档评论(0)

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

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

1亿VIP精品文档

相关文档