- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. Bootloader的作用 在嵌入式系统中,Bootloader对嵌入式设备中的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,这样可以使用Bootloader通过串口下载各种文件到设备的SDRAM中或者烧录Flash,然后将操作系统内核读入到内存中来或者直接跳转到内核的入口点,从而实现操作系统的引导。现在有些Bootloader也把对以太网的支持等功能也加进去了,这样一个功能比较强大的Bootloader实际上就已经相当于一个微型的操作系统了。 Bootloader从第一条指令跳转后,就开始初始化各种最重要的硬件,比如CPU的工作频率、定时器、中断、看门狗、检测RAM大小和Flash等。一般,硬件初始化的这段程序是用汇编语言编写的,其后就用C语言编写。 1. Bootloader的作用 总体上Bootloader主要完成以下工作: (1)初始化CPU速度; (2)初始化内存,包括启用内存库,初始化内存配置寄存器等; (3)初始化中断控制器,在系统启动时,关闭中断,关闭看门狗; (4)初始化串行端口(如果在目标上有的话); (5)启用指令/数据高速缓存; (6)设置堆栈指针; (7)设置参数区域并构造参数结构和标记,即引导参数; (8)执行POST(上电自检)来标识存在的设备并报告有何问题; (9)为电源管理提供挂起/恢复支持; (10)传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放在Flash中,这样就不需要Bootloader和主机传输操作系统内核镜像文件,这通常是在做成产品的情况下使用。而一般在开发过程中,为了调试内核的方便,不将操作系统内核镜像文件固化在Flash中,这就需要主机和目标机进行文件传输; (11)跳转到内核的开始,在此又分为ROM启动和RAM启动。所谓ROM启动就是用XIP技术直接在Flash中执行操作系统镜像文件;所谓RAM启动就是指把内核镜像从Flash复制到RAM中,然后再将PC指针跳转到RAM中的操作系统启动地址。 1 Bootloader的作用 在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序(Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中前三部分是一个可运行的嵌入式系统必不可少的, 它们在开发的过程中,被分别独立地编译链接或打包为一个二进制目标文件,然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两部分如果有的话,通常也是和根文件系统一起打包后烧录到Flash中。因此,在Bootloader阶段,也提供了对Flash设备的分区格式化的支持,其空间分配通常如图所示。 File System OS Kernel Boot parameter Bootloader 2 .Bootloader的工作模式 对于嵌入式系统的开发人员而言,Bootloader通常包含“启动加载”和“下载”这两种不同的工作模式。当然,这两种工作模式的区别一般仅仅对于开发人员才有意义,而对最终用户来说,Bootloader的作用就是用来加载操作系统,从而启动整个嵌入式系统。 2 .Bootloader的工作模式 (1)启动加载(Boot loading)模式 --正常启动模式 (2)下载(Downloading)模式 --提供给开发人员或者技术支持人员使用 3. Bootloader的启动流程 分为stage1和stage2两个阶段: 一般依赖于CPU体系结构的代码,比如设备初始化代码等,都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍且启动快的目的;而 stage2 则通常用C语言来实现,这样可以实现各种复杂的功能(如串口、以太网接口的支持等)。 Bootloader的第一阶段: (1)硬件设备初始化; (2)为加载Bootloader的stage2准备RAM空间; (3)拷贝Bootloader的stage2到RAM空间中; (4)设置好堆栈; (5)跳转到stage2的C入口点main()函数处。 3. Bootloader的启动流程 Bootloader的第二阶段: (1)初始化本阶段要使用到的硬件设备; (2)检测系统内存映射(memory map); (3)将kernel映像和根文件系统映像从flash上读到RAM空间中 (4)为内核设置启动参数; (5)调用内核。 3. Bootloa
文档评论(0)