嵌入式系统BootLoader的设.ppt
《嵌入式系统BootLoader的设.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统BootLoader的设.ppt(129页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1嵌入式系统BootLoader的设 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望2操作系统移植概述操作系统移植概述u所谓操作系统的移植,是指一个操作系统能够在某个微处所谓操作系统的移植,是指一个操作系统能够在某个微处理器平台上运行。理器平台上运行。u操作系统操作系统C/OS-IIC/OS-II是一个基于优先级的抢占式实时多任务是一个基于优先级的抢占式实时多任务内核。内核。C/OS-IIC/OS-II的大部分代码是用的大部分代码是用ANSI CANSI C语言编
2、写的,也语言编写的,也包含一小部分汇编语言代码,使之可以提供给不同架构的包含一小部分汇编语言代码,使之可以提供给不同架构的微处理器使用。至今,从微处理器使用。至今,从8 8位到位到6464位,位,C/OS-IIC/OS-II已经在多已经在多种不同架构的微处理器上移植成功。种不同架构的微处理器上移植成功。3C/OS-IIC/OS-II移植纲要移植纲要Phase 1Phase 2Phase 3Phase 31.1.C/OS-IIC/OS-II移植的条件移植的条件2.2.编译器的选择编译器的选择3.3.工作状态的选择工作状态的选择4.4.工作模式的选择工作模式的选择5.BootLoader5.Boo
3、tLoader6.6.系统初始化流程系统初始化流程7.7.最小启动代码编写最小启动代码编写8.8.C/OS-IIC/OS-II相关文件修改相关文件修改9.9.9.9.确保交叉编译环境确保交叉编译环境确保交叉编译环境确保交叉编译环境正常工作正常工作正常工作正常工作10.10.10.10.验证验证验证验证OSTaskStkInit()OSTaskStkInit()OSTaskStkInit()OSTaskStkInit()和和和和OSStartHighRdy()OSStartHighRdy()OSStartHighRdy()OSStartHighRdy()11.11.11.11.验证验证验证验证O
4、SCtxSw()OSCtxSw()OSCtxSw()OSCtxSw()12.12.12.12.验证验证验证验证OSTickISR()OSTickISR()OSTickISR()OSTickISR()和和和和OSIntCtxSw()OSIntCtxSw()OSIntCtxSw()OSIntCtxSw()移植前的规划移植前的规划操作系统移植操作系统移植 测试验证测试验证 4Phase 1 Phase 1 移植前的规划移植前的规划C/OS-IIC/OS-II移植的条件移植的条件1234编译器的选择编译器的选择工作状态的选择工作状态的选择工作模式的选择工作模式的选择5 COS-IICOS-II移植的条
5、件移植的条件u处理器的处理器的C C编译器能产生编译器能产生可重入代码可重入代码;u在程序中可以打开在程序中可以打开/关闭中断;关闭中断;u处理器支持中断,并且能产生定时中断(通常为处理器支持中断,并且能产生定时中断(通常为10-10-100Hz100Hz););u处理器能支持一定数量的数据存储硬件堆栈;处理器能支持一定数量的数据存储硬件堆栈;u处理器有将堆栈指针以及其它处理器有将堆栈指针以及其它CPUCPU寄存器的内容读出、并寄存器的内容读出、并存储到堆栈或内存中去的指令。存储到堆栈或内存中去的指令。针对上述移植条件,基于针对上述移植条件,基于ARM7TDMI CoreARM7TDMI Co
6、re的的S3C44B0XS3C44B0X处理处理器满足其中的硬件要求。器满足其中的硬件要求。6Phase 1 Phase 1 移植前的规划移植前的规划C/OS-IIC/OS-II移植的条件移植的条件1234编译器的选择编译器的选择工作状态的选择工作状态的选择工作模式的选择工作模式的选择7移植对编译器的要求及选择移植对编译器的要求及选择u除了对硬件有要求外,除了对硬件有要求外,还需要一个支持还需要一个支持C C语言和语言和ARMARM汇编语汇编语言的综合编译开发环境(言的综合编译开发环境(IDEIDE)。)。u综合编译开发环境至少需要包括综合编译开发环境至少需要包括C C编译器、编译器、ARMA
7、RM汇编器和链汇编器和链接器。接器。C C编译器用来对编译器用来对C C语言程序进行编译生成汇编代码。语言程序进行编译生成汇编代码。由于移植时需要对由于移植时需要对CPUCPU的寄存器进行操作,所以需要汇编的寄存器进行操作,所以需要汇编器能够支持汇编语言程序。链接器根据定位信息将不同的器能够支持汇编语言程序。链接器根据定位信息将不同的模块(编译或汇编过的文件)链接成一个单一的、绝对定模块(编译或汇编过的文件)链接成一个单一的、绝对定位的可执行的映像文件。位的可执行的映像文件。u针对针对ARMARM处理器核的处理器核的C C语言编译器有很多,目前在国内比较语言编译器有很多,目前在国内比较流行的有
8、流行的有SDTSDT、ADSADS、IARIAR、KEILKEIL和和GCCGCC等;等;u其中其中SDTSDT和和ADSADS均为均为ARMARM公司自己开发,公司自己开发,ADSADS为为SDTSDT的升级版,的升级版,以后以后ARMARM公司不再支持公司不再支持SDTSDT。本移植采用本移植采用ADS1.2ADS1.2集成开发环境进行程序的编译和调试。集成开发环境进行程序的编译和调试。8Phase 1 Phase 1 移植前的规划移植前的规划C/OS-IIC/OS-II移植的条件移植的条件1234编译器的选择编译器的选择工作状态的选择工作状态的选择工作模式的选择工作模式的选择9工作状态的
9、选择工作状态的选择u自从自从ARM7TDMI CoreARM7TDMI Core以后,体系结构中具有以后,体系结构中具有T T变种的变种的ARMARM处处理器核可以工作在以下两种状态,并支持两个指令集:理器核可以工作在以下两种状态,并支持两个指令集:nARMARM状态状态u ARM ARM状态下执行字对准的状态下执行字对准的3232位位ARMARM指令;指令;nThumbThumb状态状态u Thumb Thumb状态下执行半字对准的状态下执行半字对准的1616位位ThumbThumb指令;指令;u COS-IICOS-II的任务可以在任何一种工作状态下运行,并可以的任务可以在任何一种工作状态
10、下运行,并可以进行状态切换。进行状态切换。为了移植代码的编写简单,本移植只在为了移植代码的编写简单,本移植只在ARMARM状态下实现。状态下实现。10Phase 1 Phase 1 移植前的规划移植前的规划C/OS-IIC/OS-II移植的条件移植的条件1234编译器的选择编译器的选择工作状态的选择工作状态的选择工作模式的选择工作模式的选择11ARMARM处理器工作模式(处理器工作模式(1 1)处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断(fiq)支持高速数据传输
11、及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式未定义未定义 (und)(und)中止中止 (abt)(abt)管理管理 (svc)(svc)中断中断 (irq)(irq)快中断快中断 (fiq)(fiq)系统系统 (sys)(sys)除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为
12、只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。12ARMARM处理器工作模式(处理器工作模式(2 2)处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处
13、未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式未定义未定义 (und)(und)中止中止 (abt)(abt)管理管理 (svc)(svc)中断中断 (irq)(irq)快中断快中断 (fiq)(fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。本移植中本移植中 COS-IICOS-II的任务正常运行在管理的任务正常运行在管理(SVC)(SVC)模式模式。13Phase 2 Phase 2 操作系统移植操作系统移植Bo
14、otLoaderBootLoader1234系统系统初始化流程初始化流程最小启动代码编写最小启动代码编写C/OS-IIC/OS-II相关文件修改相关文件修改14BootLoaderBootLoader的基本概念的基本概念u要想让要想让 COS-IICOS-II在在S3C44B0XS3C44B0X处理器上正常运行,我们需要处理器上正常运行,我们需要对系统的硬件环境进行初始化。对系统的硬件环境进行初始化。u对于对于PCPC机,其开机后操作系统启动前的硬件初始化操作是机,其开机后操作系统启动前的硬件初始化操作是由由BIOSBIOS(Basic Input/Output SystemBasic Inp
15、ut/Output System)完成的,但对于)完成的,但对于嵌入式系统来说,出于通用性、价格方面的考虑,通常并嵌入式系统来说,出于通用性、价格方面的考虑,通常并没有像没有像BIOSBIOS那样的固件程序,因此启动时用于完成初始化那样的固件程序,因此启动时用于完成初始化操作的引导加载程序必须自行编写完成,这段程序一般被操作的引导加载程序必须自行编写完成,这段程序一般被称为称为BootloaderBootloader程序。程序。uBootLoaderBootLoader是系统加电(或复位)后运行的第一段软件代是系统加电(或复位)后运行的第一段软件代码。通过这段代码,我们可以初始化系统硬件设备码
16、。通过这段代码,我们可以初始化系统硬件设备、建立、建立内存空间的映内存空间的映射射图,从而将系统的软硬件环境带到一个合图,从而将系统的软硬件环境带到一个合适的状态,以便最终调用操作系统内核适的状态,以便最终调用操作系统内核。u简单地说,简单地说,BootLoaderBootLoader就是在操作系统内核运行之前运行就是在操作系统内核运行之前运行的一段初始化程序的一段初始化程序。15BootLoaderBootLoader的特点的特点uBootLoaderBootLoader除了依赖除了依赖CPUCPU的体系结构外,还依赖于具体的的体系结构外,还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地
17、址分配,嵌入式板级设备的配置,比如板卡的硬件地址分配,RAMRAM芯片的类型,其它外设的类型等。对于两块不同的嵌入式芯片的类型,其它外设的类型等。对于两块不同的嵌入式开发板,即使它们是基于同一种开发板,即使它们是基于同一种CPUCPU而构建的,如果他们而构建的,如果他们的硬件资源和配置不一致,要想让运行在一块板子上的的硬件资源和配置不一致,要想让运行在一块板子上的BootLoaderBootLoader程序也能运行在另一块板子上,也还是需要作程序也能运行在另一块板子上,也还是需要作一些必要的修改。一些必要的修改。u因此,为嵌入式系统建立一个通用的因此,为嵌入式系统建立一个通用的BootLoad
18、erBootLoader是很困难是很困难的。尽管如此,我们仍然可以对的。尽管如此,我们仍然可以对BootLoaderBootLoader(尤其是基于(尤其是基于同种同种CoreCore的微处理器)归纳出一些通用的概念和设计思路,的微处理器)归纳出一些通用的概念和设计思路,用来指导用户特定的用来指导用户特定的BootLoaderBootLoader设计与实现。设计与实现。16BootLoaderBootLoader的启动过程的启动过程u为了增加为了增加BootLoaderBootLoader的通用性和可移植性,本文把启动过的通用性和可移植性,本文把启动过程分为程分为phaselphasel和和p
19、hase2phase2两个阶段。两个阶段。nphase1phase1阶段执行的是用汇编语言来实现的依赖阶段执行的是用汇编语言来实现的依赖CPUCPU体系结构的代码,体系结构的代码,这样可以提高系统的启动速度;这样可以提高系统的启动速度;nphase2phase2阶段完成的是阶段完成的是OSOS内核启动前的准备工作,多采用处理能力内核启动前的准备工作,多采用处理能力强、可移植性好的强、可移植性好的C C语言来实现。语言来实现。uphase1phase1阶段执行的代码,我们称之为最小启动代码。阶段执行的代码,我们称之为最小启动代码。所谓所谓最小启动代码最小启动代码是指为了完成系统(是指为了完成系统
20、(OSOS或用户应用程序)启或用户应用程序)启动所必须的最少硬件的初始化程序。动所必须的最少硬件的初始化程序。17BootLoaderBootLoader的安装媒介的安装媒介u系统加电或复位后,所有的系统加电或复位后,所有的CPUCPU通常都从通常都从CPUCPU制造商预先安制造商预先安排的地址上取指令。排的地址上取指令。u基于基于ARM7TDMI CoreARM7TDMI Core的嵌入式系统中,系统在上电或复位的嵌入式系统中,系统在上电或复位时是从时是从0 x000000000 x00000000地址开始取第一条指令执行,而在这个地址开始取第一条指令执行,而在这个地址处安排的通常就是系统的
21、地址处安排的通常就是系统的BootLoaderBootLoader程序。程序。u嵌入式系统通常都有某种类型的固态存储设备嵌入式系统通常都有某种类型的固态存储设备(比如:比如:ROMROM、EPROMEPROM或或FLASHFLASH等等)被安排这个起始地址上用来存放被安排这个起始地址上用来存放BootLoaderBootLoader程序。程序。18BootLoaderBootLoader的下载方式的下载方式p 通过编程器将可执行目标文件烧写到BootROM中;p 通常通过串行口、网口或JTAG等接口下载。串口网口JTAG目标机目标机MPURAMBOOT ROM下载工具宿主机宿主机19Phase
22、 2 Phase 2 操作系统移植操作系统移植BootLoaderBootLoader1234系统系统初始化流程初始化流程最小启动代码编写最小启动代码编写C/OS-IIC/OS-II相关文件修改相关文件修改20嵌入式系统的初始化流程嵌入式系统的初始化流程1234567硬件初始化RTOS初始化软件初始化设置中断向量表最小硬件初始化RTOS初始化启动RTOS最小启动代码phase1phase2用户程序RTOS运行环境初始化硬件抽象层初始化用户程序初始化21嵌入式系统的初始化流程(嵌入式系统的初始化流程(1 1)123硬件初始化阶段硬件初始化阶段最小硬件初始化最小启动代码p 中断向量表放在上电后映射
23、在从0 x00000000开始的8*4个字节的连续存储空间中,其作用是指定了各种异常中断处理程序的入口地址。phase1设置中断向量表设置中断向量表RTOS运行环境初始化22嵌入式系统的初始化流程(嵌入式系统的初始化流程(2 2)硬件初始化阶段硬件初始化阶段p 禁用看门狗定时器;p 屏蔽所有中断;p 设定CPU的时钟频率;p 初始化存储器;p 分配各种模式下的栈空间。最小硬件初始化123最小硬件初始化最小启动代码设置中断向量表RTOS运行环境初始化phase123嵌入式系统的初始化流程(嵌入式系统的初始化流程(3 3)硬件初始化阶段硬件初始化阶段p 为RTOS运行准备合适的RAM空间;p 呼叫
24、RTOS主(Main)程序。RTOS运行环境初始化123最小硬件初始化最小启动代码设置中断向量表RTOS运行环境初始化phase124嵌入式系统的初始化流程(嵌入式系统的初始化流程(4 4)RTOSRTOS初始化阶段初始化阶段456硬件抽象层初始化RTOS初始化启动RTOS硬件抽象层初始化p 系统cache、总线设置;p 中断及中断向量处理子程序初始化;p I/O端口配置;p 初始化定时器,为时钟中断做好准备;p 对RTOS所需的其它设备初始化。phase225嵌入式系统的初始化流程(5)RTOSRTOS初始化阶段初始化阶段456硬件抽象层初始化RTOS初始化启动RTOSRTOS初始化p RT
25、OS内核启动参数初始化;p RTOS扩展部件初始化。phase226嵌入式系统的初始化流程(嵌入式系统的初始化流程(6 6)RTOSRTOS初始化阶段初始化阶段456硬件抽象层初始化RTOS初始化启动RTOS启动RTOSp 运行优先级最高的就绪任务;p 启动RTOS时钟中断。phase227嵌入式系统的初始化流程(嵌入式系统的初始化流程(7 7)用户程序初始化阶段用户程序初始化阶段用户程序初始化p 用户程序正常运行所进行的初始化。7用户程序用户程序初始化28Phase 2 Phase 2 操作系统移植操作系统移植BootLoaderBootLoader1234系统系统初始化流程初始化流程最小启
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 BootLoader
限制150内