嵌入式工程师的知识结构

     嵌入式开发,已经是一个风生水起的行业,很多的人加入到这个行业,不论是学习计算机的还是学习电子工程学的,不论是专科生还是研究生,为什么?因为行业容量大,对人才的需求量大,就业和跳槽的机会多,工资待遇从K级别到10K~几十K不等。

     嵌入式知识领域非常的广泛,从CPU的结构、指令集到基于嵌入式OS的Application的开发,都是嵌入式工程的一部分,从汇编语言到C、C++、C#、Java,编程语言的要求也很宽泛。早期的嵌入式就是单片机,比如C51及16位单片机,这上面的开发相对比较简单,多是单一的控制类的工作,如控制信号灯的开关及处理一些基本的中断任务,到了后来的MIPS、ARM、PowerPC以及DSP,其上面的软件开发越发的复杂,做的事情也越来越多,加上嵌入式OS如Vxworks、Linux、Symban,基本上嵌入式系统就是一个微型的PC,从底层的BSP,到上层的应用软件及UI界面,每个系统层,都可以是一个小领域。

      作为这个领域的从业人员,对嵌入式系统需要的知识,如果没有很好的职业规划和学习方向,将会无所适从,觉得什么知识都很需要,什么知识又都很难学的深、用的好,结果是学一点用一点,用一点丢一点,学无所长、工无所精,最后沦为一个技术上的庸庸之辈。

      那什么样的知识结构才是最有前途(钱途)呢?答案是没有。因为作为一个嵌入式领域的工作者,既不可能学完所有的知识,更不可能精通好个业务。因此,选择其中一个方向(有前途的方向),一直走下去,才是实用的。

      下面从编程语言、嵌入式通讯协议、嵌入式平台、业务类型等几个方面做个简单的介绍。


---编程语言

~~~~~~~~~~

         编程语言有很多种,中低层常用C语言、汇编,中上层开发用到的C++、Java、C#等,C语言的应用最为广泛,既能做比较底层的驱动程序编程,又能做不复杂的中上层应用程序或者协议栈的开发,因此在这个行业工作的,基本都会,但是精通的应该不多了,C语言的精通不仅是语法的理解,更重要的还有标准库的使用,在实际工作实践中,很多人会放着标准库函数不用,而是去自己实现某种功能,虽然完成了工作,但是效率却降低了很多,不站在前人的肩膀上,怎么可能比前人做的更好呢?

         C++和Java是C语言的两个同级别的高级衍生语言,C++的出现,是因为用C提供的语言机制实现某种应用,非常的复杂,比如开发一个文本查询软件,提供N中查询算法,在C的机制下,只能也能用switch语句来区分和增加新的查询算法,因此也不得不把整个软件重新编译、测试一遍,比较费时费力,还不保证是否带来新的Bug,而在C++机制下,就可以应用基类--派生类的抽象概念来分离查询应用层与查询实现层,在应用层上出现的所有查询操作用基类Query指针表示,这个是基本不会修改的,而查询的实现如QueryName()、QueryAnd()等,可以自由的增加和实现,无需修改用户层面的代码,这样这个软件如果增加新的特性,只需要修改例如QueryName的派生类即可。

         当然,也可以把C++当C来使用,那就是base-class的编程了,其思想同c一样,是一种基于过程的编程,讲究的流程控制。

          究竟该精通什么语言?看你想做什么工作,如果做嵌入式领域上层的开发,建议是侧重C++语言,他会为你的工作带来不一样的效率和更好的思维方式,会让写出的code即简洁又通用,还有很好的移植特性;如果做的是协议栈或者驱动类的开发,建议还是C比较好,这类的开发,讲究的是语言表达的效率和直接性,反之如果用C++,则是用复杂的机制办了简单的事情,得不偿失。

          语言本质是个工具,是用来表达信息和思维的,“工欲善其事必先利其器”,如果学好精通了一种语言,会让工作事半功倍的,如果多点对编译原理的理解,那么程序就会少了不少令人沮丧的bug。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值