当前位置:文档之家› BootLoader的设计与实现

BootLoader的设计与实现


7
用户程序 初始化
用户程序
上一页
下一页
-20-
3.2 BootLoader初始化步骤 (1)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
① 设置中断向量表
最 小 启 动 代 码 stage1
2
中断向量表放在上电后映射在 从0x00000000开始的8*4个字节 的连续存储空间中;
其作用是指定了各种异常中断 处理程序的入口地址。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-21-
3.2 BootLoader初始化步骤 (2)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
② 最小硬件初始化
最 小 启 动 代 码 stage1
2
3
RTOS运行环境 初始化

返回1
上一页
下一页
-8-
1.1 BootLoader简介 (5)
BootLoader下载方式
通过编程器将可执行目标文件烧写到
BootROM中。 通常通过串行口、网口或JTAG等接口 下载。
目标机
串口 RAM
MPU
BOOT ROM
下载工具
宿主机
网口 JTAG
返回1
上一页
下一页
-9-
1.1 BootLoader简介 (6)
返回1
上一页
下一页
-5-
1.1 BootLoader简介 (2)
嵌入式系统引导加载程序
对于PC机来说,其开机后操作系统启动前的硬件初始化操
作是由BIOS完成的; 对于嵌入式系统来说,出于通用性、价格等方面的考虑, 通常并没有像BIOS那样的固件程序; 启动时用于完成初始化操作的引导加载程序必须自行编写, 这段程序一般被称为Bootloader程序。
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
⑥ 启动RTOS
运行优先级最高的就绪任务; 启动RTOS时钟中断。
stage2
5
6
启动RTOS
返回3
上一页
下一页
-26-
3.2 BootLoader初始化步骤 (7)
3.2.3 用户程序初始化阶段
7 用户程序 初始化
⑦ 用户程序初始化
返回2
支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
-17-
章节目录
3.操作系统移植
内容提要
3.1 BootLoader总体流程图 3.2 BootLoader初始化步骤 3.3 编写最小启动代码
-18-
3.操作系统移植
内容提要 本章首先介绍了BootLoader 所必需实现 的功能;然后采用流程图方式介绍了 BootLoader编写的步骤;接着用图示的方法介 绍了最小启动代码的编写。
6.初始化流程
3.工作状态的选择
7.编写最小启动代码
4.工作模式的选择 移植前规划阶段
返回1
操作系统移植阶段
上一页 下一页
-11-
章节目录
2.移植前规划
内容提要
2.1 移植的硬件条件 2.2 编译器的选择 2.3 工作状态的选择 2.4 工作模式的选择
-12-
2.2 编译器的选择 (2)
常用的ARM编译器
最小启动代码
stage1阶段执行的代码,我们称之为最小启动代码。所谓
最小启动代码是指为了完成系统(OS或用户应用程序)启 动所必须的最少硬件的初始化程序。
返回1
上一页
下一页
-10-
1.3 µC/OS-II移植流程
Phase 1 Phase 2
1.移植的硬件条件
5.BootLoader框架
2.编译器的选择
中止 (abt) 用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
与用户模式类似,但具有可以直 接切换到其它模式等特权
未定义(und)
返回2
-16-
2.4 工作模式的选择 (3)
异常模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
6
启动RTOS
返回3
上一页
下一页
-24-
3.2 BootLoader初始化步骤 (5)
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
⑤ RTOS初始化
RTOS内核启动参数初始化; RTOS扩展部件初始化。
stage2
5
6
启动RTOS
返回3
上一页
下一页
-25-
3.2 BootLoader初始化步骤 (6)
BootLoader特点
BootLoader除了依赖CPU的体系结构外,还依赖于具体的嵌
入式板级设备的配置; 对于两块不同的嵌入式开发板,即使它们是基于同一种CPU 而构建的,如果他们的硬件资源和配置不一致,要想让运 行在一块板子上的BootLoader程序也能运行在另一块板子 上,也还是需要作一些必要的修改。
BootLoader启动过程
为了增加BootLoader的通用性和可移植性,本文把启动过
程分为stagel和stage2两个阶段。 stage1阶段:执行的是用汇编语言来实现的依赖CPU体系结 构的代码,这样可以提高系统的启动速度。 stage2阶段:完成的是OS内核启动前的准备工作,多采用 处理能力强、可移植性好的C语言来实现。
为RTOS运行准备合适的RAM; 呼叫RTOS主(Main)程序。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-23-
3.2 BootLoader初始化步骤 (4)
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
④ 硬件抽象层初始化

5
stage2
系统cache、总线设置; 中断及中断处理程序初始化; I/O端口配置; 初始化定时器; 对RTOS所需的其它设备初始化。
(irq) 用于通用中断处理 (svc) 操作系统保护代码 (abt)
用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
未定义(und)
返回2
-15-
2.4 工作模式的选择 (2)
特权模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
返回1
上一页
下一页
-4-
1.1 BootLoader简介 (1)
BIOS
定义:BIOS (Basic Input/Output System)是一组固化
到计算机内主板上一个ROM芯片上的程序,它保存着计算机 最重要的基本输入输出的程序、系统设置信息、开机后自 检程序和系统自启动程序; 主要功能:是为计算机提供最底层的、最直接的硬件设置和 控制。
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
与用户模式类似,但具有可以直 接切换到其它模式等特权
支持高速数据传输及通道 快中断(fiq) 说明 FIQ异常响应时进入此模式 处理 1.这五种模式称为异常模式; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 2.可以通过程序切换进入外,也可由特定的异常进入; 3.当特定的异常出现时,处理器进入相应的模式; 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式 4.每种异常模式都有一些独立的寄存器; 5.系统上电或复位后自动进入管理(SVC)模式,本移植 用于支持虚拟内存和存储 COS-II的任务正常是运行在管理模式。 中止 (abt) 在ARM7TDMI没有大用处 器保护 未定义(und)
返回3
上一页
下一页
-19-
3.1 BootLoader总体流程图
3.1.1 总体流程图
1
设置 中断向量表
最小硬件 初始化 RTOS运行环境 初始化 硬件抽象层 初始化 RTOS 初始化
硬件 初始化
2
最 小 启 动 代 码
stage1
3
4 RTOS 初始化
5
stage2
6
启动RTOS
软件 初始化 返回3
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
说明 支持高速数据传输及通道 1.除用户模式外,其它模式称为特权模式; 快中断(fiq) FIQ异常响应时进入此模式 处理 2.ARM内部寄存器和一些片内外设在硬件设计 上只允许(或可选为只允许)特权模式下访问; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 3.特权模式可以自由的切换处理器模式,而用户 模式不能直接切换到别的模式。 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式
目前,比较流行的编译器有SDT、ADS、IAR、KEIL和GCC等,
其中SDT和ADS均为ARM公司开发,ADS为SDT的升级版。
本移植采用的编译器
ADS1.2(ARM Developer Suite )集成开发环境。
返回2
上一页
下一页
-13-
2.3 工作状态的选择
ARM处理器工作状态
自从ARM7TDMI Core以后,体系结构中具有T变种的ARM处
理器核可以工作在以下两种状态。 ARM状态
ARM状态下执行字对准的32位ARM指令;
Thumb状态 Thumb状态下执行半字对准的16位Thumb指令。
相关主题