首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» 一种新的BootLoader启动引导方式研究
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
一种新的BootLoader启动引导方式研究
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2014-6-7 10:27
|
只看该作者
一种新的BootLoader启动引导方式研究
BootLoader
,
loading
引 言
BootLoader通常称为“系统的引导加载程序”,是系统加电或复位后执行的第一段程序代码。这段程序的主要任务是,实现硬件设备初始化并建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。通常,BootLoader包含两种不同的加载和启动引导方式,即启动加载方式和下载方式。
①启动加载(boot loading)方式。这种引导方式也称为“自主(autonomous)引导方式”,也即BootLoader从目标机的某个固态存储设备上将操作系统加载到RAM中并引导运行,整个过程并没有用户的介入。这种引导方式是BootLoader的正常工作模式下普遍采用的一种引导方式。因此在嵌入式产品发布的时候,BootLoader一般以这种引导方式对内核代码进行启动引导。
②下载(down loading)方式。在这种引导方式下目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,如下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的固态存储设备中,其后完成内核的引导运行。BootLoader的这种引导方式通常在系统研发和更新时使用。在嵌入式系统研发阶段,现有的BootLoader下载引导方式又可根据加载途径的不同细分为以下几种:
①通过Ethernet网口从宿主机下载内核到目标板,从而实现软件系统启动;
②通过串口从宿主机下载内核到目标板从而实现软件系统启动;
③直接从Flash中提取已存储的内核,从而实现软件系统的启动。
总结以上几种引导方式会发现,它们有些共同的弊端;在系统调试时需要进行宿主机与目标板间的硬件线路的实际连接,使用起来不够方便,且烧片的速度比较缓慢,调试的效率不高;硬件方面需要大容量的Flash的支持,增加了研发成本;进行内核更新时显得不够灵活。为此,采用可移动的存储介质对系统内核进行存储(如SD卡、CF卡等),从而实现对系统内核的灵活调试和引导。这种引导方式的好处是,在调试时无需把宿主机和目标板进行硬件连接,提高了调试的效率,使用起来更便捷、更灵活;进行内核更新时显得更为灵活,只需把更新内核转存到指定目录,此外它的实现也比较简单。进行这方面的改进时只需做以下工作:在硬件方面,增加针对特定移动存储介质的硬件电路,而在中大型系统中,有关移动存储介质的硬件电路(如SD卡、CF卡等相关的电路)是现成的,所以硬件部分也可忽略;在BootLoader程序内部,只需添加对移动存储介质(如CF卡、SD卡等)基于文件系统进行存储访问的指令。按此思路,在已有硬件平台的基础上针对移动设备SD卡对原有BootLoader进行了改进。下面介绍实现过程。
1 硬件平台
本次改进测试的硬件平台是由英蓓特公司开发的基于LPC2294 ARM控制器的LPC22EB06一I实验平台。其上的主要功能模块有:
①2 MB的Flash、1 MB的SRAM(可扩展到4 MB)、256B具有I2C接口的E2PROM等存储器;
②2个RS232(其中一路可接Modem)、RS485、CAN等通信总线接口;
③2个调试接口:LPT和JTAG调试接口;
④支持CF卡、SD/MMC等移动存储介质;
⑤支持128×128真彩显示。
图1是其硬件功能框图。
2 BOOtLoader的改进设计
2.1 原有BootLoader功能
原来的:BootLoader具有如下功能:
①串口下载功能,通过串口下载内核到指定RAM区;
②Flash烧写功能,从RAM区烧写数据到Flash中;
③数据区内块搬移功能;
④其他功能。其指令封装结构如下:
2.2 BootLoader改进实验
此次改进就是在原有BootLoader的基础上,增加对移动存储介质SD卡以FAT格式进行读取数据的指令来实现的。命令封装如下:
其功能是,在SD卡中把指定目录下的内核文件提取到SDRAM区域中,从而完成内核的加载。
另增加3条辅助指令,一条完成SD卡的格式化,另一条完成对系统内核的保存,最后一条完成对系统内核的启动加载。命令封装如下:
其中,CMD_TBL_SD_FORMAT的功能是完成对SD卡的格式化,CMD_TBL_SD_STORE的功能是把SDRAM区域中的内核代码备份到SD卡的固定存储区,CMD_TBL_SD_LDAD的功能是把SD卡的固定存储区中的内核代码加载到指定的SDRAM区域中。
下面分析一下其基于FAT文件系统的具体读取和备份方法。首先看一下FAT文件系统的基本结构。FAT文件系统的整体结构大体由4大部分组成:MBR区(主引导记录区)、DBR区(DOS引导记录区)、FAT区(文件分配表区,FATl为主文件分配表区,FAT2为备份文件分配表区)和DATA区(数据区,包含FDT区——文件目录表区)。FAT文件系统结构如下:
其各个区域基扇区地址(把MBR区的基扇区地址作为O)计算如下:
DBR区的基扇区地址=MBR基扇区地址+63
FAT表的基扇区地址=DBR的基扇区地址+保留扇区数
FDT区基扇区地址=每FAT表扇区数×FAT表个数+(FDT区的开始簇号一2)×每簇扇区数+FAT表基扇区地址。(簇是系统进行文件管理的单位,FAT表中的每一项对应一个簇,文件的存取按簇进行,一簇包含若干个扇区。)
从FAT文件系统的组织结构可以看出,从SD卡中读取系统内核代码数据到指定的RAM区比较容易,就是根据系统内核文件名在文件系统中进行查找定位,随后完成读取。对于内核代码的备份和加载,需要在深入分析FAT文件系统的组织结构的基础上对SD卡格式化作一些处理。在格式化时,通过设置MBR区和DBR区的数据实现不对SD卡存储区的最末8MB区域(根据实际需要可增减)作格式化处理的目的,即把它置为RAW区。所以系统内核备份的实现,就是把系统内核代码通过SD卡的写入指令填充到RAW区。系统内核的加载是从RAW区直接读取备份的内核代码。
3 总 结
本文所述的内核加载启动引导方式已经过实践验证。它实现了目标板与宿主机间硬件线路连接的完全脱离.为系统调试者提供了便利,有效地提高了系统调试的效率;与此同时,它还能方便地实现系统的在线更新。可以说要进行系统启动引导设计,此方法是一个不错的选择。最后说明一点,本文介绍的BootLoader改进方法是在LCP2294芯片开发的LPC22EB06一I实验平台上完成的。由于BootLoader与处理器的体系结构和具体嵌入式板级设备的配置密切相关,若要在其他的处理器芯片或平台上采用上述方法,还需对BootLoader中与处理器体系结构相关的代码作适当的修改。这部分不是本文探讨的主要内容,所以在此不再详述,若有读者还想详细了解相关内容,请查阅相关论文或书籍。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议