想成为嵌入式软件工程师的新手可以看看

来源:互联网 发布:如何查看淘宝支出 编辑:程序博客网 时间:2024/04/28 17:53

时下有非常多时髦的名词,嵌入式工程师,3G开发工程师,ANDROID开发工程师等等。

这些名词我想十有八九是一些培训机构发明的。不是说培训机构不好,培训机构针对市场的要求提出一个名词,然后有针对性的开相应的课程没有啥不对。

但是我知道,大家,尤其是想进入软件开发这张门而尚未进入的新手,很容易被一些花哨的名词给搞混。

在这里我给大家说说我个人的看法。

首谈嵌入式了:

其实剥掉外面这层华丽的衣服,我们可以看到。所谓的嵌入式其实是从单片机发展过来的。早些年,甚至我现在有一些朋友也在从事着单片机的开发。那他们这帮单片机开发人员基本都是软硬通吃的。从画原理图,LAY板,写代码,调试等,可以说是一条龙服务,一个人可以搞定一个产品的原型。(有的甚至连美工和结构都全包了)

但现在所谓的嵌入式,就目前而言,我并未见过哪怕一个能有一条龙功力的人,哪怕就软硬通吃的人也没见过。为什么呢?因为复杂度太高,你要把一部分做好都相当不容易。

所以,你如果相进入所谓的嵌入式这个行业,你要把范围定的更小,普通来说,就分软件和硬件罗。软件又分为如下几类,在我看来分为几大阵营:1。LINUX。2。WINCE。3。VXWORK。4。其它各类实时操作系统,例如UCOS,NUCLEUS,ECOS等。

比如说MTK,他是基于NUCLEUS的一个平台,比如ANDROID,他是基于LINUX的一个平台,平台的概念我们等会再讨论,先说操作系统这个更底层的“平台”。

就我个人而言,我比较看好LINUX。理由是:开源。免费。在LINUX下的开源软件经过十年来的积累,已经相当多了。并且这些软件的质量都不低。就内核本身而言,其稳定性和可靠性是有目共睹的。用脚趾头想一下吧:GOOGLE和INTEL,NOKIA这些大公司都在向LINUX靠拢,其优势不言而喻。LINUX就是实时性不够,有的人说我的OS比LINUX的实时性好,光实时性强有什么用?我在启动后写个大WHILE循环实时性更强。反正说LINUX不行的人,肯定是对其了解不深入。可能就是装了用一下,感觉不符合自已的习惯,然后就说不行了。

如果喜欢其它操作系统的朋友可以上网查找一些相应的介绍,然后再决定是否选择它。

另外说平台吧。上面说了,ANDROID是基于LINUX的。其相当于在LINUX的基础上,加上GLIBC,JAVA虚拟机等、然后对其进行封装形成的。说到这。就产生了一个层次:你是愿意自已搭或者移植平台呢?还是愿意用人家搭好了的平台呢?像我们公司就有专门的平台部。我们公司水平最高的人就在这样一个部门。

好了。有了操作系统,平台等概念以后。我们大概知道我们要做什么了。

首先是移植、扩充、裁剪操作系统。其次是开发、移植、扩充平台,再就是开发应用了。这几个层次只是逻辑上的分层,实际开发过程中会重叠的。

这是软件的三个层次。

这三个层次我也只是略窥门径而已,只能说略懂,如果你也和我一样,对这些东西感兴趣的话,那么你就得具备如下基础知识:

1。C/C++(有的平台用C++的就要求会C++,如果平台不是C++的不会C++也没关系)

2。一点点操作系统和编译原理常识。

3。一点点汇编。(这个东西不是非常重要,硬是不会也不太会受影响)

4。一点点算法和数据结构知识。

如果你都具备的话,那就OK了。就可以深入研究这些东西,直至成为高手。在这个过程中,你会发现你的分析调试解决问题的能力会越来越强,且各条经脉会渐渐相通。在相通的过程中你又会发现你有更多的经脉被阻塞。(哈哈,这就是学习的乐趣和苦恼)

其实学习的脉络就是:

1。首先找准方向。

2。补充基础知识。

3。猛搞猛搞。