锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

认知篇----硬件工程师的成才之路之经典

时间:2023-07-28 04:07:07 st层集成电路mmc集成电路连接器dc62pk87

目录

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

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

三、目标与定位

四、开发系统选择

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


今天我主要和大家谈谈如何成为一名硬件工程师。很多时候,一些朋友会问,成为一名高级嵌入式硬件工程师需要做什么?那么,让我们从嵌入式硬件工程师需要做什么开始。

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

1.将基于硬件CPU集成的处围器件CPU芯片内部,如早期基于X计算机在86系统结构下,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×以太网口或Febre channel的光通道。IXP该系列的最高主频可以实现 1.8G,支持2G内存,1G×10或10G×以太网口或Febre channel的光通道。IXP该系列应以目标为基础ARM在系统结构下 intel整合后成Xscale内核的最高的处理器了。

2.在软件方面,它是在定制操作系统的内核中选择应用程序,编译后下载内核ROM中。在定制操作系统内核中选择的应用程序组 例如,软件的嵌入已经完成,WinCE在内核定制中,会有相应的选择,包括wordpad,PDF,MediaPlay等等,如果我们选择, 了,在CE启动后,您可以在界面中找到这些东西,如果些东西PC上将的windows操作系统,我们需要重新安装大部分东西。

3.将软件内核或应用文件系统烧到嵌入式系统硬件平台上ROM实现了真正的嵌入。

以上定义重于理解定义,书中有很多定义,但在这个领域,没有人敢说他们的定义非常准确,包括那些专家学者,认为嵌入式系统是计算机领域的综合学科

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

嵌入式系统分为硬件层、驱动层、操作系统层和应用层四层。

1、硬件层,是整个嵌入式系统的基础,如果现在单片机和接口非常熟悉,可以用C和汇编语言编程,从嵌入式系统硬件层相对容易,硬件层也是驱动层的基础,优秀的驱动工程师是能够理解硬件电路图并完成CPLD逻辑设计,但也相当熟悉操作系统的核心及其调度。但硬件平台是基础,增值取决于软件。硬件层更适合电子、通信、自动化、机电一体化、信息工程专业人员,需要掌握单片机原理和接口技术、微机原理和接口技术、C语言。

2、 驱动层,这部分比较困难,驱动工程师不仅要能理解电路图,而且要非常精通操作系统的核心,这样当系统呼叫时,他们写的驱动程序就不会独占操作系统时间片,而是指导 对于其他任务不能移动,不了解操作系统的核心结构和实时调度,没有良好的驱动编写风格,根据大多数书中添加的驱动方式,很多人可以做到,但可能是初级的 驱动工程师的水平达不到,所以在应用调用中写的驱动就像windows让我们打开一个程序,然后打开一个程序,或者中断以前的程序,或者 后来打开的程序只能等一会儿。如果你想成为一名好的驱动人员,你没有三到四年的基础。如果你不研究操作系统的核心,就不容易成功,但你的工资可以在嵌入式系统的四层 是最高的。

驱动层更适合电子、通信、自动化、机电集成、信息工程专业,特别是计算机部分系统结构专业,除了硬件层的基础学科外,还应非常精通数据结构和算法、操作系统原理、编译原理。

3.操作系统层可能只是操作系统层的简单移植,很少有人写操作系统或缺胳膊少腿的操作系统。这部分工作大多由驱动工程师完成。操作系统负责系统任务的调试、磁盘和文件的管理,嵌入式系统的实时性非常重要。据说,XP操作系统是微软投资300人两年,总工时600人,中国科学院软件研究所自己的女娲Hopen估计操作系统要几百年才能完成。所以这部分工作意义不大。

4、应用层,相对来讲较为容易的,如果会在windows如何调用编程接口函数到操作系统只编译和开发环 情境只是相应的变化。如果涉及Jave编程也是如此。专业算法的人在嵌入式系统中涉及算法的,不必归结为嵌入式系统的范畴。但是,如果涉及嵌入式系统下的嵌入式数据库、基于嵌入式系统的网络编程和基于某一应用水平的协议应用程序开发(如基于SIP、H.323、Astrisk)复杂, 而且很难。

三、目标与定位

先有目标,再定位。

学 ARM,在硬件方面,一方面是学习接口电路设计,另一方面是学习C语言的板级编程。如果从软件的角度来看,它是基于学习ARM处理器的操作系统水平 驱动,移植。这些对于初学者来说一定要明确,要么从硬件开始,要么从熟悉操作系统到应用,但无论学什么,只要不是纯操作系统级以上API应用层编程,硬件寄存器类的东西还是要能理解的,基于板级汇编和C编程还是要能理解的。因此,对于嵌入式系统的硬件层和驱动程序,ARM的接 口电路设计,ARMC语言和汇编语言编程和调试开发环境仍需掌握。

因此,初学者必须把握方向,他们的目标是什么,他们必须在那个水平上。然后开始学习更好,和ARM无论学好哪一层,相关嵌入式系统的硬件层和驱动层都会很有前途。

学 ARM,在硬件方面,一方面是学习接口电路设计,另一方面是学习C语言的板级编程。

如果要从嵌入式系统的应用层面走,可能与ARM与其他系统相去甚远,应重点研究基嵌入式操作系统的环境应用和相应的开发工具链,如WinCe在操作系统下EVC应用开发(和windows下的VC类似),如果你想再有突破,依靠一些音视频协议,比如VOIP领域的基于SIP或H.开发323协议的应用层,或基于嵌入式网络数据库的开发等。

对 对于初学者来说,我们应该根据自己的能力去做。我们不应该认为驱动层的高工资应该被视为一个方向。我们应该结合自己的特点,在嵌入式系统的四个层面上,都有专家。当然,专家也有相应的高工资。我是硬件层的。过去,个人所得税在月薪中扣除近3000元,当然,一方面,我扮演工程师的角色,另一方面,我扮演主管角色。我一个人做两个职位,但是工作时间就那些。在这方面,硬件可能和我在一起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都做用得烂了,但对于初学者来,就却是件好事。

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

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

       对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的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工具,逻辑设计工具和VHDLSCH有Cadence下的Orcad 和Mentors公司pads下的powerpcb。

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

硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章