嵌入式系统引导程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本硬件初始化 Stage 1 将Stage 2代码复制到RAM并执行
否 串口是否有按键输入? Stage 2 是 进入命令行下载模式
将操作系统内核映像和文件系统 映像复制到RAM
启动操作系统内核
Bootloader的Stage 1

硬件设备初始化:屏蔽所有中断, 设置CPU 速度和时
钟频率, RAM 初始化等
执行main loop() 进入自动加载或工作循环
课后作业

下载U-BOOT源代码及相关文档,建立开发环境, 选定目标平台,尝试编译,生成目标代码。
为内核设置启动参数 调用操作系统内核

U-BOOT


U-Boot是一种应用广泛的嵌入式引导程序 由fadsrom、8xxROM及PPCBoot逐步发展演化而 来 2002年11月,PPCBoot发布了最后一个版本 2.0.0版,并改名为U-Boot 0.1.0 与Linux一样,U-Boot遵循GPL,是一个开放源代 码软件
AVR32体系结构相关代码 ARM体系结构相关代码 x86体系结构相关代码 m68k体系结构相关代码 MIPS体系结构相关代码 NIOS体系结构相关代码 PowerPC体系结构相关代码 SPARC体系结构相关代码
examples
独立应用 程序例程 相关工具 源代码 开发使用 文档
lib_m68k lib_mips lib_nios lib_ppc lib_sparc
空闲区 文件系统映像 空闲区 Flash地址空间 操作系统内核映像 空闲区 Bootloader Stage 2的执行代码 Bootloader Stage 1的执行代码
···
···
Bootloader的Stage 2

其它硬件设备的初始化 检测系统内存映射

将操作系统内核映像及文件系统映像从 Flash读 取到系统RAM中
U-Boot的命令

命令类型:信息命令、内存命令、Flash命令、运行控
制命令、网络命令、环境变量命令
命令功能:环境参数设置、内存检测、操作系统引导、
程序测试、Flash擦除与烧写
U-BOOT源文件分类



与处理器体系结构或开发板硬件直接相关的程序 目录 与处理器体系结构无关的通用函数或者驱动程序 目录 U-Boot的独立工具、二次开发例程及相关设计文 档目录
GPL: General Public License,通用公共许可协议
U-Boot的特点

开放源代码 支持多种嵌入式操作系统 支持多种不同体系结构的处理器 具有较高的可靠性和稳定性 提供丰富的用户接口命令 支持串口、网络文件下载 丰富的设备驱动程序 有完整的软件文档与良好的技术支持
固化在ROM/flash中的软件,称为固件(Firmware)

PC机的引导程序——BIOS

BIOS(Basic Input Output System)

固化到计算机主板上的ROM芯片中的一组程序
BIOS的主要内容

上电自测试程序。PC机启动时,首先进入ROM BIOS,
接着执行加电自检—POST(Power-on self test)
第6章 嵌入式系统引导
引导程序与固件


计算机是在程序控制下自动运行的电子设备
系统上电或复位后,微处理器会从特定的地址读 取第一条指令 没有操作系统的简单嵌入式计算机,系统上电后, 通常直接进入用户应用程序


有操作系统的计算机中,上电后首先运行的是一 个标准化的软件——引导程序(Bootloader)
用户应用程序 图形用户界面(GUI) 操作系统内核 Bootloader 文件系统
A R M 7 开 发 板 中 的 固 件
嵌入式系统Flash典型空间分配
引导程序
引导 参数
操作系统内核
文件系统
嵌入式系统常见引导程序


U-Boot,支持多种微处理器,如x86、PowerPC、ARM、
MIPS等。 VIVI,韩国MIZI公司开发的专门用于ARM处理器的一种 引导程序。 BLOB,支持多种CPU,包括SA1100,SA1110, PXA255,PXA270等,用户可以根据目标板的特性进行 定制。 RedBoot,一个专门为嵌入式系统定制的引导程序,最 初由Redhat开发。 ARMboot,一个支持ARM和StrongARM 处理器的引导 程序。
U-Boot代码根目录
U-Boot 源码结构
处理器相关 各子目录 处理器相关 源代码 开发板相关 源代码 体系结构 相关源代码
cpu
Makefile config.mk cpu.c interrupts.c serial.c start.s
Makefile文件 体系结构配置文件 处理器相关代码 中断处理代码 串口初始化代码 全局启动汇编代码
体系结构 相关代码
board lib_xxx
drivers common include
通用设备 驱动程序 平台独立的 通用源代码 头文件
开发板相关 子目录
Makefile config.mk s3c44b0.c flash.c
网络相关 程序代码 文件系统 相关代码 上电自检 程序代码 硬盘接口 相关程序


为加载Bootloader 的stage2 准备RAM空间
拷贝Bootloader 的stage2 到RAM空间中 设置好堆栈,为执行C 语言代码作好准备 跳转到stage2 的C 入口点
Stage 1阶段的物理内存布局
堆栈指针 Stage 1为Stage 2的代码 准备的RAM空间 RAM地址空间 Stage 2代码起始地址


用户自定义Bootloader
嵌入式系统引导程序功能

硬件初始化 提供人机交互命令 支持目标机与开发机之间的通信 支持Flash烧写 加载启动嵌入式操作系统
Bootloader的两种操作模式

启动加载模式:自动加载并启动操作系统,不需要用户参与 下载模式:用户可通过系统控制台用命令行的方式向系统发出控制
ቤተ መጻሕፍቲ ባይዱ
系统参数设置:用于设置CMOS RAM 中的各项参数 中断服务程序 :BIOS中段服务程序是软件与硬件之间
的一个编程接口,PC软件通过调用这些服务程序实现对 硬件模块的控制

加载操作系统 :在机器启动时,系统ROM BIOS首先
读取磁盘引导记录进内存,然后由引导记录读取磁盘操作 系统重要文件进内存,从而启动系统
例程代码与 工具、文档
tools doc
U-BOOT启动过程
stage 1
设置映像文件的入口start.o
stage 2
进入stage 2, 执行入口程序 start_armboot()
设置异常向量表
执行复位中断跳转程序 调用cpu_init_crit() 初始化CPU及中断控制器 初始化内存寄存器 将stage2相关二进制代码由 Flash或ROM复制到RAM 中 设置堆栈指针寄存器 并执行跳转指令 执行init_sequence() 完成系列硬件初始化
BIOS的启动流程
上电 执行复位向量指令,跳 转到BIOS程序
硬件初始化
POST测试正常? 是 查找并加载 操作系统引导程序

发出报警信号
等待用户干预
引导程序继续加载 并启动操作系统
嵌入式系统软件的四个层次


引导加载程序——Bootloader 操作系统内核(任务管理、内存管理、设备驱动) 文件系统、图形用户界面 应用软件
命令。用户常在该模式下使用下载命令,通过串口、以太网等从开发 机下载文件
Bootloader程序的两个组成部分

Stage 1:存放与CPU 体系结构相关的代码,其 代码短小精悍,易升级,通常用汇编语言编写

Stage 2:通常用C 语言编写,可以实现更复杂的 功能,具有更好的可读性和可移植性
Bootloader程序运行流程
Makefile文件 体系结构配置文件 开发板相关代码 Flash操作相关代码 初始化SDRAM代码 对应连接文件
通用函数与 驱动程序
lib_generic 通用库函数
net fs post disk
memsetup.s uboot.lds
根目录下 体系结构相关各子目录
lib_avr32 lib_arm lib_i386
相关文档
最新文档