收藏 分享(赏)

嵌入式软件程序结构.ppt

上传人:jmydc 文档编号:6997551 上传时间:2019-04-30 格式:PPT 页数:47 大小:1.47MB
下载 相关 举报
嵌入式软件程序结构.ppt_第1页
第1页 / 共47页
嵌入式软件程序结构.ppt_第2页
第2页 / 共47页
嵌入式软件程序结构.ppt_第3页
第3页 / 共47页
嵌入式软件程序结构.ppt_第4页
第4页 / 共47页
嵌入式软件程序结构.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、1,嵌入式系统,嵌入式系统的软件系统,2,嵌入式软件开发内容,开发系统软件 操作系统 协议栈 GUI 库函数 软件组件与IP(知识产权内核) 开发应用软件 在嵌入式操作系统之上进行开发 在硬件层上进行开发,3,内容,软件的结构和组成 监控程序 裸机系统软件的设计方法 软件的移植问题 可移植应用软件的开发原则,4,1 软件的结构和组成,#include /普通程序 main() printf(“hello,worldn”); ,5,1 软件的结构和组成,#include /嵌入式软件主程序 main() while(1)action1();action2(); ,6,嵌入式系统的软件开发问题,嵌

2、入式操作系统。 操作系统与应用软件的集成。 软件的结构。 嵌入式系统的软件是没有出口的,程序不能“退出”,整个程序的结构应该是无限的循环。 嵌入式系统的软件设计需要考虑硬件的支持、操作系统的支持、程序的初始化和引导等诸多的方面。 嵌入式系统的软件可能没有操作系统,在裸机上直接开发。,7,1.1嵌入式系统的软件组成,初始化引导代码 板级支持包 操作系统 通信协议栈 图形用户界面 应用软件,8,嵌入式系统的软件结构,9,1.2初始化引导代码,初始化引导代码是任务嵌入式系统上电复位后第一个执行的代码 复位向量 80186:FFFF0H MCS51:0 ARM:0 执行: 自检 引导操作系统 进入初始

3、化(硬件、软件),10,1.4嵌入式操作系统,复杂系统需要嵌入式操作系统的支持 简单系统可以不使用嵌入式操作系统 嵌入式操作系统可裁减 嵌入式操作系统的内核 处理机管理(任务、任务之间的通信和同步等) 存储器管理 完整的嵌入式操作系统 内核 文件系统 人机界面 设备驱动等,11,1.5网络协议栈,协议栈对于具有网络功能的嵌入式系统产品是必要的,目前嵌入式协议栈的提供有两种方式, 一种是独立的第三方协议栈产品, 一种是嵌入式操作系统的提供商提供协议栈产品。 协议栈的运行必须基于嵌入式操作系统的平台支持,但是并不意味着协议栈必须依赖于嵌入式操作系统的API。事实上,许多的嵌入式协议栈,如inter

4、 niche的嵌入式TCP/IP协议栈做到了与操作系统的最大独立性,可以与大多数嵌入式操作系统集成运行。,12,1.6应用软件,嵌入式系统的应用软件一般需要自主开发,不同的嵌入式系统的应用软件各具特色和功能。 例如常用的应用软件用于PDA上,记事本、通讯录、计算器等。 应用于工业现场总线领域的应用软件如控制软件等。 应用软件的开发基于操作系统、网络通信协议栈、图形用户接口、文件系统等一系列的低层API。,13,1.7 GUI,对于大多数嵌入式系统,图形用户接口是必要的,特别是随身设备如PDA、手机等。 GUI运行在嵌入式操作系统之上。用户开发的与用户交互的应用软件通过调用GUI的功能调用(AP

5、I)来实现。,14,2 监控程序-monitor,监控程序是运行在嵌入式系统中的一段代码,具有与用户进行交互,管理系统资源的功能,具有操作系统内核的一小部分功能。嵌入式系统正式运行时,通常不需要监控程序的干预。 目前开发嵌入式系统,监控程序的作为正在减少,只用在一些小的嵌入式系统中。 有的嵌入式控制器的制造商把监控程序驻留在ROM中提供给用户在开发时使用,提供的功能如程序下载、调试、固化等。 如motorola公司的某些8位嵌入式微控制器,15,3 裸机系统软件的设计方法,无操作系统的嵌入式软件设计 有操作系统的嵌入式软件设计,16,3.1无操作系统的嵌入式软件设计,前后台系统 中断(事件)驱

6、动系统 巡回服务系统 基于定时器的巡回服务系统,17,3.1.1前后台系统,后台: 应用程序是一个无限循环,巡回地执行多个事件,完成相应的操作。这一部分软件称为后台。通常在主程序main()中被调用。 前台: 中断服务程序处理异步事件,这一部分可以看成是前台。后台可以称为任务级,前台可以称为中断级。强实时性的的关键操作一定要用中断来实现。,18,程序框架-后台,main() /* 硬件初始化 */while(1) /* 后台程序 */action1();action2();action3(); ,action_1() /* 执行动作n */ action_n() /* 执行动作n */ ,19

7、,程序框架-前台,Isr_1() /* 中断1的中断服务程序 */ Isr_n() /* 中断2的中断服务程序 */ ,20,前后台系统的特点,实时性问题(不好) 中断服务程序提供的数据(实时性数据)只有在后台轮询到的时候才能得到运行 应用 小系统: 微波炉 电话机 玩具等,21,3.1.2中断(事件)驱动系统,原理 整个嵌入式系统软件由中断服务程序构成 主程序完成系统的初始化工作 应用 低功耗系统设计 事件驱动系统 构成 主程序-完成系统的初始化 中断服务例程-完成事务处理,22,中断驱动系统-主程序,main() /*完成系统的硬件初始化和数据结构的初始化(如果必要的话)*/ /* to

8、do: 系统的初始化 */while(1)。其它代码或enter_low_power(); /*进入低功耗状态*/ ,23,中断驱动系统-中断程序,Isr_n() /* 其中的一个中断服务程序 */ /* to do: 处理中断事件 */* to do: 中断返回 */ ,24,3.1.3巡回服务系统,应用: 嵌入式处理器/控制器的中断源不多 解决方案 增加中断源-需要硬件,成本高 软件方案-软件巡回服务 main() /* to do: 系统初始化 */while(1)action_1();/*巡回检测事件1并处理事件*/action_2();/*巡回检测事件2并处理事件*/action_n

9、();/*巡回检测事件n并处理事件*/ ,25,3.1.4基于定时器的巡回服务系统,普通巡回服务系统的缺点 处理器全速运行,开销大-功耗高-电池供电系统 降低处理器的工作时间-基于定时器的巡回服务系统 构成 主程序 定时器中断服务程序,26,主程序,main() /* to do: 系统初始化 */* to do: 设置定时器,如自动重新加载方式 */while(1)。其它代码或enter_low_power(); ,27,定时器中断服务例程,Isr_timer() /* 定时器的中断服务程序 */ action_1(); /*执行事件1的处理*/action_2(); /*执行事件2的处理*

10、/action_n(); /*执行事件n的处理*/ ,28,4 软件的移植,Contents 考虑移植的必要性 裸机系统的软件移植 应用软件的移植 可移植应用软件的设计思路,29,4.1移植的必要性,基于嵌入式处理器的原因 处理器的更新方式 兼容机更新方式-量变,短时间 80x86系列 新的体系结构代替旧的体系结构-质变,长时间 dragon ball:EZ,VZ: 68000体系,SZ:ARM体系 基于嵌入式操作系统的原因 旧的操作系统淘汰,新的操作系统被开发出来 应用软件需要运行于不同的嵌入式操作系统平台上,30,例:,硬件: Z80,STD总线工业PC 软件: DOS的DCSwindow

11、s平台、Vxworks平台,31,5.2裸机系统的软件移植,裸机系统的特点 通常比较简单(如8位字宽) 使用汇编语言或C语言开发 不易移植的情况 汇编语言开发 跨平台 模块化差,32,基于硬件抽象层可移植软件结构,应用软件,输入/输出模块,处理器硬件,应用软件,硬件抽象层,处理器硬件,输入/输出模块,硬件相关,可移植性结构,33,硬件抽象层的特点,硬件抽象层具有与硬件密切相关性; 为上层应用软件的开发提供统一的接口 接口定义的功能应包含硬件或系统所需硬件支持的所有功能; 接口定义简单明了,太多接口函数会增加软件模拟的复杂性; 具有可测性的接口设计有利于系统的软硬件测试和集成。,应用软件,硬件抽

12、象层,处理器硬件,输入/输出模块,34,硬件抽象层设计方法和原则,软件硬件并行、协同设计 分析接口的数据传输特性(双向/单向数据传输,字节型/数据帧型传输模式); 分析接口配置属性; 定义接口所需的相关函数。,35,应用软件的开发原则,不直接操作硬件 调用硬件抽象层的接口函数 完成面向应用的软件开发,36,硬件抽象层例子,RS232串行通信接口 发送功能 接收功能 模式、参数设置功能 控制功能 对于MCS51,8251,16450/16550,etc设计同样的接口函数, uart_put(uint8 ch, uint8 c); uart_get(uint8 ch, uint8 *buf); u

13、art_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);,37,应用程序中使用可移植的UART的功能,初始化uart uart_init()发送一个字符 uart_put()接收一个字符 uart_get(),38,主机 从uart接收字符,并发回uart 终端 从键盘上输入字符,屏幕上回显,Terminal键盘操作回显,39,te

14、rminal 键盘操作回显,main() /*主机程序*/ init_uart();while(1)c=uart_get();uart_put() ,40,terminal 键盘操作回显,main() /*终端程序*/ init_uart();while(1)c=key_get();/* read keyboard */uart_put();uart_get();printf(); ,41,5可移植应用软件的设计原则,嵌入式系统开发的初期考虑移植问题 设计原则 层次化 模块化 层次化与模块化的结合 可设计硬件抽象层 可设计操作系统抽象层,42,5.5.3层次化与模块化的结合,43,dataty

15、pe.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 int INT32; typedef float FP32; typedef double FP64;,可移植数据类型的定义,44,基于中间层的系统设计的特点,优点 可移植性好 缺点 效率低 例子: ODBC,45,小结,嵌入式系统的软件结构 裸机系统 含有操作系统的复杂系统 关于嵌入式应用软件的移植问题 可移植系统的设计,46,作业思考题,针对于每一种(共4种)裸机系统的设计方法,各举一个应用的例子,并用类C语言描述你的方案 熟悉嵌入式操作系统的基本概念和术语,47,The End,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 行业软件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报