嵌入式系统设计中的“团队技能”

2013-09-16 10:54 来源:互联网 作者:洛小辰

前一阵看了几本有关嵌入式系统设计的书,包括RTOS,算法,硬件设计、数据结构等,感觉这个系统是相当复杂的,所以在此分享一些心得。

首先,嵌入式系统的设计经常是一项很艰巨的任务。一个复杂的系统。例如,一个电机控制的嵌入式系统在由一个开发团队来负责的时候,有的工程师会负责RTOS的移植、调度等工作,有的专门负责硬件电路和接口设计,有的专门负责电机的控制等等。对于其中的软件工程师来说,他可以熟练掌握C、C++等编程语言和RTOS的设计等,但是对于电机的控制就未必了解很多了(看我们国内现状,很多是计算机专业的来从事这方面工作)。而对于控制工程师来说,电机的控制他很熟练,而C++里面那些复杂的面向对象编程又未必很熟悉。这样在工作中,就不可避免地存在一些交流、沟通上的“鸿沟”。为了不至于在出现一些难以调试的问题时,大家互相指责对方是“猪一样的队友”,就需要队员们对开发一个嵌入式系统需要的技能有一些宏观的了解;对于初学者来说,了解开发这样的一个复杂系统需要哪些技能,也是非常有帮助的。这些技能从宏观上讲,可以分为5大类:

1. 阅读数据手册(即datasheet)

做产品开发的工程师和做研究的工程师有一个比较明细的区别,就是做研究往往不会把时间定的特别紧迫,或者说研究的往往是至少1-2年以后采用的技术。而做产品的就不行,产品往往就是工程师们的“催命鬼”,每天看看时间进度表,哪还有时间去沉下心来去仔细阅读datasheet?但是datasheet确实是很关键的,它相当于芯片或者器件的接口“API”。在设计开始之前,至少要通过读最新的datasheet来确认选择的器件满足工作环境的要求,并且知道那些最有可能出现各种奇怪现象的部分在哪里,以便在发现问题时快速定位。

2. 了解所使用的处理器

1) 处理器往往是复杂的,但是学习资源也是非常丰富的,我们可以使用很多资源来加速学习,例如入门指南和初学者套件:一般的公司都会提供这些东西,而且初学者套件一般并不贵

2) 论坛,以及处理器制造厂商的wiki

3) 培训活动

4) 用户指南和应用指南

一般在学习一个新的处理器之前,把上面这些资料备齐,学习条件就很充分了。

3. 阅读原理图

一部分纯软件工程师并不需要去阅读原理图,但是大部分团队成员还是需要了解的。例如,一个bug可能表现为软件里某个变量的值异常,但是这有可能是硬件电路某个电平不对,导致了后面的一系列异常。

4. 调试

调试工具既包含软件里的debugger,也包含包括硬件调试使用的钳子、刀、胶带、放大镜、螺丝刀、万用表、示波器、逻辑分析仪等。

5. 测试

为了不让重大隐患或者烦人的bug在用户手里频繁出现,测试工作的重要性自然是不言而喻的。国外有测试相关的专门职位,例如qualification工程师和verification工程师,往往都是由一些年纪比较大但是富有经验的工程师担任,但是国内貌似还不怎么重视这部分工作。

引用一句名言,“越是不经意的错误,越有可能需要花费相当长的时间去查找和修复”。所以,整个团队的工程师都首先要把自己负责的部分测试好,然后再进行组合测试。

最后说明,这里的几个技巧是从O’REILLY出版的《Making Embeded Systems》一书里面提炼的。

处理器 嵌入式 测试 datasheet 调试

相关阅读

暂无数据

一周热门