3479|5

2131

帖子

0

TA的资源

至上芯片

楼主
 

Bootloader深入讨论 [复制链接]

Bootloader介绍
Bootloader移植的必要性
Bootloader是与系统硬件高度相关的初始化软件,它担负着初始化硬件和引导操作系统的双重责任。一些ARM平台可以共用同一种Bootloader,但是总的说来,每一个特定系统的Bootloader都会有所不同。Bootloader广泛用于有操作系统的手持终端设备,智能家电,机顶盒等嵌入式设备上,它负责完成硬件初始化,操作系统引导,系统配制等。Bootloader移植是在特定硬件平台上操作系统移植至关重要的一步。


Bootloader所支持的CPU
每种不同的CPU体系结构都有不同的BootLoader。有些BootLoader也支持多种体系结构的CPU,比如U-BOOT就同时支持ARM, MIPS, POWERPC等体系结构。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。

Bootloader的操作模式(Operation Mode)
主机和目标机之间一般通过串口建立连接,BootLoader软件在执行时通常会通过串口来进行数据传输,如输出打印信息到串口,从串口读取用户控制字符。

大多数Boot Loader都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。

启动加载(Boot loading)模式:这种模式也称为自主模式bootstrap。也即Boot Loader将存储在目标板Flash中的内核和文件系统的镜像装载到SDRAM中,整个过程无需用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下。
下载Downloading模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从宿主机Host下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用Boot Loader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一些简单的命令行接口。


U-BOOT等这样功能强大的BootLoader通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,U-BOOT在启动时处于正常的启动加载模式,但是它会延时几秒(在配置文件中可以设定)等待终端用户按下任意键而将其切换到下载模式(相当于bios下按del键可进入系统配置界面一样,设置从光盘启动可进行重装),如果在给定时间内没有用户按键,则U-BOOT继续启动,进行正常的启动加载。




Bootloader的通用执行流程
从操作系统的角度看,Bootloader的总目标就是正确地调用内核来执行。另外,由于Bootloader的实现依赖于 CPU的体系结构,因此大多数Bootloader都分为stagelstage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stagel中,而且通常都用汇编语言来实现,以达到短小精悍和高效的目的。而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。

Bootloaderstagel通常包括以下步骤(以执行的先后顺序):

硬件设备初始化(配置SDRAM存储控制器及IO),中断初始化

为加载Bootloaderstage2准备RAM空间(测试内存空间是否有效)

拷贝Bootloaderstage2RAM空间中


设置好堆栈

跳转到stage2C入口点

Bootloaderstage2通常包括以下步骤(以执行的先后顺序):

初始化本阶段要使用到的硬件设备

检测系统内存映射(memorymap)

没有用户干预时将kernel映像和根文件系统映像从flash读到RAM空间中

为内核设置启动参数


调用内核
[local]2[/local]

最新回复

怎么没有后文了?go on...  详情 回复 发表于 2010-3-7 07:58

赞赏

1

查看全部赞赏

点赞 关注
个人签名处处留心皆学问!

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 
因为为个部分东西比较多,我正在总结其中包括vivi、u-boot、简易的bootloader!
咱们可以先一个一个来,不知道大家都用哪个?
学习它的方法可以不先看原代码,先将其运行起来并引导系统,在进一步学习其实现过程!
 
个人签名处处留心皆学问!
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
uboot看过一段时间,由于对操作系统不熟悉,那段时间没看明白,呵呵
 
 
 

回复

269

帖子

0

TA的资源

一粒金砂(中级)

4
 
热烈欢迎, 最好讲的详细点,注释清楚点,便于我们这么新手尽快入门。 感觉国内用三星的arm比较多,从vivi开始讲起吧。daicheng辛苦了
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

5
 
怎么没有后文了?go on...
 
 
 

回复

2131

帖子

0

TA的资源

至上芯片

6
 

回复 5楼 big_nose 的帖子

我前段时间已经把u-boot的总结了,下次我会总结vivi,及自己写bootloader
 
个人签名处处留心皆学问!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表