嵌入式系统精.ppt
《嵌入式系统精.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统精.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、嵌入式系统课件第1页,本讲稿共40页概述n Boot Loader Boot Loader 就是在操作系统内核运行之前运行的一段小程就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。以便为最终调用操作系统内核准备好正确的环境。n通常,通常,Boot Loader Boot Loader 是严重地依赖于硬件而实现的,特别是在是严重地依赖于硬件而实现的
2、,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Boot Loader Loader 几乎是不可能的。尽管如此,我们仍然可以对几乎是不可能的。尽管如此,我们仍然可以对 Boot Boot Loader Loader 归纳出一些通用的概念来,以指导用户特定的归纳出一些通用的概念来,以指导用户特定的 Boot Boot Loader Loader 设计与实现。设计与实现。第2页,本讲稿共40页n Boot LoaderBoot Loader(启动)代码类似于(启动)代码类似于PCPC的的BIOSBIOS(基本输入输出系统),(基本输
3、入输出系统),它从系统上电或复位接管它从系统上电或复位接管CPUCPU,所有的,所有的CPUCPU通常都是从某个由通常都是从某个由CPUCPU制制造商预先安排好的地址上取指令,基于造商预先安排好的地址上取指令,基于ARM7TDMI Core ARM7TDMI Core 的的CPUCPU在复在复位时从地址位时从地址0 x000000000 x00000000取他的第一条指令。而基于取他的第一条指令。而基于CPUCPU构建的嵌入构建的嵌入式系统都有某种类型的固态存储设备(例如:式系统都有某种类型的固态存储设备(例如:ROMROM、EEPROMEEPROM、或、或FLASHFLASH等)被映射到这个
4、预先安排的地址上,因此在系统加电后,等)被映射到这个预先安排的地址上,因此在系统加电后,CPUCPU将首先执行将首先执行Boot LoaderBoot Loader程序。程序。第3页,本讲稿共40页Boot LoaderBoot Loader的主要任务的主要任务n 第4页,本讲稿共40页7.2 Boot LoaderBoot Loader与嵌入式系统关系与嵌入式系统关系n一个同时装有一个同时装有Boot LoaderBoot Loader、内核启动参数、内核映像和根文件、内核启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构图如下图所示:系统映像的固态存储设备的典型空间分配结构
5、图如下图所示:n 第5页,本讲稿共40页7.2.1 Boot LoaderBoot Loader的操作模式的操作模式n大多数大多数 Boot Loader Boot Loader 都包含两种不同的操作模式:都包含两种不同的操作模式:启动启动加载加载 模式和模式和 下载下载 模式,这种区别仅对于开发人员才有意模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,义。但从最终用户的角度看,Boot Loader Boot Loader 的作用就是用的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。工作模式的区别。第
6、6页,本讲稿共40页启动加载(启动加载(Boot loadingBoot loading)模式:)模式:n这种模式也称为这种模式也称为 自主自主(AutonomousAutonomous)模式。也即)模式。也即 Boot Boot Loader Loader 从目标机上的某个固态存储设备上将操作系统加载从目标机上的某个固态存储设备上将操作系统加载到到 RAM RAM 中运行,整个过程并没有用户的介入。这种模式是中运行,整个过程并没有用户的介入。这种模式是 Boot Loader Boot Loader 的正常工作模式,因此在嵌入式产品发布的的正常工作模式,因此在嵌入式产品发布的时侯,时侯,Bo
7、ot Loader Boot Loader 显然必须工作在这种模式下。显然必须工作在这种模式下。第7页,本讲稿共40页下载(下载(DownloadingDownloading)模式)模式 n在这种模式下,目标机上的在这种模式下,目标机上的 Boot Loader Boot Loader 将通过串口连接或网将通过串口连接或网络连接等通信手段从主机(络连接等通信手段从主机(HostHost)下载文件,比如:下载内核)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Boot Loader Loader 保存到目标
8、机的保存到目标机的 RAM RAM 中,然后再被中,然后再被 Boot Loader Boot Loader 写到写到目标机上的目标机上的FLASH FLASH 类固态存储设备中。类固态存储设备中。nBoot Loader Boot Loader 的这种模式通常在第一次安装内核与根文件系统的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用时被使用;此外,以后的系统更新也会使用 Boot Loader Boot Loader 的这的这种工作模式。工作于这种模式下的种工作模式。工作于这种模式下的 Boot Loader Boot Loader 通常都会向它通常都会向它
9、的终端用户提供一个简单的命令行接口。的终端用户提供一个简单的命令行接口。第8页,本讲稿共40页n像像 Blob Blob 或或 U-Boot U-Boot 等等这这样样功功能能强强大大的的 Boot Boot Loader Loader 通通常常同同时时支支持持这这两两种种工工作作模模式式,而而且且允允许许用用户户在在这这两两种种工工作作模模式式之之间间进进行行切切换换。比比如如,Blob Blob 在在启启动动时时处处于于正正常常的的启启动动加加载载模模式式,但但是是它它会会延延时时 10 10 秒秒等等待待终终端端用用户户按按下下任任意意键键而而将将 blob blob 切切换换到到下下载
10、载模模式式。如如果果在在 10 10 秒秒内没有用户按键,则内没有用户按键,则 blob blob 继续启动继续启动 Linux Linux 内核。内核。第9页,本讲稿共40页控制控制 Boot Loader Boot Loader 的设备或机制的设备或机制n主机和目标机之间一般通过串口建立连接,主机和目标机之间一般通过串口建立连接,Boot Loader Boot Loader 软件在执行时通常会通过串口来进行软件在执行时通常会通过串口来进行 I/O I/O,比如:输出,比如:输出打印信息到串口,从串口读取用户控制字符等。打印信息到串口,从串口读取用户控制字符等。第10页,本讲稿共40页Bo
11、otLoaderBootLoader 与主机之间进行文件与主机之间进行文件传输所用的通信设备及协议传输所用的通信设备及协议 n最常见的情况就是,目标机上的最常见的情况就是,目标机上的 Boot Loader Boot Loader 通过串口与主通过串口与主机之间进行文件传输,传输协议通常是机之间进行文件传输,传输协议通常是 xmodem xmodemymodemymodemzmodem zmodem 协议中的一种。但是,串口传输的速度是有限的,因协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助此通过以太网连接并借助 TFTP TFTP 协议来下载文件是个更好的协议来下载文件
12、是个更好的选择。选择。n此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和通过以太网连接和 TFTP TFTP 协议来下载文件时,主机方必须有一个软协议来下载文件时,主机方必须有一个软件用来的提供件用来的提供 TFTP TFTP 服务。服务。第11页,本讲稿共40页7.3 Boot Loader7.3 Boot Loader的主要功能和典型结构的主要功能和典型结构 首先我们做一个假定,那就是:假定内核映像与根文首先我们做一个假定,那就是:假定内核映像与根文件系统映像都被加载到件系统映像都被加载到 RAM RAM
13、中运行。之所以提出这样一个中运行。之所以提出这样一个假设前提是因为,在嵌入式系统中内核映像与根文件系统假设前提是因为,在嵌入式系统中内核映像与根文件系统映像也可以直接在映像也可以直接在 ROM ROM 或或 Flash Flash 这样的固态存储设备中这样的固态存储设备中直接运行。但这种做法无疑是以运行速度的牺牲为代价的。直接运行。但这种做法无疑是以运行速度的牺牲为代价的。第12页,本讲稿共40页n 从操作系统的角度看,从操作系统的角度看,Boot Loader Boot Loader 的总目标就是正的总目标就是正确地调用内核来执行。确地调用内核来执行。n由于由于 Boot Loader Bo
14、ot Loader 的实现依赖于的实现依赖于 CPU CPU 的体系结构,因此大多数的体系结构,因此大多数 Boot Boot Loader Loader 都分为都分为 stage1 stage1 和和 stage2 stage2 两大部分。依赖于两大部分。依赖于 CPU CPU 体系结构的体系结构的代码,比如设备初始化代码等,通常都放在代码,比如设备初始化代码等,通常都放在 stage1 stage1 中,而且通常都用中,而且通常都用汇编语言来实现,以达到短小精悍的目的。汇编语言来实现,以达到短小精悍的目的。n而而 stage2 stage2 则通常用则通常用C C语言来实现,这样可以实现给
15、复杂的功语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。能,而且代码会具有更好的可读性和可移植性。第13页,本讲稿共40页nBoot Boot Loader Loader 的的 stage1 stage1 通通常常包包括括以以下下步步骤骤(以以执执行行的的先先后后顺顺序序):n硬件设备初始化。硬件设备初始化。n为加载为加载 Boot Loader Boot Loader 的的 stage2 stage2 准备准备 RAM RAM 空间。空间。n拷贝拷贝 Boot Loader Boot Loader 的的 stage2 stage2 到到 RAM RAM 空间中。空
16、间中。n设置好堆栈。设置好堆栈。n跳转到跳转到 stage2 stage2 的的 C C 入口点。入口点。第14页,本讲稿共40页nBoot Loader Boot Loader 的的 stage2 stage2 通常包括以下步骤通常包括以下步骤(以执行的先后顺序以执行的先后顺序):n初始化本阶段要使用到的硬件设备。初始化本阶段要使用到的硬件设备。n检测系统内存映射检测系统内存映射(memory map)(memory map)。n将将 kernel kernel 映像和根文件系统映像从映像和根文件系统映像从 flash flash 上读到上读到 RAM RAM 空间中。空间中。n为内核设置启
17、动参数。为内核设置启动参数。n调用内核。调用内核。第15页,本讲稿共40页7.3.1 Boot Loader的阶段一1 1 基本的硬件初始化基本的硬件初始化 n这是这是 Boot Loader Boot Loader 一开始就执行的操作,其目的是为一开始就执行的操作,其目的是为 stage2 stage2 的的执行以及随后的执行以及随后的 kernel kernel 的执行准备好一些基本的硬件环境。它的执行准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序):通常包括以下步骤(以执行的先后顺序):第16页,本讲稿共40页1 1 屏蔽所有的中断。为中断提供服务通常是屏蔽所有的中断。为
18、中断提供服务通常是 OS OS 设备驱动程序的责设备驱动程序的责任,因此在任,因此在 Boot Loader Boot Loader 的执行全过程中可以不必响应任何中断。的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写中断屏蔽可以通过写 CPU CPU 的中断屏蔽寄存器或状态寄存器(比如的中断屏蔽寄存器或状态寄存器(比如 ARM ARM 的的 CPSR CPSR 寄存器)来完成。寄存器)来完成。2 2 设置设置 CPU CPU 的速度和时钟频率。的速度和时钟频率。3 3 RAM RAM 初始化。包括正确地设置系统的内存控制器的功能寄存器以初始化。包括正确地设置系统的内存控制器的功能寄存器
19、以及各内存库控制寄存器等。及各内存库控制寄存器等。4 4 初始化初始化 LED LED。典型地,通过。典型地,通过 GPIO GPIO 来驱动来驱动 LED LED,其目的是表明,其目的是表明系统的状态是系统的状态是 OK OK 还是还是 Error Error。如果板子上没有。如果板子上没有 LED LED,那么也,那么也可以通过初始化可以通过初始化 UART UART 向串口打印向串口打印 Boot Loader Boot Loader 的的 Logo Logo 字符字符信息来完成这一点。信息来完成这一点。5 5 关闭关闭 CPU CPU 内部指令数据内部指令数据 cache cache。
20、第17页,本讲稿共40页2 2 为加载为加载 stage2 stage2 准备准备 RAM RAM 空间空间 n为了获得更快的执行速度,通常把为了获得更快的执行速度,通常把 stage2 stage2 加载到加载到 RAM RAM 空间中空间中来执行,因此必须为加载来执行,因此必须为加载 Boot Loader Boot Loader 的的 stage2 stage2 准备好一段准备好一段可用的可用的 RAM RAM 空间范围。空间范围。n由于由于 stage2 stage2 通常是通常是 C C 语言执行代码,因此在考虑空间大小时,除了语言执行代码,因此在考虑空间大小时,除了 stage2
21、stage2 可执行映象的大小外,还必须把堆栈空间也考虑进来。此外,空可执行映象的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是间大小最好是 memory page memory page 大小大小(通常是通常是 4KB)4KB)的倍数。一般而言,的倍数。一般而言,1M 1M 的的 RAM RAM 空间已经足够了。具体的地址范围可以任意安排,比如空间已经足够了。具体的地址范围可以任意安排,比如 blob blob 就将它就将它的的 stage2 stage2 可执行映像安排到从系统可执行映像安排到从系统 RAM RAM 起始地址起始地址 0 xc0200000 0 xc0200000
22、 开始的开始的 1M 1M 空间内执行。但是,将空间内执行。但是,将 stage2 stage2 安排到整个安排到整个 RAM RAM 空间的最顶空间的最顶 1MB(1MB(也也即即(RamEnd-1MB)-RamEnd)(RamEnd-1MB)-RamEnd)是一种值得推荐的方法是一种值得推荐的方法。第18页,本讲稿共40页n为了后面的叙述方便,这里把所安排的为了后面的叙述方便,这里把所安排的 RAM RAM 空间范围的大小记空间范围的大小记为:为:stage2_size(stage2_size(字节字节),把起始地址和终止地址分别记为:,把起始地址和终止地址分别记为:stage2_star
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统
限制150内