没有合适的资源?快使用搜索试试~ 我知道了~
首页启动程序BootLoader的分析
启动程序BootLoader的分析
需积分: 9 14 下载量 48 浏览量
更新于2023-03-16
评论
收藏 59KB DOC 举报
启动程序BootLoader的分析 启动程序BootLoader的分析 启动程序BootLoader的分析 详解!!!!!
资源详情
资源评论
资源推荐
启动程序 BootLoader 的分析
启动程序 BootLoader 的分析
1 什么是 BootLoader
BootLoader 就是在操作系统内核运行之前运行的一段小程序。通过
这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从
而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作
系统内核准备好正确的环境。
BootLoader 是严重地依赖于硬件而实现的,特别是在嵌入式系统。
因此,在嵌入式系统里建立一个通用的 BootLoader 几乎是不可能
的。尽管如此,我们仍然可以对 BootLoader 归纳出一些通用的概
念来,以指导用户进行特定的 BootLoader 设计与实现。
嵌入式系统中,Bootloader 的意义与作用与 PC 上的 BIOS 有点类
似,它对开发板上的主要部件如 CPU、SDRAM、FLASH、串口等
进行了初始化,可以使用 Bootloader 下载文件到开发板,可以浏览
目录,可以烧录 ash,可以启动系统等,实际上,一个功能比较强
大的 Bootloader 已经相当于一个微型的操作系统了。
初始化基础硬件——CPU 速度、存储器定时、中断、检测 ram 大小。
引导装载程序通常是在任何硬件上执行的第一段代码。台式机这样的
常规系统中,通常将引导装载程序装入主引导记录(Master Boot
Record,MBR)中,在嵌入式设备中,通常将引导程序放置在不易
丢失的存储器的开始地址或者是系统冷启动时 PC 寄存器的初始值。
通常,在台式机或其他系统上,BIOS 将控制移交给引导装载程序。
而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序(注,有的
嵌入式 CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启
动任务就完全由 BootLoader 来完成。引导程序完成自己的任务后,
也将控制权移交给操作系统。
总体上 Bootloader 需要完成以下工作。
n 初始化 CPU 速度;
n 初始化内存,包括启用内存库,初始化内存配置寄存器等;
n 初始化中断控制器,在系统启动时,关闭中断,关闭看门狗;
n 初始化串行端口(如果在目标上有的话);
n 启用指令/数据高速缓存;
n 设置堆栈指针;
n 设置参数区域并构造参数结构和标记(这是重要的一步,因为内
核在标识根设备、页面大小、内存大小以及更多内容时要使用引导参
数);
n 执行 POST(加电自检)来标识存在的设备并报告有何问题;
n 为电源管理提供挂起/恢复支持;
n 传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜
像文件事先存放在 Flash 中,这样就不需要 BootLoader 和主机传
输操作系统内核镜像文件,这通常是在做成产品的情况下使用。而一
般在开发过程中,为了调试内核的方便,不将操作系统内核镜像文件
固化在 Flash 中,这就需要主机和目标机进行文件传输;
n 跳转到内核的开始,在此又分为 ROM 启动和 RAM 启动。所谓
ROM 启动就是用 XIP 技术直接在 Flash 中执行操作系统镜像文件;
所谓 RAM 启动就是指把内核镜像从 Flash 复制到 RAM 中,然后再
将 PC 指针跳转到 RAM 中的操作系统启动地址。
嵌入式系统的资源有限,程序通常都是固化在 ROM 中运行。ROM
中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工
作是用汇编语言编写的启动程序完成。
启动程序是嵌入式程序的开头部分,应与应用程序一起固化在 ROM
中,并首先在系统上运行,它应包含各模块中可能出现的所有段类,
并合理安排它们的次序。
2 BootLoader 和主机之间文件传输的通信协议
最常见的情况就是,目标机上的 BootLoader 通过串口与主机之间
进行文件传输,传输协议通常是 xmodem/ymodem/zmodem 协
议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接
并借助 TFTP 协议来下载文件是个更好的选择。
此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通
过以太网连接和 TFTP 协议来下载文件时,主机方必须有一个软件用
来的提供 TFTP 服务。
3 BootLoader 选项
程序员可以在自己的 BootLoader 中实现不同的启动选项,在此将
对一些常用的选项进行讨论。如:BootLoader 通信方式,串口中的
启动功能等。
最常见的嵌入式系统目标机和主机通信的模型。开发人员可以使用超
级终端通过串口向目标机发送命令,由于串口协议是最简单、可靠的
因此经常被使用在系统未启动前的阶段。
串口命令行选项
超级终端上使用串口协议,用文本形式来显示和目标机的通信过程。
用户可以在超级终端的命令行中指定目标机执行某个命令。这些命令
包括。
n 从 Ethernet 下载操作系统镜像文件;
n 从 Flash 启动(这要求操作系统镜像文件已经被固化在 Flash
中);
n 启动 RAM 测试程序;
n 对目标机的 I/O 端口进行测试;
开发人员可以自己对这些命令进行修改或者扩充。
下面就是通过串口通信来控制目标机的菜单样例:
*************************
Generic BootLoader Version 1.0
*************************
Select option:
D – Download Image
M – Memory Test
B – Start Windows CE .NET
E – Download via Ethernet
P -- Download via Parallel
A – Dial-up Boot
=> (enter your selection here)
下面解释这些命令的功能。
n Memory test 命令
这个命令包含了两种测试方式:其一,对设备寄存器的访问测试。由
于 ARM 芯片内部的各个寄存器都是内存编址的,因此对设备寄存器
的访问可以等同于对内存的读写;其二,对常规内存进行测试,方法
大致是向一个内存地址写一个数据,再读一边,如果值相等,则说明
数据总线和地址总线工作正常没有发生短路现象。
在嵌入式系统开发过程中,硬件的制作是第一步。当硬件成型之后,
就需要软件来测试硬件平台是否符合设计要求,因此对硬件测试要从
剩余23页未读,继续阅读
zjl878586
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0