ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章

上传人:E**** 文档编号:89331578 上传时间:2019-05-23 格式:PPT 页数:79 大小:665KB
返回 下载 相关 举报
ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章_第1页
第1页 / 共79页
ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章_第2页
第2页 / 共79页
ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章_第3页
第3页 / 共79页
ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章_第4页
第4页 / 共79页
ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章》由会员分享,可在线阅读,更多相关《ARM嵌入式系统原理及应用开发 教学课件 ppt 作者 谭会生 6-10 第7章(79页珍藏版)》请在金锄头文库上搜索。

1、第7章 嵌入式系统的Boot Loader,7.1 Boot Loader 概述 7.2 Boot Loader与嵌入式系统的关系 7.3 Boot Loader的主要功能及典型结构 7.4 S3C44B0X的Boot Loader分析 7.5 U-Boot启动流程及相关代码分析,7.1 Boot Loader 概述 7.1.1 Boot Loader的作用和任务 当一个微处理器启动时,它首先执行预定地址处的指令。通常这个位置是只读内存,其中存放着系统初始化或引导程序,如PC中的BIOS。BIOS进行低级的处理器初始化并配置其他硬件,接着判断哪一个磁盘包含有操作系统(OS),再把该操作系统复制

2、到RAM中,并把控制权交给操作系统。,嵌入式系统的Boot Loader程序,即系统的引导装载程序,简单地说,就是在操作系统内核或用户应用程序之前运行的一段小程序。通过这段小程序可以初始化硬件设备和建立内存空间的映射图,将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。有的操作系统比较简单,或只有简单的应用程序,因而不需要专门的Boot Loader来安装内核和文件系统。但仔细分析就会发现,它们都需要一个初始化程序来完成初始化,为后面程序的执行准备一个正确的环境。通常,Boot Loader是依赖于硬件而实现的,因此,为嵌入式系统建立一个通用的B

3、oot Loader是很困难的。但是可以归纳出一些通用的概念,以便了解特定Boot Loader的设计与实现。Boot Loader的主要任务如图7.1所示。,图7.1 Boot Loader的主要任务,7.1.2 常用嵌入式Boot Loader介绍 常用的嵌入式Boot Loader有vivi、U-Boot、RedBoot、ARMBoot、Blob和DIY。 1. vivi vivi是由韩国MIZI公司开发的一种专门用于ARM产品线的Boot Loader。因为vivi目前只支持使用串口与主机通信,所以必须使用一条串口电缆来连接目标板和主机。vivi的源代码下载地址为http:/ 检测目标

4、板。 下载程序并写入Flash。 初始化硬件。 把内核从Flash复制到RAM,然后启动它。,vivi源代码的主要目录的解释如下: CVS:存放CVS工具相关的文件。 Documentation:存放一些vivi的帮助文档。 Arch:存放与CPU构架体系结构有关的代码文件。 drivers:存放与vivi相关的驱动代码文件。 include:存放所有vivi源代码的头文件。 init:存放vivi初始化代码文件。 lib:存放vivi实现的库函数文件。 scripts:存放vivi脚本配置文件。 test:存放一些测试代码文件。 util:存放一些与Nand Flash烧写image相关的工

5、具实现代码。,2. U-Boot U-Boot是德国DENX小组开发的用于多种嵌入式CPU的Boot Loader程序,它可以运行在PowerPC、ARM、MIPS等多种嵌入式开发板上。从http:/u- ftp:/ftp.denx.de/pub/u-boot/站点均可以下载U-Boot的源代码。 U-Boot源代码的主要目录的解释如下: board:目标板相关文件,主要包含SDRAM、Flash驱动。 common:独立于处理器体系结构的通用代码,如内存大小探测与故障检测代码。, cpu:与处理器相关的文件,如mpc8xx子目录下的串口、网口、LCD驱动及中断初始化等文件。 driver:通

6、用设备驱动,如CFI Flash驱动(目前对Intel Flash支持较好)。 doc:U-Boot的说明文档。 examples:可以在U-Boot下运行的示例程序,如hello_world.c和timer.c。 include:U-Boot头文件,尤其是configs子目录下与目标板相关的配置头文件,它是移植过程中经常要修改的文件。, lib_xxx:处理器体系相关的文件,如lib_ppc、lib_arm目录分别包含的与PowerPC、ARM体系结构相关的文件。 net:与网络功能相关的文件目录,如boot、NFS和TFTP。 post:上电自检文件目录,尚有待进一步完善。 rtc:RTC

7、(Real Time Clock,实时时钟)驱动程序。 tools:用于创建U-Boot、S-RECORD和BIN镜像文件的工具。,3RedBoot RedBoot是一个专门为嵌入式系统定制的引导启动工具,最初由RedHat公司开发。它基于ECOS(Embedded Configurable Operating System)的硬件抽象层,同时继承了ECOS的高可靠性、简洁性、可配置性和可移植性等特点。在http:/sourceware.org/redboot站点可以下载RedBoot源码,同时也可以了解更多关于Redboot的详情信息。Redboot在嵌入式体系中应用非常广泛。,RedBoo

8、t是集Boot Loader、调试和Flash烧写于一体的,支持串口、网络下载的可执行嵌入式应用程序。它既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。RedBoot支持下载和调试应用程序,用户可以通过TFTP协议下载应用程序和image,或者通过串口用X-modem/Y-modem下载。开发板可以通过BOOTP/DHCP协议动态配置IP地址,并支持跨网段访问,所以可对gcc编译的程序进行源代码级的调试。相比于简易JTAG调试器,它可靠、高速、稳定。Red Boot支持用GDB通过串口或网卡调试嵌入式程序。用户可通过串口或网卡以命令行的形式管理Flas

9、h上的image,并下载image到Flash。动态配置RedBoot启动的各种参数、启动脚本,上电后RedBoot可自动从Flash或TFTP服务器上下载应用程序执行。,4. ARMBoot ARMBoot是一个以ARM或StrongARM为CPU内核的嵌入式系统的Boot Loader固件程序,该软件的主要目标是使新的平台更容易被移植,并且尽可能地发挥其强大性能。它只基于ARM固件,但是它支持多种类型的启动,如Flash,网络下载通过BOOTP、DHCP、TFTP等。它也是开源项目,可以从http:/ Blob Blob是Boot Loader Object的缩写,是一款功能强大的Boot

10、 Loader,其源代码在http:/ Bakker和Erik Mouw两人为一块名为LART(Linux Advanced Radio Terminal)的开发板编写的,该板使用的处理器是strongARM SA-1100。现在Blob已经被成功地移植到许多基于ARM的CPU上。,6. DIY DIY(Do It Yourself),即自己制作。上面介绍的U-Boot、vivi、Blob、RedBoot、ARMboot等成熟工具虽然移植起来简单快捷,但它们都存在着一定的局限性。首先,因为它们是面向大部分硬件的工具,所以在功能上要满足大部分硬件的需求,但一般情况下用户只需要与特定的开发板相关的

11、实现代码,其他型号开发板的实现代码对它来说是没有用的,因此通常会有较大的无用代码;其次,它们在使用上不够灵活,如在这些Boot Loader上添加自己的特有功能比较困难,因为必须熟悉该代码的组织关系,且了解它的配置编译等文件。用DIY的方式自己编写针对目标的Boot Loader,不但代码量短小,而且灵活性很大,最重要的是将来容易维护。所以在实际嵌入式产品的开发中大多都选择DIY的方式编写Boot Loader。,7.2 Boot Loader与嵌入式系统的关系 不同的Boot Loader有不同的处理器体系结构,有些Boot Loader还支持多种体系结构的处理器,比如U-Boot就同时支持

12、ARM体系结构和MIPS体系结构。除了依赖处理器的体系结构外,Boot Loader实际上也依赖于具体的嵌入式板级设备的配置。即使是基于同一种处理器构建的两块不同的嵌入式板级设备,它们的Boot Loader也是不同的。Boot Loader源程序是很关键的代码,因为它是把特定的数字写入指定硬件寄存器的指令序列。,系统加电复位后,所有的处理器都从处理器制造商预先安排的地址上取指令,如基于S3C44B0X的处理器在复位时通常都从地址0x00000000上取它的第一条指令。而且基于处理器构建的嵌入式系统通常都有某种类型的固态存储设备(如ROM、E2PPOM、Flash等)被映射到这个预先安排的地址

13、上,因此在系统加电后,处理器将首先执行Boot Loader程序。 装有Boot Loader内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构如图7.2所示。,图7.2 存储设备典型空间分配结构,7.2.1 Boot Loader的操作模式 1. 启动加载(Boot Loading)模式 启动加载模式也称为自主(Autonomous)模式,即Boot Loader从目标机的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Boot Loader的正常工作模式,因此在嵌入式产品发布的时候,Boot Loader显然必须工作在这种模式下。只

14、有工作在这种模式下,当系统上电或复位后,才能正常地运行操作系统,出现通信信息或图形界面供用户操作。,2. 下载(Down Loading)模式 当采用下载模式时,目标机的Boot Loader将通过串口连接、网络连接等通信手段从主机上下载文件,如应用程序、数据文件、内核映像等。从主机下载的文件通常先被Boot Loader保存到目标机的RAM中,然后再被Boot Loader写到目标机上的固态存储设备中。下载模式要求在Boot Loader中完成对串口或以太网口的初始化、定义相关的命令和向其终端提供相应简单的命令接口。Boot Loader的这种模式通常在系统更新时使用。,7.2.2 Boot

15、 Loader的总体设计 1阶段设计 Boot Loader的启动是可以分阶段的,因此在设计时也可将Boot Loader分为阶段1和阶段2。Boot Loader的设计分为两个阶段的原因如下。 (1) 基于编程语言的考虑。阶段1主要用汇编语言编写,这是因为它主要进行与CPU核心及存储设备密切相关的处理工作和进行一些必要的初始化工作,是依赖于CPU体系结构的代码,所以为了增加效率以及匹配协处理器的设置,只能用汇编语言编写,这部分直接在Flash中执行。阶段2可以用C语言编写,主要实现一般的流程以及对板级的一些驱动支持,这部分会被复制到RAM中执行。,(2) 为了使代码具有更好的可读性与可移植性。对于相同的CPU以及存储设备,若要增加外设支持,阶段1的代码可以维持不变,只对阶段2的代码进行修改;而对于不同的CPU,则只需在阶段1中修改基础代码。,2. 地址规划设计 当Boot Loader的阶段设计完成之后,需要考虑的是镜像存储的地址分配,如总镜像保存在什么地方、阶段2对应的镜像会被复制到什么地方、内核镜像原先存放在什么地方

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号