嵌入式工程师职业路径

目前国内高校基本上没有嵌入式工程这种类型的专业,主要是嵌入式是一个很庞大的系统,涉及领域也很庞大。大学内自动化、计算机科学、物理学、数学等专业都和这个方向有关系,也都可以从事嵌入式相关专业。物理学,自动化学生可能后期会偏向于嵌入式硬件工程师,而数学计算机科学这种后期工作偏向于嵌入式软件工程师。因此,做嵌入式开发工作大家起点基本上是相同的,无论名校和普通学校工程类学校学习的基本内容都是相同,基本上不会有特别的差别。当然,我们可以从嵌入式工程师必备的基本的基础知识直观感受具体差异。

数学基础:微积分、线性代数、概率论、离散数学、泛函/拓扑学

物理基础知识:半导体物理、电磁场理论、光电检测与传感技术、信号与系统(通信原理)

电子学:模拟电路、数字电路、集成电路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不一定会是嵌入式系统的标准配备,但熟悉这些技术对嵌入式工程师来说会很实用。

Linux设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。驱动开发涉及重点与难点:

  1. 编写Linux设备驱动要求工程师有非常好的硬件基础,懂得SRAM、Flash、SDRAM、磁盘的读写方式,UART、I2C、USB等设备的接口以及轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。
  2. 编写Linux设备驱动要求工程师有非常好的C语言基础,能灵活地运用C语言的结构体、指针、函数指针及内存动态申请和释放等。
  3. 编写Linux设备驱动要求工程师有一定的Linux内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明白驱动与内核的接口。尤其是对于块设备、网络设备、Flash设备、串口设备等复杂设备,内核定义的驱动体系架构本身就非常复杂。
  4. 编写Linux设备驱动要求工程师有非常好的多任务协同和并发控制同步的基础,因为在驱动中会大量使用自旋锁、互斥、信号量、等待队列等并发与同步机制。
内容简介 本书论及了嵌入式工程师职业生涯的方方面面。首先分析了嵌入式工程师必备的技能条件,讲述了掌握这些技能的习途径。然后结合实际讨论了设计小型嵌入式系统时经济使用的自底向上方法和设计大型嵌入式系统时经常使用的自顶向下方法。最后讲述了嵌入式工程师的3 种职业道路—做自由职业者、为小公司工作以及为大公司工作,分别讨论了每种职业道路的优热和风险,为嵌入式工程师职业选择提供了理论指导和借鉴参考。 本书不仅适合各层次嵌入式技术人员阅读,而且对于想要成为嵌入式工程师的其他职位人员,甚至是在校生,都具有实际的指导意义。 目录 第1章 引言 1 1.1 关于本书 1 1.2 什么是嵌入式工程师 2 第2章 习与教育 4 2.1 进入嵌入式工程领域的传统教育模式 4 2.2 非传统教育模式进入嵌入式工程领域 9 2.3 如果想编写嵌入式软件,那么至少要习多少电子知识 18 2.4 教育方面的陷阱、死胡同,以及必须规避的培训骗局 21 2.5 必需掌握的实践技能 25 第3章 自自底向上的设计方法(小型嵌入式系统) 28 3.1 目标读者 28 3.2 intel 8051微控制器及其变种 31 3.3 atmel avr微控制器 39 3.4 ti msp430微控制器 46 3.5 microchip picmicro微控制器 52 3.6 满足特殊需求的异常架构微控制器 58 3.7 我应该习什么编程语言呢?c++、c、汇编语言在小型嵌入式系统中 61 3.8 防盗版开发工具简介 65 3.9 基于avr微控制器和免费工具的8位嵌入式项目实例 67 第4章 自自顶向下的设计方法(大型嵌入式系统) 93 .4.1 目标读者 93 4.2 嵌入式x86解决方案 94 4.3 arm处理器 103 4.4 powerpc 112 4.5 linux操作系统 114 4.6 ecos操作系统 121 4.7 面向大型嵌入式系统开发,应该习什么编程语言 123 4.8 处理器选择的最后建议 124 第5章 做自由职业者 127 5.1 你适合做自由职业者吗?其中的风险与好处 127 5.2 从兼职工作到自由职业者——记账、纳税与工作量 128 5.3 寻找并维护客户的方法 130 5.4 迭代式项目:无休无止的噩梦 133 5.5 适当地为自己的服务定价 136 5.6 为自己建立良好的工作实践 138 5.7 不仅仅是握手:合同的重要性 140 第6章 在小公司工作 143 6.1 分析自己的目标:小公司的优势和风险 143 6.2 如何获得一份工作 144 6.3 小公司里的责任和压力 146 6.4 在小公司里的个人原动力 148 6.5 严格管理有限的资源 149 6.6 任务细目分类:一周的典型工作 153 第7章 在大公司工作 154 7.1 分析自己的目标:大公司的优势与风险 154 7.2 如何获得一份工作 155 7.3 全球化:项目外包与临时工作签证 157 7.4 管理规程与个人:不要触犯了公司的管理规程 162 7.5 管理与营销的关系 166 7.6 任务细目分类:一周常见工作 168 第8章 结束语 170
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值