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