嵌入式工程师经验常识分享
三.目标与定位
先有目标,再去定位。
学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系 统层面的驱动和移植了。这些对于初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以 上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的、基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动层的人来 说,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。
对于初学者必然要把握住方向,自己的目标是什么,自己要在哪一层面上走。然后再着手学习才比较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。
如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操 作系统下的EVC应用开发 (与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于 嵌入式网络数据库的开发等等。
对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上无论哪个层面上来讲都是有高人存在,当然高人 也对应的高工资。我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元。当然我一方面充当工程师的角色,一方面充当主管人物的角色,两个职位我一 个人干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。
四.如何选择合适的开发系统
很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与 ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计 与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年 或是一年二年能搞定的事。
在某种意义上请,ARM7与ARM9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制。就比如S3C44B0来讲,可以很容易将 Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来。基于51单片机的思想很容易能把他 搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作 系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。
而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以 后就业成功的机率就越高,这就是招聘时所说的有无"相关技能",因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是 我们完全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相 关工作经验的人了,那什么是相关工作经验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年 ARM出现,我一开始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是 深有体会的。
我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者。有问题可 能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM 都用得烂了,但对于初学者来,就却是件好事。
总的来说,开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。
五.如何看待培训
首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿:设计过多款高端嵌入式系统平台产品并为众多公司提供 过解决方案;离职前为从事VOIP的美资公司设计IP-PBX;历任项目经理、项目主管、技术总监、部门经理;积累众多人脉,并集多年经验所得;考虑到学 生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
因一线的科研人员和一线的教师不相接触,导致国内嵌入式人才缺乏。国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领 先于高校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞 去了外企年薪20多万的职位,做嵌入式系统方面的培训了。
对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有可能的。纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可 能就亏大了。有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容, 这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上 比同批人缩短一年,每月按最少1千计,再减去培训费用至少多10万,同时也省了一年时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
再者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅。就比如说,两个工程师分别用S3C2410和PXA255来做手持设 备,同样两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则。2410属于民品,被业界用烂了,做产品时 成本特敏感,当然也对人才成本敏感了。PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人 也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅, 我想是这样的。因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师 傅,但对于我们这些人就不存在这样的关系了。我是在嵌入式系统平台设计上走到了一定程序度,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东 西我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道 吧。
- 新型Linux开发工具应对下一代嵌入式系统设计挑战(04-19)
- ARM仿真器应用指导(01-24)
- 嵌入式系统集成开发平台的设计与实现(01-15)
- 单片机的选择(11-26)
- S3C2440开发工具realview MDK4.22之库的使用(11-19)
- S3C2440开发工具realview MDK4.22使用入门(11-19)