嵌入式系统产品研发领域中的社会角色分工.pdf
《嵌入式系统产品研发领域中的社会角色分工.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统产品研发领域中的社会角色分工.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,JulianTec Atelier&http:/www.juliantec.info 1 learning just as your favourite thing 嵌入式系统开发领域中的社会角色分工嵌入式系统开发领域中的社会角色分工(v1.0,18 Feb 2011)久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,JulianTec Atelier&http:/www.juliantec.info 2 目录目
2、录 目录.2 1.概论.3 2.软硬不分家.3 3.软硬件需求分析与系统架构师.3 4.硬件开发工程师.5 5.软件开发工程师.6 5.1.系统软件开发工程师.6 5.1.1.底层驱动开发工程师.6 5.1.2.应用软件运行平台搭建工程师.7 5.2.应用软件开发工程师.8 6.软硬件测试工程师.9 7.选择定位好你自己的角色.9 久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,JulianTec Atelier&http:/www.juliantec.info 3 1.概论概论 如同其他的社会活动一样,嵌入式(linux)系
3、统开发领域中也有着不同的角色分工。假如你要进入这个行业,那最好先了解一下这个行业中的不同角色分工,然后根据自己的实际情况选择所感兴趣的角色,继而在每日的时间消耗过程中努力学习成为该角色所需要掌握的各种知识。在这篇文章里,我们以自身平时工作过程中的的实际经验为基础,来讨论开发领域中的不同角色分工。具体来说,在本文中,我们需要解决几大问题:在嵌入式系统产品开发领域中,到底会有哪些角色参与其中?这些角色是如何相互支持和协同工作来完成具体产品的?若要成为这些角色,分别都需要掌握些什么样的技能?上面这些问题当中,问三比较容易理解。对于问一,我们这里讨论的主要是那些参与具体产品开发的角色,对于那些管理类的
4、角色,咱们这里则忽略不谈。对于问二,我们关注的不是各角色之间交互的方式,而是关注于各角色在整个产品开发过程中各自要完成什么样的职能。(1)在继续往下看之前,作为理解这篇文章的基础,也许你需要先了解下一个嵌入式系统的大致组成。为此,你可以参考文章应用程序,操作系统,驱动程序和硬件。2.软硬不分家软硬不分家 我们做嵌入式开发的,应用永远记住一个公理,那就是在嵌入式系统中,软件硬件永远不分家(2),这是不需要经过证明的。既然有这样的公理存在,那在实际嵌入式产品的开发过程中,我们可以想见将会有两班人马在一起努力。其中一班负责设计开发产品的硬件部分,另外一班负责设计在硬件上运行的软件部分。两班人马只有相
5、互协同好了,这个产品才能设计出来。实际上,在嵌入式系统产品开发领域中,硬件工程师和软件工程师恰是最最重要的两大类角色。前面所说的文章中指出软件是要依赖于硬件来工作的,那么我们下面具体讨论角色分工时,也应该自然的先讨论硬件工程师,再讨论软件工程师。但是,切记,在进入软硬件任一部分的开发之前,我们都要仔细的做好产品系统的需求分析和架构设计(3)。3.软硬件需求分析与系统架构师软硬件需求分析与系统架构师 一个嵌入式产品的最初起源不应该是起源于宇宙大爆炸,而应该是来自于出现在我们大 久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,Ju
6、lianTec Atelier&http:/www.juliantec.info 4 脑中的某些概念。这些概念也许来自我们和朋友的聊天过程当中,也或许是我们看到了人家的产品受到启发而产生的。光从这些零碎的概念出发去开发产品是不行的。为了使概念中的产品在市面上具备竞争力,我们需要将其转换成真正的产品需求。一般来说,最初形成于脑袋中的概念只是需求的一个很小的部分。所以,我们需要从众多的渠道通过不同的方法尽可能的将需求收集完整。在嵌入式产品开发领域中,需求分析师角色会负责去收集这些需求,并将它们书面化,形成原始的需求文档(比方我们文章面向过程的分析(POA),和面向对象的分析(OOA)中分析的CBM
7、项目)。至于收集的方法,则多种多样。或对待开发产品的最终用户进行调查走访,或对市面上同类产品的功能进行分析等等,我们这里不再详加讨论。原始需求收集完还不够,需求分析师角色还会对它们进行深入的挖掘与分析,最终形成书面的需求规范文档(Requirements Specification)。在需求规范中,通常描述了一系列的UseCase,也即最终用户在使用这个产品时的各种不同使用过程(可理解为用户与产品之间的交互过程)。在需求分析后期,另外一类角色,即软硬件系统架构师会参与进来。他们会和需求分析师紧密合作,从产品的整体角度出发,决定需求规范文档中哪些需求需要由硬件来完成、哪些需求又是由软件来完成。在
8、需求的软硬件界限大致确定下来后,软硬件系统架构师又会通力合作,设计好软硬件两个部分各自的内部架构。软硬件架构师必须具备深厚的专业技术积淀,所以他们经常由在软硬件领域摸爬滚打多年的资深工程师担任。除此外,他们也必须有很强的全局观,习惯于从整体的角度去把握整个嵌入式系统。具体来说,软硬件架构师必须习惯于殚精竭虑的考虑问题。同时应该具备良好的沟通能力,因为他们身处提出需求的客户和具体实现这些需求的团队之间,而时常要做类似下面这样的事情:?面对某一项需求,在经严格评估后认为毫无实现实际的可行性,或者实现它会大大影响全局设计的情况下。他们需要说服客户做出妥协,使之值之暂时接受一个没实现该需求功能的产品版
9、本;?假如某项需求是关键性需求。如果缺了它,该产品将毫无实际应用价值,或者毫无市场竞争力的话。他们又要殚精竭虑的思考出解决方案,并敦促软硬件开发团队努力实现之。硬件架构师在确定好需要由硬件来完成的需求后,会通过性价比分析来决定出能实现这些需求的最佳方案。在这个过程中,为了缩短产品上市的时间,也许他会尽量选用市面上的现有组件。他会根据自己的经验,将整个产品的硬件部分划分成若干个子系统,并理清它们之间的关系。这样做,一方面是为了能更方便的给下面的硬件工程师分配不同的任务,另外一方面,也是为了简化整个系统的设计。相比硬件架构师角色来说,软件架构师角色的工作可能更具艺术性。软件架构师通常会使用业界常用
10、的,诸如结构化的或者面向对象的建模方法来对软件部分的需求进行建模和整 久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,JulianTec Atelier&http:/www.juliantec.info 5 体架构设计。相比于硬件架构设计,软件架构设计要灵活的多,隐藏其中的变化更加多样。软件架构师需要根据自己的专业经验、对各种利害因素加以权衡,从中选择出最有效的软件设计方案来。这不是一个容易的过程,相比于技术能力,它体现更多的是软件架构师整体思维的能力。在实际的研发过程中,为了使得研发更加有效率,软硬件架构师通常作为软硬件研发
11、团队的 Team Leader 来参与具体的研发工作。4.硬件开发工程师硬件开发工程师 在硬件架构师进行架构设计期间,其他硬件开发工程师可能也会参与进来,协助硬件架构师进行不同硬件设计方案的选择。在整体硬件设计方案架构完成之后,每一个硬件工程师可能会负责设计开发其中的单个子系统。这个过程主要是关键元器件的选型、以及相关电路的设计。电路的设计大都要求使用 Protl 等 EDA 软件来进行,在设计过程中会经常使用器件 datasheet 文档中的参考设计。设计完成后,各硬件子系统的电路设计完成后,会出来电路原理图,里面详细记录了硬件系统内各器件之间的连接关系。原理图对下面谈到的底层驱动开发工程师
12、来说同样重要。接下来,硬件开发工程师会根据原理图来进行 PCB 布线(所谓布线是指决定如何在印刷电路板上放置器件及它们之间的走线)。PCB 布线的好坏直接影响产品后续开发过程的执行顺利与否,所以必须严格按照布线标准来进行。布线结束时,硬件开发工程师需要准备好元器件清单(即 BOM 清单),它详细记录了这个产品都需要用到哪些元器件,数量各是多少。此后,他们就会开始元器件的采购并联系厂家来生产 PCB 样板,以及完成特殊元器件的贴装(某些特殊的元器件没办法通过手工焊接到 PCB 样板上,需要请专门的贴片加工厂的机器来帮忙)。待PCB样板回来后,硬件工程师们会动手焊接调试之前设计的各个子系统。这个过
13、程的工作也许会全部由硬件工程师自己完成,但下文提到的底层驱动开发工程师通常也会参与进来一起进行联调。实际上,硬件各子系统的调试过程通常会延续至底层驱动软件开发结束为止。在调试过程,如果发现电路设计或者PCB布线上面的问题的话(4),硬件工程师会详细记录下来,等到PCB的后续版本中去修改。硬件开发工程师除需要掌握模拟/数字电路设计等书本上能找到的基础知识外,还要求能熟练使用各种 EDA 设计软件以及电烙铁、万用表、示波器、逻辑分析仪等各种硬件设计工具。此外,在实际硬件的调试过程中,也时常需要写一些简单的软件程序,这就要求他们最好也掌握一些最简单的 C 及汇编程序设计的知识。还有一点值得一说,那就
14、是因为各种器件的技术资料通常都是英文的,所以硬件工程师们必须有很好的英文阅读能力。相比较于软件的开发来说,硬件系统的开发更加注重工程师的实践经验。久联技术(JulianTec)您在 arm 架构下学习嵌入式 Linux 的上佳指导 Copyright 2010,JulianTec Atelier&http:/www.juliantec.info 6 5.软件开发工程师软件开发工程师 对于一个嵌入式系统产品来说,虽然硬件系统是其存在于这个世界上的基础,但是更重要的还是软件部分。软件的稳定及出色与否,直接影响这个产品的市场接受度。就工作量来说,软件部分的工作量可能要更多于硬件部分。如文章应用程序,
15、操作系统,驱动程序和硬件中所阐述的那样,在嵌入式产品系统架构中,硬件通常只占一层,但是软件却可以分为好多层,各层之间通常维持一种单向的依赖关系。幸运的是,虽然工作总量可能会多点,但是软件部分的各层次通常可以以一种更加并行的方式来开发。这是因为软件各层之间的依赖接口(5)通常都会被设计成固定的、大家都认可的形式。只要接口固定下来了,各层软件的开发工程师就可以并行的、集中精力开发自己的那一层。这点不像硬件系统的开发那样,只能先设计好原理图,才能去制造PCB板;只能等PCB回来了,才能动手进行焊接和调试。对于嵌入式软件开发工程师而言,主要的工作就是用汇编/C/C+等语言设计编制程序,以满足软件部分的
16、需求。下面我们按照软件层次的划分来从低到高的分析参与开发的所有角色。5.1.系统软件开发工程师系统软件开发工程师 在文章应用程序,操作系统,驱动程序和硬件中,我们强调了系统程序软件是操作系统(包括镶嵌在其内部的驱动程序)。但实际上,我们认为,对于一个嵌入式系统产品来讲,你可以把除应用程序之外的其他所有软件都统称为系统软件。至于系统软件到底由哪几部分组成,很大程度上要取决于这个产品是否应用了操作系统、以及应用了何种操作系统。我们在下面分析参与系统软件开发的角色时,会以系统软件的各组成部分为基础(由什么部分组成,就会有什么角色的工程师参与开发),从不使用任何操作系统、使用 uCOSII实时操作系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 产品 研发 领域 中的 社会 角色 分工
限制150内