嵌入式系统教学课件:35arm处理器初始化分析教学材料.pptVIP

  • 1
  • 0
  • 约4.32千字
  • 约 86页
  • 2018-10-29 发布于天津
  • 举报

嵌入式系统教学课件:35arm处理器初始化分析教学材料.ppt

嵌入式系统教学课件:35arm处理器初始化分析教学材料.ppt

BOOTLOADER; 一、什么是bootloader(引导加载程序) Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。 Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。 ; ;Bootloader在系统中的位置;BootLoader的主要功能; ; Bootloader的地址:在嵌入式系统中,系统加电复位后,几乎所有的 CPU都从由复位地址上取指令。比如,基于 ARM处理器核的CPU在复位时通常都从地址 0它的第一条指令。在这个地址处安排的就是Bootloader。 ; Bootloader是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的Bootloader。不过Bootloader的发展也趋于支持多种体系结构,如现在比较成熟的vivi、RedBoot和U-Boot等。 ;表7-1 开放源码的Linux引导程序;1、vivi vivi是韩国Mizi公司开发的Bootloader,适用于ARM9处理器。 2、RedBoot RedBoot即红帽(Red Hat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器。 3、U-Boot U-Boot(Universal Bootloader)由德国DENX小组开发,是一款目前功能较为强大的开源Bootloader程序,它支持多种处理器平台,包括ARM、PowerPC、MIPS等。 ;Bootloader操作模式 ;1、启动加载(Bootloading)模式 启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。 启动加载模式是 Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。 ;2、下载(Downloading)模式 下载方式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。 下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被 Bootloader写到目标机上的FLASH 类固态存储设备中。; 下载模式应用场合:Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。 用户应用接口:工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。 如在RedBoot下,将出现“RedBoot”提示符;在vivi Bootloader 下出现“vivi”提示符。;下载(Downloading)模式示例;RedBoot的Bootloader 像RedBoot或U-Boot等功能强大的Bootloader通常都可同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。 比如,RedBoot在启动时处于正常的启动加载模式,但是它会延时3秒等待终端用户按下任意键而将RedBoot切换到下载模式。如在等待时间内没有接收到用户按键,则继续启动 Linux 内核。 ;Bootloader启动过程;;; (2)、为阶段2代码准备RAM空间 为了获得更快的执行速度,通常把 阶段2 的代码加载到 RAM 空间中来执行。 准备RAM空间考虑的因素:阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。 (3)、拷贝阶段2代码到RAM空间 (4)、设置好堆栈 堆栈指针sp设置在1MB 的 RAM 空间的最顶端(堆栈向下生长)。 (5)、跳转到阶段2的C程序入口点 在上述一切都就绪后,就可以跳转到 Bootloader 的 stage2 去执行了。 ; Bootloader的stage2可执行映像刚被拷贝到RAM空间时的系统内存布局;2、第二阶段 阶段2通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的主要任务有5: (1)、初始化本阶段要使用到的硬件 至少初始化一个串口,以便和终端用户进行 I/O 输出信息等。; (2)、检测系统内存映射(memory map) 所谓内存映射,就是指在整个物理地址空间中有哪些地址范围被分配用来作为系统的 RAM 单元。为后面使用RAM、运行程序做好准备。 (3)、将kernel和根文件系统映像从flash读到RAM空间; (4)、为kernel设置启动参数 这是在调用内核之前应该做的准备工作。Li

文档评论(0)

1亿VIP精品文档

相关文档