嵌入式系统开发过程课件.ppt
第2章 嵌入式系统设计 与开发技术,第2章 嵌入式系统设计,教学目的:,掌握嵌入式系统设计过程;掌握嵌入式系统开发流程;掌握嵌入式系统调试技术,深入理解JTAG、软/硬件仿真等;通过本章学习,能够完成嵌入式系统的分析与设计。安排学时:6学时。,教学目的:掌握嵌入式系统设计过程;,主要内容:,2.1 概述2.2 嵌入式系统总体结构2.3 嵌入式系统的设计方法2.4 嵌入式系统开发过程2.5 嵌入式系统的调试技术2.6 嵌入式系统设计的新发展及其挑战 2.7 小结,主要内容:2.1 概述,2.1 概述,先讲解嵌入式系统总体结构;再分析嵌入式系统设计方法;系统地介绍嵌入式系统设计方法,采用软硬件协同技术,完成和进行嵌入式系统设计;最后从嵌入式系统的产品开发过程的4个阶段所需要做的工作等方面来讨论嵌入式系统开发过程的一般知识,以及嵌入式系统开发过程中的系统调试方法。读者通过本章的学习,可以掌握作为一个项目的设计师和具体开发人员所需要的知识,熟悉在各个阶段需要做的具体工作,以保证项目按部就班地执行和完成。,2.1 概述先讲解嵌入式系统总体结构;再分析嵌入式系统设计,2.2 嵌入式系统总体结构,2.2.1 硬件层2.2.2 中间层2.2.3 软件层2.2.4 功能层,2.2 嵌入式系统总体结构2.2.1 硬件层,嵌入式系统开发过程课件,2.3 嵌入式系统的设计方法,2.3.1 嵌入式系统设计流程2.3.2 嵌入式系统的一般设计方法2.3.3 嵌入式系统的软硬件协同设计技术,2.3 嵌入式系统的设计方法2.3.1 嵌入式系统设计流,2.3.1 嵌入式系统设计流程,2.3.1 嵌入式系统设计流程,2.3.2 嵌入式系统的一般设计方法,图23 单片机系统的开发流程,2.3.2 嵌入式系统的一般设计方法图23 单片机系统的,图24 嵌入式系统的开发流程,图24 嵌入式系统的开发流程,2.3.3 嵌入式系统的软硬件协同设计技术,2.3.3 嵌入式系统的软硬件协同设计技术,嵌入式系统开发过程课件,2.4 嵌入式系统开发过程,2.4.1 需求分析阶段2.4.2 详细设计阶段 2.4.3 实现阶段 2.4.4 测试阶段,2.4 嵌入式系统开发过程2.4.1 需求分析阶段,需求分析,系统测试,系统实现,详细设计,概要设计详细设计,嵌入式产品开发过程,需求分析系统测试系统实现详细设计概要设计嵌入式产品开发过程,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 需求分析阶段2.4.1.1 分析用户的需求,2.4.1.1 分析用户的需求,1、分析用户对产品的需求2、确认需求3、罗列用户的需求4、设计简单的需求表格5、需求的内部一致性,2.4.1.1 分析用户的需求1、分析用户对产品的需求,1、分析用户对产品的需求,用户:一般用户、公司内部的市场部门等需求指标:功能价格系统的尺寸和重量功耗其他。,1、分析用户对产品的需求用户:一般用户、公司内部的市场部门等,2、确认需求,用户的表达方式 。系统设计者的表达方式 。交互的一致性 。,2、确认需求用户的表达方式,3、罗列用户的需求1/4,(1)系统用于什么任务?(2)系统从用户或其他源接收什么输入?(3)系统从用户或其他源输出什么?(4)用户想要如何同系统打交道?(5)系统的重量和体积如何?,3、罗列用户的需求1/4(1)系统用于什么任务?,3、罗列用户的需求2/4,(6)系统连接何种外设?(7)系统是否需要运行某些现存的软件?(8)系统处理哪种类型的数据?(9)系统是否要与别的系统通讯?(10)系统是单机还是网络系统?,3、罗列用户的需求2/4(6)系统连接何种外设?,3、罗列用户的需求3/4,(11)系统的响应时间是多少?(12)需要什么安全措施?(13)系统在什么样的环境下运行?(14)外部存储媒介和内存需要多大?(15)系统的可拆装性,可靠性和牢固性的期望值是什么?,3、罗列用户的需求3/4(11)系统的响应时间是多少?,3、罗列用户的需求4/4,(16)如何给系统供电?(17)系统如何向用户通报故障?(18)是否需要任何手动或机械代用装置?(19)系统是否将具有远程诊断或更正问题的功能?(20)其他问题,3、罗列用户的需求4/4(16)如何给系统供电?,4、简单的需求表格,4、简单的需求表格名称目的输入输出功能性能生产成本功耗物理尺,5、需求的内部一致性(注),在写完需求以后,对它们的内部一致性进行检查:是否忘记了给某个功能指定输入或输出?是否考虑了系统运行的所有方式?是否有一些不切实际的要求?系统是否可以实现?,5、需求的内部一致性(注)在写完需求以后,对它们的内部一致性,2.4.1.2 确定硬件软件,1、处理器选型2、总线的吞吐量3、操作系统4、编程语言5、第三方软件或库函数6、第三方的硬件:开发板、评估板、OEM板7、其他。,2.4.1.2 确定硬件软件1、处理器选型,2.4.1.3 对需求的结果进行检查,原因需求分析阶段可能会发生错误-走弯路目的资料的全面性、工作的细致性方法和内容干扰的信息(多余)漏掉的信息(缺少)超前的信息(一些需要在设计阶段才提出的信息)矛盾(相互制约)模棱两可无法实现,2.4.1.3 对需求的结果进行检查原因,2.4.1.4 确定项目的约束条件,约束条件:属于项目实施过程中的不利因素,指的是项目实施过程中限制项目按时圆满完成的内部和外部因素。约束条件 是否要满足项目的阶段性或竣工的工期限制?项目的部分或全体是否限制在一个固定的预算内?分派到该项目的最大人数是多少?每个人员每周在此项目上能工作多少小时?员工的技术知识和经验是否足够?,2.4.1.4 确定项目的约束条件约束条件:属于项目实施过程,2.4.1.4 确定项目的约束条件,约束条件 2/2员工对要解决的问题是否熟悉?员工和关键的人才地处何处?你是否必须要采用某种硬件?你是否必须要采用某种工具软件?,2.4.1.4 确定项目的约束条件约束条件 2/2,约束(限制)条件的考虑(注),约束随时都可能出现约束影响所选择的方法约束会滋长新的约束太多的约束将使进行中的项目成为不可能,约束(限制)条件的考虑(注)约束随时都可能出现,2.4.1.5 概要设计,1、概要设计-初步设计2、硬件设计功能设计结构化设计物理设计3、软件设计功能分析与设计软件模块划分模块开发与实现,2.4.1.5 概要设计1、概要设计-初步设计,2.4.2 详细设计阶段,审查需求分析资料体系结构/整体设计硬件与软件划分硬件与软件的设计次序硬件设计软件设计检查设计,2.4.2 详细设计阶段审查需求分析资料,2.4.2.1详细设计阶段-审查分析资料,审查分析资料(来自需求分析阶段)。审查约束条件(来自需求分析阶段)。,2.4.2.1详细设计阶段-审查分析资料审查分析资料(来自需,2.4.2.2详细设计阶段-体系结构设计,描述系统的功能如何实现是体系结构设计的目的 。决定因素系统是硬实时系统还是软实时系统操作系统是否需要嵌入物理系统的成本、尺寸和耗电量是否是产品成功的关键因素选择处理器和相关硬件其他,2.4.2.2详细设计阶段-体系结构设计描述系统的功能如何实,2.4.2.3详细设计阶段-硬件与软件划分,决定哪些用硬件实现,哪些用软件实现?例如:浮点运算网络通信控制器实现的功能软调制解调器/硬调制解调器软件压缩解压/硬件压缩解压图像,2.4.2.3详细设计阶段-硬件与软件划分决定哪些用硬件实现,2.4.2.4详细设计阶段-硬件与软件设计次序,方案先设计硬件先设计软件软硬件同时设计根据项目的情况自由选择,2.4.2.4详细设计阶段-硬件与软件设计次序方案,2.4.2.5详细设计阶段-硬件设计,设计硬件子系统:top-down方法分成模块设计框图例:CPU子系统、存储器子系统等定义硬件接口I/O端口硬件寄存器共享内存硬件中断存储器空间分配处理器的运行速度,2.4.2.5详细设计阶段-硬件设计设计硬件子系统:top-,2.4.2.6详细设计阶段-软件设计,设计软件子系统总体设计、模块设计定义软件接口模块接口、函数接口,2.4.2.6详细设计阶段-软件设计设计软件子系统,2.4.2.7详细设计阶段-检查设计,小项目自己审查设计文档中等项目拿给同事朋友并向他们解释你的设计 大型项目-审查会设计者应作一个更正式的报告。由于这是一个设计审查会,召集一群人,主要由工程师组成,并尽可能包括一些对项目有不同看法角度的成员,如做市场的人员、最终用户,2.4.2.7详细设计阶段-检查设计小项目,2.4.2.8详细设计阶段-设计自动化,系统设计阶段很重要,系统设计与开发时间之比1:2系统的设计需要软件、硬件的综合知识容易出错-使用自动化工具,2.4.2.8详细设计阶段-设计自动化系统设计阶段很重要,系,2.4.2.10详细设计阶段-硬件平台简介,要求最好-多种评估方法多个方案,选择最优嵌入式系统硬件平台多样性,例如:有ARM系列(目前有几十种基于ARM内核的处理器被使用)、MotorolaPowerPC系列、Coldfire系列、M.core系列等、Dragon Ball系列,NEC公司的VR系列,Hitachi公司SH3,SH4系列等等 其它,2.4.2.10详细设计阶段-硬件平台简介要求最好-多种评估,2.4.3 实现阶段,1、选择开发平台。硬件平台、嵌入式操作系统、开发语言、开发工具2、软件开发过程。3、开发阶段的文档。,2.4.3 实现阶段1、选择开发平台。,2.4.3.1 选择开发平台 1、科研开发阶段 选择硬件平台的考虑1/2,处理器的处理速度 项目的开发人员对选择的处理器是否熟悉处理器上的I/O功能是否满足系统的要求处理器的软件支持工具处理器的调试支持处理器制造商的支持可信度如何,2.4.3.1 选择开发平台 1、科研开发阶段,1、科研开发阶段 选择硬件部件的考虑2/2,产品的需求量例如:PC104和定制开发目标市场的机会如何 购买和自制软件对硬件的依赖程度评估板的使用,1、科研开发阶段 选,2、科研开发阶段 选择操作系统,嵌入式操作系统的功能,支持部件配套开发工具的支持操作系统的移植难度操作系统是否包括特殊的调试支持操作系统的内存要求如何项目程序员是否熟悉此操作系统,主要指此操作系统通常提供的API操作系统是否包括所有需要的部件操作系统是否有目标硬件的驱动程序操作系统是否有可伸缩性,2、科研开发阶段,3、科研开发阶段 选择编程语言考虑,软件开发人员最熟练的语言是哪种语言使用的广泛程度语言的性能如何例如:C语言、汇编语言、Java,C+等,3、科研开发阶段,2.4.3.2科研开发阶段-软件开发,嵌入式系统的软件开发过程准备交叉开发环境编译和连接重定位和下载调试在主机系统上验证软件在目标系统上验证软件代码优化-续,2.4.3.2科研开发阶段-软件开发嵌入式系统的软件开发过程,代码优化1/2,清除程序中的无用代码清除为调试所引入的代码 避免使用大型的库例程 避免使用递归式例程,因为它们需要很大的堆栈避免浮点操作,代码优化1/2,代码优化2/2,优化算法乘法可以通过左移操作来完成 将访问最频繁的变量声明为寄存器变量或自动变量 只要可能,尽量使用无符号数据类型 如果某个函数或例程消耗大量的计算时间,那么就将该函数或例程用汇编语言来编码 充分利用编译器提供的优化,代码优化2/2优化算法乘法可以通过左移操作来完成,2.4.3.3科研开发阶段文档,技术文件目录技术任务书技术方案报告产品标准(草案)技术条件(进厂)可靠性技术设计技术设计说明书形式试验报告试制报告,2.4.3.3科研开发阶段文档技术文件目录,文档1-技术文件目录,描述了所有的技术文件清单,文档1-技术文件目录描述了所有的技术文件清单,文档2-技术任务书,任务来源、设计依据产品用途及使用范围主要工作原理及硬软件分工基本参数、主要功能、技术指标总部局、主要部件概述标准化综合要求提出国内外同类产品水平比较关键技术预测开发周期估算,文档2-技术任务书任务来源、设计依据,文档3-技术方案报告,描述了科研开发的技术方案与实际的项目有关,文档3-技术方案报告描述了科研开发的技术方案,文档4-产品标准,产品范围引用标准基本参数及形式技术要求(功能、性能、影响量)试验方法(采用国际标准)检验规则,文档4-产品标准产品范围,文档5-技术条件(进厂),使用范围技术要求试验方法,文档5-技术条件(进厂)使用范围,文档6-技术设计说明书-硬件,总体方案产品结构产品性能电路工作原理分析、技巧、结构工艺合理性主要故障鉴别方法,文档6-技术设计说明书-硬件总体方案,文档6-技术设计说明书-软件,总体方案及体系结构任务调度原理或总控流程说明各种功能的实现方法、处理流程或工作原理数据库说明、逻辑结构数据格式说明内存分配方案各部分接口设计通用子程序和标准子程序设计,文档6-技术设计说明书-软件总体方案及体系结构,文档7-形式试验报告,文档7-形式试验报告,文档8-试制总结,1技术水平国际、国内、先进?2试制过程中出现的问题的解决措施3对没有达到技术任务书要求进行说明,文档8-试制总结1技术水平,2.4.4 测试阶段,1、测试的原因2、何时测试3、测试内容4、何时停止测试5、选择测试用例6、实时失败模式7、评估测试的覆盖率8、性能测试9、维护和测试,2.4.4 测试阶段1、测试的原因,2.4.4.1测试阶段-测试的原因,开发过程中已经开始测试了调试原因:在软件中找到错误(在这方面测试是惟一的方法)减少用户与公司的风险节约开发与维护成本 提高系统的性能,2.4.4.1测试阶段-测试的原因开发过程中已经开始测试了,2.4.4.2测试阶段-何时测试,分布于开发的每个阶段debug单元测试-小模块测试/调试回归测试只测试一遍是不够的。每次修改后都应当重新测试以确认这些修改会不会无意中影响一些看似与之无关的行为,这被称作回归测试。使用测试脚本,2.4.4.2测试阶段-何时测试分布于开发的每个阶段de,2.4.4.3测试阶段-测试内容/方法,功能测试-黑盒测试覆盖测试-白盒测试灰盒测试,2.4.4.3测试阶段-测试内容/方法功能测试-黑盒测试,黑盒测试,被测对象,测试输入,测试输出,理想测试情况:遍历所有输入实际测试情况:简单枚举输入,黑盒测试被测对象测试输入测试输出理想测试情况:遍历所有输入,白盒测试-1/2,if (condition1) action1( ); action2( );else action3( );,白盒测试-1/2if (condition1),白盒测试-2/2,switch(condition) case condition1: action1( ); break;case contion2:action2( );break;default:action3( );break;,白盒测试-2/2switch(condition),白盒测试的要求,遍历所有的程序分支人为地给定分支条件特别地,对于正常情况下程序运行不可达的代码也需要遍历,白盒测试的要求遍历所有的程序分支,2.4.4.4测试阶段-何时停止测试,停机定理:如果要找出所有的错误,那么测试是不可能停止的,必须永远进行下去。 不可能证明软件是无错的,只能证明有错最常见的停止标准是:当老板发话时当新一轮测试周期找到比某预计值更少的新错误时在没有发现新错误的情况下,已经达到某个确定的覆盖率限度时,2.4.4.4测试阶段-何时停止测试停机定理:如果要找出所有,2.4.4.5 选择测试实例,1功能测试2覆盖测试3灰盒测试,2.4.4.5 选择测试实例1功能测试,2.4.4.6 嵌入式系统的实时失败模式,不可预知的事件发生后,出现什么问题利用关键序列进行测试关于时间确定性的测试系统长期运行出现错误关于使用模拟测试平台,2.4.4.6 嵌入式系统的实时失败模式不可预知的事件发生,2.4.4.7 测试阶段-评估测试的覆盖率,软件插装printf 方法直接写内存方法-系统没有合适的显示设备低干扰printf-普通printf效率低分支/循环语句的遍历硬件插装使用仿真存储器逻辑分析仪软件性能分析仪,2.4.4.7 测试阶段-评估测试的覆盖率软件插装,2.4.4.8 测试阶段-性能测试,函数的执行时间不是确定和固定的如何测试性能函数的执行时间决定因素函数开始执行时,指令与数据在高速缓存中的内容RTOS任务负载中断或其他异常函数数据处理要求函数中的分支跳转处理器对性能测试的支持(测试方法)一些处理器配置了性能测试机制,如计数器等,2.4.4.8 测试阶段-性能测试函数的执行时间不是确定和固,2.4.4.9 测试阶段-维护和测试,测试和维护已经上市的产品。很多最严格的嵌入式系统测试人员并不是产品的原始设计人员,他们来自于软件质保部门(SWQA,the Software Quality Assurance),或者是最终用户。,2.4.4.9 测试阶段-维护和测试测试和维护已经上市的产品,2.5 嵌入式系统的调试方法,Monitor方式JTAG, BDM方式基于主机的调试ROM仿真器在线仿真器软件仿真器,2.5 嵌入式系统的调试方法Monitor方式,例:嵌入式系统的调试模式,例:嵌入式系统的调试模式,Monitor方式,例子:VRTX,ARM等,Monitor方式例子:VRTX,ARM等,ROM仿真器,什么是ROM仿真器ROM仿真器的应用提高开发的效率,ROM仿真器什么是ROM仿真器,BDM调试器,BDM调试器,JTAG仿真器,应用:大多数32位处理器支持,JTAG仿真器应用:大多数32位处理器支持,ARM JTAG仿真器,ARM JTAG仿真器,软件仿真器,什么是软件仿真器优点软件与硬件并行开发低成本评估产品的设计性能缺点只能仿真程序的正确与错误,不能仿真时序速度限制如:可以仿真51,无法仿真DSP,软件仿真器什么是软件仿真器,基于主机的调试,工作方式应用例子uC/OSII,Vxworks,Linux基于windows环境调试部分代码开发流程设计与开发软件移植与硬件和操作系统相关的部分,基于主机的调试工作方式,在线仿真器,工作方式连接方法直接连接,如MCS51间接连接,如BGA封装的元件,在线仿真器工作方式计算机ICE目标机,2.6 小结,嵌入式系统的总体结构嵌入式系统的设计方法 嵌入式系统设计流程嵌入式系统的一般设计方法软硬件协同设计技术嵌入式系统产品从需求分析、系统设计、科研开发、系统测试、生产、维护,2.6 小结嵌入式系统的总体结构,嵌入式系统产品开发的几个阶段需求分析科研测试维护系统设计师和开发人员相关嵌入式系统的调试方法,作业:教材后习题2、5、7、12,嵌入式系统产品开发的几个阶段作业:,本章结束,谢谢光临!,本章结束,谢谢光临!,本章结束,谢谢光临!本章结束,谢谢光临!,