第六讲(part)--BootLoader中的main函数.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲(part)--BootLoader中的main函数

BootLoader中的main函数 BootLoader中的main函数 下面是SMDK2410(Samsung MCU Development Kit三星开发板 )中的BootLoader中的main函数实现代码: void main(void) { ???? //清空LED ???? OEMWriteDebugLED(0, 0xF); ???? //通用BootLoader (blcommon)主入口 ??? BootloaderMain(); //注意,在此调用了BootloaderMain函数,并且没有返回值 ???? SpinForever(); } BootLoader中的main函数 (1)BLCOMMON模块函数 下面列举出BLCOMMON中的控制函数并分析它们,这些函数在Blcommon.h中声明,代码实现在Blcommon.lib里: ???? OEMDebugInit函数: 在运行BootloaderMain程序后,将首先调用OEMDebugInit函数,它用来初始化调试信息的I/O设备,最常见的是串口设备。由于RS232协议简单性,在系统没有启动前对串口初始化较适用。在OEMDebugInit里,又通常调用OEMInitDebugSerial函数来初始化串口。 BootLoader中的main函数 ???? OEMPlatformInit函数 OEM层的初始化函数,它主要负责目标机上的硬件初始化。在汇编阶段只是初始化了很小一部分硬件,这是由于BootLoader要求处理时间短,因此在汇编阶段的硬件初始化是十分简单的。所以有必要用高级语言完成对目标机的硬件设置,这包括具体的时钟设置、驱动和传输设备接口的初始化。 BootLoader中的main函数 ???? OEMPreDownload函数 在下载操作系统前执行这个函数,它可以用来设置如何进行Image文件下载。例如,可以设置成从网络下载或者跳过下载直接加载Flash中的Image文件。 BootLoader中的main函数 ???? DownloadImage 这个函数将执行把操作系统Image文件下载到目标机的操作。 ???? OEMLaunch函数 这个函数将PC指针直接设置到Image文件的开始地址,它是启动操作系统前BootLoader的最后一个函数,没有返回值。在此之后,BootLoader就消失了。 BootLoader中的main函数 (2)下载模块函数 下载函数是由DownloadImage函数调用的。 下面列出下载模块函数并解释它们。 ???? OEMReadData BLCOMMON调用这个函数从文件的传输器中读取数据。读者可以参看Public\Common\ Oak\Ethdbg\Eboot\Ebsimp.c文件中网络传输的例子 BootLoader中的main函数 ???? OEMShowProgress BLCOMMON在下载操作系统镜像文件的时候调用这个函数。在这个函数中,可以实现通知用户下载状态的各种手段比如可以用LED灯交替闪烁或者向主机的串口发送进度信息等。 BootLoader中的main函数 ???? OEMMapMemAddr 如果目标系统的需求是要能支持把操作系统的镜像文件下载到FLASH中去,就必须调用本函数。由于FLASH操作速度比RAM慢,在片擦除的时候甚至会使读写操作停滞,这样在每次下载操作系统镜像文件时,由于FLASH的擦写都会使下载停滞。而OEMMapMemAddr使用了RAM缓冲操作系统镜像文件的方式,使得用户在下载操作系统镜像文件时感觉不到停滞,这个函数将FLASH地址映射到RAM地址,这样向FLASH写的数据实际上先被缓冲到RAM中,然后再写到FLASH中。 BootLoader中的main函数 (3)FLASH编程模块 FLASH函数用于对不同的FLASH存储器进行编程。开发人员需要实现微软公司提供的框架里的函数。 ???? OEMIsFlashAddr函数 判别地址是否为有效的FLASH地址。注意,这里的FLASH地址与平台相关的,如S3C2410芯片和PXA255芯片的FLASH地址是不一样的,即便是同一款CPU,由于硬件结构的不同(FLASH大小、位置等)FLASH地址也不尽相同。 BootLoader中的main函数 ???? OEMStartEraseFlash函数 BLCOMMON在获取FLASH的实际大小和开始地址后,将立即调用这个函数。这个函数将进行FLASH的擦除工作。 BootLoader中的main函数 ???? OEMContinueEraseFlash函数 BLCOMMON在下载操作系统镜像文件的过程中可以调用这个函数。当FLAS

文档评论(0)

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

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

1亿VIP精品文档

相关文档