嵌入式系统BootLoader的设.ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统BootLoader的设计与实现 基于S3C44B0X的?C/OS-Ⅱ移植 操作系统移植概述 所谓操作系统的移植,是指一个操作系统能够在某个微处理器平台上运行。 操作系统μC/OS-II是一个基于优先级的抢占式实时多任务内核。μC/OS-II的大部分代码是用ANSI C语言编写的,也包含一小部分汇编语言代码,使之可以提供给不同架构的微处理器使用。至今,从8位到64位,μC/OS-II已经在多种不同架构的微处理器上移植成功。 μC/OS-II移植纲要 Phase 1 移植前的规划 ?COS-II移植的条件 处理器的C编译器能产生可重入代码; 在程序中可以打开/关闭中断; 处理器支持中断,并且能产生定时中断(通常为10-100Hz); 处理器能支持一定数量的数据存储硬件堆栈; 处理器有将堆栈指针以及其它CPU寄存器的内容读出、并存储到堆栈或内存中去的指令。 针对上述移植条件,基于ARM7TDMI Core的S3C44B0X处理器满足其中的硬件要求。 Phase 1 移植前的规划 移植对编译器的要求及选择 除了对硬件有要求外,还需要一个支持C语言和ARM汇编语言的综合编译开发环境(IDE)。 综合编译开发环境至少需要包括C编译器、ARM汇编器和链接器。C编译器用来对C语言程序进行编译生成汇编代码。由于移植时需要对CPU的寄存器进行操作,所以需要汇编器能够支持汇编语言程序。链接器根据定位信息将不同的模块(编译或汇编过的文件)链接成一个单一的、绝对定位的可执行的映像文件。 针对ARM处理器核的C语言编译器有很多,目前在国内比较流行的有SDT、ADS、IAR、KEIL和GCC等; 其中SDT和ADS均为ARM公司自己开发,ADS为SDT的升级版,以后ARM公司不再支持SDT。 本移植采用ADS1.2集成开发环境进行程序的编译和调试。 Phase 1 移植前的规划 工作状态的选择 自从ARM7TDMI Core以后,体系结构中具有T变种的ARM处理器核可以工作在以下两种状态,并支持两个指令集: ARM状态 ARM状态下执行字对准的32位ARM指令; Thumb状态 Thumb状态下执行半字对准的16位Thumb指令; ?COS-II的任务可以在任何一种工作状态下运行,并可以进行状态切换。 为了移植代码的编写简单,本移植只在ARM状态下实现。 Phase 1 移植前的规划 ARM处理器工作模式(1) ARM处理器工作模式(2) Phase 2 操作系统移植 BootLoader的基本概念 要想让?COS-II在S3C44B0X处理器上正常运行,我们需要对系统的硬件环境进行初始化。 对于PC机,其开机后操作系统启动前的硬件初始化操作是由BIOS(Basic Input/Output System)完成的,但对于嵌入式系统来说,出于通用性、价格方面的考虑,通常并没有像BIOS那样的固件程序,因此启动时用于完成初始化操作的引导加载程序必须自行编写完成,这段程序一般被称为Bootloader程序。 BootLoader是系统加电(或复位)后运行的第一段软件代码。通过这段代码,我们可以初始化系统硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便最终调用操作系统内核。 简单地说,BootLoader就是在操作系统内核运行之前运行的一段初始化程序。 BootLoader的特点 BootLoader除了依赖CPU的体系结构外,还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其它外设的类型等。对于两块不同的嵌入式开发板,即使它们是基于同一种CPU而构建的,如果他们的硬件资源和配置不一致,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,也还是需要作一些必要的修改。 因此,为嵌入式系统建立一个通用的BootLoader是很困难的。尽管如此,我们仍然可以对BootLoader(尤其是基于同种Core的微处理器)归纳出一些通用的概念和设计思路,用来指导用户特定的BootLoader设计与实现。 BootLoader的启动过程 为了增加BootLoader的通用性和可移植性,本文把启动过程分为phasel和phase2两个阶段。 phase1阶段执行的是用汇编语言来实现的依赖CPU体系结构的代码,这样可以提高系统的启动速度; phase2阶段完成的是OS内核启动前的准备工作,多采用处理能力强、可移植性好的C语言来实现。 phase1阶段执行的代码,我们称之为最小启动代码。所谓最小启动代码是指为了完成系统(OS或用户应用程序)启动所必须的最少硬件的初始化程序。 BootLoader的安装媒介 系统加电或复位后,所有的CPU通常都从CPU制造商

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档