嵌入式系统讲义7_23
大多数Bootloader有两种工作模式
启动加载模式——正常工作模式 • 操作系统和应用软件的映像文件压缩存放在“电子 磁盘”中 • 启动后通过Bootloader解压缩到SDRAM中执行 下载开发模式 • 系统开发时使用的一种模式,方便下载程序 • 通过Bootloader建立工作环境(命令控制台) • 操作系统和应用软件的映像文件由主机通过接口送 往Bootloader再存放到SDRAM中执行
3
© 国防科技大学计算机学院601室
2
第七章 嵌入式 操作系统
7.1 BSP设计——BSP的概念
BSP全称“板级支持包”(Board Support Packages)
说的简单一点,就是一段启动代码,和计算机主板的 BIOS差不多,但提供的功能区别就相差很大 在Windows CE中,BSP是驱动程序、OEM适应层 (OEM Adaptation Layers,OAL)、硬件抽象层 (HAL)以及启动设备和使外设正常工作所需BIOS文 件的集合。
第七章 嵌入式 操作系统
主要内容
7.1 BSP设计 7.2 Bootloader设计 7.3 应用程序设计 7.4 嵌入式系统的开发模式
2013-8-3
© 国防科技大学计算机学院601室
1
第七章 嵌入式 操作系统
7.1 BSP设计
板级支持包 BSP 嵌入式系统初始化 BSP的设计
2013-8-3
© 国防科技大学计算机学院601室
20
第七章 嵌入式 操作系统
7.2 Bootloader设计
Bootloader的功能
初始化硬件,特别是存储器控制器 初始化操作系统的运行环境 启动加载模式 • 解压缩操作系统和应用软件到目标板RAM存储器 • 启动操作系统,移交控制权 下载开发模式 • 通过串口或者以太网口下载新的二进制映像文件 (操作系统、应用程序)到目标板RAM存储器 • 提供调试功能
2013-8-3
© 国防科技大学计算机学院601室
25
第七章 嵌入式 操作系统
7.2 Bootloader设计——U-Boot介绍
U-BOOT支持SCC/FEC以太网、OOTP/TFTP引 导、IP和MAC的预置功能。 在线读写Flash、DOC、IDE、IIC、EEROM、 RTC。 支持串行口kermit和S-record下载代码 识别二进制、ELF32、uImage格式的Image,对 Linux引导有特别的支持。
© 国防科技大学计算机学院601室
7
第七章 嵌入式 操作系统
7.1 BSP设计——BSP的设计与实现
为实现上述两部分功能,设计一个完整的BSP需 要完成两部分工作:
设计初始化过程,完成嵌入式系统的初始化; 设计硬件相关的设备驱动,完成操作系统及应用程序 对具体硬件的操作。
2013-8-3
© 国防科技大学计算机学院601室 5
2013-8-3
第七章 嵌入式 操作系统
7.1 BSP设计——不同系统中的BSP
一个嵌入式操作系统针对不同的CPU,会有不同 的BSP 即使同一种CPU,由于外设的一点差别,BSP相 应的部分也不一样
2013-8-3
© 国防科技大学计算机学院601室
6
第七章 嵌入式 操作系统
2013-8-3
© 国防科技大学计算机学院601室
3
第七章 嵌入式 操作系统
7.1 BSP设计——BSP的概念
应用层 操作系 统层 中间层 应用程序
文件系统 图形系统 网络系统
嵌入式操作系统(EOS) BSP/HAL板级支持包/硬件抽象层 D/A 嵌入式 处理器 人机交互接口 ROM FLASH SDRAM
© 国防科技大学计算机学院601室 17
2013-8-3
第七章 嵌入式 操作系统
7.2 Bootloader设计
Bootloader简介 Bootloader的功能及工作流程 U-Boot介绍
2013-8-3
© 国防科技大学计算机学院601室
18
第七章 嵌入式 操作系统
7.2 Bootloader设计
2013-8-3
© 国防科技大学计算机学院601室
23
第七章 嵌入式 操作系统
7.2 Bootloader设计
Bootloader的C语言部分
初始化一个串口,以便和Host终端用户交互 决定是直接引导操作系统还是进入下载开发模式 初始化网络,包括网络信息配置 如果有LCD,则初始化LCD 初始化Flash、检测Flash芯片 初始化中断:禁止中断、清中断标志、初始化中断向 量表、注册中断服务程序 初始化命令控制台,等待用户命令
22
第七章 嵌入式 操作系统
7.2 Bootloader设计
一般的启动代码执行过程
禁止所有中断 从ROM区复制已经初始化的数据(data区数据)到指 定的RAM区 将未初始化的数据区清零 给Stack区分配空间并初始化 初始化处理器的堆栈指针 创建和初始化堆区(Heap) 执行高级语言的初始化程序主函数main
© 国防科技大学计算机学院601室 4
硬件层
A/D I/O
2013-8-3
第七章 嵌入式 操作系统
7.1 BSP设计——BSP和BIOS区别
BIOS主要是负责在电脑开启时检测、初始化系统 设备(设置栈指针,中断分配,内存初始化..)、 装入操作系统并调度操作系统向硬件发出的指令。 BSP是和操作系统绑在一起运行,尽管BSP的开 始部分和BIOS所做的工作类似,但是 BSP还包含 和系统有关的基本驱动 BIOS程序是用户不能更改、编程的,只能对参数 进行修改设置,但是程序员还可以编程修改BSP, 在BSP中任意添加一些和系统无关的驱动或程序, 甚至可以把上层开发的统统放到BSP中
© 国防科技大学计算机学院601室
8
第七章 嵌入式 操作系统
7.1 BSP设计——初始化以及BSP的功能
嵌入式系统的初始化过程是一个同时包括硬件初 始化和软件初始化的过程;而操作系统启动以前 的初始化操作是BSP的主要功能之一 初始化过程总可以抽象为三个主要环境,按照自 底向上、从硬件到软件的次序依次为:
硬件主板研制,测试 操作系统的选定,BSP编程 上层应用程序的开发
2013-8-3
© 国防科技大学计算机学院601室
14
第七章 嵌入式 操作系统
7.1 BSP设计——编写BSP函数
BSP对板卡中每个芯片的操作都通过多个函数来 完成 如果应用程序对板卡的操作都直接通过调用BSP 中的函数来完成,那将很不利于源程序的调试 , 并降低了程序的可移植性 把能完成某个特定功能的函数封装在一个库文件 中,并放在应用程序与BSP之间 对每个芯片来说,都应当有初始化函数和状态读 取函数
这是一个同时包含软硬件两部分在内的初始化过 程
2013-8-3
© 国防科技大学计算机学院601室
11
第七章 嵌入式 操作系统
7.1 BSP设计——初始化过程(续2)
系统级初始化:
BSP将控制转交给操作系统,由操作系统进行余下的初 始化操作: • 加载和初始化与硬件无关的设备驱动程序 • 建立系统内存区 • 加载并初始化其他系统软件模块(如网络系统、文 件系统等) • 操作系统创建应用程序环境并将控制转交给应用程 序的入口
2013-8-3
© 国防科技大学计算机学院601室
24
第七章 嵌入式 操作系统
7.2 Bootloader设计——U-Boot介绍
U-BOOT是由德国的工程师Wolfgang Denk从 8XXROM代码发展而来的,它支持很多处理器, 比如PowerPC、ARM、MIPS和x86。 http: ///projects/U-BOOT。
7.1 BSP设计——BSP的特点与功能
硬件相关性
因为嵌入式实时系统的硬件环境具有应用相关性,所 以,作为高层软件与硬件之间的接口,BSP必须为操作 系统提供操作和控制具体硬件的方法。
操作系统相关性
不同的操作系统具有各自的软件层次结构,因此,不 同的操作系统具有特定的硬件接口形式
2013-8-3
启动引导程序
是在嵌入式操作系统启动前首先运行的一小段程序 系统初始化 加载和运行内核程序
特点
独立性(因处理器不同而不同) 体积小(NOR Flash存放) 功能多(初始化、下载、调试等)
2013-8-3
© 国防科技大学计算机学院601室
19
第七章 嵌入式 操作系统
7.2 Bootloader设计
2013-8-3
© 国防科技大学计算机学院601室
26
第七章 嵌入式 操作系统
7.2 Bootloader设计——U-Boot介绍
单任务软件运行环境。U-BOOT可以动态加载和 运行独立的应用程序,这些独立的应用程序可以 利用U-BOOT控制台的I/O函数、内存申请和中断 服务等。 监控(monitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等 脚本语言支持(类似BASH脚本)。
© 国防科技大学计算机学院601室 13
2013-8-3
第七章 嵌入式 操作系统
7.1 BSP设计——BSP开发的前提和步骤
开发的前提 :
熟悉硬件方面:使用CPU等 熟悉工具方面:万用表,示波器,逻辑分析仪,硬件 仿真器,仿真调试环境等 语言方面:汇编语言,C语言