嵌入式系统课件:第十讲.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式系统课件:第十讲.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 课件 第十
- 资源描述:
-
1、CHAPTER 10Bootloader 设计基础设计基础2022-1-192内容提要内容提要Bootloader 概述概述S3C2410 Bootloader其他常见其他常见Bootloader2022-1-193内容提要内容提要Bootloader 概述概述S3C2410 Bootloader其他常见其他常见Bootloader2022-1-194Bootloader 概述概述o Bootloader,启动引导程序,又叫引导加载程序,功能强,启动引导程序,又叫引导加载程序,功能强大的大的Bootloader也就直接叫做板级支持包(也就直接叫做板级支持包(BSP,Board Support
2、Packet)或者固件)或者固件(Firmware)。o 近年来,为了方便嵌入式产品的推广,也有些直接将近年来,为了方便嵌入式产品的推广,也有些直接将Bootloader叫做叫做BIOS。nBIOS是是PC机的机的“基本输入输出系统基本输入输出系统”,烧录在电脑主板上,烧录在电脑主板上一块专门的芯片中。一般一块专门的芯片中。一般BIOS由主板厂商或者专门的由主板厂商或者专门的BIOS生产商提供,不是开源的,用户不能修改其中的代码进行定生产商提供,不是开源的,用户不能修改其中的代码进行定制。制。n嵌入式系统的开发则离不开嵌入式系统的开发则离不开Bootloader的开发,它也是整个的开发,它也是
3、整个系统开发中的难点之一。系统开发中的难点之一。2022-1-195Bootloader 的作用的作用oBootloader是在嵌入式操作系统内核运行之前运行的一段小程序,也是在嵌入式操作系统内核运行之前运行的一段小程序,也是系统开机后执行的第一段程序。是系统开机后执行的第一段程序。o通过这段小程序,可以初始化硬件设备、建立内存空间,从而将系统的通过这段小程序,可以初始化硬件设备、建立内存空间,从而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。好正确的环境。Bootloader是依赖于底层硬件而
4、实现的,因此建立一是依赖于底层硬件而实现的,因此建立一个通用的嵌入式系统个通用的嵌入式系统Bootloader几乎是不可能的。几乎是不可能的。o在在PC机中,主板的机中,主板的BIOS和位于硬盘和位于硬盘0磁道上的主引导记录磁道上的主引导记录(Master Boot Record, MBR)中的引导程序(如中的引导程序(如LILO或或GRUB等)等),两者一起的两者一起的作用就相当于作用就相当于Bootloader在嵌入式系统中的作用,即实现整个系统的在嵌入式系统中的作用,即实现整个系统的启动引导,并最终能引导操作系统的运行。启动引导,并最终能引导操作系统的运行。o在嵌入式系统中,在嵌入式系统
5、中,Bootloader对嵌入式设备中的主要部件如对嵌入式设备中的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,这样可以使用、串口等进行了初始化,这样可以使用Bootloader通过串口下载各种文件到设备的通过串口下载各种文件到设备的SDRAM中或者烧录中或者烧录Flash,然后将操,然后将操作系统内核读入到内存中来或者直接跳转到内核的入口点,从而实现操作系统内核读入到内存中来或者直接跳转到内核的入口点,从而实现操作系统的引导。作系统的引导。2022-1-196Bootloader 的作用的作用oBootloader从第一条指令跳转后,就开始初始化各种硬件,如从第一条指令跳转后
6、,就开始初始化各种硬件,如CPU工工作频率、定时器、中断、看门狗、检测作频率、定时器、中断、看门狗、检测RAM大小和大小和Flash等。其主要完等。其主要完成以下工作:成以下工作:n初始化初始化CPU速度;速度;n初始化内存,包括启用内存库,初始化内存配置寄存器等;初始化内存,包括启用内存库,初始化内存配置寄存器等;n初始化中断控制器,在系统启动时,关闭中断,关闭看门狗;初始化中断控制器,在系统启动时,关闭中断,关闭看门狗;n初始化串行端口(如果在目标上有的话);初始化串行端口(如果在目标上有的话);n启用指令启用指令/数据高速缓存;数据高速缓存;n设置堆栈指针;设置堆栈指针;n设置参数区域并
7、构造参数结构和标记设置参数区域并构造参数结构和标记,即引导参数;即引导参数;n执行执行POST(上电自检)来标识存在的设备并报告有何问题;(上电自检)来标识存在的设备并报告有何问题;n为电源管理提供挂起为电源管理提供挂起/恢复支持;恢复支持;n传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放在文件事先存放在Flash中,这样就不需要中,这样就不需要Bootloader和主机传输操和主机传输操作系统内核镜像文件,这通常是在做成产品的情况下使用。作系统内核镜像文件,这通常是在做成产品的情况下使用。n跳转到内核的开始,在
8、此又分为跳转到内核的开始,在此又分为ROM启动和启动和RAM启动。启动。2022-1-197Bootloader 的作用的作用o 在嵌入式在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程软件系统的开发中,一般将软件分为启动引导程序序(Bootloader)、操作系统内核、操作系统内核(OS Kernel)、根文件系统、根文件系统(File System)、图形窗口系统、图形窗口系统(GUI)和应用程序和应用程序(AP)等几个部等几个部分,其中前三部分是一个可运行的嵌入式系统必不可少的,分,其中前三部分是一个可运行的嵌入式系统必不可少的, 它它们在开发的过程中,被分别独立地编译链接或
9、打包为一个二进制们在开发的过程中,被分别独立地编译链接或打包为一个二进制目标文件,然后下载(烧录)到嵌入式系统的目标文件,然后下载(烧录)到嵌入式系统的ROM中。后两部中。后两部分如果有的话,通常也是和根文件系统一起打包后烧录到分如果有的话,通常也是和根文件系统一起打包后烧录到Flash中。因此,在中。因此,在Bootloader阶段,也提供了对阶段,也提供了对Flash设备的分区格设备的分区格式化的支持,其空间分配通常如图所示。式化的支持,其空间分配通常如图所示。o 嵌入式系统中的嵌入式系统中的 Bootloader通常是开源通常是开源的,常见的有的,常见的有vivi、U-Boot、Blob
10、、ARMBoot、RedBoot、Nboot、Eboot等。等。开发人员可以从网上下载相应源代码,针开发人员可以从网上下载相应源代码,针对自己的嵌入式硬件系统进行二次开发,对自己的嵌入式硬件系统进行二次开发,这个过程称为这个过程称为Bootloader的移植。的移植。2022-1-198Bootloader 的工作模式的工作模式o Bootloader通常包含通常包含“启动加载启动加载”和和“下载下载”这两种不同这两种不同的工作模式。的工作模式。o 1、启动加载(、启动加载(boot loading)模式)模式n正常启动模式,即正常启动模式,即Bootloader从嵌入式目标机上的某个固态从嵌
11、入式目标机上的某个固态存储设备上(如存储设备上(如Flash、磁盘等)将操作系统加载到、磁盘等)将操作系统加载到RAM中中运行,整个过程并没有用户的介入和操作。运行,整个过程并没有用户的介入和操作。o 2、下载(、下载(down loading)模式)模式n在该模式下,目标机上的在该模式下,目标机上的Bootload通过串口连接或网络连接通过串口连接或网络连接等通信手段从宿主机上下载文件,如下载内核映像和根文件等通信手段从宿主机上下载文件,如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被系统映像等。从主机下载的文件通常首先被Bootloader保存保存到目标机的到目标机的RAM中,
12、然后再被中,然后再被Bootloader写到目标机的写到目标机的Flash等存储设备中。等存储设备中。n该模式主要提供给开发人员或技术支持人员使用,类似于该模式主要提供给开发人员或技术支持人员使用,类似于PC机对机对BIOS进行设置。进行设置。2022-1-199Bootloader 的启动流程的启动流程o Bootloader启动过程通常可以分为启动过程通常可以分为stage1和和stage2两个两个阶段阶段 。n一般依赖于一般依赖于 CPU 体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,都放在都放在stage1中,而且通常都用汇编语言来实现,以达到短中,而且通
13、常都用汇编语言来实现,以达到短小精悍且启动快的目的;而小精悍且启动快的目的;而 stage2 则通常用则通常用C语言来实现,语言来实现,这样可以实现各种复杂的功能(比如串口、以太网接口的支这样可以实现各种复杂的功能(比如串口、以太网接口的支持等)持等)o Bootloader的第一阶段的第一阶段1. 硬件设备初始化硬件设备初始化2. 为加载为加载 Bootloader 的的 stage2 准备准备 RAM 空间空间 3. 拷贝拷贝 Bootloader的的 stage2 到到 RAM 空间中空间中4. 设置好堆栈设置好堆栈 5.跳转到跳转到 stage2 的的 C 入口点入口点main()函数
14、处函数处2022-1-1910Bootloader 的启动流程的启动流程o Bootloader的第二阶段的第二阶段1. 初始化本阶段要使用到的硬件设备初始化本阶段要使用到的硬件设备2. 检测系统内存映射检测系统内存映射(memory map)3. 将将 kernel 映像和根文件系统映像从映像和根文件系统映像从 flash 上读到上读到 RAM 空空间中间中4. 为内核设置启动参数为内核设置启动参数5. 调用内核调用内核2022-1-1911内容提要内容提要Bootloader 概述概述S3C2410 Bootloader其他常见其他常见Bootloader2022-1-1912S3C241
15、0 平台下平台下Linux的的Bootloadero vivio U-BOOT2022-1-1913vivio 1. vivi简介简介o vivi是由韩国是由韩国mizi公司为公司为ARM处理器系列设计的一个处理器系列设计的一个bootloader。它同样支持启动加载模式和下载工作模式。它同样支持启动加载模式和下载工作模式。o 在下载模式下,在下载模式下,vivi为用户提供一个命令行人机接口,通过为用户提供一个命令行人机接口,通过这个人机接口可以使用这个人机接口可以使用vivi提供的一些命令。如果嵌入式系提供的一些命令。如果嵌入式系统没有键盘和显示,那么可以利用统没有键盘和显示,那么可以利用v
16、ivi中的串口,将其和宿中的串口,将其和宿主机连接起来,利用宿主机中的串口软件(如主机连接起来,利用宿主机中的串口软件(如windows中中的超级终端或者的超级终端或者Linux中的中的minicom)来控制。)来控制。o vivi常用的命令常用的命令 Load,Part,bon,Param,Boot,Flash 2022-1-1914vivio 2. vivi文件结构文件结构 vivi的代码包括的代码包括arch,init,lib,drivers和和include等几等几个目录个目录,共共200多个文件。多个文件。o 3. vivi的配置和编译的配置和编译 #make distclean。清
展开阅读全文