定义:首先,BootLoader是一段单独的程序代码(功能相当与PC机的BIOS),它存放于目标平台的非易失存储介质中,如ROM或Flash。 作用:在开发CE的过程中,它主要用于启动硬件和下载IMAGE到目标板上,并有一定的监控作用。 流程:(图传不上来) 分析: Main函数 是BootLoader里面的主函数,而BootloaderMain又是Main函数里面主要个函数, 先就BootloaderMain里面的函数做简单的介绍:(只分析流程不做代码评估) 1.KernelRleocate :主要功能是OS Link 来Fill ROM IMAGE和pToc .实际上BootLoad所做的工作就是按照pToc定义的数据结构来复制内存块。 2.接着调用OEMDebugInit函数,在这个函数里面主要做的工作是全局函数指针变量的初始化(包括错误报告,内存数据校验,通知多个BIN文件下载)。其中OEMInitDebugSerial函数用于初始化串口,以便调试信息通过UART来互交。 3. 下一个函数OEMPlatformInit主要初始化系统的时钟,中断,驱动,I/O口等。初始化DOC、自定义的菜单及升级IMAGE的代码也可以放到这函数里面。 4.接下来是OEMPreDownload 通过不同的检测判断,取得要DOWNLOAD IMAGE的方式 如果TOC里面已经存在可用的并通过数据校验的IMAGE就直接跳转到OS开始执行的地址,开始启动OS ,反之通过某个途径(USB SD 卡 硬盘等设备路径)来DOWNLOAD IMAGE 并检查数据。 5.OEMLaunch:这个函数主要功能就是launch the image。 总结: 这部分每家有自己不同的做法,架构自然千齐百怪,但最终目的可以归一。 本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/professionaler/archive/2006/05/30/763632.aspx
BootLoader代码简析(转)
最新推荐文章于 2022-10-22 21:17:19 发布