嵌入式工程师的定义非常宽泛,有搞硬件的,有搞软件的。 这篇文章,专门写给嵌入式软件工程师。
对于仅仅熟悉嵌入式软件的工程师,在这里,简称初级嵌入式工程师。
嵌入式软件工程师在学校受的教育,大约是学过数字逻辑,微机原理,单片机,C语言什么的,电类专业的基础课大约都是这样滴。 好一点的学校还会有DSP, FPGA等课程。吃饭的家伙一般是C语言,以后的知识来源就是在工作中自己摸索了。
上世纪90年代,我还在深圳工作,热衷于玩linux, 有一天和朋友聊起一个项目,问我能不能做, 内容大约是做一种仪器,能够无接触测量大型高速运转的带有转轴的机械的轴是否变形。传感器当然是用激光脉冲, 算法已经有了。 我经过一番计算,根据激光脉冲的频率,计数器长度, 算法的复杂度,中断的频繁度,得出了现有嵌入式系统根本无胜任的结论。 几年后朋友见面,已是今非昔比,他的产品已经红遍大江南北,噱嘘之余,忍不住询问当初他是怎么设计出来被我死刑的产品的。 答案很简单,找了一个高手,用FPGA在嵌入式的基础上,做了一套外设,用硬件解决了问题。 哎,我怎么就没想到呢?
现在想想,就算我想到了,做出来也不容易,就我那三脚猫的VHDL功夫,做个译码器计数器还成,要做算法进去,那个时候,光乘法器调通就够你喝一壶的,更别说FFT了。
搞嵌入式软件的捷径, 就是拿别人的东西来抄,然后根据自己的需要改改就可以了。如果从头写,不知道要浪费多少时间。 在90年代,Linux还没有那么盛行,互联网也没有这么发达,我还在华为操作系统部工作, 当时我们部门的老胡在一周内完美的解决了下载数据的压缩问题,被我们惊为天人,此为题外话。
因此,搞嵌入式软件的工程师,如果想要解决一些棘手问题,将思维从中断,定时器,GPIO 解放出来是第一步,用硬件的方式思维一下,可能会有意外收获, 而第二步, 能有东西可抄, 才能坚定将问题解决的决心。
有了开放源码硬件,对初级嵌入式工程师来讲,就有了可抄的东西, 起了壮胆的作用。
比如说,以前做手机的嵌入式工程师,熟悉的平台搞了很多年,突然市场上流行全键盘了,要接ATAPI-6了, GPIO不够用了,怎么办 ? 等下一款SOC出来? 6个月之后,老外的手机全有了,这边SOC还在测试哪,怎么办? 打民族牌?
这时候,你要是站起来,说,用CoolRunner-II CPLD, 做一个接口扩展吧,代码可以抄来的。。。,只需加不到一个美金的成本,3天搞定。。。。。。。 你的经理估计会抱着你猛亲几口!
呵呵,这就是开放源码对初级嵌入式工程师的意义