




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统BootLoader的设计与实现,S3C44B0X的BootLoader,课件总目录,章节目录,1.绪论,内容提要,1.1BootLoader简介(1),BIOS定义:BIOS(BasicInput/OutputSystem)是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序;主要功能:是为计算机提供最底层的、最直接的硬件设置和控制。,1.1BootLoader简介(2),嵌入式系统引导加载程序对于PC机来说,其开机后操作系统启动前的硬件初始化操作是由BIOS完成的;对于嵌入式系统来说,出于通用性、价格等方面的考虑,通常并没有像BIOS那样的固件程序;启动时用于完成初始化操作的引导加载程序必须自行编写,这段程序一般被称为Bootloader程序。BootLoaderBootLoader程序是系统加电(或复位)后运行的第一段软件代码。主要作用:通过这段代码,可以初始化系统硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便最终调用操作系统内核。,1.1BootLoader简介(3),BootLoader特点BootLoader除了依赖CPU的体系结构外,还依赖于具体的嵌入式板级设备的配置;对于两块不同的嵌入式开发板,即使它们是基于同一种CPU而构建的,如果他们的硬件资源和配置不一致,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,也还是需要作一些必要的修改。通用BootLoader综上所述,为嵌入式系统建立一个通用的BootLoader是很困难的;尽管如此,我们仍然可以对BootLoader(尤其是基于同种Core的微处理器)归纳出一些通用的概念和设计思路,用来指导用户特定BootLoader的设计与实现。,1.1BootLoader简介(4),BootLoader安装媒介系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。举例说明基于ARM7TDMICore的嵌入式系统中,系统在上电或复位时是从0 x00000000地址开始取第一条指令执行,而在这个地址安排的通常就是系统的BootLoader程序。嵌入式系统通常都有某种类型的固态存储设备(比如ROM、EPROM或FLASH等)被安排这个起始地址上用来存放BootLoader程序。,1.1BootLoader简介(5),BootLoader下载方式,1.1BootLoader简介(6),BootLoader启动过程为了增加BootLoader的通用性和可移植性,本文把启动过程分为stagel和stage2两个阶段。stage1阶段:执行的是用汇编语言来实现的依赖CPU体系结构的代码,这样可以提高系统的启动速度。stage2阶段:完成的是OS内核启动前的准备工作,多采用处理能力强、可移植性好的C语言来实现。最小启动代码stage1阶段执行的代码,我们称之为最小启动代码。所谓最小启动代码是指为了完成系统(OS或用户应用程序)启动所必须的最少硬件的初始化程序。,1.3C/OS-II移植流程,Phase1,Phase2,移植前规划阶段,操作系统移植阶段,章节目录,2.2编译器的选择(2),常用的ARM编译器目前,比较流行的编译器有SDT、ADS、IAR、KEIL和GCC等,其中SDT和ADS均为ARM公司开发,ADS为SDT的升级版。本移植采用的编译器ADS1.2(ARMDeveloperSuite)集成开发环境。,2.3工作状态的选择,ARM处理器工作状态自从ARM7TDMICore以后,体系结构中具有T变种的ARM处理器核可以工作在以下两种状态。ARM状态ARM状态下执行字对准的32位ARM指令;Thumb状态Thumb状态下执行半字对准的16位Thumb指令。两种工作状态可以进行相互切换。本移植采用的工作状态本移植只实现COS-II在ARM状态下工作。,2.4工作模式的选择(1),ARM处理器工作模式,2.4工作模式的选择(2),特权模式,说明1.除用户模式外,其它模式称为特权模式;2.ARM内部寄存器和一些片内外设在硬件设计上只允许(或可选为只允许)特权模式下访问;3.特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,2.4工作模式的选择(3),异常模式,说明1.这五种模式称为异常模式;2.可以通过程序切换进入外,也可由特定的异常进入;3.当特定的异常出现时,处理器进入相应的模式;4.每种异常模式都有一些独立的寄存器;5.系统上电或复位后自动进入管理(SVC)模式,本移植COS-II的任务正常是运行在管理模式。,章节目录,3.操作系统移植,内容提要,3.1BootLoader总体流程图,3.1.1总体流程图,硬件初始化,stage1,RTOS初始化,stage2,软件初始化,用户程序,3.2BootLoader初始化步骤(1),3.2.1硬件初始化阶段,1,2,3,最小硬件初始化,最小启动代码,stage1,设置中断向量表,RTOS运行环境初始化,3.2BootLoader初始化步骤(2),3.2.1硬件初始化阶段,2,3,最小硬件初始化,最小启动代码,设置中断向量表,RTOS运行环境初始化,stage1,1,3.2BootLoader初始化步骤(3),3.2.1硬件初始化阶段,1,2,3,最小硬件初始化,最小启动代码,设置中断向量表,RTOS运行环境初始化,stage1,3.2BootLoader初始化步骤(4),3.2.2RTOS初始化阶段,4,5,6,硬件抽象层初始化,RTOS初始化,启动RTOS,stage2,3.2BootLoader初始化步骤(5),4,5,6,硬件抽象层初始化,RTOS初始化,启动RTOS,stage2,3.2.2RTOS初始化阶段,3.2BootLoader初始化步骤(6),3.2.2RTOS初始化阶段,4,5,6,硬件抽象层初始化,RTOS初始化,启动RTOS,stage2,3.2BootLoader初始化步骤(7),3.2.3用户程序初始化阶段,7,用户程序,用户程序初始化,3.3编写最小启动代码,3.3.1设置中断向量表,知识点讲解中断向量表结构特点中断向量表中每种异常只分配4个字节,所以不能放下整个异常中断处理程序,只能放一条跳转指令,用以跳转到相应的异常中断处理程序。设置中断向量表示意代码分析,3.3编写最小启动代码,知识点讲解禁用看门狗定时器和屏蔽所有中断为了避免初始化过程被打断,需要禁用看门狗定时器和屏蔽所有中断。禁用看门狗定时器和屏蔽所有中断示意代码分析,3.3.2最小硬件初始化,WTCONEQU0 x01d30000;看门狗定时器控制寄存器LDRr0,=WTCONLDRr1,=0 x00000000;禁用看门狗定时器STRr1,r0INTMSKEQU0 x01e0000c;中断屏蔽寄存器LDRr0,=INTMSKLDRr1,=0 x07ffffff;屏蔽所用外部中断STRr1,r0,3.3编写最小启动代码,知识点讲解S3C44B0X时钟发生器组成主时钟源有两个:一个是XTAL0和EXTAL0连接的外部晶振,另一个是EXTCLK连接的外部时钟;PLL的功能是以低频振荡器的输出作为输入,产生S3C44B0X需要的高频信号;还有一个时钟控制逻辑部件来可产生稳定的时钟频率。时钟源的选择OM3:2=00时钟源为晶振;OM3:2=01时钟源为外部时钟。,3.3.2最小硬件初始化,3.3编写最小启动代码,知识点讲解时钟发生器原理框图注意事项本移植时钟源的选择采用晶振,其中晶振频率为6MHz,即Fin=6MHz。,3.3.2最小硬件初始化,3.3编写最小启动代码,知识点讲解PLL分频器PLL输出时钟频率Fpllo和输入的时钟频率Fin的关系:Fpllo=(m*Fin)/(p*2s)其中,m=MDIV(分频器M的分频值)+8,p=PDIV(分频器P的分频值)+2,s=SDIV(分频器S的分频值)。PLL值的选择向导Fpllo必须大于20Mhz,小于66MHz;Fpllo*2s必须小于170MHz。,3.3.2最小硬件初始化,3.3编写最小启动代码,知识点讲解PLL锁相环原理框图,3.3.2最小硬件初始化,3.3编写最小启动代码,主时钟频率及各功能模块时钟频率设定示意代码分析,3.3.2最小硬件初始化,PLLCONEQU0 x01d80000;PLL控制寄存器CLKCONEQU0 x01d80004;时钟控制寄存器LOCKTIMEEQU0 x01d8000c;锁时计数寄存器M_DIVEQU0 x48P_DIVEQU0 x02S_DIVEQU0 x01;Fin=6MHz,Fout=60MHLDRr0,=LOCKTIMELDRr1,=0 x00000fff;Tlock=(1/Fin)*LTIMECNTSTRr1,r0LDRr0,=PLLCONLDRr1,=(M_DIV12)+(P_DIV4)+S_DIV)STRr1,r0LDRr0,=CLKCONLDRr1,=0 x00007ff8;AllunitblockCLKenableSTRr1,r0,3.3编写最小启动代码,知识点讲解存储器初始化是指对Flash、RAM存等储器的地址范围、数据总线宽度以及DRAM的刷新频率等进行设置。设置对象是存储器控制寄存器,芯片不同设置不同,具体需要参考芯片手册【S3C44b0X数据手册.pdf】。存储器控制寄存器S3C44B0X的存储器控制寄存器是以0 x01C80000为起始地址的13个连续的32位寄存器。可以一次将预先配置好的初始化数据存入与存储器控制器相关的13个寄存器。注意事项S3C44B0X不支持存储器地址重映射(MemoryRemap)。,3.3.2最小硬件初始化,3.3编写最小启动代码,存储器初始化示意代码分析,3.3.2最小硬件初始化,LDRr0,=SMRDATALDMIAr0,r1-r13LDRr0,=0 x01c80000;BWSCONAddressSTMIAr0,r1-r13SMRDATADATADCDcBWSCONDCDcBANKCON0;GCS0DCDcBANKCON1;GCS1DCDcBANKCON2;GCS2DCDcBANKCON3;GCS3DCDcBANKCON4;GCS4DCDcBANKCON5;GCS5DCDcBANKCON6;GCS6DCDcBANKCON7;GCS7DCDcREFRESH;REFRESHDCDcBANKSIZE;BANKSIZEDCDcMRSRB6;MRSR6DCDcMRSRB7;MRSR7,3.3编写最小启动代码,知识点讲解工作模式与栈空间基于ARM7TDMICore的微处理器有用户、系统、FIQ、IRQ、管理、中止和未定义共7种模式,程序根据不同需求可能需要切换到不同的工作模式下运行。因为每种模式下都有各自的堆栈指针(SP),所以需要为每种模式分配栈空间。,3.3.2最小硬件初始化,3.3编写最小启动代码,3.3.2最小硬件初始化,3.3编写最小启动代码,3.3.2最小硬件初始化,知识点讲解不同异常中断发生进入不同工作模式注意事项系统上电或复位后从地址0 x00000000开始取第一条复位异常指令BResetHandler执行,并自动切换到管理模式。,3.3编写最小启动代码,分配各种工作模式下的栈空间示意代码分析,3.3.2最小硬件初始化,LDRsp,=SVCStackBLInitStacksInitStacksMRSr0,cpsrBICr0,r0,#MODEMASKORRr1,r0,#UNDEFMODE|NOINT;UndefModeMSRcpsr_cxsf,r1LDRsp,=UndefStack;AbortMode;IRQMode;FIQMode;SVCMode;USRModeisnotinitialized.,3.3编写最小启动代码,知识点讲解映像文件的组成ARM链接器把编译(或汇编)生成的目标文件和所需要的库文件链接在一起生成可执行的ELF(ExecutableLinkableFormat)格式的映像文件;ARM编译器生成的文件为目标文件,其只对单个文件工作,每次只能编译一个源文件,输出一个目标文件;链接器每次可以链接多个目标文件,把这些文件链接成一个可执行的映像文件;文件是编译器操作的基本单位,而段则是链接器操作的基本单位,链接器不关心有多少个输入文件,只关心有多少个和何种属性的输入段。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,知识点讲解输入段来源一种是来自源文件中的段;一种是来自系统库文件中的段。输入段3种属性只读(RO)段;可读写(RW)段;初始化为0(ZI)段。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,知识点讲解输出段链接器输出的可执行的映像文件也包含一个或多个段,称为输出段;输出段也有3种属性:只读段、可读写段和初始化为0段。输出段的组织程序代码和常量存放在RO段;可读写的全局变量和静态变量存放在RW段;RW段中要被初始化为零的变量被称为ZI段;链接器把属性相同的输入段按照顺序组织,形成输出段。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,举例说明,3.3.3RTOS运行环境初始化,链接器,3.3编写最小启动代码,知识点讲解加载地址和执行地址映像文件可以有两种地址:加载地址和执行地址;加载地址:就是文件在存储器中的存储地址;执行地址:就是文件在运行时的地址。举例说明简单的系统与复杂的系统简单的系统中,加载地址和执行地址通常是同一地址;复杂的系统中,常常需要把程序的一部分或全部从加载地址转移到执行地址。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,知识点讲解存储器选型在嵌入式系统中,NorFlash是常见的一种存储芯片,其特点是系统掉电数据不会丢失,因此很适合作为BootLoader的存储介质;NorFlash的读取和RAM类似,支持ExecuteOnChip,即程序可以直接在FLASH片内执行,但不可以直接进行写操作;根据NorFlash的特点,我们经过连接器链接生成的映像文件的加载地址一般在NorFlash中。注意事项只读(RO)段的存储地址就是其执行地址,而可读写(RW)段和初始化为0(ZI)段必须被复制到RAM存储器进行,即后两者的存储地址和执行地址不同。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,知识点讲解ADS1.2链接器的链接类型Partia方式:表示链接器只进行部分链接,经过部分链接生成的目标文件,可为以后进一步链接的输入文件;Simple方式:默认链接方式,它使用链接器选项中指定的地址映射方式,生成简单的ELF格式的映像文件;Scattered方式:使得链接器要根据scatter描述文件中指定的地址映射,生成复杂的ELF格式的映像文件。注意事项本移植采用默认的【Simple】链接方式ROBase:这个文本框设置包含有RO段的加载地址,同时又是RO段的运行地址;RWBase:这个文本框设置包含RW和ZI段的执行地址。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,知识点讲解链接器产生的地址映射过程在默认情况下,链接器生成的映像文件包括RO、RW和ZI三种属性的输出段,并按照下列顺序组织输入段。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,举例说明已知ROBase为0 x00000,RWBase为0 x08000,在加载地址为0 x06000位置存储了RW属性的存储段,试描述加载域与执行域。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,举例说明已知ROBase为0 x00000,RWBase为0 x08000,在加载地址为0 x06000位置存储了RW属性的存储段,试描述加载域与执行域。,3.3.3RTOS运行环境初始化,3.3编写最小启动代码,RTOS运行环境初始化示意代码分析,3.3.3RTOS运行环境初始化,LDRr0,=|Image$RO$Limit|;得到ROM加载域中RW数据段的起始地址LDRr1,=|Image$RW$Base|;得到RAM执行域中RW数据段的起始地址LDRr3,=|Image$ZI$Base|;得到RAM中ZI段的起始地址CMPr0,r1BEQ%F10CMPr1,r3;复制加载域的RW段到执行域LDRCCr2,r0,#4STRCCr2,r1,#4BCC%B01LDRr1,=|Image$ZI$Limit|;对ZI段(未初始化的数据段)初始化为0MOVr2,#02CMPr3,r1STRCCr2,r3,#4BCC%B2,3.3编写最小启动代码,知识点讲解映像文件入口点普通入口点:在汇编语言源文件中,由ENTRY伪操作定义的入口点是普通入口点,在C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省嵩明县2025年上半年事业单位公开遴选试题含答案分析
- 河南省孟州市2025年上半年公开招聘村务工作者试题含答案分析
- 河北省滦平县2025年上半年事业单位公开遴选试题含答案分析
- 河北省涞水县2025年上半年公开招聘城市协管员试题含答案分析
- 2025年度教育信息化项目融资借款合同样本
- 2025年医疗器械企业采购供应链劳动合同范本
- 2025房地产企业合同台账编制与信息化管理规范
- 2025版企业员工借调与薪酬福利调整协议
- 2025版水果电商O2O平台合作协议
- 2025版泥水班组施工施工质量保证体系建立合同
- 国庆节英语介绍模板
- 《油气管道无人机智能巡检系统技术管理规范》
- 2025年新版期权知识考试题库带答案
- GB 46030-2025建筑用安全玻璃安全技术要求
- 2025年新《中华人民共和国安全生产法》知识竞赛测试题库含答案
- 2025年度吉林辅警招聘考试题(含答案)
- 吉安市新庐陵投资发展有限公司及下属子公司2025年第二批面向社会公开招聘笔试备考题库及答案解析
- 幼儿园卫生及安全检查标准
- 儿童动漫消费偏好-洞察及研究
- 《机械制图(多学时)》中职全套教学课件
- 英语10000个单词频率排序
评论
0/150
提交评论