BootLoader的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BootLoader安装媒介
系统加电或复位后,所有的CPU通常都从CPU制造商预先安
排的地址上取指令。
举例说明
基于ARM7TDMI Core的嵌入式系统中,系统在上电或复位时
是从0x00000000地址开始取第一条指令执行,而在这个地 址安排的通常就是系统的BootLoader程序。 嵌入式系统通常都有某种类型的固态存储设备(比如ROM、 EPROM或FLASH等)被安排这个起始地址上用来存放 BootLoader程序。
为RTOS运行准备合适的RAM; 呼叫RTOS主(Main)程序。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-23-
3.2 BootLoader初始化步骤 (4)
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
④ 硬件抽象层初始化
5
stage2
系统cache、总线设置; 中断及中断处理程序初始化; I/O端口配置; 初始化定时器; 对RTOS所需的其它设备初始化。
BootLoader特点
BootLoader除了依赖CPU的体系结构外,还依赖于具体的嵌
入式板级设备的配置; 对于两块不同的嵌入式开发板,即使它们是基于同一种CPU 而构建的,如果他们的硬件资源和配置不一致,要想让运 行在一块板子上的BootLoader程序也能运行在另一块板子 上,也还是需要作一些必要的修改。
目前,比较流行的编译器有SDT、ADS、IAR、KEIL和GCC等,
其中SDT和ADS均为ARM公司开发,ADS为SDT的升级版。
本移植采用的编译器
ADS1.2(ARM Developer Suite )集成开发环境。
返回2
上一页
下一页
-13-
2.3 工作状态的选择
ARM处理器工作状态
返回3
上一页
下一页
-19-
3.1 BootLoader总体流程图
3.1.1 总体流程图
1
设置 中断向量表
最小硬件 初始化 RTOS运行环境 初始化 硬件抽象层 初始化 RTOS 初始化
硬件 初始化
2
最 小 启 动 代 码
stage1
3
4 RTOS 初始化
5
stage2
6
启动RTOS
软件 初始化 返回3
用户程序
用户程序正常运行所进行的初
始化。
返回3
上一页
下一页
-27-
3.3 编写最小启动代码
3.3.1 设置中断向量表
知识点讲解 中断向量表结构特点 中断向量表中每种异常只分配4个字节,所以不能放下 整个异常中断处理程序,只能放一条跳转指令,用以跳 转到相应的异常中断处理程序。
设置中断向量表示意代码分析
(irq) 用于通用中断处理 (svc) 操作系统保护代码 (abt)
用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
未定义(und)
返回2
-15-
2.4 工作模式的选择 (2)
特权模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
与用户模式类似,但具有可以直 接切换到其它模式等特权
支持高速数据传输及通道 快中断(fiq) 说明 FIQ异常响应时进入此模式 处理 1.这五种模式称为异常模式; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 2.可以通过程序切换进入外,也可由特定的异常进入; 3.当特定的异常出现时,处理器进入相应的模式; 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式 4.每种异常模式都有一些独立的寄存器; 5.系统上电或复位后自动进入管理(SVC)模式,本移植 用于支持虚拟内存和存储 COS-II的任务正常是运行在管理模式。 中止 (abt) 在ARM7TDMI没有大用处 器保护 未定义(und)
返回2
上一页
下一页
-14-
2.4 工作模式的选择 (1)
ARM处理器工作模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
与用户模式类似,但具有可以直 接切换到其它模式等特权
快中断(fiq) 中断 管理 中止
支持高速数据传输及通道 FIQ异常响应时进入此模式 处理 IRQ异常响应时进入此模式 复位和软件中断时进入此模式
6.初始化流程
3.工作状态的选择
7.编写最小启动代码
4.工作模式的选择 移植前规划阶段
返回1
操作系统移植阶段
上一页 下一页
-11-
章节目录
2.移植前规划
内容提要
2.1 移植的硬件条件 2.2 编译器的选择 2.3 工作状态的选择 2.4 工作模式的选择
-12-
2.2 编译器的选择 (2)
常用的ARM编译器
BootLoader
BootLoader程序是系统加电(或复位)后运行的第一段软
件代码。 主要作用:通过这段代码,可以初始化系统硬件设备、建 立内存空间的映射图,从而将系统的软硬件环境带到一个 合适的状态,以便最终调用操作系统内核。
返回1
上一页
下一页
-6-
1.1 BootLoader简介 (3)
返回1
上一页
下一页
-5-
1.1 BootLoader简介 (2)
嵌入式系统引导加载程序
对于PC机来说,其开机后操作系统启动前的硬件初始化操
作是由BIOS完成的; 对于嵌入式系统来说,出于通用性、价格等方面的考虑, 通常并没有像BIOS那样的固件程序; 启动时用于完成初始化操作的引导加载程序必须自行编写, 这段程序一般被称为Bootloader程序。
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)
禁用看门狗定时器; 屏蔽所有中断; 设定CPU的时钟频率; 初始化存储器; 分配各种模式下的栈空间。
返回3
上一页
下一页
-22-
3.2 BootLoader初始化步骤 (3)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
③ RTOS运行环境初始化
最 小 启 动 代 码
2
stage1
向量地址 0x0000001C 0x00000018 0x00000014 0x00000010 0x0000000C FIQ IRQ Reserved Data Abort Prefech Abort 异常中断类型 转移指令 LDR PC,=FIQHandler LDR PC,=IRQHandler NOP LDR PC,=DabortHandler LDR PC,=PabortHandler
自从ARM7TDMI Core以后,体系结构中具有T变种的ARM处
理器核可以工作在以下两种状态。 ARM状态
ARM状态下执行字对准的32位ARM指令;
Thumb状态 Thumb状态下执行半字对准的16位Thumb指令。
两种工作状态可以进行相互切换。
本移植采用的工作状态
本移植只实现COS-II在ARM状态下工作。
返回1
上一页
下一页
-8-
1.1 BootLoader简介 (5)
BootLoader下载方式
通过编程器将可执行目标文件烧写到
BootROM中。 通常通过串行口、网口或JTAG等接口 下载。
目标机
串口 RAM
MPU
BOOT ROM
下载工具
宿主机
网口 JTAG
返回1
上一页
下一页
-9-
1.1 BootLoader简介 (6)
7
用户程序 初始化
用户程序
上一页
下一页
-20-
3.2 BootLoader初始化步骤 (1)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
① 设置中断向量表
最 小 启 动 代 码 stage1
2
中断向量表放在上电后映射在 从0x00000000开始的8*4个字节 的连续存储空间中;
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
⑥ 启动RTOS
运行优先级最高的就绪任务; 启动RTOS时钟中断。
stage2
5
6
启动RTOS
返回3
上一页
下一页
-26-
3.2 BootLoader初始化步骤 (7)
3.2.3 用户程序初始化阶段
7 用户程序 初始化
⑦ 用户程序初始化
返回1
上一页
下一页
-4-
1.1 BootLoader简介 (1)
BIOS
定义:BIOS (Basic Input/Output System)是一组固化
到计算机内主板上一个ROM芯片上的程序,它保存着计算机 最重要的基本输入输出的程序、系统设置信息、开机后自 检程序和系统自启动程序; 主要功能:是为计算机提供最底层的、最直接的硬件设置和 控制。
其作用是指定了各种异常中断 处理程序的入口地址。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-21-
3.2 BootLoader初始化步骤 (2)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
② 最小硬件初始化
最 小 启 动 代 码 stage1
2
3
RTOS运行环境 初始化
BootLoader启动过程
为了增加BootLoader的通用性和可移植性,本文把启动过
程分为stagel和stage2两个阶段。 stage1阶段:执行的是用汇编语言来实现的依赖CPU体系结 构的代码,这样可以提高系统的启动速度。 stage2阶段:完成的是OS内核启动前的准备工作,多采用 处理能力强、可移植性好的C语言来实现。
最小启动代码
stage1阶段执行的代码,我们称之为最小启动代码。所谓
最小启动代码是指为了完成系统(OS或用户应用程序)启 动所必须的最少硬件的初始化程序。
返回1
上一页
下一页
-10-
1.3 µC/OS-II移植流程
Phase 1 Phase 2
1.移植的硬件条件
5.BootLoader框架
2.编译器的选择
返回2
支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
-17-
章节目录
3.操作系统移植
内容提要
3.1 BootLoader总体流程图 3.2 BootLoadeFra Baidu bibliotek初始化步骤 3.3 编写最小启动代码
-18-
3.操作系统移植
内容提要 本章首先介绍了BootLoader 所必需实现 的功能;然后采用流程图方式介绍了 BootLoader编写的步骤;接着用图示的方法介 绍了最小启动代码的编写。
通用BootLoader
综上所述,为嵌入式系统建立一个通用的BootLoader是很
困难的; 尽管如此,我们仍然可以对BootLoader(尤其是基于同种 Core的微处理器)归纳出一些通用的概念和设计思路,用 来指导用户特定BootLoader的设计与实现。
返回1
上一页
下一页
-7-
1.1 BootLoader简介 (4)
中止 (abt) 用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
与用户模式类似,但具有可以直 接切换到其它模式等特权
未定义(und)
返回2
-16-
2.4 工作模式的选择 (3)
异常模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
说明 支持高速数据传输及通道 1.除用户模式外,其它模式称为特权模式; 快中断(fiq) FIQ异常响应时进入此模式 处理 2.ARM内部寄存器和一些片内外设在硬件设计 上只允许(或可选为只允许)特权模式下访问; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 3.特权模式可以自由的切换处理器模式,而用户 模式不能直接切换到别的模式。 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式
嵌入式系统BootLoader的设计与实现
S3C44B0X的BootLoader
-1-
课件总目录
1.绪论 2.移植前规划 3.Bootloader
-2-
章节目录
1.绪论
内容提要
1.1 BootLoader简介
-3-
1.绪论
内容提要 本章首先介绍了Bootloader的定义、特点、 安装媒介、下载方式、和启动过程等方面的内 容。
系统加电或复位后,所有的CPU通常都从CPU制造商预先安
排的地址上取指令。
举例说明
基于ARM7TDMI Core的嵌入式系统中,系统在上电或复位时
是从0x00000000地址开始取第一条指令执行,而在这个地 址安排的通常就是系统的BootLoader程序。 嵌入式系统通常都有某种类型的固态存储设备(比如ROM、 EPROM或FLASH等)被安排这个起始地址上用来存放 BootLoader程序。
为RTOS运行准备合适的RAM; 呼叫RTOS主(Main)程序。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-23-
3.2 BootLoader初始化步骤 (4)
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
④ 硬件抽象层初始化
5
stage2
系统cache、总线设置; 中断及中断处理程序初始化; I/O端口配置; 初始化定时器; 对RTOS所需的其它设备初始化。
BootLoader特点
BootLoader除了依赖CPU的体系结构外,还依赖于具体的嵌
入式板级设备的配置; 对于两块不同的嵌入式开发板,即使它们是基于同一种CPU 而构建的,如果他们的硬件资源和配置不一致,要想让运 行在一块板子上的BootLoader程序也能运行在另一块板子 上,也还是需要作一些必要的修改。
目前,比较流行的编译器有SDT、ADS、IAR、KEIL和GCC等,
其中SDT和ADS均为ARM公司开发,ADS为SDT的升级版。
本移植采用的编译器
ADS1.2(ARM Developer Suite )集成开发环境。
返回2
上一页
下一页
-13-
2.3 工作状态的选择
ARM处理器工作状态
返回3
上一页
下一页
-19-
3.1 BootLoader总体流程图
3.1.1 总体流程图
1
设置 中断向量表
最小硬件 初始化 RTOS运行环境 初始化 硬件抽象层 初始化 RTOS 初始化
硬件 初始化
2
最 小 启 动 代 码
stage1
3
4 RTOS 初始化
5
stage2
6
启动RTOS
软件 初始化 返回3
用户程序
用户程序正常运行所进行的初
始化。
返回3
上一页
下一页
-27-
3.3 编写最小启动代码
3.3.1 设置中断向量表
知识点讲解 中断向量表结构特点 中断向量表中每种异常只分配4个字节,所以不能放下 整个异常中断处理程序,只能放一条跳转指令,用以跳 转到相应的异常中断处理程序。
设置中断向量表示意代码分析
(irq) 用于通用中断处理 (svc) 操作系统保护代码 (abt)
用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
未定义(und)
返回2
-15-
2.4 工作模式的选择 (2)
特权模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
与用户模式类似,但具有可以直 接切换到其它模式等特权
支持高速数据传输及通道 快中断(fiq) 说明 FIQ异常响应时进入此模式 处理 1.这五种模式称为异常模式; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 2.可以通过程序切换进入外,也可由特定的异常进入; 3.当特定的异常出现时,处理器进入相应的模式; 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式 4.每种异常模式都有一些独立的寄存器; 5.系统上电或复位后自动进入管理(SVC)模式,本移植 用于支持虚拟内存和存储 COS-II的任务正常是运行在管理模式。 中止 (abt) 在ARM7TDMI没有大用处 器保护 未定义(und)
返回2
上一页
下一页
-14-
2.4 工作模式的选择 (1)
ARM处理器工作模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
与用户模式类似,但具有可以直 接切换到其它模式等特权
快中断(fiq) 中断 管理 中止
支持高速数据传输及通道 FIQ异常响应时进入此模式 处理 IRQ异常响应时进入此模式 复位和软件中断时进入此模式
6.初始化流程
3.工作状态的选择
7.编写最小启动代码
4.工作模式的选择 移植前规划阶段
返回1
操作系统移植阶段
上一页 下一页
-11-
章节目录
2.移植前规划
内容提要
2.1 移植的硬件条件 2.2 编译器的选择 2.3 工作状态的选择 2.4 工作模式的选择
-12-
2.2 编译器的选择 (2)
常用的ARM编译器
BootLoader
BootLoader程序是系统加电(或复位)后运行的第一段软
件代码。 主要作用:通过这段代码,可以初始化系统硬件设备、建 立内存空间的映射图,从而将系统的软硬件环境带到一个 合适的状态,以便最终调用操作系统内核。
返回1
上一页
下一页
-6-
1.1 BootLoader简介 (3)
返回1
上一页
下一页
-5-
1.1 BootLoader简介 (2)
嵌入式系统引导加载程序
对于PC机来说,其开机后操作系统启动前的硬件初始化操
作是由BIOS完成的; 对于嵌入式系统来说,出于通用性、价格等方面的考虑, 通常并没有像BIOS那样的固件程序; 启动时用于完成初始化操作的引导加载程序必须自行编写, 这段程序一般被称为Bootloader程序。
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)
禁用看门狗定时器; 屏蔽所有中断; 设定CPU的时钟频率; 初始化存储器; 分配各种模式下的栈空间。
返回3
上一页
下一页
-22-
3.2 BootLoader初始化步骤 (3)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
③ RTOS运行环境初始化
最 小 启 动 代 码
2
stage1
向量地址 0x0000001C 0x00000018 0x00000014 0x00000010 0x0000000C FIQ IRQ Reserved Data Abort Prefech Abort 异常中断类型 转移指令 LDR PC,=FIQHandler LDR PC,=IRQHandler NOP LDR PC,=DabortHandler LDR PC,=PabortHandler
自从ARM7TDMI Core以后,体系结构中具有T变种的ARM处
理器核可以工作在以下两种状态。 ARM状态
ARM状态下执行字对准的32位ARM指令;
Thumb状态 Thumb状态下执行半字对准的16位Thumb指令。
两种工作状态可以进行相互切换。
本移植采用的工作状态
本移植只实现COS-II在ARM状态下工作。
返回1
上一页
下一页
-8-
1.1 BootLoader简介 (5)
BootLoader下载方式
通过编程器将可执行目标文件烧写到
BootROM中。 通常通过串行口、网口或JTAG等接口 下载。
目标机
串口 RAM
MPU
BOOT ROM
下载工具
宿主机
网口 JTAG
返回1
上一页
下一页
-9-
1.1 BootLoader简介 (6)
7
用户程序 初始化
用户程序
上一页
下一页
-20-
3.2 BootLoader初始化步骤 (1)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
① 设置中断向量表
最 小 启 动 代 码 stage1
2
中断向量表放在上电后映射在 从0x00000000开始的8*4个字节 的连续存储空间中;
3.2.2 RTOS初始化阶段
4 硬件抽象层 初始化 RTOS 初始化
⑥ 启动RTOS
运行优先级最高的就绪任务; 启动RTOS时钟中断。
stage2
5
6
启动RTOS
返回3
上一页
下一页
-26-
3.2 BootLoader初始化步骤 (7)
3.2.3 用户程序初始化阶段
7 用户程序 初始化
⑦ 用户程序初始化
返回1
上一页
下一页
-4-
1.1 BootLoader简介 (1)
BIOS
定义:BIOS (Basic Input/Output System)是一组固化
到计算机内主板上一个ROM芯片上的程序,它保存着计算机 最重要的基本输入输出的程序、系统设置信息、开机后自 检程序和系统自启动程序; 主要功能:是为计算机提供最底层的、最直接的硬件设置和 控制。
其作用是指定了各种异常中断 处理程序的入口地址。
3
RTOS运行环境 初始化
返回3
上一页
下一页
-21-
3.2 BootLoader初始化步骤 (2)
3.2.1 硬件初始化阶段
1 设置 中断向量表 最小硬件 初始化
② 最小硬件初始化
最 小 启 动 代 码 stage1
2
3
RTOS运行环境 初始化
BootLoader启动过程
为了增加BootLoader的通用性和可移植性,本文把启动过
程分为stagel和stage2两个阶段。 stage1阶段:执行的是用汇编语言来实现的依赖CPU体系结 构的代码,这样可以提高系统的启动速度。 stage2阶段:完成的是OS内核启动前的准备工作,多采用 处理能力强、可移植性好的C语言来实现。
最小启动代码
stage1阶段执行的代码,我们称之为最小启动代码。所谓
最小启动代码是指为了完成系统(OS或用户应用程序)启 动所必须的最少硬件的初始化程序。
返回1
上一页
下一页
-10-
1.3 µC/OS-II移植流程
Phase 1 Phase 2
1.移植的硬件条件
5.BootLoader框架
2.编译器的选择
返回2
支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
-17-
章节目录
3.操作系统移植
内容提要
3.1 BootLoader总体流程图 3.2 BootLoadeFra Baidu bibliotek初始化步骤 3.3 编写最小启动代码
-18-
3.操作系统移植
内容提要 本章首先介绍了BootLoader 所必需实现 的功能;然后采用流程图方式介绍了 BootLoader编写的步骤;接着用图示的方法介 绍了最小启动代码的编写。
通用BootLoader
综上所述,为嵌入式系统建立一个通用的BootLoader是很
困难的; 尽管如此,我们仍然可以对BootLoader(尤其是基于同种 Core的微处理器)归纳出一些通用的概念和设计思路,用 来指导用户特定BootLoader的设计与实现。
返回1
上一页
下一页
-7-
1.1 BootLoader简介 (4)
中止 (abt) 用于支持虚拟内存和存储 在ARM7TDMI没有大用处 器保护 支持硬件协处理器的软件 未定义指令异常时进入此模式 仿真
上一页 下一页
与用户模式类似,但具有可以直 接切换到其它模式等特权
未定义(und)
返回2
-16-
2.4 工作模式的选择 (3)
异常模式
处理器模式 用户 系统 说明 备注 不能直接切换到其它模式
(usr) 正常程序工作模式 (sys) 支持操作系统的特权任务
说明 支持高速数据传输及通道 1.除用户模式外,其它模式称为特权模式; 快中断(fiq) FIQ异常响应时进入此模式 处理 2.ARM内部寄存器和一些片内外设在硬件设计 上只允许(或可选为只允许)特权模式下访问; 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 3.特权模式可以自由的切换处理器模式,而用户 模式不能直接切换到别的模式。 管理 (svc) 操作系统保护代码 复位和软件中断时进入此模式
嵌入式系统BootLoader的设计与实现
S3C44B0X的BootLoader
-1-
课件总目录
1.绪论 2.移植前规划 3.Bootloader
-2-
章节目录
1.绪论
内容提要
1.1 BootLoader简介
-3-
1.绪论
内容提要 本章首先介绍了Bootloader的定义、特点、 安装媒介、下载方式、和启动过程等方面的内 容。