ARM汇编语言程序设计基础 第10章 Bootloader 设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Flash中,这样就不需要Bootloader和主机传输操作系统内核镜像文件,这通常 是在做成产品的情况下使用。而一般在开发过程中,为了调试内核的方便,不将 操作系统内核镜像文件固化在Flash中,这就需要主机和目标机进行文件传输; 跳转到内核的开始,在此又分为ROM启动和RAM启动。所谓ROM启动就是用XIP 技术直接在Flash中执行操作系统镜像文件;所谓RAM启动就是指把内核镜像从 Flash复制到RAM中,然后再将PC指针跳转到RAM中的操作系统启动地址。
完整版ppt
5
10.1.1 Bootloader 的作用
初始化CPU速度; 初始化内存,包括启用内存库,初始化内存配置寄存器等; 初始化中断控制器,在系统启动时,关闭中断,关闭看门狗; 初始化串行端口(如果在目标上有的话); 启用指令/数据高速缓存; 设置堆栈指针; 设置参数区域并构造参数结构和标记,即引导参数; 执行POST(上电自检)来标识存在的设备并报告有何问题; 为电源管理提供挂起/恢复支持; 传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放
完整版ppt
4
10.1.1 Bootloader 的作用
Bootloader从第一条指令跳转后,就开始 初始化各种最重要的硬件,比如CPU的工 作频率、定时器、中断、看门狗、检测 RAM大小和Flash等。一般,硬件初始化 的这段程序是用汇编语言编写的,其后 就用C语言编写。总体上Bootloader主要 完成以下工作:
在PC机中,主板的BIOS和位于硬盘0磁道上的主引导 记录(Master Boot Record, MBR)中的引导程序(如 LILO或GRUB等),两者一起的作用就相当于Bootloader 在嵌入式系统中的作用,即实现整个系统的启动引导, 并最终能引导操作系统的运行。
完整版ppt
3
10.1.1 Bootloader 的作用
通常也是和根文件系统一 起打包后烧录到Flash中。 因此,在Bootloader阶段, 也提供了对Flash设备的分 区格式化的支持,其空间 分配通常如图所示。
完整版ppt
7
10.1.2 Bootloader 的工作模式
对于嵌入式系统的开发人员而言, Bootloader通常包含“启动加载”和 “下载”这两种不同的工作模式。当然, 这两种工作模式的区别一般仅仅对于开 发人员才有意义,而对最终用户来说, Bootloader 的作用就是用来加载操作系 统,从而启动整个嵌入式Bootloader 的作用
在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序 (Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中 前三部分是一个可运行的嵌入式系统必不可少的, 它们在开发的 过程中,被分别独立地编译链接或打包为一个二进制目标文件, 然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两 部分如果有的话,
在嵌入式系统中,Bootloader对嵌入式设备中 的主要部件如CPU、SDRAM、FLASH、串口等 进行了初始化,这样可以使用Bootloader通过 串口下载各种文件到设备的SDRAM中或者烧录 Flash,然后将操作系统内核读入到内存中来或 者直接跳转到内核的入口点,从而实现操作系 统的引导。现在有些Bootloader也把对以太网 的支持等功能也加进去了,这样一个功能比较 强大的Bootloader实际上就已经相当于一个微 型的操作系统了。
完整版ppt
2
10.1.1 Bootloader 的作用
Bootloader是在嵌入式操作系统内核运行之前运行的一 段小程序,也是系统开机后执行的第一段程序。通过 这段小程序,可以初始化硬件设备、建立内存空间, 从而将系统的软硬件环境设置成一个合适的状态,以 便为最终调用操作系统内核准备好正确的环境。 Bootloader是依赖于底层硬件而实现的,因此建立一个 通用的嵌入式系统Bootloader几乎是不可能的。
完整版ppt
8
10.1.2 Bootloader 的工作模式
启动加载(Boot loading)模式 --正常启动模式 下载(Downloading)模式 --提供给开发人员或者技术支持人员使
用
完整版ppt
9
10.1.3 Bootloader 的启动流程
分为stage1和stage2两个阶段
一般依赖于 CPU 体系结构的代码,比如设 备初始化代码等,都放在stage1中,而 且通常都用汇编语言来实现,以达到短 小精悍且启动快的目的;而 stage2 则通 常用C语言来实现,这样可以实现各种复 杂的功能(比如串口、以太网接口的支 持等)
完整版ppt
10
Bootloader的第一阶段
1. 硬件设备初始化 2. 为加载 Bootloader 的 stage2 准备 RAM
第10章 Bootloader 设计基础
完整版ppt
1
10.1 Bootloader 概述
Bootloader,启动引导程序,又叫引导加载程 序,功能强大的Bootloader也就直接叫做板级 支持包(BSP,Board Support Packet)或者固 件(Firmware)。近年来,为了方便嵌入式产品 的推广,也有些直接将Bootloader叫做BIOS。 BIOS是PC机的“基本输入输出系统”,烧录 在电脑主板上一块专门的芯片中。一般BIOS由 主板厂商或者专门的BIOS生产商提供,不是开 源的,用户不能修改其中的代码进行定制。而 嵌入式系统的开发则离不开Bootloader的开发, 它也是整个系统开发中的难点之一。
空间 3. 拷贝 Bootloader的 stage2 到 RAM 空间
中 4. 设置好堆栈 5.跳转到 stage2 的 C 入口点main()函数处
完整版ppt
11
Bootloader的第二阶段
完整版ppt
5
10.1.1 Bootloader 的作用
初始化CPU速度; 初始化内存,包括启用内存库,初始化内存配置寄存器等; 初始化中断控制器,在系统启动时,关闭中断,关闭看门狗; 初始化串行端口(如果在目标上有的话); 启用指令/数据高速缓存; 设置堆栈指针; 设置参数区域并构造参数结构和标记,即引导参数; 执行POST(上电自检)来标识存在的设备并报告有何问题; 为电源管理提供挂起/恢复支持; 传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放
完整版ppt
4
10.1.1 Bootloader 的作用
Bootloader从第一条指令跳转后,就开始 初始化各种最重要的硬件,比如CPU的工 作频率、定时器、中断、看门狗、检测 RAM大小和Flash等。一般,硬件初始化 的这段程序是用汇编语言编写的,其后 就用C语言编写。总体上Bootloader主要 完成以下工作:
在PC机中,主板的BIOS和位于硬盘0磁道上的主引导 记录(Master Boot Record, MBR)中的引导程序(如 LILO或GRUB等),两者一起的作用就相当于Bootloader 在嵌入式系统中的作用,即实现整个系统的启动引导, 并最终能引导操作系统的运行。
完整版ppt
3
10.1.1 Bootloader 的作用
通常也是和根文件系统一 起打包后烧录到Flash中。 因此,在Bootloader阶段, 也提供了对Flash设备的分 区格式化的支持,其空间 分配通常如图所示。
完整版ppt
7
10.1.2 Bootloader 的工作模式
对于嵌入式系统的开发人员而言, Bootloader通常包含“启动加载”和 “下载”这两种不同的工作模式。当然, 这两种工作模式的区别一般仅仅对于开 发人员才有意义,而对最终用户来说, Bootloader 的作用就是用来加载操作系 统,从而启动整个嵌入式Bootloader 的作用
在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序 (Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中 前三部分是一个可运行的嵌入式系统必不可少的, 它们在开发的 过程中,被分别独立地编译链接或打包为一个二进制目标文件, 然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两 部分如果有的话,
在嵌入式系统中,Bootloader对嵌入式设备中 的主要部件如CPU、SDRAM、FLASH、串口等 进行了初始化,这样可以使用Bootloader通过 串口下载各种文件到设备的SDRAM中或者烧录 Flash,然后将操作系统内核读入到内存中来或 者直接跳转到内核的入口点,从而实现操作系 统的引导。现在有些Bootloader也把对以太网 的支持等功能也加进去了,这样一个功能比较 强大的Bootloader实际上就已经相当于一个微 型的操作系统了。
完整版ppt
2
10.1.1 Bootloader 的作用
Bootloader是在嵌入式操作系统内核运行之前运行的一 段小程序,也是系统开机后执行的第一段程序。通过 这段小程序,可以初始化硬件设备、建立内存空间, 从而将系统的软硬件环境设置成一个合适的状态,以 便为最终调用操作系统内核准备好正确的环境。 Bootloader是依赖于底层硬件而实现的,因此建立一个 通用的嵌入式系统Bootloader几乎是不可能的。
完整版ppt
8
10.1.2 Bootloader 的工作模式
启动加载(Boot loading)模式 --正常启动模式 下载(Downloading)模式 --提供给开发人员或者技术支持人员使
用
完整版ppt
9
10.1.3 Bootloader 的启动流程
分为stage1和stage2两个阶段
一般依赖于 CPU 体系结构的代码,比如设 备初始化代码等,都放在stage1中,而 且通常都用汇编语言来实现,以达到短 小精悍且启动快的目的;而 stage2 则通 常用C语言来实现,这样可以实现各种复 杂的功能(比如串口、以太网接口的支 持等)
完整版ppt
10
Bootloader的第一阶段
1. 硬件设备初始化 2. 为加载 Bootloader 的 stage2 准备 RAM
第10章 Bootloader 设计基础
完整版ppt
1
10.1 Bootloader 概述
Bootloader,启动引导程序,又叫引导加载程 序,功能强大的Bootloader也就直接叫做板级 支持包(BSP,Board Support Packet)或者固 件(Firmware)。近年来,为了方便嵌入式产品 的推广,也有些直接将Bootloader叫做BIOS。 BIOS是PC机的“基本输入输出系统”,烧录 在电脑主板上一块专门的芯片中。一般BIOS由 主板厂商或者专门的BIOS生产商提供,不是开 源的,用户不能修改其中的代码进行定制。而 嵌入式系统的开发则离不开Bootloader的开发, 它也是整个系统开发中的难点之一。
空间 3. 拷贝 Bootloader的 stage2 到 RAM 空间
中 4. 设置好堆栈 5.跳转到 stage2 的 C 入口点main()函数处
完整版ppt
11
Bootloader的第二阶段