前一阵看了几本有关嵌入式体系规划的书,包含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》一书里边提炼的。