无操作系统的应用程序开发精编

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 无操作系统的应用软件开发
• 嵌入式软件系统分为无操作系统和有操作系统。 • 前者包括引导程序和应用程序,后者则在引导程序结束后 运行操作系统,并将应用程序作为任务添加到操作系统中。 NOTE: 运行操作系统会占用大量宝贵的硬件资源,因此很多 硬件资源有限、任务简单的嵌入式应用并不使用操作系统。
Baidu Nhomakorabea
4.2无操作系统的软件运行模式
• 不使用操作系统时,嵌入式软件系统包含引导程序和应用程 序两个部分:
(1)引导程序是嵌入式软件系统中必不可少的部分,完成硬 件初始化、存储器空间映射和设置系统工作状态等工作。 (2)应用程序则根据不同应用目的而编写。
• 无操作系统下的各种软件运行模式的主要区别在于:
引导程序和应用程序的各种组成方式。
NOTE:
下面介绍的四种模式中采用的编址空间是经过二次存储器映射后的 空间,在没有了解存储器的二次映射之前,只需要了解此图中各个部分 的逻辑关系即可,不用去考虑物理地址。
无操作系统的嵌入式软件运行模式:
1、应用程序和引导程序在一个工程中一起编译为一个.bin 文件,烧写到Flash存储器地址0x0,引导程序运行结束后直接 跳转到应用程序的入口处: (1)BootLoader启动后,Flash中的所有程序被复制到SDRAM 存储器中,如图4.2 P121 (2) 引导程序结束后就进入应用程序,这种跳转方式通过 在引导程序中导入应用程序主函数名称来实现。 (3)从汇编程序跳转到应用程序时,编译器会自动计算跳转 的目的地址。 。
NOTE: * 程序是在SDRAM里运行的,因此掉电后不能保存; * 应用程序调试完毕后,将其加入BootLoader,编译 生成不带调试信息的.bin文件,bin格式的映象文件只能 全速运行; * 烧写.bin文件需要一个专门的Flash烧写程序(扩 展名为.axf)。 * 先采用上述调试软件的方法将烧写程序.axf文件 加载到SDRAM,然后选择AXD的File菜单里面的Load Image 命令,将应用程序.bin文件加载到SDRAM的合适地址上, 运行烧写程序,就能将.bin文件烧写到Flash存储器了。 * 在调试或烧写过程中,可以将必要信息通过RS232串口输出到PC超级终端进行显示。
• 嵌入式系统不管是否使用操作系统,都需要一段引导程序 BootLoader来初始化硬件,为操作系统或应用程序的运行做 准备。 • BootLoader是硬件与软件的桥梁,其作用就是初始化硬件设 备、编址空间映射,建立系统软、硬件的正常工作状态。 • BootLoader的开发已经成为嵌入式系统教学和工程中的技术 瓶颈。 • 本章的内容: * 介绍BootLoader的功能 * 分析s3c4510b的编址空间映射 * 分析BootLoader的启动过程 * 提出工程中BootLoader的解决方案。 * 用实例介绍不使用嵌入式操作系统的软件开发流程和 代码固化方法。 • 本章的目标: 让读者能使用ADS开发一个完整的不使用操作系统的嵌 入式系统。
3、扩展引导程序,使其初始化功能结束后即可跳转到 一个函数入口,也可以跳转到指定地址
在此模式下,引导程序和其扩展的部分在一个工程中, 编译为.bin文件,最后烧写到Flash存储器的地址0x0处, 应用程序既可以随引导程序一起编译,也可以单独编译并 下载到指定地址。 如P122 图4.4所示,引导程序完成后跳转到扩展程序 中,可以进行串口初始化、人-机交互、按键判断、硬件 电路自检、操作系统升级等功能,也可以根据输入命令跳 转到相应程序或引导操作系统运行。 这种模式集合了前两种模式的特点,启动过程较为灵 活,并可以提供丰富的扩展功能,在实际工程中得到了广 泛应用。 常用的通用引导程序,如U-Boot等都是采用这种模 式。
4、应用程序编译为.axf 文件,下载到SDRAM存储器中运行 在此模式下,工程文件仅由应用程序组成,不需要包 含引导程序,程序编译完毕后由AXD调试软件通过JTAG 口下载到SDRAM中,下载地址由ADS在程序编译前指定, 其地址信息附加在编译后生成的.axf文件中。
4.3 软件系统开发概述
1. 嵌入式系统的BootLoader BootLoader类似于PC上的BIOS,是系统上电复位后, 首先执行的一段程序,用以完成整个系统的启动和加载 任务。 其功能主要是: (1)初始化CPU、堆栈指针; (2)配置存储映射,建立系统的编址空间映射 (3) 跳转到应用程序或操作
(4) 跳转的代码如下: IMPORT C_Entry ;导入应用程序的C_Entry函数 ;跳转到该函数,跳转地址由 BL C_Entry 编译器在编译时计算 NOTE: 应用程序存放到SDRAM的引导程序后,但其起始地址 并不固定,在编译时,应用程序的起始地址随着引导程序 的大小而变化。
2、应用程序和引导程序分别编译为两个.bin文件,引 导程序烧写到Flash存储器地址0x0,应用程序则烧写到存储 器中的某个地址,引导程序运行结束后跳转到该地址运行应 用程序 (1)BootLoader启动后,Flash中的所有程序被复制到SDRAM 存储器中,如图4.3 P121 (2) 引导程序结束后就进入应用程序,即将PC指针跳转到 应用程序的起始地址,跳转的代码如下: LDR R1,=0X10000 MOV PC,R1 NOTE: 这种模式下,应用程序和引导程序被单独编译为两 个.bin文件,因此应用程序可以灵活地烧写到任意地址处。 本例中应用程序被烧写到0x10000为例。
4.1 软件开发数据流向图
• 在不使用嵌入式操作系统的情况下,在ADS上能完成从 BootLoader到应用程序的整个开发流程,使用JTAG仿真器 进行调试,RS-232串口作为标准输入/输出,数据流向如 P120 图4.1所示。 • 在调试阶段: 使用ADS开发应用程序,编译生成带调试信息的.axf 文件; 用JTAG仿真器连接实验板和PC,将实验板上电,打 开调试代理软件检测到ARM核处理器 在AXD中使用setmem或obey命令设置CPU特殊功能寄 存器配置存储空间; 加载.axf文件到SDRAM存储器就可以调试运行了; 利用AXD提供的单步、断点等调试手段,可以方便地 查看CPU寄存器、存储器内容。
相关文档
最新文档