资源描述:
《U-boot源代码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、U-boot源代码分析(forAT91SAM9260EK)作者:张俊岭EMAIL:sprite_zjl@sina.comMSN:sprite_zjl@hotmail.comQQ:251450387版本:1.0日期:2007-11-8摘要:本文档基于AT91SAM9260EK板,详细分析了U-boot-1.1.4的初始化过程、命令处理过程及linux系统的引导过程。1第一阶段(Stage1)第一阶段的启动代码在cpustart.s中,完成的工作主要有:©CPU自身初始化:包括MMU,Cache,时钟系统
2、,SDRAM控制器等的初始化©重定位:把自己从非易失性存储器搬移到RAM中©分配堆栈空间,设置堆栈指针©清零BSS数据段©跳转到第二阶段入口函数start_armboot()AT91SAM9260EK的启动代码在cpuarm926ejsstart.s中,精简后的代码如下:[cpuarm926ejsstart.s];ARM的向量表.globl_start_start:bresetldrpc,_undefined_instructionldrpc,_software_interruptldrpc,_prefetch_a
3、bortldrpc,_data_abortldrpc,_not_usedldrpc,_irqldrpc,_fiq_undefined_instruction:.wordundefined_instruction_software_interrupt:.wordsoftware_interrupt_prefetch_abort:第1页共62页.wordprefetch_abort_data_abort:.worddata_abort_not_used:.wordnot_used_irq:.wordirq_fiq:.wordf
4、iq;全局符号定义_TEXT_BASE:.wordTEXT_BASE.globl_armboot_start_armboot_start:.word_start/**Thesearedefinedintheboard-specificlinkerscript.*/.globl_bss_start_bss_start:.word__bss_start.globl_bss_end_bss_end:.word_end#ifdefCONFIG_USE_IRQ/*IRQstackmemory(calculatedatrun-time
5、)*/.globlIRQ_STACK_STARTIRQ_STACK_START:.word0x0badc0de/*IRQstackmemory(calculatedatrun-time)*/.globlFIQ_STACK_STARTFIQ_STACK_START:.word0x0badc0de#endif;复位入口reset:;CPU设为SVC32模式mrsr0,cpsr第2页共62页bicr0,r0,#0x1forrr0,r0,#0xd3msrcpsr,r0;如果需要,调用cpu_init_crit进行CPU关键初始化;
6、在AT91SAM9260EK板上没有使用。这部分工作在Bootstrap中完成。#ifndefCONFIG_SKIP_LOWLEVEL_INITblcpu_init_crit#endif;如果需要,对U-boot进行重定位(从Flash搬移到SDRAM中);在AT91SAM9260EK板上没有使用。U-boot在运行之前已经被Bootstrap加载到了SDRAM中。#ifndefCONFIG_SKIP_RELOCATE_UBOOTrelocate:/*relocateU-BoottoRAM*/adrr0,_start/*r
7、0<-currentpositionofcode*/ldrr1,_TEXT_BASE/*testifwerunfromflashorRAM*/cmpr0,r1/*don'trelocduringdebug*/beqstack_setupldrr2,_armboot_startldrr3,_bss_startsubr2,r3,r2/*r2<-sizeofarmboot*/addr2,r0,r2/*r2<-sourceendaddress*/copy_loop:ldmiar0!,{r3-r10}/*copyfromsource
8、address[r0]*/stmiar1!,{r3-r10}/*copytotargetaddress[r1]*/cmpr0,r2/*untilsourceendaddreee[r2]*/blecopy_loop#endif/*CONFIG_SKIP_RELOCATE_UBOOT*/;为irq,fiq,