没有合适的资源?快使用搜索试试~ 我知道了~
首页UBOOT 移植(53页PDF全面)
UBOOT 移植(53页PDF全面)
3星 · 超过75%的资源 需积分: 50 59 下载量 88 浏览量
更新于2023-03-03
评论 3
收藏 1.1MB PDF 举报
了解嵌入式BootLoader 的基本概念和嵌入式体系结构 掌握BootLoader 的启动流程与使用方法 了解U-Boot 的源代码结构 掌握U-Boot 的编译过程和启动过程 掌握BootLoader 移植的基本方法和移植要的 掌握通过查看芯片手册、硬件原理图来配置相关寄存器的方法 熟悉U-Boot 常用命令的使用
资源详情
资源评论
资源推荐
第二章 何为 BootLoader
本章学习目标:
了解嵌入式 BootLoader 的基本概念和嵌入式体系结构
掌握 BootLoader 的启动流程与使用方法
了解 U-Boot 的源代码结构
掌握 U-Boot 的编译过程和启动过程
掌握 BootLoader 移植的基本方法和移植要的
掌握通过查看芯片手册、硬件原理图来配置相关寄存器的方法
熟悉 U-Boot 常用命令的使用
2.1 BootLoader 介绍
引导加载程序是系统加电后运行的第一段软件代码。PC 机中的引导加载程序由 B
IOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS BootLoader(比如,LILO 和
GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘 MBR 中的 BootLoad
er 读到系统的 RAM 中,然后将控制权交给 OS BootLoader。BootLoader 的主要运行
任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即
开始启动操作系统。
而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序(注:有的嵌入式 CPU
也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由 BootLoader
来完成。比如在一个基于 ARM9TDMI core 的嵌入式系统中,系统在上电或复位时通
常都从地址 0x00000000 处开始执行,而在这个地址处安排的通常就是系统的 BootL
oader 程序。
2.1.1 Boot Loader 的基本概念
嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代
码。其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码,主要功能是通
过设置寄存器初始化硬件的工作方式,如设置时钟、中断控制寄存器等,完成内存映射、初
始化 MMU 等。第二部分是装载程序,将操作系统和应用程序的映像从只读存储器装载或者拷
贝到系统的 RAM 中并执行。
(1)什么是板级 BSP? BSP(Board Support Package)是板级支持包,是介于主板硬
件和操作系统之间的一层,主要是为了支持操作系统,使之能够更好的运行于硬件主板。不
同的操作系统对应于不同形式的 BSP,例如 WinCE 的 BSP 和 Linux 的 BSP 相对于某 CPU 来说
尽管实现的功能一样,可是写法和接口定义是完全不同的。所以,BSP 一定要按照该系统 BSP
的定义形式来写,这样才能与上层 OS 保持正确的接口,良好的支持上层 OS。
(2)什么是 BootLoader ? 在 BSP 中有一个重要的组成部分就是 BootLoader,它是
在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立
内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准
备好环境。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
一般来说,在嵌入式世界里 BootLoader 是严重地依赖于硬件的,因此想建立一个通用的
BootLoader 几乎是不可能的。不同的 CPU 体系结构有不同的 BootLoader,而且除了依赖
于 CPU 的体系结构外,BootLoader 还依赖于具体的嵌入式板级设备的配置。这也就是说,
对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 结构而构建的,要想让运行在
一块板子上的 BootLoader 程序也能运行在另一块板子上,通常也都需要修改 BootLoader
的源程序。尽管如此,我们仍然可以对 BootLoader 归纳出的一些原理来,通过这些共
性的学习,以便指导用户特定的 BootLoader 设计与实现。
2.1.2 Boot Loader 所支持的 CPU 和嵌入式体系结构
嵌入式系统世界已经有各种各样的 BootLoader,种类划分也是多种多样。除了按照处
理器体系结构不同划分以外,还可以按功能复杂程度的不同来划分。
首先读者还应该区分一下“BootLoader”和“Monitor”的概念。严格来说,“Boot
-Loader”只是引导设备并且执行主程序的固件;而“Monitor”还提供了更多的命令行接
口,可以进行调试、读写内存、烧写 Flash、配置环境变量等。“Monitor”在嵌入式系统
开发过程中可以提供很好的调试功能,开发完成以后,就完全设置成了“BootLoader”。所
以,习惯上大家把它们统称为 BootLoader。
对于每种体系结构,都有一系列开放源码 BootLoader 可以选用。LINUX 下的 BOOTLOADER
及支持的体系结构如下表所示:
表 2-1 LINUX 的下的 BOOTLOADER 及支持的体系结构
名称 功能说明 体系结构
LILO LINUX 的磁盘引导加载程序 x86
GRUB LILO 的 GRU 版 x86
Loadlin 从 Dos 引导 Linux 系统 x86
U-BOOT 以 PPCBoot 和 ARMBoot 为基础的通用引导加载
程序
x86,ARM,PowerPC,MI
PS 等
RedBoot 以 eCos 为基础的引导程序 x86,ARM,PowerPC,
MIPS,M68K
VIVI 为 S3C24XX 处理器引导 Linux ARM
ROLO 可替代 BIOS,能从 ROM 引导 Linux x86
Etherboot 从以太网卡启动 Linux 系统的固件 x86
LinuxBIOS 以 Linux 为基础的 BIOS 替代品 x86
BLOB 来自 LART 计划的引导程序 ARM
X86
X86 的工作站和服务器上一般使用 LILO 和 GRUB。LILO 是 Linux 发行版主流的 Boot
-loader,它是 LINUX 的磁盘引导加载程序。GRUB 是 LILO 的 GNU 版,GRUB 比 LILO 有更友好
的显示界面,使用配置也更加灵活方便。
在某些 X86 嵌入式单板机或特殊设备上,会采用其他 Bootloader,例如 ROLO。这些
Bootloader 可以取代 BIOS 的功能,能够从 ROM 中直接引导 Linux 启动。现在 ROLO 支持的
开发板已经并入 U-Boot,所以 U-Boot 也可以支持 X86 平台。
ARM
ARM 处理器的芯片商很多,所以每种芯片的开发板都有自己相应的 Bootloader。最早有
为 ARM7TDMI core 处理器的开发板的固件,出现了 armboot,StrongARM 平台的 blob,还有
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
S3C2410 处理器开发板上的 vivi 等。现在 armboot 已经并入了 U-Boot,所以 U-Boot 也支持
ARM/XSCALE 平台。U-Boot 已经成为 ARM 平台事实上的标准 Bootloader。
PowerPC
PowerPC 平台的处理器有标准的 Bootloader,就是 ppcboot。ppcboot 和 armboot 合并
创建了 U-Boot,成为各种体系结构开发板的通用引导程序。
MIPS
MIPS 公司开发的 YAMON 是标准的 Bootloader,也有许多 MIPS 芯片商为自己的开发板写
了 Bootloader。现在,U-Boot 也已经支持 MIPS 平台。
SH
SH 平台的标准 Bootloader 是 sh-boot。
M68K
M68K 平台没有标准的 Bootloader。Redboot 能够支持 m68k 系列的系统。
2.1.3 Boot Loader 的安装媒介(Installation Medium)
系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指
令。比如,基于 ARM9TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条
指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM
或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行 Boot
Loader 程序。
下图 2-2 就是一个同时装有 Boot Loader、内核的启动参数、内核映像和根文件系统映
像的固态存储设备的典型空间分配结构图。
图 2-2 固态存储设备的典型空间分配结构
2.1.4 Boot Loader 的启动过程
通常多阶段的 BootLoader 能提供更为复杂的功能,以及更好的可移植性。从固态存储
设备上启动的 Boot Loader 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1
和 stage 2 两部分。而至于在 stage 1 和 stage 2 具体完成哪些任务将在下一节中讨论。
2.1.5 Boot Loader 的操作模式
大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种
差别仅对于研发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载
操作系统,而并不存在所谓的启动加载模式和下载工作模式的差别。
启动加载模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标
机上的某个固态存储设备上将操作系统加载到 RAM中运行,整个过程并没有用户的介入。这
种模式是 BootLoader 的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必
须工作在这种模式下。
下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像,测试程序等。从主机
下载的文件通常首先被 BootLoader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到
目标机上的FLASH 类固态存储设备中。BootLoader的这种模式通常在系统更新和第一次安装
内核和根文件系统时被使用;工作于这种模式下的BootLoader 通常都会向他的终端用户提
供一个简单的命令行接口。比如U-BOOT、VIVI等。
2.2 U-Boot 分析
2.2.1 了解 U-Boot
U-Boot(Universal Boot Loader)是遵循 GPL 协议的一个开源项目,通称为通用
Bootloader。
之所有将它称之为“通用”是因为它可以引导多种操作系统和支持大多数的 CPU 架构。
它所支持的常见操作系统:Linux、NetBSD、VxWorks 等,支持的 CPU 有:ARM、 AVR32、
Blackfin 、x86、NIOS、PowerPC 等。
读者可以从
http://sourceforge.net/projects/U-Boot
网站获取 U-Boot 源代码。同时在
使用中遇到问题,请读者多多思考,利用好网络资源来解决问题。
2.2.2 U-Boot 源代码结构
从网站上下载得到 U-Boot 源码包,例如:U-Boot-1.1.6.tar.bz2.解压就可以得到全
部 U-Boot 源程序。在顶层目录下有 18 个子目录,分别存放和管理不同的源程序。这些目录
中所要存放的文件有其规则,可以分为 3 类。
第 1 类目录与处理器体系结构或者开发板硬件直接相关;
第 2 类目录是一些通用的函数和驱动程序;
第 3 类目录是 U-Boot 的应用程序、工具或者文档。
表 2-3 列出了 U-Boot 顶层目录下各级目录存放规则。
表 2-3 U-Boot 的源码顶层目录说明
目 录 特 性 解 释 说 明
board 平台依赖
存放电路板相关的目录文件,例如:RPXlite(mpc8xx)、
smdk2410(arm920t)、sc520_cdp(x86) 等目录
cpu 平台依赖
存放 CPU 相关的目录文件,例如:mpc8xx、ppc4xx、arm720t、
arm920t、 xscale、i386 等目录
lib_ppc 平台依赖
存放对 PowerPC 体系结构通用的文件,主要用于实现 PowerPC
平台通用的函数
lib_arm 平台依赖
存放对 ARM 体系结构通用的文件,主要用于实现 ARM 平台通
用的函数
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
lib_i386 平台依赖
存放对 X86 体系结构通用的文件,主要用于实现 X86 平台通
用的函数
include 通用
头文件和开发板配置文件,所有开发板的配置文件都在
configs 目录下
common 通用 通用的多功能函数实现
目 录 特 性 解 释 说 明
lib_generic 通用 通用库函数的实现
Net 通用 存放网络的程序
Fs 通用 存放文件系统的程序
Post 通用 存放上电自检程序
drivers 通用 通用的设备驱动程序,主要有以太网接口的驱动
Disk 通用 硬盘接口程序
Rtc 通用 RTC 的驱动程序
Dtt 通用 数字温度测量器或者传感器的驱动
examples 应用例程 一些独立运行的应用程序的例子,例如 helloworld
tools 工具
存放制作 S-Record 或者 U-Boot 格式的映像等工具,例如:
mkimage
Doc 文档 开发使用文档
U-Boot 支持十几种架构,包含对几十种处理器、数百种开发板的支持。可是对于特定
的开发板,配置编译过程只需要其中部分程序。在 board 目录下找到与自己的开发板相近的
配置,然后在这基础上做些修改就可以实现相应的功能。
2.2.3 U-Boot 的编译过程
以 smdk2410 板为例,编译的过程可分为两部份:
#make smdk2410_config
#make
在编译 U-BOOT 之前,先要执行
# make
smdk2410_config
smdk2410_config
是 Makefile 的一个目标,定义如下:
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
剩余52页未读,继续阅读
newnewman80
- 粉丝: 315
- 资源: 124
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1