嵌入式行业里,许多人都要面对一个难题:是专心研究软件,还是硬件,亦或是两者都要涉猎?这个问题与学习方向、职业成长和个人喜好密切相关。
入门嵌入式的经历
大一那年,有些同学便通过参加飞思卡尔智能车比赛,开始涉足嵌入式领域。由于比赛要求软硬件都要精通,他们的小组只有两人,和那些四五人组成的团队相比,他们得承担更多的任务。尽管后来无论是参赛还是工作,他们都在软硬件两方面都有所涉猎,但随着时间的流逝,精力有限,他们渐渐将重心转向了软件。这说明,尽管理论上可以两者兼顾,但长期同时进行确实存在实际困难。这恰好是嵌入式学习过程中一个真实的缩影。它还表明,在嵌入式学习的初期,软硬件并重是有一定可行性的,但到了后期,则会遇到不少挑战。
稚辉君在华为担任AI算法工程师,对硬件只是业余兴趣。这表明即便是在行业里表现优异的人,也倾向于聚焦于某一领域。在嵌入式技术领域,若同时涉猎两种性质迥异的知识和技能,从长远来看,可能会面临难以平衡的挑战。
嵌入式软件知识要点
嵌入式软件并非仅指前端或Java等开发领域。它和操作系统紧密相连,通常采用C/C++、汇编等编程语言。此外,它还与数据结构、算法、计算机网络、编译原理等底层技术相关。若要深入学习,Linux系统编程和内核知识是必经之路。然而,有导师指导时,学习进度会更快;若自学,面临的挑战自然不少。实际上,嵌入式培训课程中,软件部分内容众多且复杂,学习者需投入大量时间和精力去理解和掌握。企业在招聘嵌入式软件人才时,也对此类知识有特定要求,这充分说明,掌握这些知识对于从事嵌入式软件开发至关重要。
而且,嵌入式软件的知识必须持续更新和累积。比如,每当新的操作系统版本问世,与之相关的底层软件知识也必须作出相应的优化和调整。这并非一次性的学习就能解决,必须不断投入精力,才能确保在这一领域不落后于人。
硬件学习要注重基础,比如电路基础知识、数字电路、模拟电路和电路设计等都是必备技能。若条件允许,焊接电路板和绘制电路图也是需要掌握的。众多高校的电子实验室是学生获取硬件知识的关键场所,那里配备了多种电路设备供实践。硬件知识的学习是一个漫长的过程,并非短时间内就能熟练掌握。
硬件领域对从业者的经验需求颇高。以电路故障检测为例,经验丰富的工程师能迅速识别出问题所在,而新手可能感到束手无策。在硬件研发阶段,频繁的实验和调整是常态,这些都需要丰富经验的辅助。
嵌入式程序员的特点
嵌入式程序员往往拥有强烈的探索和求知欲望。他们会对一个问题进行深入挖掘,从软件层面追根溯源到硬件层面。比如,在项目开发过程中,若某个产品的嵌入式功能出了问题,一个具备“追根问底”精神的程序员会从软件漏洞查起,接着检查操作系统设置,再到硬件电路,逐一进行排查。这种探究精神是嵌入式程序员不可或缺的品质之一。
他们普遍是因兴趣而投身其中。考虑到初期投入很大,无论是时间、精力还是金钱,再加上行业初期待遇并不丰厚,若非对兴趣有极大的热情,很难持续下去。比如,一些开源的嵌入式项目,许多程序员都是自己出资购买设备和材料来开发,这充分体现了兴趣对他们的重要性。
行业不同方向深度的价值
无论是软件还是硬件,抑或是在互联网、算法等其他领域,深入研究都能让人在该领域变得非常出色。这说明即便在嵌入式领域,软硬结合很重要,但专攻一个方向同样能收获丰硕成果。在软件领域,高级软件工程师的身价非常高。而在硬件领域,经验丰富的硬件工程师也是各大企业争抢的对象。由此可见,专注于各个细分领域都有广阔的发展空间。
嵌入式领域里,软硬件共同进步至关重要。个人不必要求自己都精通,但行业确实需要具备这方面能力的人才。
嵌入式学习路径
初学者可以先掌握C语言,接着学习单片机。这样做有助于对软硬件有更全面的了解。观察众多培训机构的教学安排,这种顺序被普遍采纳作为入门途径。在大学里,电子专业的课程设置通常也是先开设C语言等基础课程,随后逐步加入单片机等课程,使学生初步了解嵌入式系统。
在学习阶段,动手实践至关重要。举例来说,参与各类竞赛或独立完成小项目,这些都能增强对嵌入式软硬件的理解,有助于为今后在该领域的深入研究打下坚实的基础。
在当前知识迅猛增长、嵌入式行业飞速发展的背景下,您认为应当先专攻某一领域,还是从起步阶段就全面学习软硬件知识?期待各位点赞、转发,并在评论区展开热烈讨论。