扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
进入嵌入式行业,勉强不来(转)
创新互联是一家以网络技术公司,为中小企业提供网站维护、成都做网站、成都网站建设、网站备案、服务器租用、国际域名空间、软件开发、微信平台小程序开发等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站咨询热线:18980820575
觉得海同07年的分析(好像)不错:
“海同教育总经理曲刚老师表示,市场上需要的嵌入式人才必须具备C语言编程经验、嵌入式操作系统(主要包括嵌入式Linux、WinCE或 Symbian)经验、内核裁剪经验、驱动程序开发经验,比如高级嵌入式软件开发工程师相关职位要求是:有丰富的嵌入式多任务软件系统分析和设计能力,能独立完成项目系统方案,解决系统故障和问题、精通C语言应用开发,有良好的编程习惯和风格、良好的文档编写能力和习惯、熟悉项目管理流程。曲老师还特别指出,良好的英文阅读能力及较强的学习能力是从事这一领域工作的基础,对嵌入式操作系统做到一专而多能(精通嵌入式Linux,掌握WinCE及 Symbian)更会使求职者身价倍增。
目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业 IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很难找。
嵌入式人才稀缺,身价自然就高。目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计;而对于软件部分,大量的嵌入式公司自己开发,比如对于日本公司来说,由于国内人力成本过高,所以日本很多嵌入式软件开发企业都把项目外包给中国的公司来完成,国内也有越来越多的企业来从事嵌入式软件开发,近几年,国内对嵌入式软件人才需求倍增,仅仅北京市场嵌入式软件开发人员的需求就已经超过了5万人,而且还在持续增长。
嵌入式人才的工作环境与发展前景也有优势。曲老师告诉记者:“从事嵌入式工作有两大优势:一是工作强度相对较低。开发企业应用软件的IT企业,这个用户的系统做完了,又得去做下一个用户的,而且每个用户的需求和完成时间都不同,开发人员往往疲于奔命,重复劳动;而做嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事,所开发的产品通常是通用的,不会因客户的不同而修改,一个产品型号开发完了,往往还有较长一段空闲时间进行充电和休整。二是职业发展相对顺利,从事企业应用软件的人,工作范围广,项目变化大,日常的积累很难产生质变,容易遭遇职业瓶颈;而从事嵌入式软件的人,所涉及的专业技术范围就是那些,时间长了会越来越有经验。”
以上都是针对求职工作而言,若对于个人整体发展来说,如果想创业,做自已的产品,那么嵌入式更是一个不错的主意,嵌入式软件不会像应用软件那样容易被盗版,开发出专利产品,又何止年薪十万。
入行得有专业基础,那么,应该如何快速成长为嵌入式人才呢?曲老师指出,嵌入式系统领域门槛较高,并不适合每个人,嵌入式开发人员不仅要懂较底层软件,对软件专业水平要求较高,要进入嵌入式系统开发领域工作,首先必须具备一定的C语言基础,然后可以尝试参加一些的相关培训课程,接着可以寻找项目实践的机会,增加项目经验。“
还有网友的宝贵意见:
“二、嵌入式系统的分层与专业的分类。
嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础 ,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。
2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到 ,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的 ,但其工资在嵌入式系统四层中可是最高的。
驱动层 比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。
3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。
4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及 Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。
三、目标与定位。
先有目标,再去定位。
学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的 。
因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层 ,不管学好了那一层都会很有前途的。
如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。
对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。
四、开发系统选择。
很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7 好,我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。
在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如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千计,再减去培训费用至少多1.0万,同时也省了一年时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
再者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅,我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道吧。
六、成为高级嵌入式系统硬件工程师要具备的技能。
首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通,或去网站看看***。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。
对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。
另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,dsp类,FPGA类,国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如PXA255处理器I2C要求速度在 100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9 或是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片,直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于 PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出 ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人员。
总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。
那么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如Protel\ORCAD\PowperPCB\Maplux2 \ISE、VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。
硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。 ”
首先,需要安装Android的SDK和ADT。 点击eclipse工具栏上两个机器人中右边的小机器人,新建一个android模拟器。 在右边的package explorer上选则项目。 右击,移到run as上,选择android application,点击,就可以运行了。 Android 是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。 Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。 Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
Rosenrot玫瑰红
一个女孩见到了一朵小小的玫瑰花
它盛开在那明亮的高处
她问她的情人
是否可以为她摘下
她想要得到美好的东西
她总是想要得到什么
她有想要得到什么的习惯
无论任何东西,只要是她想要的
必须要挖一个深井
如果你想要干净的水
玫瑰红啊玫瑰红
地下干净的水会在那里
男孩艰难的爬上山
他并不关心身边的景色如何
他的心中只有那朵小玫瑰
他要把它带给他的情人
她想要得到美好的东西
她总是想要得到什么
她有想要得到什么的习惯
无论任何东西,只要是她想要的
必须要挖一个深井
如果你想要干净的水
玫瑰红啊玫瑰红
地下干净的水会在那里
他的脚下,一块石头松动了,
石头不想再留在悬崖上
所有人都听到了一声尖叫
他和石头一起坠到了地面
她想要得到美好的东西
她总是想要得到什么
她有想要得到什么的习惯
无论任何东西,只要是她想要的
必须要挖一个深井
如果你想要干净的水
玫瑰红啊玫瑰红
地下干净的水会在那里
Bestrafe mich
惩罚我
惩罚我
惩罚我
稻草变成金色
黄金变成石头
你的尺寸使我显得渺小
你可能是我的惩罚者
上帝拿走
上帝赐予
惩罚我
惩罚我
你意思是"是的"
我想的是"不"
你的祈祷中有我
风变得更加寒冷
你的尺寸使我显得渺小
你可能是我的惩罚者
你可能是我的惩罚者
你的尺寸使我显得渺小
你可能是我的惩罚者
你的尺寸使我显得渺小
你将会是我的惩罚者
上帝拿走
上帝赐予
但是他只赐予那些吗
他也爱
惩罚我
Heirate mich
嫁给我
你在教堂的周围见到他爬行
他孤独了一整年
悲哀夺走他的所有感觉
他每晚都睡在她的墓穴旁
那里,在钟旁睡着一块石头
只有我能读懂她
围墙上,红色的公鸡
那时你曾在你心中
恐惧已经在这围墙上被上叉
我现在去每个夜晚挖
见到仍然保持的东西
为我微笑的脸
在钟旁,我度过夜晚
在蜗牛之间的那里,一只孤单的动物
在些日子,我追赶着夜晚
你的逃走,在转瞬之间
嫁给我
我用双手深挖
发现我失去的是那么多
月下那美丽衣衫
我吻过你冰冷的双唇
我温柔的搂你入怀
但你的肌肤纸片般的裂开
然后你支离破碎的掉落
你的逃走,在转瞬之间
嫁给我
因此我轮流仍然保持的东西
夜晚是火热的,我们是赤裸的
公鸡依照它受到的咒语开始报晓
我砍掉了他的头
Bück Dich
鞠躬
鞠躬, 我命令你
把你的脸给我转过去
你的脸对我来说没有任何意义
鞠躬
他用四肢走路
我一次散步上碰到他
独自沿着走廊缓步而行
我很失望
他掉头朝我而来
情人的手杖停在吊袜带上
我很失望,彻底的失望
鞠躬
你的脸我不再感兴趣
他弯下了身
投进来一束亮光
我教他怎样做
我开始哭泣
他口吃着祈祷
他不再恐惧,让我感觉不爽
他试着更深的鞠躬
泪水不停的滴落
Mein Teil
我的话儿
今天我会遇见一个绅士
他是这么喜欢我,他可以吃光我
不管我的话儿是软还是硬
如在菜单上列的
因为你是你所吃的东西
你知道它是什么
它是我的话儿¨ 不是
我的话儿¨ 不是
那是我话儿¨ 不是
我的话儿¨ 不是
迟钝的刀,不紧不慢的切着
我大量出血,感觉很不舒服
虽然我必须反抗以保持清醒
我在抽搐中继续吃
真是好厨艺
多么好的烧烤
多么可爱的餐具
还有那话儿, 还有好酒
柔柔的烛光
是的,我将慢慢享受
你必须有一些文化氛围
因为你是你所吃的东西
你知道它是什么
它是我的话儿¨ 不是
我的话儿¨ 不是
那是我话儿¨ 不是
我的话儿¨ 不是
哭声震天
传到天使的主人们那里
羽毛和肉将呼啸着落下
从云的顶端来到我的童年
sed 's/\(Part label=\).*:\(.*\)-.*/\1"\2"/g' 文件名 输出文件名
我自己测试了一下,应该没问题
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流