eboot启动流程分析

eboot启动流程分析

ID:27570553

大小:106.05 KB

页数:7页

时间:2018-12-03

eboot启动流程分析_第1页
eboot启动流程分析_第2页
eboot启动流程分析_第3页
eboot启动流程分析_第4页
eboot启动流程分析_第5页
资源描述:

《eboot启动流程分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Image_cfg.h屮地址定义的一点说明:有很多地址屮包含PACAUA含义分别是,PA代表DRAM的物理地址,CA代表经过MMU映射后的虚拟地址,UA代表经过MMU的基础上增加了Cache后的地址。Source文件屮定义fBootLoader的入口Startup,在Startup.s文件屮。♦最开始,先了解Startup.s引用的一些头文件和库。INCLUDEkxarm.h//arm架构相关定义INCLUDEregister_map.incINCLUDEimage_cfg.inc;内存地址映射相关宏定义IMPORT工nitClockCONforBLIMPORTInitCa

2、cheTEXTAREAINCLUDEoemaddrtab_cfg.inc♦IMPORTmainLEAF_ENTRYStartup;LEAF_ENTRY代表程序从该处开始执行bResetHandler,•S兆转至UResetHandler标号处执行ResetHandler中主要工作有:1、检査启动模式,如果MMU己经使能,不执行后续操作,直接跳转到VirtMlStart处执行(步骤8),否则初始化MMUf•••-Checkbootmodermrcpl5,0,rO,cl,cO,0tstr0,#1bneVirtualStart;IftheMMUisalreadyenabled,wed

3、on'tneedtoinitializeH/W.(normalboot:STEPLDR-BL2-EBOOT);IftheMMUisdisabled,continuetointializeH/W.(EBOOT.nbO)2、关中断3、设置异常向量位置到04、初始化Cache5、初始化TZPC6、初始化用于NAMDFlash的GPIO口7、初始化MMU,地址空间重新映射8、VirtualStart标号处,擦除BootLoaderRAM,擦除Bootloader堆桟9、初始化堆栈10、跳转到main函数处执行♦1、之函数会调准到main-〉BootloaderMain()函数中执行,B

4、ootloaderMain函数并不需要修改,该函数在platformcommonsrccommonbootblcommonBlcommon.c屮实现2、虽然这部分是co誦on部分的代码,但是调用到main.c屮的函数,这相当于common中的BIcommon,h中约定了接口定义,具体接口在main.c中实现。将全局变量搬移到RAM中去//relocateglobalstoRAMif(!KernelRelocate(pTOC)){//spinforeverHALT(BLERR_KERNELRELOCATE);}ROMHDR*constpTOC是一个特殊的结构体指针,通

5、过pTOC我们就可以知道拷贝哪些代码和数据段到RAM中去。3、接下来调用OEMDebuglnit函数,用于初始化调试端口,一般都是串口,该函数执行过后,我们就可以使用OEMWriteDebugString打印调试信息了。if(!OEMDebuglnit()){//spinforeverHALT(BLERR_DBGINIT);}该涵数的实现在ebootmain.c中BOOLOEMDebuglnit(void){//给函数指针赋值,用于blcommon调用g_pOEMVerifyMemory=OEMVerifyMemory;//VerifyRAM.g_pOEMMultiBINNo

6、tify=OEMMultiBINNotify;//串口初始化,该函数与OAL公用OEMInitDebugSerial();return(TRUE);}OEMInitDebugSerial不在main,c屮实现,接口定义在PLATFORMCOMMONSRCSOCS5PV210_SEC_VlOALINCdbgserial.hr

7、_14、调用OEMPlatformlnit,初始化平台设备,包括吋钟、设备驱动、传输等等。if(!OEMPlatformlnit()){//spinforeverHALT(BLERR_PLATINIT);}该函数实现在ebootmain.c屮

8、,主要流程如下:1)初始化BSP参数OALArgsInit((BSP_ARGS*)IMAGE_SHARE_ARGS_UA_START);2)初始化中断Initializelnterrupt()zplatformsmdkv210srcbootloaderbll_uartS各径下Interrupt.c文件中实现3)如果定义了SDMMC_BOOT宏,则初始化SDHC,为从SD卡启动做准备#ifde£SDMMC_BOOTi£(!SDHC—INIT()){一0ALMSG(TRUE,(TEXT(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。