嵌入式微处理器系统及应用-Chapter11 嵌入式系统启动程序开发_第1页
嵌入式微处理器系统及应用-Chapter11 嵌入式系统启动程序开发_第2页
嵌入式微处理器系统及应用-Chapter11 嵌入式系统启动程序开发_第3页
嵌入式微处理器系统及应用-Chapter11 嵌入式系统启动程序开发_第4页
嵌入式微处理器系统及应用-Chapter11 嵌入式系统启动程序开发_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式微处理器系统及应用第十一章嵌入式系统启动程序开发主要内容嵌入式系统的典型启动过程及bootloader

几种典型的嵌入式系统启动程序简介基于W90P710学习板的redboot移植实例嵌入式软件运行流程上电复位系统升级引导/升级系统系统初始化应用初始化多任务应用板级初始化远程升级本地升级基于多任务操作系统的嵌入式软件的主要运行流程该运行流程主要分为5个阶段11.1.1板级初始化CPU相关初始化:CPU状态的初始化:对全局中断控制的初始化、CPU其它状态位的初始化;协处理器的初始化:对浮点寄存器、状态寄存器等的初始化。Watchdog初始化有的CPU有Watchdog,系统上电后应该禁止watchdog的工作,或者对Watchdog进行复位操作,以避免在后续的初始化过程中由于Watchdog的原因造成不期望的系统重新复位;如果上电后Watchdog没有启动,则应该尽可能地延迟Watchdog的初始化11.1.1板级初始化GPIO初始化GPIO是用于控制一些通用或者复用的输入输出端口,有关GPIO各个引脚所具有的功能和配置方法在SOC芯片手册中都有详细的说明,另外在系统硬件板的手册中也有相关连接和选择跳线的说明。系统时钟初始化首先明确系统时钟是使用的外部时钟还是内部时钟;其次明确各个时钟的工作频率及分频关系;对系统时钟的相关寄存器进行初始化11.1.1板级初始化内存初始化内存初始化主要是根据存储系统的具体情况设置存储空间。模式初始化设置处理器的工作模式,比如对于x86系列的处理器将其从实模式转换为保护模式。中断向量初始化需要对系统的中断向量(包括异常向量)正确进行初始化。对于X86系列的处理器而言需要设置向量表寄存器IDTR,而对于ARM、PowerPC系列的处理器则需要将异常处理的指令放到向量位置中11.1.1板级初始化MMU与Cache的初始化对于带有MMU(或MPU)、cache的处理器,需要在本阶段对其进行相应的初始化,包括是否使能它们的功能,以及当使能时其具体的工作模式和相关参数的设置,以便根据系统的实际需要,实施有效的存储空间隔离、保护、地址转换映射,以及缩短平均访存时间和提升系统性能语言相关初始化设置系统的调用栈,以便在函数调用时能使用堆栈对返回地址、状态进行保存和恢复,并可通过堆栈传递参数和返回值;对于使用C语言编程的软件,需要对BSS段的数据做清零操作,并进行必要的数据搬移操作。11.1.2系统引导/升级在板级初始化完成后,进入系统引导/升级阶段,用户可以根据系统的提示按需要进入系统软件引导部分或系统升级部分系统引导阶段在系统引导阶段,有操作系统的嵌入式系统通过BootLoader程序将操作系统内核从外部存储介质拷贝到内存中,并跳转到内核的首条指令。如果没有操作系统,则bootloader可直接加载应用软件。引导程序的3种情况将软件从引导flash(通常是NORFlash)中读取出来加载到RAM中运行,软件存储在flash中可以采用压缩存储的方式。这种方式的优点在于,压缩存储可以减少对flash空间的需求,降低成本,而在RAM中运行又可以提供比flash更快的速度。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行,采用这种方式获得更大的存储空间,成本更低,但是启动过程中软件加载的速度会慢一些。不将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段引导方式的分类按是否需要引导程序分类需要引导程序的引导方式

不需要引导程序的引导方式

按存储介质分类从NorFlash启动

单独使用NorFlash启动

NorFlash和NandFlash配合使用

从NANDFlash启动

11.1.2系统引导/升级系统升级阶段本地升级:一般是指将嵌入式系统设备连接到被升级软件所在的主机,连接方式可以通过JTAG口、串口或网口,采用命令行或图形化的升级工具来完成升级过程。远程升级:是由嵌入式系统设备发出升级指示,通过Internet与提供升级服务的远程服务器进行通讯,更新嵌入式系统中的软件和数据,从而完成升级的过程。嵌入式软件运行流程系统初始化阶段

在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。嵌入式软件运行流程应用初始化阶段

在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段

各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。主要内容嵌入式系统的典型启动过程及bootloader几种典型的嵌入式系统启动程序简介

基于W90P710学习板的redboot移植实例11.2.1U-bootU-Boot,全称UniversalBootLoader,是遵循GPL条款的开放源码项目U-Boot不仅仅支持嵌入式linux系统的引导,还支持对其他操作系统的引导,包括OpenBSD、NetBSD、FreeBSD、4.4BSD、Linux、SVR4等支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用的处理器系列U-boot的工作模式U-Boot提供了启动加载和下载两种工作模式启动加载模式也称为自主模式,是将存储在目标板Flash中的内核和文件系统镜像装载到RAM中,整个过程无需用户的介入。嵌入式系统产品一般工作在该模式下。工作在下载模式时,目标板一般受PC机的控制,将在PC中新调试好的内核和文件系统下载到目标板中去。U-boot的特点开放源代码,方便移植;支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多种处理器系列,如PowerPC、ARM、x86、MIPS;具有较高的可靠性和稳定性;高度灵活的功能设置,满足操作系统不同的引导需求,提供对软件调试、产品发布的支持;具备丰富的设备驱动(源代码),如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;具有较为丰富的开发调试文档与强大的网络技术支持U-boot的主要功能系统引导:支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统、从FLASH中引导压缩或非压缩的系统内核程序;基本辅助功能:强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适应系统在不同开发阶段的调试与产品发布要求,尤其对Linux的支持最强;支持目标板环境参数的多种存储方式,如存储在FLASH、NVRAM、EEPROM中;提供CRC32校验功能,可校验FLASH中内核、RAMDISK镜像文件是否完好;设备驱动:提供串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等设备的驱动支持;上电自检:SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号检测;特殊功能:XIP内核引导功能U-Boot的启动过程启动过程都分为阶段1(stage1)和阶段2(stage2)两大部分依赖于CPU体系结构的代码(如CPU初始化代码等)通常都放在阶段1中,并且通常用汇编语言实现;阶段2的代码通常用高级编程语言如C语言来实现,这样可以实现更加复杂的功能,并且有更好的可读性和可移植性。U-Boot的启动过程阶段1工作内容设置异常向量

设置CPU工作模式

关闭看门狗

屏蔽(禁止)所有中断

设置CPU的频率

设置协处理器CP15

配置内存区控制寄存器

初始化U-BOOT使用的堆栈空间

BSS段清0

搬移NandFlash中的代码

进入C代码部分,调用阶段2处理函数U-Boot的启动过程阶段2工作内容调用一系列的初始化函数,以便:配置可用的Flash区、内存分配函数初始化、nandflash初始化、初始化环境变量、外围设备初始化、I2C总线初始化、LCD初始化、VIDEO初始化、键盘初始化、系统初始化、初始化网络设备

进入UBOOT主命令行

11.2.2RedbootRedBoot是一个专门为嵌入式系统定制的引导装载器,是一个独立的开放源代码的程序,最初由Redhat开发,它与嵌入式操作系统eCos有非常紧密的联系,可以被看作是eCos的一个最小配置的版本,现在由自由软件组织(FSF)管理,遵循GPL的发布协议。任何人都可以从互联网上下载具有红帽eCos公共许可证的RedBoot源代码。11.2.2RedbootRedboot能够被用于其他嵌入式操作系统的系统中,甚至在没有操作系统的系统中也能工作。RedBoot是一个集Bootloader、调试、软件固化于一体的综合性工具,支持串口、网络等多种与主机的通讯方式,既可以用在产品的开发阶段(提供软件调试功能),也可以用在最终的产品上(Flash中软件的固化更新、启动和系统软件加载)。RedBoot的特点可靠性高RedBoot是在嵌入式实时操作系统eCos的基础上发展起来的,它继承了eCos高可靠性的特点。通用性好,支持多种处理器架构和硬件平台RedBoot利用了eCos中成熟的硬件抽象层(HAL)技术,支持ARM、MIPS、SH、PowerPC、x86等各种系列的CPU,具有良好的通用性。紧凑性RedBoot的典型安装只需要64K的空间。可裁剪性RedBoot的模块化设计使用户可以根据自己的需要对其进行剪裁,使之最大限度地适应应用的需求。它提供各种配置工具,可以让用户按自己的需要对系统进行合理的配置。低成本有了RedBoot强大的引导和调试功能,用户不再需要采用昂贵的硬件调试器,即可进行嵌入式软件的调试、引导嵌入式系统,或更新有关的固件(烧写flash)RedBoot的主要功能通信功能支持串口和以太网两种通信方式Flash存储器的管理(FIS系统)RedBoot提供了丰富的管理功能来管理Flash存储器和映像文件。用户可以命令行的形式管理Flash上的映像。程序的下载、装入和运行RedBoot既可以从Flash存储器中也可以从宿主机或网络上的其它节点下载程序到目标机中,并启动程序的运行RedBoot的主要功能程序的调试代理Redboot支持用GDB(GNUdebugger)调试器通过串口或者以太网调试嵌入式程序,即对gcc编译的可执行程序进行源代码级调试。RedBoot的定制和扩展允许用户按照自己的需要对RedBoot进行裁剪,并提供相应接口以便添加新的功能。命令行用户接口CLI(Commandlineuserinterface)使用户能够和RedBoot对话,控制RedBoot进行各种操作。CLI在两种通信方式下都能工作Redboot的结构Redboot的启动过程主要内容嵌入式系统的典型启动过程及bootloader几种典型的嵌入式系统启动程序简介基于W90P710学习板的redboot移植实例

Redboot的移植过程开发环境的建立redboot的配置移植方案的确定基本的Redboot移植添加网卡驱动添加Flash驱动Redboot的烧写及更新Redboot的移植方案由于redboot建立在ecos的HAL层之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论