目前国内高校基本上没有嵌入式工程这种类型的专业,主要是嵌入式是一个很庞大的系统,涉及领域也很庞大。大学内自动化、计算机科学、物理学、数学等专业都和这个方向有关系,也都可以从事嵌入式相关专业。物理学,自动化学生可能后期会偏向于嵌入式硬件工程师,而数学计算机科学这种后期工作偏向于嵌入式软件工程师。因此,做嵌入式开发工作大家起点基本上是相同的,无论名校和普通学校工程类学校学习的基本内容都是相同,基本上不会有特别的差别。当然,我们可以从嵌入式工程师必备的基本的基础知识直观感受具体差异。
数学基础:微积分、线性代数、概率论、离散数学、泛函/拓扑学
物理基础知识:半导体物理、电磁场理论、光电检测与传感技术、信号与系统(通信原理)
电子学:模拟电路、数字电路、集成电路CAD、高频电子线路 射频集成电路
计算机:微机原理(计算机系统构成)、C/C++、编译原理、数据结构与算法、操作系统原理、数据库、网络
这些基础知识肯定大家都很熟悉,根据各自学科的差异,知识侧重点可能有部分差异。但是剩下的课程根据需要自己完成学习也没有什么太多的困难。当然,学校实验安排这个点上各个专业确实还是有比较大的差别。后期工作以后,这些基本的基础知识都是需要用到的,唯一的差别就是职业岗位的区别对应的细分领域越来越小,专注点不同而已。尤其再大公司,螺丝钉的岗位划分可能会给应届生产生自己当时学习那么多其他知识是否有必要的错觉。
不知道你自己不知道:从学校转为一个职场人
知道不知道:代码是否有更好的方法,开始看源码,查看最新的内容,发现好多事情都是不知道
知道自己知道:
学习的三个
会用:接口的基本的使用
了解怎么实现:深入代码,查看资料,进行代码优化
明白为什么这么实现:探求底层的原理,对比多种不同的内容。为什么这么实现,站在创造者的角度去分析问题。这个时候就可以站在项目的角度进行技术的取舍
不知道自己不知道,不知不觉的已经讲很多内容融汇贯通,已经开始对各项内容进行了一个足够丰富的分析和理解。
博览群书、爬五级技术工程师金字塔、重构代码
1. 学习那些让因特网实现的技术 具备30年嵌入式工程师经验的独立产品设计与顾问公司Aurium Technologies 总经理Ken Wada 认为,多数嵌入式领域工程师都知道如何撰写C或C++语言程序,但有时候这样的技能是不够的;他建议嵌入式工程师学习因特网有关的技术,对职业生涯发展会有加分效果,例如他目前负责的几个开发案,都是在嵌入式系统中嵌入虚拟(virtual)的XML,好让一些小型连网设备能具备“即插即用”的运作模 式。 2. 学习利用搜索引擎 当了35年工程师、自认是“看得懂系统架构的软件 人”的PTR Group首席科学家Michael Anderson认为,不要闭门造车,要善用开放源码世界的信息,很多常见的设计问题其实透过因特网就能找到同领域菁英贡献的程序代码;嵌入式工程师们要走出自己的小世界拥抱社群,与同领域的其他工程师们相互交流、互相帮助,而这也是开放源码世界的精神。 3. 离开舒适圈! 虽然只当了18年工程师、但自认是系统与软件技术“通才”的DSP与嵌入式软件开发顾问公司Jetperch创办人Matt Liberty建议,不断更新并提升原本擅长的技术虽然很重要,但嵌入式工程师若能扩展自己的知识领域会更有益。走出舒适圈,挑战自我、去学习原本不熟悉的东西,包括工程以外的知识,例如与客户、同事之间的互动,将会收获良多。 4. 熟悉实时操作系统(RTOS) 在工程人才招募机构Randstad Technologies负责嵌入式产业领域的解决方案经理Henry Wintz表示,目前产业界对于熟悉RTOS的工程师需求很高,也愿意提供更高的薪资水平;因此他鼓励没有接触过RTOS的嵌入式工程师从一些较小型的系统着手,累积相关技术经验。此外他也发现产业界对嵌入式Linux人才有不少需求,主要是因为这种操作系统具备较大的设计弹性。 5. 培养多元化技能与系统观 担任近20年工程师、具备许多不同领域技术经验的技术顾问公司Rebelbot顾问Jen Costillo建议,原本从事较小型系统架构(例如MCU)开发的工程师,可以开始去熟悉更大的系统(例如Linux驱动程序),反之亦然。尝试着去开发手机应用程序、或者是学习后端服务器的相关技术,能让你开启完全不同的观点;他并建议工程师去熟悉开放性硬件,现在市面上有不少现成的开发板,能让工程 师专注于学习独特算法的开发。 6. 了解软件也要了解最新的处理器 有超过15 年嵌入式软件工程师经验的Embedded.fm 工程师Elecia White表示,除了要深入了解C或C++等基本程序语言,有时也要认识一些热门的新程序语言以因应特殊设计需求,但更重要的是了解最新的处理器技术;处理器才是嵌入式系统的本质。因为我们的系统资源有限,我们需要了解可用的资源有哪些。 7. 要能熟悉开放源码软件 拥有31年工程师经验的Freescale Semiconductor 数字网络全球软件开发部门总监Rob Oshana 表示,客户往往会要求在系统中整合一大堆软件,因此所有的嵌入式工程师需要熟悉各种软件;他建议工程师避免只专长单一领域,因为那可能会阻碍你的成长。对 嵌入式工程师来说,确保自己对软硬件技术都很了解,是非常宝贵的价值。 8. 建立系统级的工程思维 自诩为高信赖度嵌入式系统专家、担任了15年工程师的E2V电子系统总工程师Adam Taylor认为,嵌入式工程师拥有系统导向的思维是很重要的,有不少开发案遇到问题,就是因为没有在开发初期充分考虑基准、验证策略以及兼容性验证计划 等项目;此外每个嵌入式工程师都应该具备优良的项目管理技巧,力求准时完成负责的项目。具备能明智因应技术与项目风险的能力,对职业生涯发展会很有帮助。 9. 要能明确表达自己的想法与意见透过文字或绘图) Micrum 总裁Jean LaBrosse认为,无论是哪一种工程师,都需要能有效表达自己的想法与意见;往往有些菜鸟工程师无法清晰表达自己的想法,因为抓不到重点,而最好的解决方法是练习将之图形化,例如画出流程图。这听起来好像有点过时,但有时利用各种图框组合来整理自己的思绪、表达想法会是很有用的,例如iPad的 iThoughts应用程序。 10. 学习无线连结技术 自认是低阶嵌入式工程师、有13年工作经验的iRobot资深首席软件工程师Chris Svec建议,嵌入式工程师需要在接下来1~3年学习无线连结技术,特别是Wi-Fi与蓝牙低功耗(BLE);因为现在的嵌入式设备(至少各种消费性电子都是)与使用者智能手机连结的主要(或唯一)方式,就是透过这些无线技术,虽然Wi-Fi与BLE不一定会是嵌入式系统的标准配备,但熟悉这些技术对嵌入式工程师来说会很实用。