嵌入式系统开发过程
2.4.3.1 选择开发平台 1、科研开发阶段——
处理器的选处择理速硬度件平台的考虑1/2
项目的开发人员对选择的处理器是否 熟悉
处理器上的I/O功能是否满足系统的 要求
处理器的软件支持工具
处理器的调试支持
处理器制造商的支持可信度如何
1、科研开发阶段—— 选择硬件部件的考虑2/2
产品的需求量
的期望值是什么?
3、罗列用户的需求4/4
(16)如何给系统供电? (17)系统如何向用户通报故障? (18)是否需要任何手动或机械代用装置? (19)系统是否将具有远程诊断或更正问题的功
能? (20)其他问题
4、简单的需求表格
名称 目的 输入 输出 功能 性能 生产成本 功耗 物理尺寸和重量
5、需求的内部一致性(注)
2.2 嵌入式系统总体结构
2.2.1 硬件层 2.2.2 中间层 2.2.3 软件层 2.2.4 功能层
2.3 嵌入式系统的设计方法
2.3.1 嵌入式系统设计流程 2.3.2 嵌入式系统的一般设计方法 2.3.3 嵌入式系统的软硬件协同设计技术
2.3.1 嵌入式系统设计流程
2.3.2 嵌入式系统的一般设计方法
2.1 概述
先讲解嵌入式系统总体结构;再分析嵌入式系统设计 方法;系统地介绍嵌入式系统设计方法,采用软硬件 协同技术,完成和进行嵌入式系统设计;最后从嵌入 式系统的产品开发过程的4个阶段所需要做的工作等 方面来讨论嵌入式系统开发过程的一般知识,以及嵌 入式系统开发过程中的系统调试方法。读者通过本章 的学习,可以掌握作为一个项目的设计师和具体开发 人员所需要的知识,熟悉在各个阶段需要做的具体工 作,以保证项目按部就班地执行和完成。
方案
1. 先设计硬件 2. 先设计软件 3. 软硬件同时设计
根据项目的情况自由选择
2.4.2.5详细设计阶段-硬件设计
1. 设计硬件子系统:top-down方法
1. 分成模块 2. 设计框图 3. 例:CPU子系统、存储器子系统等
2. 定义硬件接口
1. I/O端口 2. 硬件寄存器 3. 共享内存 4. 硬件中断 5. 存储器空间分配 6. 处理器的运行速度
OEM板 7、其他。。。
2.4.1.3 对需求的结果进行检查
原因
需求分析阶段可能会发生错误-走弯路
目的
资料的全面性、工作的细致性
方法和内容
干扰的信息(多余) 漏掉的信息(缺少) 超前的信息(一些需要在设计阶段才提出的信息) 矛盾(相互制约) 模棱两可 无法实现
2.4.1.4 确定项目的约束条件
2.4.1 需求分析阶段
2.4.1.1 分析用户的需求 2.4.1.2 确定硬件软件 2.4.1.3 检查需求分析的结果 2.4.1.4 确定项目的约束条件 2.4.1.5 概要设计
2.4.1.1 分析用户的需求
1、分析用户对产品的需求 2、确认需求 3、罗列用户的需求 4、设计简单的需求表格 5、需求的内部一致性
例如:PC104和定制开发
目标市场的机会如何
购买和自制
软件对硬件的依赖程度
评估板的使用
2、科研开发阶段—— 选择操作系统
嵌入式操作系统的功能,支持部件 配套开发工具的支持 操作系统的移植难度 操作系统是否包括特殊的调试支持 操作系统的内存要求如何
项目程序员是否熟悉此操作系统,主要指此 操作系统通常提供的API
2.4.2.1详细设计阶段-审查分析资料
1. 审查分析资料(来自需求分析阶段)
。。。
2. 审查约束条件(来自需求分析阶段)
。。。
2.4.2.2详细设计阶段-体系结构设计
描述系统的功能如何实现是体系结构设计的 目的 。
决定因素
1. 系统是硬实时系统还是软实时系统 2. 操作系统是否需要嵌入 3. 物理系统的成本、尺寸和耗电量是否是产品成功
图2-3 单片机系统的开发流程
图2-4 嵌入式系统的开发流程
2.3.3 嵌入式系统的软硬件协同设计技术
2.4 嵌入式系统开发过程
2.4.1 需求分析阶段 2.4.2 详细设计阶段 2.4.3 实现阶段 2.4.4 测试阶段
嵌入式产品开发过程
需
详
系
系
求
细
统
统
分
设
实
测
析
计
现
试
概要设计 详细设计
Motorola
PowerPC系列、 Coldfire系列、 M.core系列等、 Dragon Ball系列,
NEC公司的VR系列, Hitachi公司SH3,SH4系列等等 其它
2.4.3 实现阶段
1、选择开发平台。。。
硬件平台、嵌入式操作系统、开发 语言、开发工具
2、软件开发过程。。。 3、开发阶段的文档。。。
2.4.1.5 概要设计
1、概要设计-初步设计 2、硬件设计
功能设计 结构化设计 物理设计
3、软件设计
功能分析与设计 软件模块划分 模块开发与实现
2.4.2 详细设计阶段
审查需求分析资料… 体系结构/整体设计… 硬件与软件划分… 硬件与软件的设计次序… 硬件设计… 软件设计… 检查设计…
第2章 嵌入式系统设计 与开发技术
教学目的:
掌握嵌入式系统设计过程; 掌握嵌入式系统开发流程; 掌握嵌入式系统调试技术,深入理解JTAG、
软/硬件仿真等; 通过本章学习,能够完成嵌入式系统的分
析与设计。 安排学时:6学时。
主要内容:
2.1 概述 2.2 嵌入式系统总体结构 2.3 嵌入式系统的设计方法 2.4 嵌入式系统开发过程 2.5 嵌入式系统的调试技术 2.6 嵌入式系统设计的新发展及其挑战 2.7 小结
3、罗列用户的需求2/4
(6)系统连接何种外设? (7)系统是否需要运行某些现存的软件? (8)系统处理哪种类型的数据? (9)系统是否要与别的系统通讯? (10)系统是单机还是网络系统?
3、罗列用户的需求3/4
(11)系统的响应时间是多少? (12)需要什么安全措施? (13)系统在什么样的环境下运行? (14)外部存储媒介和内存需要多大? (15)系统的可拆装性,可靠性和牢固性
2.4.2.8详细设计阶段-设计自动化
1. 系统设计阶段很重要,系统设计与开发时间 之比1:2
2. 系统的设计需要软件、硬件的综合知识 3. 容易出错-使用自动化工具
2.4.2.10详细设计阶段-硬件平台简 介 要求最好-多种评估方法
多个方案,选择最优
嵌入式系统硬件平台多样性,例如:
有ARM系列(目前有几十种基于ARM内核的处理器被使 用)、
准备交叉开发环境 编译和连接 重定位和下载 调试
在主机系统上验证软件 在目标系统上验证软件 代码优化-续…
代码优化1/2
清除程序中的无用代码 清除为调试所引入的代码 避免使用大型的库例程 避免使用递归式例程,因为它们需
要很大的堆栈 避免浮点操作
代码优化2/2
优化算法——乘法可以通过左移操作来完 成
2.4.1.4 确定项目的约束条件
约束条件 2/2
⑥ 员工对要解决的问题是否熟悉? ⑦ 员工和关键的人才地处何处? ⑧ 你是否必须要采用某种硬件? ⑨虑(注)
约束随时都可能出现 约束影响所选择的方法 约束会滋长新的约束 太多的约束将使进行中的项目成为不可能
在写完需求以后,对它们的内部一致性进行 检查:
是否忘记了给某个功能指定输入或输出? 是否考虑了系统运行的所有方式? 是否有一些不切实际的要求? 系统是否可以实现?
2.4.1.2 确定硬件软件
1、处理器选型 2、总线的吞吐量 3、操作系统 4、编程语言 5、第三方软件或库函数 6、第三方的硬件:开发板、评估板、
2.4.4 测试阶段
1、测试的原因 2、何时测试 3、测试内容 4、何时停止测试 5、选择测试用例 6、实时失败模式 7、评估测试的覆盖率 8、性能测试 9、维护和测试
2.4.4.1测试阶段-测试的原因
1. 开发过程中已经开始测试了——调试 2. 原因:
1. 在软件中找到错误(在这方面测试是惟一的方法) 2. 减少用户与公司的风险 3. 节约开发与维护成本 4. 提高系统的性能
文档1-技术文件目录
描述了所有的技术文件清单
文档2-技术任务书
任务来源、设计依据 产品用途及使用范围 主要工作原理及硬软件分工 基本参数、主要功能、技术指标 总部局、主要部件概述 标准化综合要求 提出国内外同类产品水平比较 关键技术预测 开发周期估算
文档3-技术方案报告
描述了科研开发的技术方案 与实际的项目有关
1、分析用户对产品的需求
用户:一般用户、公司内部的市场部门等 需求指标:
功能 价格 系统的尺寸和重量 功耗 其他。。。
2、确认需求
用户的表达方式 。。。
系统设计者的表达方式 。。。 交互的一致性 。。。
3、罗列用户的需求1/4
(1)系统用于什么任务? (2)系统从用户或其他源接收什么输入? (3)系统从用户或其他源输出什么? (4)用户想要如何同系统打交道? (5)系统的重量和体积如何?
的关键因素 4. 选择处理器和相关硬件 5. 其他
2.4.2.3详细设计阶段-硬件与软件划 分
决定哪些用硬件实现,哪些用软件实现?
例如:
1. 浮点运算 2. 网络通信控制器实现的功能 3. 软调制解调器/硬调制解调器 4. 软件压缩解压/硬件压缩解压图像
2.4.2.4详细设计阶段-硬件与软件设计次 序
2.4.4.2测试阶段-何时测试
1. 分布于开发的每个阶段——debug 2. 单元测试-小模块测试/调试 3. 回归测试
1. 只测试一遍是不够的。每次修改后都应当重新测 试以确认这些修改会不会无意中影响一些看似与 之无关的行为,这被称作回归测试。