《第5课(uboot)uboot》由会员分享,可在线阅读,更多相关《第5课(uboot)uboot(69页珍藏版)》请在金锄头文库上搜索。
1、版权声明:本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力:任何单版权声明:本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力:任何单 位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物、视频从事商业、教学活位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物、视频从事商业、教学活 动。已经取得书面授权的,应在授权范围内使用,并注明动。已经取得书面授权的,应在授权范围内使用,并注明“来源:国嵌来源:国嵌”。违反上述声明者,我们将追究其。违反上述声明者,我们将追究其 法律责任。法律责任。 UBOOTUBOOT
2、 谢伟谢伟谢伟谢伟 著著著著 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 Contents BootLoader介绍介绍 Uboot移植移植 Uboot介绍介绍 Uboot命令命令 Uboot工作流程工作流程 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 Contents BootLoader介绍介绍 Uboot移植移植 Uboot介绍介绍 Uboot命令命令 Uboot工作流程工作流程
3、 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 概念概念 什么是什么是BootLoader? 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 软件层次软件层次 一个嵌入式系统从软件角度来看分为三个层次:一个嵌入式系统从软件角度来看分为三个层次: 1. 引导加载程序引导加载程序 包括固化在固件包括固化在固件(firmware)中的中的 boot 程序程序(可可 选选),和,和 BootLoad
4、er 两大部分。两大部分。 2. Linux 内内核核 特定于嵌入式平台的定制内核。特定于嵌入式平台的定制内核。 3. 文文件件系统系统 包括了系统命令和应用程序。包括了系统命令和应用程序。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 软件层次软件层次 一个同时装有一个同时装有 BootLoader、内、内核核的的启启动动参参 数数、内内核映像核映像和和根文根文件件系统系统映像的固态存映像的固态存 储设备的典型空间分配结构图:储设备的典型空间分配结构图: 技术咨询技术咨询QQ: 55049
5、1596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 回忆回忆PC PC机中的引导加载程序由机中的引导加载程序由BIOS (其本其本质是一段固质是一段固件件程序)程序)和和 GRUB或或LILO一起组成。一起组成。BIOS在在 完成硬件检测和资源分配后,将硬完成硬件检测和资源分配后,将硬 盘中的引导程序读到系统内存中然盘中的引导程序读到系统内存中然 后将控制权交给引导程序。引导程后将控制权交给引导程序。引导程 序的主要任务是序的主要任务是将内将内核核从从硬盘硬盘上上读读 到到内内存中存中,然后然后跳转跳转到到内内核核的的入入口点口点
6、 去运行去运行,即即启启动动操操作系统作系统。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 定义定义 在嵌入式系统中,在嵌入式系统中,通常通常没有像没有像BIOS那样的固那样的固 件程序,件程序,因此整因此整个个系统系统的的加载启加载启动任动任务就务就完完 全全由由BootLoader来来完完成成。比如在一个基。比如在一个基 于于 ARM7TDMI core的嵌入式系统中,系统的嵌入式系统中,系统 在上电或复位时都从地址在上电或复位时都从地址 0x00000000开始开始 执行。而在这个地
7、址处安排的通常就是系统执行。而在这个地址处安排的通常就是系统 的的BootLoader程序。程序。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 定义定义 简单地说,简单地说,BootLoader就是在操作系统运就是在操作系统运 行之前运行的行之前运行的一段一段小小程序程序。通过这段小程。通过这段小程 序,可以序,可以初始初始化硬化硬件件设备设备,从而将系统的,从而将系统的 软硬件环境带到一个合适的状态,以便为软硬件环境带到一个合适的状态,以便为 最终最终调调用用操操作系统作系统做好准备。做
8、好准备。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 安装安装 系统加系统加电或电或复复位位后后,所有的,所有的CPU通常通常都都 从从CPU制制造造商商预先安排地址开始执行预先安排地址开始执行。 比如,比如,S3C2410在复位后从地址在复位后从地址 0x00000000起开始执行。起开始执行。而而嵌嵌入式系入式系 统统则则将将固态存储设备(固态存储设备(比如比如:FLASH) 安排安排在在这这个个地址地址上上,而,而bootloader程序程序 又安排在固态存储器的最前端,这样就又安排
9、在固态存储器的最前端,这样就 能保证在系统加电后,能保证在系统加电后,CPU首先执行首先执行 BootLoader程序。程序。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 移植移植 为什么需要进行为什么需要进行bootloader移植?移植? 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 移植移植 每种每种不不同同的的CPU体体系结构系结构都有不同的都有不同的 BootLoader。除了
10、依赖于。除了依赖于CPU的体系结构外,的体系结构外, BootLoader 还依赖于还依赖于具体具体的嵌的嵌入式入式板级板级设备设备的的 配配置置,比如板卡的硬件地址分配,外设芯片的类,比如板卡的硬件地址分配,外设芯片的类 型等。这也就是说,对于两块不同的开发板而型等。这也就是说,对于两块不同的开发板而 言,言,即即使使它它们们是是基基于同一于同一种种CPU而而构构建建的,的,但如但如 果果他他们的们的硬硬件件资资源或源或配配置置不不一一致致的话,的话,要想在一要想在一 块开发板上运行的块开发板上运行的BootLoader程序也能在另一块程序也能在另一块 板子上运行,还是需要作修改。板子上运行
11、,还是需要作修改。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 流程流程 BootLoader 的启动过程可分为的启动过程可分为单单阶阶段段(Single- Stage)和)和多阶多阶段段(Multi- Stage)两种,通常多)两种,通常多 阶段的阶段的 BootLoader 具有更复杂的功能,更好的具有更复杂的功能,更好的 可移植性。从固态存储设备上启动的可移植性。从固态存储设备上启动的 BootLoader 大多大多采采用用两两阶阶段段,即启动过程可以,即启动过程可以 分为分为 st
12、age 1和和 stage2:stage1完成初始化硬完成初始化硬 件,为件,为stage2准备内存空间,并将准备内存空间,并将stage2复制到复制到 内存中,设置堆栈,然后跳转到内存中,设置堆栈,然后跳转到stage2。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 流程流程 BootLoader 的的 stage1 通常包括以下步骤:通常包括以下步骤: 硬件设备初始化硬件设备初始化 为加载为加载 BootLoader 的的 stage2 准备准备 RAM 空间空间 拷贝拷贝 BootL
13、oader 的的 stage2 到到 RAM 空间中空间中 设设置好置好堆栈堆栈(why?) 跳转到跳转到 stage2 的的 C 入口点入口点 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 流程流程 BootLoader 的的 stage2 通常包括以下步骤:通常包括以下步骤: 初始化本阶段要使用到的硬件设备初始化本阶段要使用到的硬件设备 将内核映像和根文件系统映像从将内核映像和根文件系统映像从 flash 上读到上读到 RAM 中中 调用内核调用内核 技术咨询技术咨询QQ: 550491
14、596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 内存分布内存分布 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 Contents BootLoader介绍介绍 Uboot移植移植 Uboot介绍介绍 Uboot命令命令 Uboot工作流程工作流程 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 作用作用 Uboot是德国是德国
15、DENX小组开发的用于小组开发的用于多多 种种嵌嵌入式入式CPU( MIPS、x86、ARM、 XScale等等)的的bootloader程序程序, UBoot不仅支持嵌入式不仅支持嵌入式Linux系统的引系统的引 导,还支持导,还支持VxWorks, QNX等等多多种种嵌嵌 入式入式操操作系统作系统。 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 下载下载 从下面地址可以下载到从下面地址可以下载到uboot的源代码:的源代码: ftp:/ftp.denx.de/pub/u- boot/ 技
16、术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 目录结构目录结构 进入到进入到UBOOT目录,可以得到如下的目录,可以得到如下的目录目录结构结构: | board | common | cpu | disk | doc | drivers | dtt | examples | fs | include 技术咨询技术咨询QQ: 550491596 1327229087 技术咨询电话技术咨询电话: 028- 88820953 028- 66501487 目录结构目录结构 | lib_arm | lib_generic | lib_i386 | lib_m68k | lib_microblaze | lib_mips | lib_nios | lib_nios2 | lib_