嵌入式软件程序结构.ppt

上传人:牧羊曲112 文档编号:5970535 上传时间:2023-09-09 格式:PPT 页数:47 大小:1.40MB
返回 下载 相关 举报
嵌入式软件程序结构.ppt_第1页
第1页 / 共47页
嵌入式软件程序结构.ppt_第2页
第2页 / 共47页
嵌入式软件程序结构.ppt_第3页
第3页 / 共47页
嵌入式软件程序结构.ppt_第4页
第4页 / 共47页
嵌入式软件程序结构.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《嵌入式软件程序结构.ppt》由会员分享,可在线阅读,更多相关《嵌入式软件程序结构.ppt(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:FFFF0HMCS51:0ARM:0执行:自检引导操作系统进入初始化(硬件、软件),10,1.4嵌入式操作系统,复杂系统需要嵌入式操作系统的

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

4、行。,12,1.6应用软件,嵌入式系统的应用软件一般需要自主开发,不同的嵌入式系统的应用软件各具特色和功能。例如常用的应用软件用于PDA上,记事本、通讯录、计算器等。应用于工业现场总线领域的应用软件如控制软件等。应用软件的开发基于操作系统、网络通信协议栈、图形用户接口、文件系统等一系列的低层API。,13,1.7 GUI,对于大多数嵌入式系统,图形用户接口是必要的,特别是随身设备如PDA、手机等。GUI运行在嵌入式操作系统之上。用户开发的与用户交互的应用软件通过调用GUI的功能调用(API)来实现。,14,2 监控程序-monitor,监控程序是运行在嵌入式系统中的一段代码,具有与用户进行交互

5、,管理系统资源的功能,具有操作系统内核的一小部分功能。嵌入式系统正式运行时,通常不需要监控程序的干预。目前开发嵌入式系统,监控程序的作为正在减少,只用在一些小的嵌入式系统中。有的嵌入式控制器的制造商把监控程序驻留在ROM中提供给用户在开发时使用,提供的功能如程序下载、调试、固化等。如motorola公司的某些8位嵌入式微控制器,15,3 裸机系统软件的设计方法,无操作系统的嵌入式软件设计有操作系统的嵌入式软件设计,16,3.1无操作系统的嵌入式软件设计,前后台系统中断(事件)驱动系统巡回服务系统基于定时器的巡回服务系统,17,前后台系统,后台:应用程序是一个无限循环,巡回地执行多个事件,完成相

6、应的操作。这一部分软件称为后台。通常在主程序main()中被调用。前台:中断服务程序处理异步事件,这一部分可以看成是前台。后台可以称为任务级,前台可以称为中断级。强实时性的的关键操作一定要用中断来实现。,18,程序框架-后台,main()/*硬件初始化*/while(1)/*后台程序*/action1();action2();action3();,action_1()/*执行动作n*/action_n()/*执行动作n*/,19,程序框架-前台,Isr_1()/*中断1的中断服务程序*/Isr_n()/*中断2的中断服务程序*/,20,前后台系统的特点,实时性问题(不好)中断服务程序提供的数据

7、(实时性数据)只有在后台轮询到的时候才能得到运行应用小系统:微波炉电话机玩具等,21,中断(事件)驱动系统,原理整个嵌入式系统软件由中断服务程序构成主程序完成系统的初始化工作应用低功耗系统设计事件驱动系统构成主程序-完成系统的初始化中断服务例程-完成事务处理,22,中断驱动系统-主程序,main()/*完成系统的硬件初始化和数据结构的初始化(如果必要的话)*/*to do:系统的初始化*/while(1)。其它代码或 enter_low_power();/*进入低功耗状态*/,23,中断驱动系统-中断程序,Isr_n()/*其中的一个中断服务程序*/*to do:处理中断事件*/*to do:

8、中断返回*/,24,巡回服务系统,应用:嵌入式处理器/控制器的中断源不多解决方案增加中断源-需要硬件,成本高软件方案-软件巡回服务main()/*to do:系统初始化*/while(1)action_1();/*巡回检测事件1并处理事件*/action_2();/*巡回检测事件2并处理事件*/action_n();/*巡回检测事件n并处理事件*/,25,基于定时器的巡回服务系统,普通巡回服务系统的缺点处理器全速运行,开销大-功耗高-电池供电系统降低处理器的工作时间-基于定时器的巡回服务系统构成主程序定时器中断服务程序,26,主程序,main()/*to do:系统初始化*/*to do:设置

9、定时器,如自动重新加载方式*/while(1)。其它代码或 enter_low_power();,27,定时器中断服务例程,Isr_timer()/*定时器的中断服务程序*/action_1();/*执行事件1的处理*/action_2();/*执行事件2的处理*/action_n();/*执行事件n的处理*/,28,4 软件的移植,Contents考虑移植的必要性裸机系统的软件移植应用软件的移植可移植应用软件的设计思路,29,4.1移植的必要性,基于嵌入式处理器的原因处理器的更新方式兼容机更新方式-量变,短时间80 x86系列新的体系结构代替旧的体系结构-质变,长时间dragon ball:

10、EZ,VZ:68000体系,SZ:ARM体系基于嵌入式操作系统的原因旧的操作系统淘汰,新的操作系统被开发出来应用软件需要运行于不同的嵌入式操作系统平台上,30,例:,硬件:Z80,STD总线工业PC软件:DOS的DCSwindows平台、Vxworks平台,31,5.2裸机系统的软件移植,裸机系统的特点通常比较简单(如8位字宽)使用汇编语言或C语言开发不易移植的情况汇编语言开发跨平台模块化差,32,基于硬件抽象层可移植软件结构,应用软件,输入/输出模块,处理器硬件,应用软件,硬件抽象层,处理器硬件,输入/输出模块,硬件相关,可移植性结构,33,硬件抽象层的特点,硬件抽象层具有与硬件密切相关性;

11、为上层应用软件的开发提供统一的接口接口定义的功能应包含硬件或系统所需硬件支持的所有功能;接口定义简单明了,太多接口函数会增加软件模拟的复杂性;具有可测性的接口设计有利于系统的软硬件测试和集成。,应用软件,硬件抽象层,处理器硬件,输入/输出模块,34,硬件抽象层设计方法和原则,软件硬件并行、协同设计分析接口的数据传输特性(双向/单向数据传输,字节型/数据帧型传输模式);分析接口配置属性;定义接口所需的相关函数。,35,应用软件的开发原则,不直接操作硬件调用硬件抽象层的接口函数完成面向应用的软件开发,36,硬件抽象层例子,RS232串行通信接口发送功能接收功能模式、参数设置功能控制功能对于MCS5

12、1,8251,16450/16550,etc设计同样的接口函数,uart_put(uint8 ch,uint8 c);uart_get(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);,37,应用程序中使用可移植的UART的功能,初始化uartuart_init()发送一个字符uart_put()接收一个

13、字符uart_get(),38,主机从uart接收字符,并发回uart终端从键盘上输入字符,屏幕上回显,Terminal键盘操作回显,39,terminal 键盘操作回显,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可移植应用软件的设计原则,嵌入式系统开发的初期考虑移植问题设计原则层次化模块

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

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号