Bootloader的设计和实现

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应驻留在FLASH等永久存储介质里 ● BootLoader应驻留在 应驻留在 等永久存储介质里 ● BootLoader应提供消息反馈机 应提供消息反馈机 要能加载BootLoader镜像和 镜像和OS镜像,对 镜像, ● BootLoader要能加载 要能加载 镜像和 镜像 OS镜像要既能从 镜像要既能从RAM加载,也能从FLASH加载 加载,也能从 加载 镜像要既能从 加载 ● 提供数据正确性保障

LOGO

BootLoader的推荐做法 的推荐做法
尽量使用微软提供的支持库开发BootLoader ● 尽量使用微软提供的支持库开发 共享相同的硬件初始化代码 ● 和OAL共享相同的硬件初始化代码
◆ BootLoader的附加功能特性 的附加功能特性 的输出信息中, ● 在BootLoader的输出信息中,应包含版本、开发者和构 的输出信息中 应包含版本、 建日期等信息 ● ● ● ● ● 设计一个序列化的功能选项菜单, 设计一个序列化的功能选项菜单,为用户开发提供便利 支持自更新 协调工作, 与PB协调工作,实现复位下载,复位跳转和自更新 协调工作 实现复位下载, 提供一种监视和反馈机制, 提供一种监视和反馈机制,监控下载过程 在其中尽肯能的包含以太网调试驱动
◆ 下载模式
目标机通过串口、网口或者 目标机通过串口、网口或者USB从主机端下载镜像到目 从主机端下载镜像到目 标机端点RAM中,然后再被 BootLoader 写到目标机 标机端点 中 上的FLASH 类固态存储设备中 上的

LOGO
1.3 嵌入式系统的引导模式

LOGO
BootLoader代码的执行过程的交互图 图4

LOGO
4 BootLoader开发前的硬件考虑 开发前的硬件考虑
4.1 考虑的原因 ◆ 硬件密切相关 不同操作系统BootLoader的功能相同,但实现 的功能相同, ◆ 不同操作系统 的功能相同 方式不同

LOGO
1.5 几种特殊的 几种特殊的BootLoader
◆ ◆ ◆ X86 BIOS BootLoader x86 Serial Boot Loader x86 ROM Boot Loader

LOGO
2 BootLoader的体系结构 的体系结构
2 BootLoader的体系结构 的体系结构
2.1 BooterLoader 的架构 2.2 BooterLoader 的支持库
www.tபைடு நூலகம்
LOGO
内容安排
3 BootLoader的代码的组件和执行流程 的代码的组件和执行流程
3.1 BooterLoader代码组件 代码组件 3.2 BooterLoader代码的执行流程 代码的执行流程

OEM代码 代码
用户根据自己的平台特点编写或修改的代码 存放路径为: ● 存放路径为:
%_WINCEROOT%\Platform\<Hardware Platform Name>\Src\Eboot

LOGO
2.1 BooterLoader 支持库
微软提供的众多静态库中, 微软提供的众多静态库中,BootLoader中常用的有以下所 中常用的有以下所 述的四种
由两部分组成 ● OEM启动代码 启动代码
汇编编写,最先执行,完成对 时钟频率, 汇编编写,最先执行,完成对CPU时钟频率,内部寄 时钟频率 存器,高速缓存及其他一些硬件相关功能的初始化。 存器,高速缓存及其他一些硬件相关功能的初始化。
● OEM主代码 主代码
C语言编写,BootLoader的主要代码区,通常包含 语言编写, 的主要代码区, 语言编写 的主要代码区 镜像下载,串口调试, ),硬件监视器 镜像下载,串口调试,写Flash(可选),硬件监视器(可 (可选),硬件监视器( 选)等几部分的代码

LOGO
1 BootLoader概述 概述
1.1 BootLoader的概念 的概念
◆ BootLoader的描述 的描述
初始化硬件、 操作系统内核运行前运行地一段小程序 。初始化硬件、建立 内存空间映射图, 的运行准备好正确的环境。 内存空间映射图,为OS的运行准备好正确的环境。带有 的运行准备好正确的环境 BootLoader的固态存储介质典型空间分配如图 所示 的固态存储介质典型空间分配如图1所示 的固态存储介质典型空间分配如图

LOGO
5 BootLoader的设计与实现 的设计与实现
以下设计过程中的代码均是以s3c2440BSP为例,平台是 为例, 以下设计过程中的代码均是以 为例 双实科技的sinosys-m3试验箱 双实科技的 试验箱
5.1 构建创建环境
为要新建的BootLoader创建一个新的目录,路径 创建一个新的目录, ● 为要新建的 创建一个新的目录 为:
5.2 startup函数的设计与实现 函数的设计与实现 5.3 主函数main的设计与实现 主函数 的设计与实现 5.4 控制流函数的设计与实现 5.5 调试函数的设计与实现 5.6 以太网控制器相关的函数 5.7 写FLASH函数的设计与实现 函数的设计与实现 5.8 镜像下载函数的设计与实现 5.9 时间相关函数的设计与实现 5.10 配置文件
完成对CPU的初始化,地址的映射,然后跳到main函数 的初始化,地址的映射,然后跳到 完成对 的初始化 函数
◆ Stage2
数据的重定位,平台的初始化(主要是各种外围模块), 数据的重定位,平台的初始化(主要是各种外围模块), 镜像的加载
整个BootLoader代码的执行过程,用交互图表示如下, 代码的执行过程,用交互图表示如下, 整个 代码的执行过程

LOGO

Eboot库 库
存放路径: ● 存放路径:
%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg\Eboot
功能: 提供DHCP、TFTP和UDP服务 ● 功能:为BooterLoader提供 提供 和 服务
◆ EDBG驱动 驱动
◆ BootLoader的功能 的功能
● 引导系统
● 加载操作系统 图1

LOGO
1.1 BootLoader的操作模式 的操作模式
◆ 启动加载模式
又叫自主模式, 又叫自主模式,BootLoader将预先存储在永久固态 将预先存储在永久固态 介质上的OS镜像加载到 镜像加载到RAM中运行。 中运行。 介质上的 镜像加载到 中运行
4 BootLoader开发前的硬件考虑 开发前的硬件考虑
4.1 考虑的原因 4.2 考虑的因素 4.3 基于s3c2440的sinosys的M3开发板 基于 的 的 开发板
5 BootLoader的设计与实现 的设计与实现
5.1 构建创建环境

LOGO
内容安排
◆ BootLoader引导模式 引导模式

非BootLoader引导模式 引导模式
使用RESETVECTOR引导 ● 使用 引导 不使用RESETVECTOR引导 ● 不使用 引导

LOGO
1.4 BootLoader的功能特性 的功能特性
并非所有平台都支持下面列出的功能特性, 并非所有平台都支持下面列出的功能特性,但大部分特 性对所有平台来说都是有用的 ◆ BootLoader典型功能特性 典型功能特性
Windows CE操作系统 操作系统
BootLoader的设计与实现 的设计与实现
LOGO
内容安排
1 BootLoader概述 概述
1.1 1.2 1.3 1.4 1.5 BootLoader的概念 BootLoader的操作模式 的操作模式 嵌入式系统的引导模式 BootLoader的功能特性 的功能特性 几种特殊的BootLoader 几种特殊的

LOGO
BootLoader代码的控制流程如图 所示: 代码的控制流程如图3所示 代码的控制流程如图 所示:
图3

LOGO
2.1 BootLoader代码的执行流程 代码的执行流程 根据BootLoader的任务来划分,可将其代码的执行分 的任务来划分, 根据 的任务来划分 为两个阶段: 为两个阶段: ◆ Stage1
%_WINCEROOT%\Platform\<Hardware Platform Name>\Src\Eboot
这部分是被BLCommon库回调的代码 库回调的代码 这部分是被

LOGO
3 BootLoader的代码的组件和执行流程 的代码的组件和执行流程
2.1 BootLoader代码组件 代码组件
是一组以太网卡的驱动程序代码 存放路径: ● 存放路径:
%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg
● 功能:提供常用以太网卡驱动,为BootLoader和OS的 功能:提供常用以太网卡驱动, 和 的 通信提供通用接口 下已有的驱动: ● WINCE5.0下已有的驱动: 下已有的驱动 NE2000、CS8900、RTL8139、SMC9000、 DEC21140等

LOGO
4.1 考虑的因素 支持对BootLoader的更新 ● 支持对 的更新 支持对BootLoader操作方式的切换 ● 支持对 操作方式的切换 提供足够的RAM或是 或是FLASH存储空间供调试 ● 提供足够的 或是 存储空间供调试 在开发启动代码的早期阶段, ● 在开发启动代码的早期阶段,提供调试指示 4.3 s3c2440的sinosys的M3开发板 的 的 开发板 ● 2MB的NOR FLASH 的 ● 64MB的NAND FLASH 的 ● 支持以太网卡 ● 支持串口 支持LED指示 ● 支持 指示
2.1 BooterLoader 的架构
BooterLoader的结构如图 所是: 的结构如图2所是 的结构如图 所是:
BLCommon OEM代码
BootPart
RTL8139
NE2000
CS8900
EBOOT
Flash FMD
图2

LOGO

五个组成部分
BLCommon库,OEM代码,Eboot库,EDBG驱动,以 库 代码, 驱动, 代码 库 驱动 及存储管理 ● OEM代码必须由用户自己编写 代码必须由用户自己编写 驱动, ● EDBG驱动,以及存储管理可能需要修改,视具体情况 驱动 以及存储管理可能需要修改, 库和Eboot库完全不用改 ● BLCommon库和 库和 库完全不用改

BLCommon库 库
● 存放路径: 存放路径:
%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg\Blcommon
功能:重定位BooterLoader在RAM中的位置,解 中的位置, ● 功能:重定位 在 中的位置 文件的内容、 码.bin文件的内容、验证校验及加载跟踪过程等 文件的内容 ● Blcommond代码的入口点:BootloaderMain 代码的入口点: 代码的入口点

LOGO
◆ 存储管理
部分存放路径: ● BootPart部分存放路径: 部分存放路径
%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg\BootPart
功能:辅助BootLoader进行分区管理,存储设备读 进行分区管理, ● 功能:辅助 进行分区管理 /写等操作和管理 写等操作和管理 部分是用户自己编写的, ● Flash FMD部分是用户自己编写的,存放在: 部分是用户自己编写的 存放在:
相关文档
最新文档