书签 分享 收藏 举报 版权申诉 / 46
上传文档赚钱

类型无操作系统的应用程序开发精编课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4374426
  • 上传时间:2022-12-03
  • 格式:PPT
  • 页数:46
  • 大小:168.50KB
  • 【下载声明】
    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)如果硬件平台使用了常见的处理器型号,方案一、二能够高效、快捷地完如果硬件平台使用了常见的处理器型号,方案一、二能够高

    26、效、快捷地完成成BootLoaderBootLoader设计。设计。因为因为ARMARM内核处理器应用广泛,在网络上即可下载到大多数型号的内核处理器应用广泛,在网络上即可下载到大多数型号的BootLoaderBootLoader,只需针对硬件参数进行修改即可。,只需针对硬件参数进行修改即可。(2)(2)自行编写自行编写BootLoaderBootLoader程序需要熟练掌握处理器的中断方式、编址空间、寄程序需要熟练掌握处理器的中断方式、编址空间、寄存器配置等,且对汇编语言应用能力要求较高,因此方案三难度较大、采用存器配置等,且对汇编语言应用能力要求较高,因此方案三难度较大、采用较少。较少。(3

    27、)U-Boot(Universal BootLoader(3)U-Boot(Universal BootLoader)具有源码开放、支持的处理器广泛具有源码开放、支持的处理器广泛(PowerPC(PowerPC、ARMARM、X86X86等等),可靠性和稳定性好、设备驱动丰富,可靠性和稳定性好、设备驱动丰富(串口、以太网、串口、以太网、SDRAMSDRAM、FlashFlash等等)等特点,本书附录介绍了等特点,本书附录介绍了U-BootU-Boot的移植方法。的移植方法。4.4 4.4 嵌入式系统引导程序嵌入式系统引导程序4.4.1 BootLoader4.4.1 BootLoader概述概

    28、述 BootLoaderBootLoader是在系统启动初始化硬件设备、建立存储器是在系统启动初始化硬件设备、建立存储器映射,从而将系统的软、硬件环境带到一个合适状态的一段映射,从而将系统的软、硬件环境带到一个合适状态的一段程序,类似于程序,类似于PCPC上的上的BIOSBIOS,是嵌入式软件系统的底层。,是嵌入式软件系统的底层。典型的典型的BootLoaderBootLoader程序通常需要完成的任务:程序通常需要完成的任务:(1)(1)定义入口地址;定义入口地址;(2)(2)建立异常中断处理向量;建立异常中断处理向量;(3)(3)初始化堆栈指针;初始化堆栈指针;(4)(4)跳转到应用程序的

    29、主函数中或跳转到操作系统的启动地跳转到应用程序的主函数中或跳转到操作系统的启动地址。址。4.4.2 s3c4510B4.4.2 s3c4510B编址空间和存储器映射编址空间和存储器映射 1.s3c4510b 1.s3c4510b 编址空间编址空间 2.S3c4510b2.S3c4510b存储器映射存储器映射 常用的常用的5 5个系统管理寄存器:个系统管理寄存器:1 1)ROM/SRAM/FlashROM/SRAM/Flash控制寄存器控制寄存器ROMCONnROMCONn 2)DRAM/SDRAM 2)DRAM/SDRAM控制寄存器控制寄存器DRAMCONnDRAMCONn 3)3)系统配置寄

    30、存器系统配置寄存器SYSCFGSYSCFG 4 4)数据总线宽度寄存器)数据总线宽度寄存器EXTDBWTHEXTDBWTH 5 5)DRAMADRAMA刷新与外部刷新与外部I/OI/O控制寄存器控制寄存器REFEXTCONREFEXTCON4.4.3 BootLoader4.4.3 BootLoader 启动过程分析启动过程分析1 1、BootLoaderBootLoader 是高度依赖于硬件的,针对不同的硬件配置,是高度依赖于硬件的,针对不同的硬件配置,其实现方式也各不相同。其实现方式也各不相同。2 2、以一段、以一段s3c4510bs3c4510b的初始化代码为例进行分析,其启动过程的初始

    31、化代码为例进行分析,其启动过程分为分为7 7个步骤:个步骤:(1)(1)定义异常向量;定义异常向量;(2)(2)初始化系统配置寄存器;初始化系统配置寄存器;(3)(3)进行第一次存储器映射进行第一次存储器映射(将将SDRAMSDRAM存储器映射到存储器映射到0 x400000-0 x1400000)0 x400000-0 x1400000);(4)(4)从从FlashFlash复制程序到复制程序到SDRAM;SDRAM;(5)(5)进行第二次存储器映射进行第二次存储器映射(将将SDRAMSDRAM存储器从原地址存储器从原地址0 x400000-0 x14000000 x400000-0 x14

    32、00000处映射到处映射到0 x0-0 x10000000 x0-0 x1000000;将;将FlashFlash存储存储器从原地址器从原地址0 x0-0 x2000000 x0-0 x200000处映射到处映射到0 x1200000-0 x1400000)0 x1200000-0 x1400000);(6)(6)初始化堆栈指针;初始化堆栈指针;(7)(7)跳转到跳转到C C语言程序语言程序(应用程序或操作系统入口应用程序或操作系统入口)3 3、系统上电后的映射关系:、系统上电后的映射关系:图图4.10 P1324.10 P1324 4、BootLoaderBootLoader启动过程分析启动

    33、过程分析 补充:关于伪指令补充:关于伪指令EQUEQU 语法格式:语法格式:名称名称 EQU EQU 表达式表达式,类型,类型 EQU EQU 伪指令用于为程序中的常量、标号等定义一个等效的字伪指令用于为程序中的常量、标号等定义一个等效的字符名称,类似于符名称,类似于C C 语言中的语言中的definedefine。其中其中EQU EQU 可用可用“*”代替。代替。“名称名称”为为 EQU EQU 伪指令定义的字符名称,当伪指令定义的字符名称,当“表达式表达式”为为32 32 位的常量时,可以指定表达式的数据类型,有以下三种位的常量时,可以指定表达式的数据类型,有以下三种类型:类型:CODE1

    34、6CODE16、CODE32 CODE32 和和DATADATA 使用示例:使用示例:(1)Test EQU 50(1)Test EQU 50;定义标号;定义标号Test Test 的值为的值为5050 (2)Addr (2)Addr EQU 0 x55 EQU 0 x55,CODE32 CODE32 ;定义;定义AddrAddr 的值为的值为0 x550 x55,且该处为且该处为32 32 位的位的ARM ARM 指令。指令。0)0)系统默认从系统默认从 FlashFlash的的0 x00 x0地址处开始执行程序,因此首先地址处开始执行程序,因此首先要进行要进行SDRAMSDRAM映射映射

    35、SYSCFG EQU 0X3FF0000SYSCFG EQU 0X3FF0000;系统配置寄存器地址;系统配置寄存器地址 EXTDBWTH EQU OX3FF3010 EXTDBWTH EQU OX3FF3010;数据宽度寄存器地址;数据宽度寄存器地址 ROMCON0 EQU OX3FF3014 ROMCON0 EQU OX3FF3014;FlashFlash配置寄存器地址配置寄存器地址 SDRAMCON0 EQU OX3FF302CSDRAMCON0 EQU OX3FF302C;SDRAMSDRAM配置寄存器地址配置寄存器地址 REFEXTCON EQU OX3FF303C REFEXTCO

    36、N EQU OX3FF303C;刷新和外部;刷新和外部I/OI/O寄存器地址寄存器地址 r rSYSCFGSYSCFG EQU 0XE7FFFF90 EQU 0XE7FFFF90;系统配置寄存器的赋值;系统配置寄存器的赋值 r rEXTDBWTHEXTDBWTH EQU OX00003002 EQU OX00003002;数据宽度寄存器的赋值;数据宽度寄存器的赋值 r rREFEXTCONREFEXTCON EQU OXCE338360 EQU OXCE338360;刷新和外部刷新和外部I/OI/O寄存器的赋值寄存器的赋值 ;第一次映射时,第一次映射时,FlashFlash和和SDRAMSDR

    37、AM配置寄存器的赋值配置寄存器的赋值 rfrfROMCON0 EQU OX02000060ROMCON0 EQU OX02000060 rfrfSDRAMCON0 EQU OX14010380SDRAMCON0 EQU OX14010380;第二次映射时,第二次映射时,FlashFlash和和SDRAMSDRAM配置寄存器的赋值配置寄存器的赋值 rsrsROMCON0 EQU OX14048060ROMCON0 EQU OX14048060 rsrsSDRAMCON0 EQU OX10000380SDRAMCON0 EQU OX10000380 ;没有使用的存储器组,赋值为;没有使用的存储器组

    38、,赋值为0 0rROMCON1 EQU 0X0rROMCON1 EQU 0X0rROMCON2 EQU 0X0rROMCON2 EQU 0X0rROMCON3 EQU 0X0rROMCON3 EQU 0X0rROMCON4 EQU 0X0rROMCON4 EQU 0X0rROMCON5 EQU 0X0rROMCON5 EQU 0X0rSDRAMCON1 EQU 0X0rSDRAMCON1 EQU 0X0rSDRAMCON2 EQU 0X0rSDRAMCON2 EQU 0X0rSDRAMCON3 EQU 0X0rSDRAMCON3 EQU 0X0IOPMOD EQU 0X3FF5000 IOPM

    39、OD EQU 0X3FF5000 ;GPIOGPIO模式寄存器模式寄存器IOPCON EQU 0X3FF5004 IOPCON EQU 0X3FF5004 ;GPIOGPIO配置寄存器配置寄存器IOPDATA EQU 0X3FF5008 IOPDATA EQU 0X3FF5008 ;GPIOGPIO数据寄存器数据寄存器;1);1)定义异常向量定义异常向量CODE32CODE32AREA Init,CODE,READONLYAREA Init,CODE,READONLY ;定义为代码段;定义为代码段ENTRY ;ENTRY ;程序入口程序入口B Reset_HandlerB Reset_Hand

    40、ler ;启动后跳转到标号启动后跳转到标号Reset_HandlerReset_Handler处处;以下;以下7 7条条NOPNOP语句分别对应语句分别对应7 7个中断向量,因为不使用中断,此处定义异常个中断向量,因为不使用中断,此处定义异常向量表为空。向量表为空。NOP NOP ;未定义指令中断;未定义指令中断NOP NOP ;软件中断;软件中断NOP NOP ;预取指令终止;预取指令终止NOP NOP ;数据终止;数据终止NOP NOP ;保留;保留B IRQHandlerB IRQHandler ;IRQIRQ中断中断NOP NOP ;FIQFIQ中断中断 NOTENOTE:没有使用中断

    41、时,在中断向量表处可存放没有使用中断时,在中断向量表处可存放NOPNOP指令,需要使用中断向指令,需要使用中断向量,如量,如IRQIRQ中断时,在相应的中断向量地址处存放一条跳转到中断服务程中断时,在相应的中断向量地址处存放一条跳转到中断服务程序的跳转指令即可。序的跳转指令即可。2)2)初始化系统配置寄存器、数据宽度寄存器初始化系统配置寄存器、数据宽度寄存器Reset_HandlerReset_Handler;初始化初始化syscfgsyscfg寄存器寄存器;5:4Cache5:4Cache模式模式01=0KB SRAM01=0KB SRAM,8KB Cache8KB Cache;25:16;

    42、25:16特殊功能寄存器组的基指针特殊功能寄存器组的基指针11 1111 111111 1111 1111=0 x3ff=0 x3ffLDR R1,=SYSCFG;LDR R1,=SYSCFG;代表什么?观察寄存器、存储器的内容代表什么?观察寄存器、存储器的内容LDR R0,=rSYSCFGLDR R0,=rSYSCFG;STR R0,R1 ;R0-R1STR R0,R1 ;R0-R1;初始化初始化EXTDBWTHEXTDBWTH寄存器,寄存器,RextdbwthRextdbwth=0 x00003002=0 x00003002;1:0Flash;1:0Flash组组0 0的数据总线宽度的数据

    43、总线宽度=10 16=10 16位位;13:12DRAM;13:12DRAM组组0 0的数据总线宽度的数据总线宽度=11 32=11 32位位LDR R1,=EXTDBWTH;LDR R1,=EXTDBWTH;LDR R0,=rEXTDBWTHLDR R0,=rEXTDBWTH;STR R0,R1 ;R0-R1STR R0,R1 ;R0-R1NOTE:NOTE:系统配置寄存器系统配置寄存器SYSCFGSYSCFG的地址为的地址为0 x3FF0000;0 x3FF0000;数据宽度寄存器数据宽度寄存器EXTDBWTHEXTDBWTH的地址为的地址为0 x3FF30100 x3FF3010。SYS

    44、CFGSYSCFG的作用主要是定义怎样使用处理器的片内资源;的作用主要是定义怎样使用处理器的片内资源;EXTDBWTHEXTDBWTH的作用是定义外部资源的数据宽度,同时也让系统了解的作用是定义外部资源的数据宽度,同时也让系统了解了外部硬件连接情况。了外部硬件连接情况。3)3)进行第一次存储器映射进行第一次存储器映射 映射的作用就是将外部物理设备映射到相应的地址范围。映射的作用就是将外部物理设备映射到相应的地址范围。bootloaderbootloader中使用了两次映射,其本质就是给两个相应的寄中使用了两次映射,其本质就是给两个相应的寄存器赋值,它们是:存器赋值,它们是:FlashFlash

    45、控制寄存器控制寄存器ROMCONROMCON,地址为,地址为 0 x3FF30140 x3FF3014;SDRAMSDRAM控制寄存器控制寄存器DRAMCONDRAMCON,地址为,地址为0 x3FF302C0 x3FF302C。LDR r0,=ROMCON0 ;r0LDR r0,=ROMCON0 ;r0中存放中存放STMIASTMIA指令的目的地址指令的目的地址 ;rfROMCON0=0 x02000060rfROMCON0=0 x02000060 ;19:10Flash ;19:10Flash组基指针组基指针0 x00 x0 ;29:20Flash ;29:20Flash组尾指针组尾指针0

    46、 x20 00000 x20 0000 LDR r1,=rfROMCON0 ;LDR r1,=rfROMCON0 ;将头文件中定义的寄存器赋值写入寄将头文件中定义的寄存器赋值写入寄存器存器LDR r2,=rROMCON1LDR r2,=rROMCON1LDR r3,=rROMCON2 LDR r3,=rROMCON2 LDR r4,=rROMCON3LDR r4,=rROMCON3LDR r5,=rROMCON4LDR r5,=rROMCON4LDR r6,=rROMCON5LDR r6,=rROMCON5 ;rfSDRAMCON0rfSDRAMCON0=0 x14010380=0 x1401

    47、0380 ;19:10DRAM ;19:10DRAM组基指针组基指针=0100 0000,=0100 0000,即地址为即地址为0 x40 00000 x40 0000 ;29:20DRAM ;29:20DRAM组尾指针组尾指针=01 0100 0000=01 0100 0000,即地址为,即地址为0 x140 00000 x140 0000 LDR r7,=rSDRAMCON0 LDR r7,=rSDRAMCON0 LDR r8,=rSDRAMCON1LDR r8,=rSDRAMCON1 LDR r9,=rSDRAMCON2 LDR r9,=rSDRAMCON2 LDR r10,=rSDRA

    48、MCON3 LDR r10,=rSDRAMCON3 LDR r11,=rREFEXTCON LDR r11,=rREFEXTCON ;将将r1-r11r1-r11的赋值一次性写入以的赋值一次性写入以r0r0为开始地址的存储单元为开始地址的存储单元 STMIA r0,r1-r11STMIA r0,r1-r11 NOTENOTE:(1)(1)这段程序执行完后,系统的地址空间映射如这段程序执行完后,系统的地址空间映射如P135 P135 图图4.114.11所示。所示。(2)(2)此段程序中兰色标注的两小段的作用是?它们好象属于此段程序中兰色标注的两小段的作用是?它们好象属于没有使用的存储器组,那能

    49、删掉吗?没有使用的存储器组,那能删掉吗?4)4)从从FlashFlash复制程序到复制程序到SDRAMSDRAM原因:当程序在原因:当程序在SDRAMSDRAM中运行时速度快,但不能掉电保护;中运行时速度快,但不能掉电保护;程序在程序在flashflash中运行时,可以掉电保护,但运行速度慢,且中断无中运行时,可以掉电保护,但运行速度慢,且中断无法修改;法修改;该步骤集二者之长,既可以在该步骤集二者之长,既可以在SDRAMSDRAM中运行,又可以进行掉电保护。中运行,又可以进行掉电保护。LDR r0,=0 x0 ;LDR r0,=0 x0 ;初始化复制数据的源地址初始化复制数据的源地址 LDR

    50、 r1,=0 x200000 ;LDR r1,=0 x200000 ;初始化循环次数初始化循环次数 LDR r2,=0 x400000 ;LDR r2,=0 x400000 ;初始化复制数据的目的地址初始化复制数据的目的地址 rom2ram_copy_loop rom2ram_copy_loop ;子程序标号,此子程序作用就是把程序从子程序标号,此子程序作用就是把程序从FlashFlash复制到复制到SDRAMSDRAM LDR r3,r0,#4;LDR r3,r0,#4;加载指令,将以加载指令,将以r0r0为地址的存储单元的数据为地址的存储单元的数据送到寄存器送到寄存器r3,r3,修改修改r

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:无操作系统的应用程序开发精编课件.ppt
    链接地址:https://www.163wenku.com/p-4374426.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库