嵌入式产品开发流程

嵌入式产品,与普通电子产品同样,开发过程都须要遵循一些基本的流程,都是一个从需求分析到整体设计,详细设计到最后产品完成的过程。可是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处。它包含嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程当中,是不须要涉及的。嵌入式产品的研发流程具体以下图:
  嵌入式产品开发流程 - Senple Chan - Life++
      下面,针对嵌入式产品的开发过程当中的各个阶段,咱们进行详细探讨。
阶段1:产品需求
      在这一个阶段,咱们须要弄清楚的是产品的需求从何而来,一个成功的产品,咱们须要知足 哪些需求。只有需求明确了,咱们的产品开发目标才能明确。在产品需求分析阶段,咱们能够经过如下这些途径获取产品需求:
      1)市场分析与调研,主要是看市场有什么需求,还有就是前沿的技术是什么(站在作一款产 品的角度);
      2)客户调研和用户定位,从市场广大客户那获取最准确的产品需求(要注意分析市场,产 品生命周期,升级是否方便);
       3)利润导向(成本预算);
      4)若是是外包项目,则须要咱们的客户提供产品的需求(直接从客户那获取,让客户签协 议);
       编者按:当一个项目作完的时候,若是客户忽然又增长需求,增长功能,将致使你的项目周期严重拖延,成本剧烈上升,而且测试好的产品可能要所有从新测试,本来的设计可能将不会知足当前的要求,因此作项目以前,最好要跟客户把需求肯定下来,而且签订一份协议,不然,你辛苦多少个日日夜夜,获得的将是一个没法收拾的烂摊子!
阶段2:产品规格说明
      在前一个阶段,咱们搜集了产品的全部需求。那么在产品规格说明阶段,咱们的任务是将所 有的需求,细化成产品的具体的规格,就好比一个简单的USB转串口线,咱们须要肯定产品的规格,包括:
       1)产品的外观;
       2)产品支持的操做系统;
       3)产品的接口形式和支持的规范;
      等等诸如此类,切记,在造成了产品的规格说明后,在后续的开发过程当中,咱们必须严格的 遵照,没有200%的理由,不能随意更改产品的需求。不然,产品的开发过程必将是一个反复无期的过程。
      《产品规格说明》主要从如下方面进行考虑:
       1)考虑该产品须要哪些硬件接口;
      2)产品用在哪些环境下,要作多大,耗电量如何。若是是消费类产品,还跟设计美观,产 品是否便于携带,以肯定板子大小的需求,是否防水;
       3)产品成本要求;
      4)产品性能参数的说明(例如交换机,若是是百兆的速率,用于家庭和通常公司;若是是 用于整个省的交换,那设计的速率确定数十万兆以上了)因此说,产品性能参数的不一样, 就会影响到咱们设计考虑的不一样,那么产品的规格天然就不一样了;
      5)须要适应和符合的国家标准,国际标准,或行业标准;
阶段3:产品整体设计方案
      在完成了产品规格说明之后,咱们须要针对这一产品,了解当前有哪些可行的方案,经过几 个方案进行对比,包括从成本、性能、开发周期、开发难度等多方面进行考虑,最终选择一个最适合本身的产品整体设计方案。
      在这一阶段,咱们除了肯定具体实现的方案外,咱们还须要综合考虑,产品开发周期,多少 人月的工做量,须要哪些资源或者外部协助,以及开发过程当中可能遇到的风险及应对措施,造成整个项目的项目计划,指导咱们的整个开发过程。  
阶段4:产品概要设计
      产品概要设计主要是在整体设计方案的基础上进一步的细化,具体从硬件和软件两方面入手:
硬件模块概要设计
      硬件模块概要设计,主要从硬件的角度出发,确认整个系统的架构,并按功能来划分各个模块,肯定各个模块的的大概实现。首先要依据咱们到底要哪些外围功能以及产品要完成的工做,来进行CPU选型(注意:CPU一旦肯定,那么你的周围硬件电路,就要参考该CPU厂家提供的方案电路来设计)。而后再根据产品的功能需求选芯片,好比是外接AD仍是用片内AD,采用什么样的通信方式,有什么外部接口,还有最重要的是要考虑电磁兼容。
       编者按:通常一款CPU 的生存周期是5-8年,你考虑选型的时候要注意,不要选用快停产的CPU,以避免出现这样的结局:产品辛辛苦苦开发了1到2 年,刚开发出来,还没赚钱,CPU又停产了,又得要从新开发。不少公司就死在这个上面。
软件模块概要设计
      软件模块概要设计阶段,主要是依据系统的要求,将整个系统按功能进行模块划分,定义好各个功能模块之间的接口,以及模块内主要的数据结构等。
阶段5:产品详细设计
硬件模块详细设计
       主要是具体的电路图和一些具体要求,包括 PCB和外壳相互设计,尺寸这些参数。接下来,咱们就须要依据硬件模块详细设计文档的指导,完成整个硬件的设计。包括原理图、PCB的绘制。
软件模块详细设计
      功能函数接口定义,该函数功能接口完成功能,数据结构,全局变量,完成任务时各个功能函数接口调用流程。在完成了软件模块详细设计之后,就进入具体的编码阶段,在软件模块详细设计的指导下 ,完成整个系统的软件编码。
      编者按:必定要注意须要先完成模块详细设计文档之后,软件才进入实际的编码阶段,硬件进入具体的原理图、PCB实现阶段,这样才能尽可能在设计之初就考虑周全,避免在设计过程当中反复修改。提升开发效率,不要为了图一时之快,没有完成详细设计,就开始实际的设计步骤。
阶段7:产品调试与验证
      该阶段主要是调整硬件或代码,修正其中存在的问题和BUG,使之能正常运行,并尽可能使产品的功能达到产品需求规格说明要求。
硬件部分:
       1)目测加工会得PCB板是否存在短路,器件是否焊错,或漏焊接;
       2)测试各电源对地电阻是否正常;
       3)上电,测试电源是否正常;
      4)分模块调试硬件模块,可借助示波器、逻辑分析仪等根据。
软件部分:
      验证软件单个功能是否实现,验证软件整个产品功能是否实现。
阶段8:测试
       功能测试(测试不经过,多是有BUG);
       压力测试(测试不经过,多是有BUG或哪里参数设计不合理);
      性能测试(产品性能参数要提炼出来,供未来客户参考,这个就是你的产品特征的一部分);
      其余专业测试:包括工业级的测试,例如含抗干扰测试,产品寿命测试 ,防潮湿测试,高温和低温测试(有的产品有很高的温度或很低的温度工做不正常,甚至中止工做)。
       编者按:有的设备电子元器件在特殊温度下,参数就会异常,致使整个产品出现故障或失灵现象的出现;有的设备,零下几十度的状况下,根本就启动不了,开不了机;有的设备在高温下,电容或电阻值就会产生物理的变化,这些都会影响到产品的质量。这里要引出一个话题,工业级产品与消费类产品有什么区别呢?工业级的产品就要避免这些异常和特殊问题,有的产品是在很深的海里工做,或者在严寒的山洞工做,或者火热沙漠工做,或者颠簸的设备上,好比汽车;或者是须要防止雷击;因此这就是工业级产品跟消费类产品的区别,消费类的产品就不须要作这么多的测试。
阶段9:产品
      经过上一阶段完整测试验证,在此阶段,即获得咱们开发成功的产品。在此阶段,能够比较实际的产品和最初的造成的产品规格说明,看通过一个完整的开发过程,是否产品彻底符合最初的产品规格说明,又或者,中途发现产品规格说明存在问题,对它进行了多少修改呢?
附录:嵌入式硬件开发流程
      以前,咱们详细讲述了嵌入式产品的研发流程,那么在这一节,咱们具体以嵌入式产品的硬件部分为例,再次讲解其开发过程,但愿经过这一节,你们能对嵌入式硬件开发流程有更深入的认识,在之后的学习和工做中,更加规范化和标准化,提升开发技能。嵌入式硬件开发流程通常以下图,分为8个阶段:
 嵌入式产品开发流程 - Senple Chan - Life++
       嵌入式产品的硬件形态万千,CPU 从简单的4 位/8位单片机到32 位的ARM处理器,以及其余专用IC。另外,依据产品的不一样需求,外围电路也各不相同。每一次硬件开发过程,都须要依据实际的需求,考虑多方面的因素,选择最合适的方案来。
硬件阶段1:硬件产品需求
      和普通的嵌入式产品需求同样。阶段1:产品需求。
硬件阶段2:硬件整体设计方案
      一个硬件开发项目,它的需求可能来自不少方面,好比市场产品的须要或性能提高的要求等,所以,做为一个硬件设计人员,咱们须要主动去了解各个方面的需求并分析,根据系统所要完成的功能,选择最合适的硬件方案。
      在这一阶段,咱们须要分析整个系统设计的可行性,包括方案中主要器件的可采购性,产品开发投入,项目开发周期预计,开发风险评估等,并针对开发过程当中可能遇到的问题,提早选择应对方案,保证硬件的顺利完成。
硬件阶段3:硬件电路原理图设计
      在系统方案肯定后,咱们便可以开展相关的设计工做,原理设计主要包括系统整体设计和详细设计,最终产生详细的设计文档和硬件原理图。
       原理设计和PCB设计是设计人员最主要的两个工做之一,在原理设计过程当中,咱们须要规划硬件内部资源,如系统存储空间,以及各个外围电路模块的实现。另外,对系统主要的外围电路,如电源、复位等也须要仔细的考虑,在一些高速设计或特殊应用场合,还须要考虑EMC/EMI等。
      电源是保证硬件系统正常工做的基础,设计中要详细的分析:系统可以提供的电源输入;单板须要产生的电源输出;各个电源须要提供的电流大小;电源电路效率;各个电源可以容许的波动范围;整个电源系统须要的上电顺序等等。
      为了系统稳定可靠的工做,复位电路的设计也很是重要,如何保证系统不会在外界干扰的状况下异常复位,如何保证在系统运行异常的时候可以及时复位,以及如何合理的复位,才能保证系统完整的复位后,这些也都是咱们在原理设计的时候须要考虑的。
      一样的,时钟电路的设计也是很是重要的一个方面,一个很差的时钟电路设计,可能会引发通讯产品的数据丢包,产生大的EMI,甚至致使系统不稳定。
       编者按:原理图设计中要有“拿来主义”!如今的芯片厂家通常均可以提供参考设计的原理图,因此要尽可能的借助这些资源,在充分理解参考设计的基础上,作一些本身的发挥。
硬件阶段4:PCB图设计
       PCB设计阶段,便是将原理图设计转化为实际的可加工的PCB 线路板,目前主流的PCB 设计软件有PADS,Candence 和Protel几种。
       PCB设计,尤为是高速PCB,须要考虑EMC/EMI,阻抗控制,信号质量等,对PCB 设计人员的要求比较高。为了验证设计的PCB是否符合要求,有的还须要进行PCB 仿真。并依据仿真结果调整PCB 的布局布线,完成整个的设计。
硬件阶段5:PCB加工文件制做与PCB打样
       PCB绘制完成之后,在这一阶段,咱们须要生成加工厂可识别的加工文件,即常说的光绘文件,将其交给加工厂打样PCB 空板。通常1~4层板能够在一周内完成打样。
硬件阶段6:硬件产品的焊接与调试
       在拿到加工厂打样会的 PCB空板之后,接下来咱们,须要检查PCB空板是否和咱们设计预期同样,是否存在明显的短路或断痕,检查经过后,则须要将前期采购的元器件和PCB空板交由生产厂家进行焊接(若是PCB 电路不复杂,为了加快速度,也能够直接手工焊接元器件)。
       当PCB 已经焊接完成后,在调试PCB以前,必定要先认真检查是否有可见的短路和管脚搭锡等故障,检查是否有元器件型号放置错误,第一脚放置错误,漏装配等问题,而后用万用表测量各个电源到地的电阻,以检查是否有短路,这样能够避免贸然上电后损坏单板。调试的过程当中要有平和的心态,碰见问题是很是正常的,要作的就是多作比较和分析,逐步的排除可能的缘由,直致最终调试成功。
      在硬件调试过程当中,须要常用到的调试工具备万用表和示波器,逻辑分析仪等,用于测试和观察板内信号电压和信号质量,信号时序是否知足要求。
硬件阶段7:硬件产品测试
      当硬件产品调试经过之后,咱们须要对照产品产品的需求说明,一项一项进行测试,确认是否符合预期的要求,若是达不到要求,则须要对硬件产品进行调试和修改,直到符合产品需求文明(通常都以需求说明文档做为评判的一句,固然明显的需求说明错误除外)。
硬件阶段8:硬件产品
      咱们最终开发的硬件成功。一个完整的,完成符合产品需求的硬件产品还不能说明一个成功的产品开发过程,咱们还须要按照预约计划,准时高质量的完成。才是一个成功的产品开发过程。

说明:本文转载自网络。做为正规的产品开发流程,该文所介绍流程欠全面,但具备必定的参考价值。