bootloader学习资料简介
- 格式:ppt
- 大小:36.00 KB
- 文档页数:15
引导程序bootloader●在操作系统内核或用户应用程序之前运行的一段小程序;通过这个程序,可以初始化硬件设备、建立内存空间的映射图,从而将目标系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序运行准备好正确的环境●初始化硬件,特别是内存控制器●提供linux内核的启动参数●启动linux内核●存储在targer的ROM或flash中(地址为0),包含第一条可执行指令Run diagnostic programUpdate kernel/dataJump to kernel normal boot 系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。
比如A RM是从地址0x00000000取第一条指令●初始化处理器以及外设的硬件资源配置,CPU片内和片外设备,如SDRAM●初始化I/O芯片,可能有的设备有:串口,报告BOOTLOADER的结果(成功/失败)。
网络或FLASH接口,引导操作系统串口通讯是最简单也是最廉价的一种双机通讯设备,所以在Bootloader中主机和目标机之间常常通过串口建立连接。
Bootloader在执行时会通过串口来进行I/O,比如:输出打印信息到串口,从串口获取用户控制字符等。
当然为了提高效率,也可以网口来建立通讯,这样在Bootloader中就需要启用网口的驱动●执行系统自检,报告检测结果●通过用户命令行提供特定应用程序●使用TFTP协议从网口接收,或者xmodem协议从串口接收操作系统镜像文件到RAM,将文件烧录到FLASH中,重启后负责找到镜像,解压缩到RAM中,并跳转到解压位置处执行,或直接跳转到RAM处执行该镜像●多阶段的Bootloader能提供更为复杂的功能,以便更好的可移植性。
从固态存储设备上(如flash)启动的Bootloader大多都是2阶段的启动过程。
●两种加载模式✓启动加载模式:也称为自主模式(Autonomous),即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入—Bootloader的正常工作模式✓下载模式:在这种模式下目标机上的Bootloader将通过串口连接或网络连接等从主机上下载文件,比如:下载应用程序、数据文件、内核映像等。
阐述对B o o t L o a d e r的理解和分析(总11页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除`物理与电子工程学院《嵌入式系统设计》设计性实验报告题目阐述对BootLoader的理解和分析系别年级专业班级学号学生姓名指导教师实验时间目录课题要求 ..................................................................... 错误!未定义书签。
1.本课题的目的................................................................... 错误!未定义书签。
2.运行环境 ........................................................................... 错误!未定义书签。
正文.............................................................................. 错误!未定义书签。
一.BootLoad简介 ............................................................. 错误!未定义书签。
二.系统设计 ...................................................................... 错误!未定义书签。
三.技术实现问题................................................................. 错误!未定义书签。
四.总结与体会 ..................................................................... 错误!未定义书签。
第三节BootLoaderUn Re gi st er ed本节目标•深入理解BootLoader 启动过程•掌握uBoot 的定制•了解uBoot 的代码树构成•uBoot 的下载烧写Un Re gi st er edBootloader 定义•Bootloader 是硬件启动的引导程序,是启动操作系统的根本;•是在操作系统内核或用户应用程序运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用准备好环境;•在一般典型的系统中,整个系统的加载启动任务就完全由Bootloader 来完成。
Un Re gi st er edBootloader 特点•Bootloader 不属于操作系统内核,采用汇编语言编写,因此针对不同的CPU 体系结构,这一部分代码不具有可移植性;•在移植操作系统时,这部分代码必须加以改写。
•Bootloader 不但依赖于CPU 的体系结构,而且依赖于嵌入式系统板级设备的配置。
Un Re gi st er edBootloader 启动模式•启动加载模式:在这种模式下,Bootloader 从目标机上的某个固态存储设备上将操作系统加载到RAM 中运行,整个过程并没有用户的介入。
•下载模式:在这种模式下,目标机上的Bootloader 将通过串口或网络等通信手段从开发主机(Host )上下载内核映像和根文件系统映像等到RAM 中。
然后可以再被Bootloader 写到目标机上的固态存储媒质中,或者直接进行系统的引导。
Un Re gi st er edBootloader 基本功能•初始化硬件•将操作系统内核从Flash 拷贝到SDRAM 中,如果是压缩格式的内核,还要解压缩•改写系统的内存映射,原先Flash 起始地址映射为0地址,这时需要将RAM 的起始地址映射为0•提供Linux 内核的启动参数•启动Linux 内核•设置堆栈指针并将bss 段清零将来执行C 语言程序和调用子函数时要用到•改变pc 值,使得CPU 开始执行真正的操作系统内核。
式操作系统的镜像,包括使用外设端口如以太网、USB、串口、并口从开发计算机上下载,也可以从本地存储设备如FLASH、CF卡、DOC或硬盘读取镜像并且跳转执行。
在开发调试Windows CE系统的过程中,最常见的方法是通过以太网口从开发计算机下载操作系统镜像到目标设备,这种类型的BootLoader有一个专门的名字叫做Eboot,E就是Ethernet的首字母。
DeviceEmulator的BootLoader就是一个典型的Eboot。
除Eboot外,比较常见的还有使用串口端口、以Serial的首字母命名的Sboot,以及专用于PC原理机型的BiosLoader等。
1.2微软建议Windows CE的BootLoader所应实现的功能微软建议Windwos CE的Bootloader所应实现的功能主要有以下6项。
(1)Windows CE的BootLoader应该存放在嵌入式设备的非可易失的存储设备中,比如Flash存储器。
此外如果硬件支持的话,最好还应该对BootLoader所在的Flash存储块实行加锁(locking)以保护它在运行过程中不被破坏。
(2)BootLoader应该在加载Windows CE操作系统镜像的过程中对加载进度、状态及错误消息等信息进行提示输出,这一般通过一个目标嵌入式设备与开发PC的串口端口连接来实现。
(3)用户在开发Windows CE的BootLoader时,应该尽可能地利用微软所提供的支持库里的功能函数。
这样做不仅可以减小开发的工作量,也是为了保证所开发的BootLoader的软件质量。
(4)Windows CE的BootLoader不仅应该可以加载操作系统的镜像,也应该有能力加载BootLoader自身的镜像文件。
不仅是下载到嵌入式系统的RAM内存,还应该能够将操作系统的或者BootLoader自身的镜像写入系统的非可易失存储器中。
③2④(5)Windows CE的BootLoader应该有能力对所加载的镜像(操作系统的或者BootLoader 自身的)的数据执行校验,并且开发者要注意在校验完全通过之前不得将镜像的任何数据写入系统的非可易失存储器中。
在嵌入式系统学习过程中涉及到了在嵌入式系统学习过程中涉及到了Bootloader,下面讲述了Bootloader的基本作用,在后续的文章中我将对如何编写自己的Bootloader进行介绍。
1. Bootloader的基本概念:简单地说,bootloader就是在操作系统内核运行前运行地一段小程序。
通过这段小程序,可以对硬件设备,如CPU、SDRAM、Flash、串口等进行初始化,也可以下载文件到系统板、对Flash进行擦除和编程,真正起到引导和加载内核镜像的作用,但是随着嵌入式系统的发展,bootloader已经逐渐在基本功能的基础上,进行了扩展,bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。
从这个层面上看,功能扩展后bootloader可以虚拟地看成是一个微小的系统级的代码包。
bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。
不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌入式板级设备的配置。
也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的bootloader,未必能够运行在另一块电路开发板上。
BootLoader为系统复位或上电后首先运行的代码,一般应写在起始物理地址0x0开始。
Bootloader的启动过程可以是单阶段的,也可以是多阶段的。
通常多阶段的bootloader能提供更为复杂的功能,以及更好的可移植性。
从固态存储设备上启动的bootloader大多数是二阶段的启动过程,也即启动过程可以分为stage 1和stage 2两部分。
2. ARM Bootloader的一般作用对于一个ARM系统来说,本质上,bootloader作为引导与加载内核镜像的“工具”,在实现上,必须提供以下几个功能,更确切地说,必须做到以下几点:(1)初始化RAM(必需):bootloader必须能够初始化RAM,因为将来系统要通过它保存一些Volatile数据,但具体地实现要依赖与具体的CPU以及硬件系统。
bootloader 简介1.1 Bootloader移植的必要性Bootloader是与系统硬件环境高度相关的初始化软件,它担负着初始化硬件和引导操作系统的双重责任。
一些ARM平台可以共用同一种Bootloader,但是总的说来,每一个特定系统的Bootloader都会有所不同。
Bootloader广泛用于有操作系统的手持终端设备、智能家电及机顶盒等嵌入式设备上,它负责完成硬件初始化、操作系统引导和系统配制等。
Bootloader 移植是在特定硬件平台上操作系统移植至关重要的一步。
1.2 BootLoader所支持的CPU和嵌入式系统板每种不同的CPU体系结构都有不同的BootLoader。
有些BootLoader也支持多种体系结构的CPU,比如U-BOOT就同时支持ARM、MIPS、POWERPC等体系结构。
除了依赖于CPU 的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。
也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。
1.3. Boot Loader的烧录和存储系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。
比如,at91rm9200的CPU在复位时通常都从地址0x00000000取它的第一条指令。
这个地址依据特定的CPU而定。
通常片外启动时,基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(EEPROM或FLASH等,at91rm9200是0x10000000)被映射到这个预先安排的地址上。
因此在系统加电后,CPU将首先执行Boot Loader程序。
bootloader烧写到flash中,对于一个裸板有两种方式:(1)通过片内固化的loader加载bootloader:通常某些CPU内部ROM中固化了一段程序可以用于最初的程序下载,如A T91RM9200。
Bootloader学习笔记一.what is bootloader?Bootloader是一种独立的程序,类似于Application程序,尽管体积小,但具备启动代码、中断、主程序(Boot_main函数)和操作系统(可选)等“全部五脏”。
百度百科的词条解释:Bootloader是在加电后执行的第一段代码,完成CPU及相关硬件的初始化后,将操作系统映像或固化的嵌入式应用程序装载到内存,并跳转到操作系统空间启动运行。
下面是学习bootloader的系统路线:1.了解bootloader的定义:Bootloader是嵌入式系统在启动时执行的第一段代码,它完成硬件初始化,加载操作系统或固件。
2.掌握bootloader的工作原理:当系统开机时,CPU执行的是bootloader的代码,它读取存储设备(如硬盘,U盘,SD卡等)中的操作系统镜像或固件,加载到内存中,并进行跳转。
3.了解常见的bootloader的类型:如U-Boot,Grub等,并了解它们的特点和适用场景。
4.学习bootloader的开发:包括硬件初始化,文件系统的读取,代码的跳转等。
5.掌握bootloader的应用:比如系统升级,系统恢复等。
二.为什么需要bootloader?Bootloader是用于启动操作系统的引导程序,它是计算机启动过程中的第一个执行的程序。
需要Bootloader的原因有以下几点:1.引导操作系统:Bootloader负责读取和加载操作系统,并将控制权转交给操作系统。
2.进行硬件初始化:Bootloader初始化计算机硬件,确保操作系统能够正确识别和使用硬件。
3.提供系统恢复选项:Bootloader可以提供系统恢复选项,例如进入安全模式或恢复到原始配置。
4.实现多操作系统启动:Bootloader可以用于启动多个操作系统,例如通过引导菜单选择启动Windows或Linux操作系统。
因此,Bootloader是计算机启动过程中不可或缺的一部分,它起到了重要的辅助作用。