学习ARM,从硬件角度来说,一方面是学习接口电路设计,另一方面是汇编和C语言的板级编程。 软件方面,需要学习基于ARM处理器的操作系统的驱动和移植。 这些对于初学者来说一定要清楚,要么从硬件开始,要么从操作系统对应用的熟悉程度开始,但不管学什么,只要不是操作系统之上纯粹的基于API的应用层编程硬件层面,你还需要能够了解寄存器,还需要了解板级汇编和C编程。 因此,对于从事嵌入式系统硬件层和驱动层工作的人来说,ARM的接口电路设计、ARM的C语言和汇编语言编程调试开发环境还是需要掌握的。
对于初学者来说,要把握好方向,自己的目标是什么,要达到哪个层次。 最好接下来就开始学习。 与ARM相关的嵌入式系统有两个实用层:硬件层和驱动层。 无论哪一层学得好,你都会很有前途。
如果想从嵌入式系统的应用层面入手,可能离ARM等系统还很远。 必须重点关注基于嵌入式操作系统的环境应用和相应的开发工具链,比如WinCE操作系统下的EVC应用开发(与windows下的VC类似),如果想要有所突破,依赖一定的音频以及视频协议,如VOIP领域基于SIP或H.323协议的应用层开发,或者基于嵌入式网络数据库的开发等。
对于初学者来说,应该量力而行。 不要因为驱动层的薪资高就将其作为方向。 他们应该结合自己的特点。 嵌入式系统有四个级别。 无论哪个级别,都有专家。 当然,资深人士也应该得到高工资。
成为高级嵌入式系统硬件工程师所需的技能
对于硬件来说,有几个方向,对于纯信号来说分为数字和模拟。 模拟难度较大,一般需要较长时间积累经验。 如果单个电阻或电容的精度不够,信号可能会出现较大偏差。 所以,年轻人做得比较少。 随着技术的发展,模拟电路出现了数字化。 例如,手机的调制解调器射频模块均采用成熟的芯片。 当时全球只有两家公司拥有这项技术。 感觉自己模拟能力不是很强的人不适合这个。 如果他们真的能拿到手机射频模块,只要达到通用水平,月薪可能会在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绘图、逻辑设计。 硬件工程师的上一级是板级测试工程师,他是具有良好 C 语言技能的硬件工程师。 在电路板调试过程中,他可以通过自己编写的测试程序来验证硬件功能。 然后根据操作系统层面交给驱动开发人员。
总之,硬件的内容非常复杂。 如果你掌握了硬件的任何一个方面,你就会成为大师。 我经常评估人们的计划。 很多高级硬件工程师设计的东西常常被我不屑一顾。 所以达到我水平的工程师会得罪一些人,但是硬件确实有很多不为人知的事情让很多资深硬件工程师感到困惑。
那么高级硬件工程师需要哪些技能呢? 首先,他们必须掌握Protel或CADPowperPCBMaplux2ISE和VDHL语言等EDA设计的辅助工具。 他们必须能够使用这些工具来绘制逻辑设计的图板。 那么他们必须具备审核界面设计图纸的能力。 第三,调试能力。 如果你能接触到整体解决方案设计,你基本上就成为了高级工程师。
嵌入式系统需要深入了解各种设备的特点,选择最合适的处理器、外围设备、操作系统和软件库,并尽可能优化软件设计,以最好地满足应用需求,以便获得最佳的系统性价比。 设计和开发的本质。
硬件靠的是经验和积累。 十年磨剑,百年磨针。
最后提醒大家:对技术的追求不是生活的唯一目的,更不能将其视为唯一的快乐源泉。 我们身边有很多美好的事物值得珍惜。 (感谢写这篇文章的作者)