当前位置:
文档之家› 嵌入式系统及应用——第7章 嵌入式软件设计方法
嵌入式系统及应用——第7章 嵌入式软件设计方法
统。
构成
• •
一个有限的库所(place)集合,表示系统的状态 一个有限的变迁(transition)集合,表示系统中的 事件
•
库所:一个有限的连接库所到变迁或者反向的有向箭
头的集合,又分输入和输出 令牌(Token)是库所中的动态对象,可以从一个库所
•
移动到另一个库所
定义多进程多任务关系:同 步、竞争、并发、评价
一、语言描述
• 必不可少的分析设计方法,优缺点突出
• 对其他方法的补充
交叉调试器的调试流程
(1)连接宿主机与目标机 (2)将目标程序从宿主机下载到目标机 (3)在源程序中设置调试开发位置和断点 (4)启动目标程序,运行到准备调试位置,等待下一调试 命令 (5)返回当前信息 (6)单步调试或断点调试 (7)反复执行(5)和(6),直到收到停止调试命令,或 程序执行完成
控制执行过程
按下“上电”按钮,系统进入了上电状态。
上电成功后,系统进入了手动状态。此时,操作者 可以通过程序选择开关选择程序 按下“运行”按钮,则选定的程序开始运行,系统 转为运行态。
程序运行中如果按下“停止”键,程序被挂起。之 后,操作者可以按下“运行”键,使程序恢复执行, 也可按下“结束”键,结束程序。
按下“结束”键后,系统进入终止态。当程序最终 终止执行时,系统返回手动状态。
需求说明必须包含的内容
1) 硬件接口
必要特征、任意细节、输
入/输出
2) 软件功能 3) 状态图
功能结构,条件/事件, 所用模型,特殊处理 一种可视化的形式化方法, 用于说明复杂系统的行为,所有行为由 外部刺激产生。
- 状态、事件、条件、变迁
状态图示例
需求考虑
1) 所有与设计相关的需求(功能、非功能)必
仿真调试
交叉调试
成功
基本的编码原则
• 清除无用代码
• 避免使用递归 • 减少浮点运算
资源 速度
• 精简库函数
• 清除调试代码
精炼
8. 软件测试
• 基本方法
• 特殊性
类似于一般软件测试 可靠性测试 实时性测试 并发性测试 资源占用测试 ……
7.2 常规设计方法
通用软件设计 方法在嵌入式软件
开发领域的应用
八、数据流图
DFD,描述数据转换和流动情
况,确定功能关联
查询结果 名次信息
查询请求
查询成绩
名次信息
学生名次
请求分类
管理
学籍管理
成绩信息 总体学生成绩
学生成绩
合法请求
成绩处理 学科成绩
成绩管理
学籍管理的数据流图
7.3 实时多任务设计
• 起因:常规方法的不足
• 重点:并发性、实时性设计
• 方式:传统方法的实时性改造 • 要点:多任务划分
它以一种类似于真正的编写代码的方式来说明 系统。 比直接应用语言来描述系统需求更抽象,而同时 比前述所有方法都更接近实际的编程语言。 最大的缺点是易出错、难查错。
x ::=y ::=0; for i=1...20 begin x::=x+1 if x ≥10 then y:+x*3; else y ::=y*2; end print x,y;
1 确定嵌入式软件的需求
功能需求 • 基本功能/扩展功能 • 对应于软件功能的硬件 非功能需求 • 外观、尺寸、功耗、成本、… • 实时、安全、可靠、…
面向开发者的需求
需求说明的要点
1) 只指明外部行为,不考虑特殊实现 2) 列出实现的限制,必须特别说明硬件接口细节
(针对嵌入式系统)
3) 文档易修改 4) 必须记录有关系统生存期的一些考虑
5) 必须特征化针对异常事件的响应,包括
- 资源失败
临时或永久
- 非正确输入 输入、比较、出错、输出
- 非正确内部数据 不一致、比较、输出
最重要说明
时间限制
1) 与所委派事件相关,可以是绝对时间
- 给定时间达到后,事件发生
- 超过限定时间,事件不允许发生
- 在事件发生前可以产生哪些计算活动
2) 根据优先级响应某种事件
放弃
Y
缓冲区满
N
加入缓冲区 结束
四、结构图 —— 体系结构
企业管理
研发
采购
生产
仓储
销售
财务
其他
计划 市场 物料 产品
计划 供货商 报价 采购单
计划 产能 车间 领料
进货 出货 库存 盘点
计划 承销商 定单 销售单
总帐 应收 应付 审核 结转
员工 工资 检验
售后
日报
货价
运输
五、伪代码 —— 类编码
P
⑴ 松耦合
应答R ⑵ 紧耦合 消息通信模块
DARTS——任务接口(续)
任务A 写数据 读数据 数据 存储区 消息隐藏模块
源S:发事件信号(E) S D 事件E 任务同步模块 目标D:等待事件(E)
读数据
任务B
DARTS示例——机器人控制
ON RUN STOP OFF END
Program Select
始、终止)
• 时间限制
在满足了所有启动条件后,对一 个可执行对象开始执行和必须终止的约束: start、deadline
关注
• 并发任务之间的协作关系
互斥问题
同步问题 • 信息隐藏
任务之间、模块之间接口
消除全局变量
二、 嵌入式软件的分类
嵌入式应用软件
多媒体应用 传感器网络 信息家电
嵌 入 式 软 件 系 统
六
初始化
有 限 状 态 机
就绪
调度 抢占
条件 满足 等待条 件
运行
等待 挂起 解挂 等待挂起 取消等待
终止
挂起 解挂
挂起
描述控 制特性
开始 终止
待用 进程状态转移图
结束
七、Petri网 一种使用图形方式对系统进行需求规格
说明的技术,用来定义多进程、多任务系
统的数学模型,易于描述系统的并发、竞
争、同步等特征,并可用于评价和改进系
嵌入式软件的生命期
系统概念 任务书 运行维护 开发阶段 产品基线 产品阶段
需求分析 审核 概要设计 审核 详细设计 审核 模块实现 审核 系统集成 验证 单元集成 验证 测 试
关注嵌入式实时系统
• 任务的实时性 • 时间特性
强调计算状态的时间边界和它们
基于时间点、基于时间间歇(开
之间的关系
• 时间表达
基于事件、基于结构
1.
RTSAD方法
Real time Structured Analysis and Design
• RTSA阶段:实时系统需求模型
• RTSD阶段:实时系统设计
• 基本概念:模块内聚
模块耦合 数据流、控制流
RTSA主要活动及其结果
定义系统边界 数据流/控制流的分解 定义控制规范 描述功能 开发数据字典 系统边界说明 数据流图或控制流图 数据字典 功能、转换、过程说明 状态转换图
RTSD主要活动及其结果
处理器分配 结构图 模块的输入/输出描述 任务分配 模块内函数说明 结构化设计 函数功能流程图
功能
功能、转换、过程
RTSAD示例
控制按钮
选择 输入
时钟管理
时间 设置 里程 数据
行驶控制杆
控制 命令
里程管理
驱动轴传感
轴 数据 引擎 数据
汽车行驶 监控系统
制动 数据 速度 选择
嵌入式系统及应用
第七章 嵌入式软件设计方法
核心内容
• 嵌入式软件工程思想嵌入式软件 开发过程 • 一些基本的设计原则
• 通用的设计方法
• 专用的设计方法
• 设计方法的发展
7.1 嵌入式软件工程
• 嵌入式软件的分类 • 嵌入式软件的特点
• 嵌入式软件生命期
一、嵌入式软件工程的基本思想
在传统的软件工程方法基础上, 面向增加实时、并发等设计技术而形 成的。
DARTS——任务划分原则
I/O依赖性
直接操作I/O设备
时间关键性 对时间有很强要求,必须具 有高优先级 周期执行 时间内聚 功能内聚 多个,同一时段,重复 多个,功能紧密,交互多
计算需求 大量、低优先级
DARTS——任务接口
生产者P:发送消息(C,M),等待应答(C,R) 生产者P:发送消息(C,M) 消费者C:接收消息(P,M) 消费者C:接收消息(P,M),发应答(P,R) 消息M C P C
制动传感
油量 数据
引擎传感
油箱传感
调速机制
汽车行驶监控功能
汽车行驶监控——车速数据流
制动监视 引擎监视 测量车速 制动信息 引擎信息 测量值 车速控制 设置信息 调速数据 速度设置 调速 速度值 当前速度
汽车行驶监控——车速状态转换
设置速度
进入巡 航状态 巡航 松油门 关引擎 踩制动 松制动 停止 加速 踩油门
★
p4 t3 t4
p5
p4 t3
p1 p2
p5 t4
③ 点燃t2
④ 点燃t3
t1
p3
t2
★
★
p4 t3 t4
p5
⑤ 点燃t1
优缺点
• 优点在于简单易用,状态间的关系能够直观看到。
• 最大的缺点是:任何时刻系统只能有一个状态, 无法表示并发性,不能描述异步并发的系统。
• 系统部件较多时,状态数随之增加,导致复杂性 显著增长。
变迁 ★ 输 入 库 所 前 提 条 件 输 出 库 所 后 继 条 件
简单Petri网模型
Petri网演化过程