无操作系统的应用程序开发精编课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《无操作系统的应用程序开发精编课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 应用程序 开发 精编 课件
- 资源描述:
-
1、第第4 4章章 无操作系统的应用软件开发无操作系统的应用软件开发 嵌入式软件系统分为无操作系统和有操作系统。嵌入式软件系统分为无操作系统和有操作系统。前者包括引导程序和应用程序,后者则在引导程序结束后前者包括引导程序和应用程序,后者则在引导程序结束后运行操作系统,并将应用程序作为任务添加到操作系统中。运行操作系统,并将应用程序作为任务添加到操作系统中。NOTENOTE:运行操作系统会占用大量宝贵的硬件资源,因此很多运行操作系统会占用大量宝贵的硬件资源,因此很多硬件资源有限、任务简单的嵌入式应用并不使用操作系统。硬件资源有限、任务简单的嵌入式应用并不使用操作系统。嵌入式系统不管是否使用操作系统,
2、都需要一段引导程序嵌入式系统不管是否使用操作系统,都需要一段引导程序BootLoaderBootLoader来初始化硬件,为操作系统或应用程序的运行做来初始化硬件,为操作系统或应用程序的运行做准备。准备。BootLoaderBootLoader是硬件与软件的桥梁,其作用就是初始化硬件设是硬件与软件的桥梁,其作用就是初始化硬件设备、编址空间映射,建立系统软、硬件的正常工作状态。备、编址空间映射,建立系统软、硬件的正常工作状态。BootLoaderBootLoader的开发已经成为嵌入式系统教学和工程中的技术的开发已经成为嵌入式系统教学和工程中的技术瓶颈。瓶颈。本章的内容:本章的内容:*介绍介绍B
3、ootLoaderBootLoader的功能的功能 *分析分析s3c4510bs3c4510b的编址空间映射的编址空间映射 *分析分析BootLoaderBootLoader的启动过程的启动过程 *提出工程中提出工程中BootLoaderBootLoader的解决方案。的解决方案。*用实例介绍不使用嵌入式操作系统的软件开发流程和用实例介绍不使用嵌入式操作系统的软件开发流程和代码固化方法。代码固化方法。本章的目标:本章的目标:让读者能使用让读者能使用ADSADS开发一个完整的不使用操作系统的嵌开发一个完整的不使用操作系统的嵌入式系统。入式系统。4.1 4.1 软件开发数据流向图软件开发数据流向图
4、 在不使用嵌入式操作系统的情况下,在在不使用嵌入式操作系统的情况下,在ADSADS上能完成从上能完成从BootLoaderBootLoader到应用程序的整个开发流程,使用到应用程序的整个开发流程,使用JTAGJTAG仿真器仿真器进行调试,进行调试,RS-232RS-232串口作为标准输入串口作为标准输入/输出,数据流向如输出,数据流向如P120 P120 图图4.14.1所示。所示。在调试阶段:在调试阶段:使用使用ADSADS开发应用程序,编译生成带调试信息的开发应用程序,编译生成带调试信息的.axf.axf文件;文件;用用JTAGJTAG仿真器连接实验板和仿真器连接实验板和PCPC,将实验
5、板上电,打,将实验板上电,打开调试代理软件检测到开调试代理软件检测到ARMARM核处理器核处理器 在在AXDAXD中使用中使用setmemsetmem或或obeyobey命令设置命令设置CPUCPU特殊功能寄特殊功能寄存器配置存储空间;存器配置存储空间;加载加载.axf.axf文件到文件到SDRAMSDRAM存储器就可以调试运行了;存储器就可以调试运行了;利用利用AXDAXD提供的单步、断点等调试手段,可以方便地提供的单步、断点等调试手段,可以方便地查看查看CPUCPU寄存器、存储器内容。寄存器、存储器内容。NOTENOTE:*程序是在程序是在SDRAMSDRAM里运行的,因此掉电后不能保存;
6、里运行的,因此掉电后不能保存;*应用程序调试完毕后,将其加入应用程序调试完毕后,将其加入BootLoaderBootLoader,编译编译生成不带调试信息的生成不带调试信息的.bin.bin文件,文件,binbin格式的映象文件只能格式的映象文件只能全速运行;全速运行;*烧写烧写.bin.bin文件需要一个专门的文件需要一个专门的FlashFlash烧写程序(扩烧写程序(扩展名为展名为.axf.axf)。)。*先采用上述调试软件的方法将烧写程序先采用上述调试软件的方法将烧写程序.axf.axf文件文件加载到加载到SDRAMSDRAM,然后选择,然后选择AXDAXD的的FileFile菜单里面的
7、菜单里面的Load ImageLoad Image命令,将应用程序命令,将应用程序.bin.bin文件加载到文件加载到SDRAMSDRAM的合适地址上,的合适地址上,运行烧写程序,就能将运行烧写程序,就能将.bin.bin文件烧写到文件烧写到FlashFlash存储器了。存储器了。*在调试或烧写过程中,可以将必要信息通过在调试或烧写过程中,可以将必要信息通过RS-RS-232232串口输出到串口输出到PCPC超级终端进行显示。超级终端进行显示。4.24.2无操作系统的软件运行模式无操作系统的软件运行模式 不使用操作系统时,嵌入式软件系统包含引导程序和应用程不使用操作系统时,嵌入式软件系统包含引
8、导程序和应用程序两个部分:序两个部分:(1)(1)引导程序是嵌入式软件系统中必不可少的部分,完成硬引导程序是嵌入式软件系统中必不可少的部分,完成硬件初始化、存储器空间映射和设置系统工作状态等工作。件初始化、存储器空间映射和设置系统工作状态等工作。(2)(2)应用程序则根据不同应用目的而编写。应用程序则根据不同应用目的而编写。无操作系统下的各种软件运行模式的主要区别在于:无操作系统下的各种软件运行模式的主要区别在于:引导程序和应用程序的各种组成方式。引导程序和应用程序的各种组成方式。NOTENOTE:下面介绍的四种模式中采用的编址空间是经过二次存储器映射后的下面介绍的四种模式中采用的编址空间是经
9、过二次存储器映射后的空间,在没有了解存储器的二次映射之前,只需要了解此图中各个部分空间,在没有了解存储器的二次映射之前,只需要了解此图中各个部分的逻辑关系即可,不用去考虑物理地址。的逻辑关系即可,不用去考虑物理地址。无操作系统的嵌入式软件运行模式:无操作系统的嵌入式软件运行模式:1 1、应用程序和引导程序在一个工程中一起编译为一个、应用程序和引导程序在一个工程中一起编译为一个.bin.bin文件文件,烧写到烧写到FlashFlash存储器地址存储器地址0 x00 x0,引导程序运行结束后直接,引导程序运行结束后直接跳转到应用程序的入口处:跳转到应用程序的入口处:(1)BootLoader(1)
10、BootLoader启动后,启动后,FlashFlash中的所有程序被复制到中的所有程序被复制到SDRAMSDRAM存储器中,如图存储器中,如图4.2 P1214.2 P121 (2)(2)引导程序结束后就进入应用程序,这种跳转方式通过引导程序结束后就进入应用程序,这种跳转方式通过在引导程序中导入应用程序主函数名称来实现。在引导程序中导入应用程序主函数名称来实现。(3)(3)从汇编程序跳转到应用程序时,编译器会自动计算跳转从汇编程序跳转到应用程序时,编译器会自动计算跳转的目的地址。的目的地址。(4)(4)跳转的代码如下:跳转的代码如下:IMPORT C_EntryIMPORT C_Entry
11、;导入应用程序的;导入应用程序的C_EntryC_Entry函数函数 BL C_EntryBL C_Entry ;跳转到该函数,跳转地址由;跳转到该函数,跳转地址由编译器在编译时计算编译器在编译时计算NOTENOTE:应用程序存放到应用程序存放到SDRAMSDRAM的引导程序后,但其起始地址的引导程序后,但其起始地址并不固定,在编译时,应用程序的起始地址随着引导程序并不固定,在编译时,应用程序的起始地址随着引导程序的大小而变化。的大小而变化。2 2、应用程序和引导程序分别编译为两个、应用程序和引导程序分别编译为两个.bin.bin文件,引文件,引导程序烧写到导程序烧写到FlashFlash存储
12、器地址存储器地址0 x00 x0,应用程序则烧写到存储,应用程序则烧写到存储器中的某个地址,引导程序运行结束后跳转到该地址运行应器中的某个地址,引导程序运行结束后跳转到该地址运行应用程序用程序 (1)BootLoader(1)BootLoader启动后,启动后,FlashFlash中的所有程序被复制到中的所有程序被复制到SDRAMSDRAM存储器中,如图存储器中,如图4.3 P1214.3 P121 (2)(2)引导程序结束后就进入应用程序,即将引导程序结束后就进入应用程序,即将PCPC指针跳转到指针跳转到应用程序的起始地址,跳转的代码如下:应用程序的起始地址,跳转的代码如下:LDR R1LD
13、R R1,=0X10000=0X10000 MOV PC MOV PC,R1R1NOTENOTE:这种模式下,应用程序和引导程序被单独编译为两这种模式下,应用程序和引导程序被单独编译为两个个.bin.bin文件,因此应用程序可以灵活地烧写到任意地址处。文件,因此应用程序可以灵活地烧写到任意地址处。本例中应用程序被烧写到本例中应用程序被烧写到0 x100000 x10000为例。为例。3 3、扩展引导程序,使其初始化功能结束后即可跳转到、扩展引导程序,使其初始化功能结束后即可跳转到一个函数入口,也可以跳转到指定地址一个函数入口,也可以跳转到指定地址 在此模式下,引导程序和其扩展的部分在一个工程中
14、,在此模式下,引导程序和其扩展的部分在一个工程中,编译为编译为.bin.bin文件,最后烧写到文件,最后烧写到FlashFlash存储器的地址存储器的地址0 x00 x0处,处,应用程序既可以随引导程序一起编译,也可以单独编译并应用程序既可以随引导程序一起编译,也可以单独编译并下载到指定地址。下载到指定地址。如如P122 P122 图图4.44.4所示所示,引导程序完成后跳转到扩展程序引导程序完成后跳转到扩展程序中,可以进行串口初始化、人中,可以进行串口初始化、人-机交互、按键判断、硬件机交互、按键判断、硬件电路自检、操作系统升级等功能,也可以根据输入命令跳电路自检、操作系统升级等功能,也可以
15、根据输入命令跳转到相应程序或引导操作系统运行。转到相应程序或引导操作系统运行。这种模式集合了前两种模式的特点,启动过程较为灵这种模式集合了前两种模式的特点,启动过程较为灵活,并可以提供丰富的扩展功能,在实际工程中得到了广活,并可以提供丰富的扩展功能,在实际工程中得到了广泛应用。泛应用。常用的通用引导程序,如常用的通用引导程序,如U-BootU-Boot等都是采用这种模等都是采用这种模式。式。4 4、应用程序编译为、应用程序编译为.axf.axf 文件,下载到文件,下载到SDRAMSDRAM存储器中运行存储器中运行 在此模式下,工程文件仅由应用程序组成,不需要包在此模式下,工程文件仅由应用程序组
16、成,不需要包含引导程序,程序编译完毕后由含引导程序,程序编译完毕后由AXD调试软件通过调试软件通过JTAG口下载到口下载到SDRAM中,下载地址由中,下载地址由ADS在程序编译前指定,在程序编译前指定,其地址信息附加在编译后生成的其地址信息附加在编译后生成的.axf文件中。文件中。4.3 4.3 软件系统开发概述软件系统开发概述1.1.嵌入式系统的嵌入式系统的BootLoaderBootLoader BootLoaderBootLoader类似于类似于PCPC上的上的BIOSBIOS,是系统上电复位后,是系统上电复位后,首先执行的一段程序,用以完成整个系统的启动和加载首先执行的一段程序,用以完
17、成整个系统的启动和加载任务。任务。其功能主要是:其功能主要是:(1)(1)初始化初始化CPUCPU、堆栈指针、堆栈指针;(2)(2)配置存储映射,建立系统的编址空间映射配置存储映射,建立系统的编址空间映射 (3)(3)跳转到应用程序或操作跳转到应用程序或操作2.BootLoader2.BootLoader的开发模板的开发模板 see also P123 see also P123 图图4.64.6定义异常向量初始化系统配置寄存器第一次存储器映射从Flash复制程序到ADRAM第二次存储器映射初始化堆栈指针跳转到程序入口3.3.关于关于BootLoaderBootLoader开发模板的解释开发模
18、板的解释 1)1)定义异常向量定义异常向量 ARMARM处理器的硬件决定了处理器出现异常时处理器的硬件决定了处理器出现异常时PCPC指针会指针会自动跳转到从自动跳转到从0 x00 x0到到0 x1C0 x1C的地址处运行,因此的地址处运行,因此BootLoaderBootLoader应在这些地址放置跳转指令,使异常产生后程序能跳转到应在这些地址放置跳转指令,使异常产生后程序能跳转到相应的异常处理程序。相应的异常处理程序。2)2)初始化系统配置寄存器初始化系统配置寄存器 系统配置寄存器系统配置寄存器SYSCFGSYSCFG决定了编址空间中特殊功能寄决定了编址空间中特殊功能寄存器组的起始地址,以及
19、片内存器组的起始地址,以及片内SRAMSRAM的使用方式和起始地址,的使用方式和起始地址,应首先对其初始化。应首先对其初始化。3)3)进行第一次存储器映射进行第一次存储器映射(将将SDRAMSDRAM存储器映射到存储器映射到0X400000-0X400000-0X1400000)0X1400000)系统复位后编址空间还没有进行初始化,只有系统复位后编址空间还没有进行初始化,只有FlashFlash能够被访问,暂时无法读能够被访问,暂时无法读/写写SDRAMSDRAM,应首先通过对相关寄,应首先通过对相关寄存器赋值,在编址空间和实际存器赋值,在编址空间和实际SDRAMSDRAM物理设备之间建立映
20、物理设备之间建立映射关系,通过第一次存储器映射,将射关系,通过第一次存储器映射,将SDRAMSDRAM存储器映射到存储器映射到0X400000-0X1400000,0X400000-0X1400000,使得使得SDRAMSDRAM处于正常读处于正常读/写状态。写状态。4)4)从从FlashFlash复制程序到复制程序到SDRAMSDRAM 第一次映射中已经将第一次映射中已经将SDRAMSDRAM映射到了地址映射到了地址0 x400000-0 x400000-0 x14000000 x1400000处,由于处,由于SDRAMSDRAM具有更快的读具有更快的读/写速度,在嵌入写速度,在嵌入式系统中
21、通常将程序从式系统中通常将程序从FlashFlash复制到复制到SDRAMSDRAM中执行,这个工中执行,这个工作由作由BootLoaderBootLoader完成。完成。5)5)进行第二次存储器映射进行第二次存储器映射 和和SDRAMSDRAM相比,相比,FlashFlash读读/写速度较慢,而写速度较慢,而ARMARM芯片的硬芯片的硬件构成决定了异常向量表必须放在件构成决定了异常向量表必须放在0 x00 x0处,如果将处,如果将FlashFlash映映射到射到0 x00 x0,将明显地减慢系统对异常的处理时间,另外,将明显地减慢系统对异常的处理时间,另外,因为无法在因为无法在FlashFl
22、ash修改异常向量表,因此通常将异常向量修改异常向量表,因此通常将异常向量表存放在表存放在SDRAMSDRAM中,并把中,并把SDRAMSDRAM的起始地址映射到的起始地址映射到0 x00 x0处。处。所以第二次存储器映射就是将所以第二次存储器映射就是将SDRAMSDRAM存储器从原地址存储器从原地址0 x400000-0 x14000000 x400000-0 x1400000处映射到处映射到0 x000000-0 x100000;0 x000000-0 x100000;将将FlashFlash存储器从原地址存储器从原地址0 x0-0 x2000000 x0-0 x200000处映射到处映射
23、到0 x1000000-0 x1000000-0 x12000000 x1200000。6)6)初始化堆栈指针初始化堆栈指针 对堆栈指针进行初始化,应首先确定堆栈指针工作方对堆栈指针进行初始化,应首先确定堆栈指针工作方式,如满递减等,再根据应用程序中实际需要使用的堆栈式,如满递减等,再根据应用程序中实际需要使用的堆栈大小进行设置。大小进行设置。7)7)跳转到应用程序或操作系统入口跳转到应用程序或操作系统入口 对于应用程序:对于应用程序:在汇编程序中导入应用程序中的函数标号,通过跳转在汇编程序中导入应用程序中的函数标号,通过跳转指令可直接跳转到应用程序;指令可直接跳转到应用程序;对于操作系统:对
24、于操作系统:操作系统通常被烧写到操作系统通常被烧写到FlashFlash的固定地址处,初始化过的固定地址处,初始化过程完成后跳转到操作系统的指定地址处即可。程完成后跳转到操作系统的指定地址处即可。NOTENOTE:在编写在编写BootLoaderBootLoader程序时,可根据具体硬件配置,对程序时,可根据具体硬件配置,对图图4.64.6中文件进行相应修改;中文件进行相应修改;在使用在使用BootLoaderBootLoader引导不同应用程序时,只需在引导不同应用程序时,只需在main.cmain.c文件中添加相应的应用程序源代码即可。文件中添加相应的应用程序源代码即可。4.4.开发开发B
25、ootLoaderBootLoader的主要方案的主要方案(1)(1)获得相同型号获得相同型号CPUCPU在其他开发板上的在其他开发板上的BootLoaderBootLoader,在此基础上修改;,在此基础上修改;(2)(2)使用使用U-BootU-Boot、RedbootRedboot等通用等通用BootLoaderBootLoader进行移植;进行移植;(3)(3)根据功能需求自行编写根据功能需求自行编写BootLoaderBootLoader。NOTENOTE:(1)(1)如果硬件平台使用了常见的处理器型号,方案一、二能够高效、快捷地完如果硬件平台使用了常见的处理器型号,方案一、二能够高
展开阅读全文