源码链接:
今天,我已经工作2个月了。 一直在出差,修设备,更换核心板,更换电源等等,感觉学到的东西很少。 我最初被聘为硬件工程师助理。 我现在所做的基本上就是不断的旅行,没有学到任何东西。 这不是骗局吗? 想想看,我现在的经济状况只能是寄生。 但是知识,自学很快。 所以,读完一些硬件高手之后,你需要学习那些技巧。 现在列出它们。
总体来说,从信号上来说,可以分为两类:模拟和数字。 模拟很难,年轻人很少这样做。 成为大师需要几年的时间。 数字分为51/ARM单片机、DSP、FPGA。
FPGA工程师,国内大部分FPGA工程师都在IC设计公司从事IP核的前端验证工作。 这部分还没有达到门级,未来也不是很明朗。 即使你是IC前端验证工程师,也需要几年的时间才能胜任。 DSP硬件接口已经相对确定。 如果不接近驾驶算法,未来不会太大。 但ARM单片机内容较多,产品在行业内占有量较大,应用人群广泛,就业空间巨大。
下面是别人写的两篇文章,你可以看一下。
第一篇《硬件工程师发展的几个方向》
对于硬件来说,有几个方向。 纯信号分为数字信号和模拟信号。 模拟比较难做,一般需要长期的经验积累。 单个电阻或电容精度不够,可能会导致信号偏差较大。 所以,年轻人做得比较少。 随着技术的发展,出现了模拟电路数字化。 例如,手机的Modem射频模块采用成熟的芯片组。 当时全球只有两家公司有这个技术,他们感觉自己有模拟功能。 体力不是很强的人不适合做这个。 如果他们真的能拿到手机的射频模块,只要达到通用水平,他们的月薪可能会在15K以上。
另一种是数字部分。 从大的方向上可以分为51/ARM单片机、DSP、FPGA。 国内FPGA工程师大多在IC设计公司从事IP核的前端验证工作。 这部分不涉及。 在大门层面,未来还不是很明确。 即使是IC前端验证工程师,也需要几年的时间才能胜任。 DSP硬件接口比较定型。 如果不向驱动或者算法靠拢,未来不会太美好。
ARM单片机内容较多,产品在行业中占有量大,应用人群广,因此就业空间巨大,而硬件设计最体现水平和水平的就是接口设计。 这就是各个高级硬件工程师之间的相互竞争。 判断水平的依据。 接口设计最重要的是时序,而不是简单的连接。 例如,PXA255处理器I2C需要100Kbps的速度。 如果连接了最大不能达到100kbps的I2C外围设备,则必须连接。 导致设计失败。 这样的情况还有很多。 比如51单片机可以在总线上挂一个LCD,但是为什么这个LCD不能挂在ARM总线上呢? 还有一个Winband SD卡控制器可以连接到ARM7总线,但是为什么这个控制器不能连接到ARM9或Xscale处理器,这些都是问题。
所以,接口并不是简单的连接,它取决于时序和参数。 一个优秀的硬件工程师应该能够在没有参考方案的情况下设计出成本和性能更好的产品。 依托现有的解决方案,也需要进行适当的可行性削减,但不是随意削减。 我遇到过一个工程师把规划中的5V转1.8V DC芯片,直接换成LDO时,有时会烧掉好几个CPU。 前几天,有人找我帮忙优化他们基于PXA255平台的手持GPS设备的程序。 我询问了一下情况。 地图存储在SD卡中,SD卡与PXA255接口的MMC控制器之间采用SPI,因此地图的读取速度很慢。 这种情况是设计上的严重缺陷,而不是程序问题,所以我提出了一些建议,让他们更新并重试。
因此,如果你想成为一名优秀的工程师,你需要掌握系统的完整性并了解现有的电路。 换句话说,如果给你一组电路图,你能理解多少? 如果你不能理解80%以上,说明你离优秀工程师还有很远的距离。 其次是电路调试能力和审图能力,但最基本的能力是原理图设计、PCB绘图、逻辑设计。 这是指硬件设计工程师。 从上面的硬件设计工程师中,还可以分出ECAD工程师,他们是画PCB板的专业工程师,还有帮助人们解决EMC问题的EMC设计工程师。 硬件工程师的上一级是板级测试工程师,他是具有良好 C 语言技能的硬件工程师。 在电路板调试过程中,他可以通过自己编写的测试程序来验证硬件功能。 然后根据操作系统层面交给驱动开发人员。
总之,硬件的内容非常复杂。 如果你练习硬件,你就会成为大师。 我经常给人们一个计划评估。 很多高级硬件工程师设计的东西常常被我一句话否定,所以工程师就照我做的做。 到了这个层面,有些人就会被冒犯,但是硬件中确实存在很多不为人知的东西,这让很多资深硬件工程师感到不解。
那么高级硬件工程师的技术能力必须具备那些东西。 首先,必须掌握Protel\ORCAD\PowperPCB\Maplux2\ISE等EDA设计的辅助工具和VDHL语言。 就是界面设计图审能力,还有调试能力。 如果你能去整体方案设计,基本上就成为高级工程师了。
硬件靠的是经验和积累。 十年磨剑,百年磨针。
终于在一个早上把一个月前想写的东西整理出来了。 希望对热爱嵌入式系统开发的工程师和学生有所帮助。
第二部分更详细。 “硬件工程师必须要学习的东西”
硬件工程师需要学习什么
1)基本设计规范
2)CPU基础知识、架构、性能及选型指导
3)摩托罗拉PowerPC系列的基础知识、性能细节及选型指导
4)网络处理器的基础知识、架构、性能和选型(INTEL、MOTOROLA、IBM)
5)常用总线的基础知识和详细性能
6)详细的性能介绍、设计要点以及各种存储器的选型
7)数通、电信领域常用物理层接口芯片的基础知识、性能、设计要点及选型
8)常用器件选型要点及本质
9) FPGA、CPLD、EPLD详细性能介绍、设计要点及选型指导
10)VHDL和Verilog HDL简介
11) 网络基础知识
12)国内大型通信设备公司硬件研发历程;
二.最受欢迎的EDA工具指南
熟练使用行业内最新、最流行的专业设计工具
1) Innoveda的ViewDraw、PowerPCB、Cam350
2) CADENCE 的 OrCad、Allegro、Spectra
3)Altera的MAX+PLUS II
4)学会熟练使用VIEWDRAW、ORCAD、POWERPCB、SPECCTRA、ALLEGRO、CAM350、MAX+PLUS II、ISE、FOUNDATION等工具;
5)XILINX的基金会和ISE
一、总体硬件设计
掌握整体硬件设计所必需的硬件设计经验和设计思路
1)产品需求分析
2)开发可行性分析
3)系统解决方案研究
4)总体架构、CPU选型、总线类型
5)数据通信、电信领域主流CPU:M68k系列、PowerPC860、PowerPC8240、8260架构、性能及对比;
6)总体硬件结构设计及应注意的问题;
7) 通讯接口类型选择
8)任务分解
9)最小系统设计;
10) PCI总线知识及规范;
11)总体设计阶段如何避免致命错误;
12)如何合理分解任务,达到事半功倍的效果?
13)项目案例:中低端路由器等。
二、硬件原理图设计技术
目的:通过具体的项目案例,详细展开方案设计的全部经验,揭示设计的要点和本质。
1)电信、数据通信领域主流CPU(M68k、PowerPC860、8240、8260等)的原理设计经验和精髓;
2)Intel PC主板原理图设计精髓
3)网络处理器的原理设计经验和本质;
4)总线结构原理设计的经验和精髓;
5)内存系统原理设计经验及精髓;
6)数据通信、电信领域通用物理层接口的原理设计经验和本质;
7)电信、数据通信设备中常用的WATCHDOG原理设计经验及精髓;
8)电信和数据通信设备系统带电插拔原理的设计经验和精髓;
9)晶振和时钟系统原理设计经验和精华;
10) PCI总线原理图设计经验及精髓;
11)项目案例:中低端路由器等。
三.硬件PCB设计
目的:通过具体的项目案例,揭示PCB设计的全部经验,让您快速成长为一名优秀的硬件工程师
1)高速CPU板PCB设计经验及精髓;
2)普通PCB设计的要点和本质
3)摩托罗拉PowerPC系列PCB设计精髓
4)Intel PC主板PCB设计精髓
5)PC主板、工业电脑主板、电信设备主板PCB设计经验精髓;
6)国内著名通信公司PCB设计规范及工作流程;
7)PCB设计中生产加工工艺的相关要求;
8)高速PCB设计中的传输线问题;
9)电信和数据通信领域主流CPU(PowerPC系列)的PCB设计经验和精髓;
10)电信和数据通信领域常见物理层接口(100M、千兆以太网、ATM等)的PCB设计经验和精髓;
11)PCB设计经验及网络处理器精髓;
12)PCB走线的拓扑极其重要;
13)PCB设计经验及PCI走线精髓;
14)SDRAM和DDR SDRAM(125/133MHz)的PCB设计经验和精髓;
15) 项目案例:中端路由器PCB设计
四、硬件调试
目的:结合具体项目案例传授硬件调试、测试经验及要点
1)硬件调试相当于黑盒调试,如何快速分析和解决问题?
2)传授大量调试经验;
3)如何加快硬件调试过程
4)如何快速解决硬件调试问题
5)DATACOM终端设备的CE测试要求
五、软硬件联调
1)如何判断软件是否有问题?
2)如何与软件联合调试?
3)大量联调经验的转让;
这两篇文章会讲得很详细,但是一看头就大了,这么多,我可以总结如下:
无非就是基础和提高两部分
基本部分:
1.元件选择和原理图设计。
2.常用的EDA软件。例如PCB、Protel\ORCAD\PowperPCB\Maplux2\ISE 一般PCB板工程师和EMC工程师做这些划分
改进部分:可以学习51/ARM、DSP、FPGA。