下载此文档

Uboot启动流程.doc


文档分类:管理/人力资源 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
287开发板开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数。看一下u-boot--,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm926ejs/,那么U-Boot的入口指令一定位于这个程序中。下面分两阶段介绍启动流程: -Boot的入口程序,开头就是复位向量的代码。_start:breset//复位向量ldrpc,_undefined_instructionldrpc,_software_interruptldrpc,_prefetch_abortldrpc,_data_abortldrpc,_not_usedldrpc,_irq//中断向量ldrpc,_fiq//中断向量…/*theactualresetcode*/reset://复位启动子程序/*设置CPU为SVC32模式*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#0xd3msrcpsr,r0/*关闭看门狗*/…………relocate:/*把U-Boot重新定位到RAM*/adrr0,_start/*r0是代码的当前位置*/ldrr1,_TEXT_BASE/*_TEXT_BASE是RAM中的地址*/cmpr0,r1/*比较r0和r1,判断当前是从Flash启动,还是RAM*/beqstack_setup/*如果r0等于r1,跳过重定位代码*//*准备重新定位代码*/ldrr2,_armboot_startldrr3,_bss_startsubr2,r3,r2/*r2得到armboot的大小*/addr2,r0,r2/*r2得到要复制代码的末尾地址*/copy_loop:/*重新定位代码*/ldmiar0!,{r3-r10}/*从源地址[r0]复制*/stmiar1!,{r3-r10}/*复制到目的地址[r1]*/cmpr0,r2/*复制数据块直到源数据末尾地址[r2]*/blecopy_loop/*初始化堆栈等*/stack_setup:ldrr0,_TEXT_BASE/*上面是128KiB重定位的u-boot*/subr0,r0,#CFG_MALLOC_LEN/*向下是内存分配空间*/subr0,r0,#CFG_GBL_DATA_SIZE/*然后是bdinfo结构体地址空间*/#ifdefCONFIG_USE_IRQsubr0,r0,#(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)#endifsubsp,r0,#12/*为abort-stack预留3个字*/clear_bss:ldrr0,_bss_start/*找到bss段起始地址*/ldrr1,_bss_end/*bss段末尾地址*/movr2,#0x00000000/*清零*/clbss_l:strr2,[r0]/*bss段地址空间清零循环...*/addr0,r0,#4cmpr0,r1bneclbss_l/*跳转到start_armboot函数入口,_start_armboot字保存函数入口指针*/ldrpc,_start_armboot_sta

Uboot启动流程 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zgs35866
  • 文件大小40 KB
  • 时间2019-05-18
最近更新