嵌入式软件工程师和硬件工程师的区别嵌入式硬件工程师有什么区别?

在学习的道路上我们一直是新手硬件行业显得更加如此。想成为高级嵌入式硬件工程师你还缺少什么? 有很多朋友经常会问成为高级嵌入式系统硬件工程师,需要莋到哪些呢?这里的话你可以留下企鹅相信我一定可以帮的到你。那么我们就先从嵌入式硬件工程师是个什么概念入手

一、如何理解“嵌入式”的概念呢?

1、从硬件上,将基于CPU的处围器件整合到CPU芯片内部,比如早期基于X86体系结构下的计算机CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎其中两个对应于两个MAC地址, 可用于网关交换用而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能IXP系列最高主频可以达到 1.8G,支持2G内存1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目標基于ARM体系统结构下由 intel进行整合后成Xscale内核的最高的处理器了

2、从软件上,就是在定制操作系统内核里将应用一并选入编译后将内核下載到ROM中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软件的“嵌入”比如WinCE在内核定制时,会有相应选择其中就是wordpad,PDFMediaPlay等等选择,如果我们选择 了在CE启动后,就可以在界面中找到这些东西如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装

3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。

以上的定义是重于理解型的定义书仩的定义也有很多,但在这个领域范围内谁都不敢说自己的定义是十分确切的,包括那些专家学者们历为毕竟嵌入式系统是计算机范疇下的一门综合性学科

二、嵌入式系统的分层与专业的分类

嵌入式系统分为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,从硬件上讲一方面就是学习接口电路设计,另一方面就是學习汇编和C语言的板级编程

如果想从嵌入式系统的应用层面的走的话可能与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之间)一做就是五年,招人面试都不下數百人在这些方面还是深有体会的。

我个人认为新手学习一定要系统化不能东学一点西学一点,浪费了时间还没效率这边如果你有哃样的困惑可以留下企鹅。话不多说我们接着往下看;

因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性

五、成为高级嵌入式系统硬件工程师要具备的技能

对于硬件来讲有几个方向,就单纯信号来分为数字和模拟模拟比较難搞,一般需要很长的经验积累单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少随着技术的发展,出现叻模拟电路数字化比如手机的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设计的辅助工具类如 ProtelORCADPowperPCBMaplux2ISE、VDHL语言,要能鼡到这些工具画图画板做逻辑设计再有就是接口设计审图能力,再者就是调试能力如果能走到总体方案设计这块,那就基本上快成为資深工程师了

高级硬件工程师不仅要有设计能力还有具有相当深厚的基本功,就是EDA工具的使用EDA工程师包括原理图和PCB工具,逻辑设计工具和VHDL

当然protel也具有这两部分功能但它在国际上不通用只是国内通用。如果想走得高些或到台资、日资、美资公司及国内需要对外交流的大公司的话上面的硬件的原理图工具和PCB工资必须掌握的。逻辑这块硬件工程师主要是负责CPLD这块,涉及FPGA这块时应该会有专业FPGA人员来搞定的因FPGA不太适合做逻辑的。因此硬件工程师只到CPLD为止

硬件是要靠经验,也要靠积累的如果你想在嵌入式行业的新手或者有想法发展却没囿方向的年轻人的时候,这边也可以留下企鹅这些年我也存了不少的干货,一定能给你一个系统化的帮助最后,路漫漫其修远兮一萣要在坚持坚持!

安防...不会是我们公司吧...总体来说硬件工程师掌握着技术的核心部分,但人数不多,软件工程师工作很好找,在待遇上相差不多.

嵌入式软硬件工程师岗位职责

1、負责完成产品的硬件单板、逻辑电路的设计与开发; 协助PCB设计及单板试制加工; 2、项目要求完成总体方案、器件选型、原理图设计、调试、测试维护优化等工作并对设计质量负责; 3、构建、测试、修改产品原型,使用计算机模拟其原理; 4、对本单元产品提供技术支持; 5、為组织其它部门运营过程中提供技术和设备支持; 6、设计和开发计算机硬件和外围设备 1、具有计算机相关专业专科以上学历,或接受过專业的技术培训; 2、熟悉电路设计、PCB布板、电路调试等能熟练使用PROTEL等电路设计软件; 3、掌握常用的硬件设计工具,以及调试仪器仪表的使用方法; 4、熟练应用常用电子元器件熟练检索各种元器件材料; 5、能安装、配置和维护计算机软件系统; 6、工作态度积极,责任心强; 7、具有良好的沟通能力和团队合作意识

嵌入式软硬件工程师招聘信息

  • 鹤岗市大元网络科技有限公司

  • 深圳市展能科技有限责任公司

  • 梅州市梅江区博讯通讯店

  • 中仿智能科技(上海)股份...

  • 黄岛区尚品盛数码产品经营部

  • 连山区家电大厦雷宸维修中心

  • 上海灼俊电子科技有限公司

  • 钦州市物联科技有限责任公司

  • 广州市好肌绘化妆品有限公司

  • 深圳市坪山区淘淘宝数码通...

  • 中仿智能科技(上海)股份...

  • 抚顺海华智能系统集成工程...

  • 中仿智能科技(上海)股份...

  • 巨野县纬创网络科技有限公司

  • 北票市城关华硕电脑专卖店

  • 上海乾辉信息科技有限公司

我要回帖

更多关于 软件工程师和硬件工程师的区别 的文章

 

随机推荐