chapter裸机系统的软件开发.ppt_第1页
chapter裸机系统的软件开发.ppt_第2页
chapter裸机系统的软件开发.ppt_第3页
chapter裸机系统的软件开发.ppt_第4页
chapter裸机系统的软件开发.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统基础,第7章 裸机系统的软件开发 ,1,嵌入式软件开发内容,开发系统软件-通用性 操作系统 协议栈 GUI 库函数 软件组件与IP(知识产权内核) 开发应用软件-专用性 在嵌入式操作系统之上进行开发 在硬件层上进行开发,2,本章内容,软件的结构和组成 监控程序 裸机系统软件的设计方法 软件的移植问题 可移植应用软件的开发原则,3,本章目的,了解嵌入式系统的软件结构与组成 掌握裸机系统的软件结构及应用 前后台结构 中断驱动结构 巡回服务结构 基于定时器的巡回服务结构 了解可移植程序的设计原理,掌握可移植程序的设计方法,4,#include /普通程序 main() printf(“hello,worldn”); ,5,1 软件的结构和组成,#include /嵌入式软件主程序 main() while(1) action1(); action2(); ,6,嵌入式系统的软件开发问题,嵌入式操作系统。 操作系统与应用软件的集成。 软件的结构。 嵌入式系统的软件是没有出口的,程序不能“退出”,整个程序的结构应该是无限的循环。 嵌入式系统的软件设计需要考虑硬件的支持、操作系统的支持、程序的初始化和引导等诸多的方面。 嵌入式系统的软件可能没有操作系统,在裸机上直接开发。,7,1.1嵌入式系统的软件组成,初始化引导代码 板级支持包 操作系统 通信协议栈 图形用户界面 应用软件,8,嵌入式系统的软件结构,9,1.2、初始化引导代码,初始化引导代码是任务嵌入式系统上电复位后第一个执行的代码 复位向量 80186:FFFF0H MCS51:0 ARM:0 执行: 自检 引导操作系统 进入初始化(硬件、软件),10,1.3 BSP板级支持包,PC平台的标准化 嵌入式系统平台的多样化 BSP的功能 裸机系统没有BSP 用户定制的系统各不相同 用户定制的系统主要部分相同 含有存储器、定时器、中断等操作系统运行所需的基本部件 嵌入式操作系统与用户定制硬件平台之间的接口,11,1.4嵌入式操作系统,复杂系统需要嵌入式操作系统的支持 简单系统可以不使用嵌入式操作系统 嵌入式操作系统可裁减 嵌入式操作系统的内核 处理机管理(任务、任务之间的通信和同步等) 存储器管理 完整的嵌入式操作系统 内核 文件系统 人机界面 设备驱动等,12,1.5网络协议栈,协议栈对于具有网络功能的嵌入式系统产品是必要的,目前嵌入式协议栈的提供有两种方式, 一种是独立的第三方协议栈产品, 一种是嵌入式操作系统的提供商提供协议栈产品。 协议栈的运行必须基于嵌入式操作系统的平台支持,但是并不意味着协议栈必须依赖于嵌入式操作系统的API。事实上,许多的嵌入式协议栈,如嵌入式TCP/IP协议栈做到了与操作系统的最大独立性,可以与大多数嵌入式操作系统集成运行。,13,1.6应用软件,嵌入式系统的应用软件一般需要自主开发,不同的嵌入式系统的应用软件各具特色和功能。 例如常用的应用软件用于PDA上,记事本、通讯录、计算器等。 应用于工业现场总线领域的应用软件如控制软件等。 应用软件的开发基于操作系统、网络通信协议栈、图形用户接口、文件系统等一系列的低层API。,14,1.7 GUI,对于大多数嵌入式系统,图形用户接口是必要的,特别是随身设备如PDA、手机等。 GUI运行在嵌入式操作系统之上。用户开发的与用户交互的应用软件通过调用GUI的功能调用(API)来实现。,15,2 监控程序-monitor,监控程序是运行在嵌入式系统中的一段代码,具有与用户进行交互,管理系统资源的功能,具有操作系统内核的一小部分功能。嵌入式系统正式运行时,通常不需要监控程序的干预。 目前开发嵌入式系统,监控程序的作为正在减少,只用在一些小的嵌入式系统中。 有的嵌入式控制器的制造商把监控程序驻留在ROM中提供给用户在开发时使用,提供的功能如程序下载、调试、固化等。 如motorola公司的某些8位嵌入式微控制器,16,3 裸机系统软件的设计方法,嵌入式系统软件设计 无操作系统的嵌入式软件设计 有操作系统的嵌入式软件设计 (下一章),17,3.1无操作系统的嵌入式软件设计,前后台系统 中断(事件)驱动系统 巡回服务系统 基于定时器的巡回服务系统,18,3.1.1前后台系统,后台: 应用程序是一个无限循环,巡回地执行多个事件,完成相应的操作。这一部分软件称为后台。通常在主程序main()中被调用。 前台: 中断服务程序处理异步事件,这一部分可以看成是前台。 后台可以称为任务级,前台可以称为中断级。强实时性的关键操作一定要用中断来实现。,19,程序框架-后台,main() /* 硬件初始化 */ while(1) /* 后台程序 */ action1(); action2(); actionn(); ,action_1() /* 执行动作1 */ action_n() /* 执行动作n */ ,20,程序框架-前台,Isr_1() /中断服务程序 1 /* 中断1的中断服务程序 */ /其它中断服务程序 Isr_n()/中断服务程序 n /* 中断2的中断服务程序 */ ,21,前后台系统的特点,实时性问题-不好 中断服务程序提供的数据(实时性数据)只有在后台轮询到的时候才能得到运行 应用 小系统: 微波炉 电话机 玩具等,22,3.1.2中断(事件)驱动系统,原理 整个嵌入式系统软件由中断服务程序构成 主程序完成系统的初始化工作 应用 低功耗系统设计 事件驱动系统 构成 主程序-完成系统的初始化 中断服务例程-完成事务处理,23,中断(事件)驱动系统-主程序,/*完成系统的硬件初始化和数据结构的初始化(如果必要的话)*/ main() /* to do: 系统的初始化 */ while(1) 其它代码或 enter_low_power(); /进入低功耗状态,如idle状态 ,24,中断(事件)驱动系统-中断服务程序,Isr_n() /* 其中的一个中断服务程序 */ /* to do: 处理中断事件 */ /* to do: 中断返回 */ ,25,3.1.3巡回服务系统,应用: 嵌入式处理器/控制器的中断源不多 解决方案 增加中断源-需要硬件,成本高 软件方案-软件巡回服务 main() /* to do: 系统初始化 */ while(1) action_1();/*巡回检测事件1并处理事件*/ action_2();/*巡回检测事件2并处理事件*/ action_n();/*巡回检测事件n并处理事件*/ ,26,3.1.4基于定时器的巡回服务系统,普通巡回服务系统的缺点 处理器全速运行,开销大-功耗高-电池供电系统 降低处理器的工作时间-基于定时器的巡回服务系统 构成 主程序 定时器中断服务程序,27,主程序,main() /* to do: 系统初始化 */ /* to do: 设置定时器,如自动重新加载方式 */ while(1) /其它代码或 enter_low_power(); ,28,定时器中断服务例程,Isr_timer() /* 定时器的中断服务程序 */ action_1(); /*执行事件1的处理*/ action_2(); /*执行事件2的处理*/ action_n(); /*执行事件n的处理*/ ,29,4 软件的移植,内容 考虑移植的必要性 裸机系统的软件移植 应用软件的移植 可移植应用软件的设计思路,30,4.1移植的必要性,基于嵌入式处理器的原因 处理器的更新方式 兼容机更新方式-量变,短时间 80x86系列 新的体系结构代替旧的体系结构-质变,长时间 dragon ball:EZ,VZ: 68000体系,ARM体系 基于嵌入式操作系统的原因 旧的操作系统淘汰,新的操作系统被开发出来 应用软件需要运行于不同的嵌入式操作系统平台上,31,例:,硬件: Z80,STD总线工业PC 软件: DOS的DCSwindows平台、Vxworks平台,32,5.2裸机系统的软件移植,裸机系统的特点 通常比较简单(如8位字宽) 使用汇编语言或C语言开发 不易移植的情况 汇编语言开发 跨平台 模块化差,33,基于硬件抽象层可移植软件结构,34,应用软件,输入/输出模块,处理器硬件,应用软件,硬件抽象层,处理器硬件,输入/输出模块,硬件相关,可移植性结构,硬件抽象层的特点,硬件抽象层具有与硬件密切相关性; 为上层应用软件的开发提供统一的接口 接口定义的功能应包含硬件或系统所需硬件支持的所有功能; 接口定义简单明了,太多接口函数会增加软件模拟的复杂性; 具有可测性的接口设计有利于系统的软硬件测试和集成。,35,应用软件,硬件抽象层,处理器硬件,输入/输出模块,硬件抽象层设计方法和原则,软件硬件并行、协同设计 分析接口的数据传输特性(双向/单向数据传输,字节型/数据帧型传输模式); 分析接口配置属性; 定义接口所需的相关函数。,36,应用软件的开发原则,不直接操作硬件 调用硬件抽象层的接口函数 完成面向应用的软件开发,37,硬件抽象层例子,RS232串行通信接口 发送功能 接收功能 模式、参数设置功能 控制功能 对于MCS51,8251,16450/16550,etc设计同样的接口函数, uart_putc(uint8 ch, uint8 c); uart_getc(uint8 ch, uint8 *buf); uart_puts(uint8 ch, uint8 *pstr); uart_gets(uint8 ch, uint8 *pbuf); uart_init(uint8 ch, uint8 rate, uint8 data_len, uint8 check, uint8 start_bit, uint8 stop_bit);,38,应用程序中使用可移植的UART的功能,初始化uart uart_init() 发送一个字符 uart_putc() 接收一个字符 uart_getc(),39,5可移植应用软件的设计原则,嵌入式系统开发的初期考虑移植问题 设计原则 层次化 模块化 层次化与模块化的结合 可设计硬件抽象层 可设计操作系统抽象层,40,5.5.3层次化与模块化的结合,41,datatype.h /* 基本数据类型 */ typedef unsigned char BOOLEAN; typedef unsigned char UINT8; typedef signed char INT8; typedef unsigned short UINT16; typedef signed short INT16; typedef unsigned int UINT32; typedef signed in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论