7.嵌入式软件设计方法
0、基本特点归纳
实时性
嵌入式系统都是实时系统,因而其软件也必须具有实时性; 应用环境不同,对实时性的要求也不同; 许多嵌入式软件(如军用软件系统),特别强调快速启动、随时就绪。
异步事件的并发处理
现代嵌入式系统大多是实时多任务系统; 系统实时性要求嵌入式软件对各类外部事件能够异步处理; 外部事件的随机性要求嵌入式软件能对任务做并发处理。
实用性
适用性
模块化设计使嵌入式软件应该能比较方便地运用到各种嵌入式系统中,而 不破坏或更改原有的系统特性和功能; 嵌入式软件①要小巧、占用资源少②要使用灵活,尽量优化配置,减小对 系统的整体继承性,升级更换灵活方便③软件规模和所拥有的模块可根据应 用的特定要求进行配置,以期更好地适应应用环境; RTOS作为嵌入式系统的基础软件,其模块应可裁剪,以满足应用需要; 外设、芯片等可选择性使用。
2
muchunyang@
7.1 嵌入式软件工程概述
1、嵌入式软件的生命周期
生命周期的4个阶段
①系统概念:用户以软件 产品开发任务书的形式给出 其对产品的概念描述。 ②开发阶段:根据任务书 开发嵌入式软件, 验收标准是 任务书中给出的产品基线(包 括各类软、硬件指标,环境 要求等)。 ③产品阶段:依据环境和 市场对开发阶段的结果—— 嵌入式软件产品原型,进行 产品化。 ④运行维护阶段:产品投 放市场之后的工作。
课程名称:嵌入式系统理论及应用
Agenda: 7.1 嵌入式软件工程概述 7.2 嵌入式软件的分类 7.3 嵌入式软件的特点 7.4 嵌入式软件设计方法 7.5 嵌入式软件设计的一些基本原则
主讲:穆春阳
电气信息工程学院
muchunyang@
7.1 嵌入式软件工程概述
0、概述
软件工程
定义:按照工程的规律来组织软件的生产与开发。 环节:软件产品定义、需求分析、软件设计、软件编码、测试、验证、评 审、管理等。 需考虑的因素: 软件的生命周期:生命周期模型是分阶段开发的基本方法; 实时、并发; 信息隐藏、面向对象等。
主讲:穆春阳
电气信息工程学院
muchunyang@
7.2 嵌入式软件的分类
0、简单分类
分3类:
嵌入式基础软件: 也称为嵌入式系统软件,提供 对硬件资源的抽象描述,包括① 系统引导程序、BSP、RTOS等, 负责系统软硬件资源的分配、调 度、并发控制。 嵌入式支撑软件: 即工具软件,用于帮助和支持 嵌入式软件开发的软件,通常包 括嵌入式数据库系统、嵌入式文 件系统、嵌入式软件的编辑/编译/ 调试/测试/下载等开发工具。 嵌入式应用软件: 即最终产品的应用软件,是针 对特定应用领域、基于特定硬件 平台、用于实现用户目标的嵌入 式软件系统。
17 muchunyang@
7.4 嵌入式软件设计方法
1、嵌入式软件开发过程
嵌入式软件开发步骤
③选择操作系统 (a)嵌入式软件系统最内部的控制管理程序有2种方法: a)自己编写:适用于简单系统,如电视机控制系统。 b)使用现成的系统——RTOS:适用于控制管理系统复杂的情况,如手 机、交换机的内部控制等。 (b)RTOS的选择与嵌入式微处理器密切相关,需要适应应用环境的需求。 选择原则: a)不同应用领域需要不同的OS支持:应用对OS的需求; b)实时性需求决定了可选用的嵌入式OS; c)对微处理器支持的限制; d)RTOS自身功能性的限制:面向特定应用; e) RTOS成本限制:是否有版税; f)占用资源情况:最重要的是存储资源; g)对嵌入式软件开发语言的支持情况:一般都支持汇编和C语言。
应用/操作系统一体化
大多数嵌入式设备的资源有限,不大可能预装操作系统和设备驱动程序; 普遍做法:根据应用目标定制操作系统和相关外设,将它们以动态链接库 (Lib)的形式与应用系统编译连接成一个单独的可执行程序,下载到目标系统 中运行。 例外,资源较为丰富的高端嵌入式应用,可以采用Windows CE或嵌入式 Linux预装在设备上,在其上添加应用软件。
8 muchunyang@
课程名称:嵌入式系统理论及应用
Agenda: 7.1 嵌入式软件工程概述 7.2 嵌入式软件的分类 7.3 嵌入式软件的特点 7.4 嵌入式软件设计方法 7.5 嵌入式软件设计的一些基本原则
主讲:穆春阳
电气信息工程学院
muchunyang@
7.3 嵌入式软件的特点
注意:生命周期各阶段的结果可认为是下一阶段的输入条件,在进入下一阶段之前必须对其验证和确认。
5 muchunyang@
7.1 嵌入式软件工程概述
2、信息隐藏
概念:
将系统中易发生变化的各个方面,如需求、接口、设计决策等,隐藏在独立的 信息隐藏模块之中(称为模块的秘密),而每个模块都通过自己的抽象接口向使用 者展示模块的外部视图。
Agenda: 7.1 嵌入式软件工程概述 7.2 嵌入式软件的分类 7.3 嵌入式软件的特点 7.4 嵌入式软件设计方法 7.5 嵌入式软件设计的一些基本原则
主讲:穆春阳
电气信息工程学院
muchunyang@
7.4 嵌入式软件设计方法
0、嵌入式软件设计
早期的软件设计
由于硬件资源的缺乏和软件相对简单,人们非常注重算法的高效和代码的 精炼; 软件的优劣常取决于代码行数。
muchunyang@
11
7.3 嵌入式软件的特点
0、基本特点归纳(续2)
鲁棒性
要求高可靠性; 强调容错处理和出错恢复(包括自动恢复)功能,确保系统不会因为软件错 误而崩溃,甚至导致灾难发生。
Hale Waihona Puke 够用即可出于成本限制,大多数嵌入式系统对所有资源有严格限制,够用即可,因 而嵌入式软件也要遵循此原则,尽量精简代码,不预留不必要的接口或功能 模块; 对具体的应用,可尽量少地考虑移植问题。
7.4 嵌入式软件设计方法
1、嵌入式软件开发过程
嵌入式软件开发的特点
必须充分考虑硬件环境的特点,使软 件适用于硬件; 系统的修改原则是“软件优先”,即出 现需求错误时,一般不改动系统的总体 设计,特别是硬件系统的设计,而是关 注软件设计过程。
嵌入式软件开发步骤
①确定嵌入式软件的需求; ②选择微处理器和相关硬件设备; ③选择操作系统; ④确定软件体系结构; ⑤选择开发平台; ⑥嵌入式软件设计; ⑦编码调试; ⑧软件测试。
10 muchunyang@
7.3 嵌入式软件的特点
0、基本特点归纳(续1)
应用可固化
嵌入式应用软件最终都是固化在目标系统中运行的。 固化存储媒介EPROM、Flash、电子盘(DOC、DOM)等,其容量有限、 价格昂贵,因而要求嵌入式软件尽量精简。 嵌入式软件是为嵌入式系统服务的,必须与外部硬件和设备紧密联系; 大多数嵌入式软件是根据应用需求定向开发的,面向产业、面向市场; 每种嵌入式软件都有自己独特的应用环境和实用价值; 需要优秀的软件开发人员具有特定的行业经验。
实质:
尽量消除所有全局信息,将所使用的各类信息封装到不同的模块中; 减少系统修改的复杂程度; 使模块具有更多的可复用性。
应用:
面向对象技术 组件技术
6
muchunyang@
课程名称:嵌入式系统理论及应用
Agenda: 7.1 嵌入式软件工程概述 7.2 嵌入式软件的分类 7.3 嵌入式软件的特点 7.4 嵌入式软件设计方法 7.5 嵌入式软件设计的一些基本原则
发展中的嵌入式软件设计
硬件的迅速发展,使嵌入式软件质量成为制约嵌入式系统的最大问题。 嵌入式软件系统开发的首要问题: 提供更高的实时性、可靠性和可用性; 降低成本,缩短系统开发周期。 在几十年的嵌入式系统发展过程中,出现了众多的嵌入式软件设计模型和 开发方法。
14
muchunyang@
muchunyang@
4
7.1 嵌入式软件工程概述
1、嵌入式软件的生命周期
验证与确认(V&V)
定义 ①验证(Verification):通过提供客观证据对规定要求已得到满足的认定。 ②确认(Validation):通过提供客观证据对特定的预期用途或应用要求已得到 满足的认定。 区别: Verification —— Are we producing the product right? 表明的是满足规定要求,要保证“做得正确”,强调过程的正确性。 Validation —— Are we producing the right product? 表明的是满足预期用途或应用要求,要保证“做的东西正确”,强调结 果的正确性。简单讲,就是指检查最终产品是否达到顾客使用要求。 V&V方法: ①代码检查:在软件开发前期的重要方法,通过模拟检查设计的正确性。 ②审核:用形式的、有效的和经济的方法查找设计和编程中的错误。 ③测试和正确性证明等。
16 muchunyang@
7.4 嵌入式软件设计方法
1、嵌入式软件开发过程
嵌入式软件开发步骤
②选择微处理器和相关硬件设备 (a)软件需求确定后,并不能直接开始嵌入式软件设计。 (b)嵌入式软件设计之前,最重要一步是根据需求选择恰当的微处理器和外 设部件。 选择原则: a)嵌入式软件系统很小,仅包含简单的处理和I/O时,最好选择8bits微处 理器。【例】电视、电冰箱、空调等家电、电动玩具、VCD、采样控制等。 b)当嵌入式软件相对复杂,但尚不足以需要多任务系统时,使用16bits微 处理器。【例】数字信号处理。 c)当嵌入式软件系统必须使用RTOS提供多任务支持时,只能使用32bits 及以上的微处理器。【例】智能手机、PDA、路由器、交换机、上网设备、 带GUI的设备等。 d)若嵌入式软件涉及大量的信号处理和数学计算,应选择DSP处理器。 【例】音频采集压缩、视频信号处理、图像处理等。 (c)确定微处理器后,接下来根据应用需要选择相关硬件。 【例】可能需要的硬件部件:存储器芯片 、串/并口、网口、定时器、 Watchdog、FPGA、显示接口等。