0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样成为一名优秀的嵌入式开发工程师

工程师人生 来源:工程师吴畏 2019-03-19 10:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

或许这样的标题,应该是由像Linus或Greg KH这样的大师级的高手才有资格写的吧。但是作为我来说,也许我更想把这个标题作为一个疑问句来使用,整理一下自己的认识,用来勉励自己,和大家一起努力实现这个目标。认识肤浅的地方,还请大家见谅。

从事嵌入式开发是当下比较热门的一个领域,做职业规划的时候,比较清晰的是有三条路可以走:

C1、嵌入式软件开发工程师

C2、嵌入式硬件开发工程师

C3、嵌入式驱动开发工程师。

其中

C1是计算机相关专业的同学可以选择的,因为学习的课程相对偏软,平时在PC上编程比较多,做软件开发会相对轻松。

C2是学习电子电路的同学可以考虑,对模拟电路比较熟悉,可以设计出质量好的电路板。

C3的难度比较大,需要同时熟悉软件和硬件,真正的做到软、硬相结合,搭建软件和硬件互通的桥梁,当然了在业界的待遇也是相对来说比较高的。

我们可以去一些招聘网站查看相关企业的岗位要求,这样学习的时候就有了一个比较明确的目标。今天看到一位前辈的博文,谈究竟应该如何成为优秀的驱动开发工程师,很受鼓舞,在此与大家分享共勉。

何谓优秀的驱动开发工程师

首先要定义,我所认为的一个优秀的驱动开发工程师,应该具备什么样的能力,这里列一下按照从易到难的顺序,个人认为应该会有几个方面的要求吧:

能够独立完成驱动的功能开发任务

能够分析和优化驱动的性能,针对特定硬件扬长避短

能够充分了解模块相关软硬件能力、发展方向,辅助应用工程师最大化利用硬件能力

能够辅助硬件工程师规划硬件设计,预防问题,谋求功能模块的最佳方案

能够协助定义系统架构,合理规划软硬件,谋求产品实现的最佳方案

作为一个驱动工程师,很多时候不是完全从头开发一个完整的子系统,而是针对特定硬件和平台移植驱动,增加功能,解决Bug等等,如果从这方面外在的表现来看:

解决问题的境界,大概会有这么几个阶段:

不知道哪里存在BUG

不知道如何解决BUG

知道如何解决BUG

知道如何发现BUG

知道如何规划BUG

知道如何发现BUG(而不是撞上BUG)其实并不简单,需要你对系统有足够的了解,能够察觉可能出问题的地方。 而规划Bug更难,需要你能对问题的轻重缓急做出准确的判断。没有的完美的世界,只有适当的取舍,规避和预防。

而从解决问题过程的角度来看,我认可以分为几个阶段:

BUG发生 -》 大量跟踪调试代码 -》 终于发现并解决BUG

BUG发生 -》 理论推测可能原因 -》 迅速定位并解决BUG

阅读代码 -》 预测可能出现的BUG -》 证实并解决BUG

应该具备怎样的素质

那么要达到上诉最佳境界,需要具备和发展哪些素质和能力呢?

一、足够的硬件知识

能看简单的原理图,能够分析硬件异常的可能原因,能够使用常见的硬件调试工具,我想这是做为优秀的驱动工程师,区别与其它软件工程师,所不可避免、必须具备的专业素质。当然取决于你具体从事的工作,对这方面的要求不尽相同。

对于驱动开发者来说,不了解所开发驱动外设的硬件原理和相关背景知识,也许很多时候,也能够完成一些移植,修补的工作任务,但这就好比无源之水,无根之木,我相信是很难走远的。

二、多多益善的操作系统知识

做驱动开发,特别是纯粹的外设的驱动移植工作,刚开始的时候,也许你并不需要了解很多操作系统本身的知识(像内存管理,进程调度,锁,各种内核子系统的原理框架等等),也能顺利完成手头的一些工作。

但是,如果一但需要优化驱动,需要完善软件框架,或者是遇上疑难问题需要跟踪解决,对操作系统,内核本身的了解,就体现出它的价值了。

对于Linux内核驱动开发者,尤其如此,首先,代码是完全开源的,你有条件去了解背后的运行机制,其次,Linux内核和各个组成子系统总是在迅速的进化发展中,不进则退,你也有必要跟上时代发展的脚步。

三、强烈的好奇心,持续的热情

如果驱动开发不仅仅是你的爱好,更是你养家糊口的途径,我想,很多时候,你大概不会有机会专注于一两个你最有经验的模块的开发和维护。随着能力的成长,势必会要求你接触和掌握越来越多的各式各样的驱动模块的开发。

对于这件事,包括我自己,有时候大概都会有如下几种反应:

哇,原来的工作做太久了,太乏味了,很高兴能做不同的工作。

啊?又要做别的模块啊?我手头的工作已经太多了!

这个模块没意思,我不想做。

相信多数有志青年们都是第一种表现了,不过,有些时候,我发觉,很多人的这种热情其实并不持久,一个新的模块没做多久,就再次厌倦了,是已经炉火纯青了么,未必,或许只是修改了几个BUG以后不甚其烦。很多时候,我面试前来求职的工程师时,发现简历上这个也做过,那个也做过,但是一旦问到解决了什么问题,所做过的驱动,框架、流程、原理之类的问题的时候,就一问三不知了。

我觉得如果自己的目标是优秀,那么最起码的标准应该是对具体驱动模块相关的子系统的整体工作流程,框架,具备足够的好奇心,乐于去了解和学习,而不仅仅是为了完成任务而工作,否则的话,很难积累下扎实的经验和技术。

四、清晰的逻辑思维能力

这一点,也许是个软件开发人员都应该具备吧,不过,做为驱动开发工程师来说,有时候,大多数情况下,工作的硬件环境并不是完美的,遇到问题需要分析判断错误的原因是硬件问题还是驱动Bug,这时候,清晰的逻辑思维能力尤其重要。

五、良好的工作习惯

大多数人都不是天才,要成为优秀的开发工程师,其一需要持续努力,其二需要时间积累经验,而这过程中,很重要的一点,就是要有良好的工作习惯。譬如,注意设计文档的维护,对工作中遇到的问题的记录,过往经验的及时记录,适当的软件开发流程等等。文档工作,可能很多人很不愿意去做,它的确很花费时间。不过,唉。。。老啦,好记性不如烂笔头啊 。当然,其实设计文档更多的是为你提供思考的机会,而过往经验的总结,也可以起到和大家交流技术,共同进步的目的。

六、英语

这个也是必须的啦,没有办法,邮件列表,技术文档,社区,精通英语肯定是很大的优势,做开源项目尤其如此。阅读各种Spec标准文档之类的速度还是很重要的。阅读无障碍是一回事,能和母语一样一目十行,那才爽呀,唉,人生苦短,效率啊!光读文档,就不知道要比老外多花多少时间。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20660

    浏览量

    337101
  • 工程师
    +关注

    关注

    59

    文章

    1603

    浏览量

    71221
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何成为一名高薪嵌入式工程师

    嵌入式,也可以轻松入门。 如果你已经明确好,想要从事嵌入式开发,想要成为一名高薪的嵌入式工程师
    发表于 04-09 09:03

    低代码可视化,破解嵌入式开发高门槛难题

    在工业控制、智能硬件、物联网快速发展的今天,嵌入式开发作为核心支撑技术,其高门槛却成为行业发展的绊脚石。专业编码要求高、新人上手慢、项目迭代滞后等问题,制约着人才储备与技术普及
    的头像 发表于 03-25 14:13 197次阅读
    低代码可视化,破解<b class='flag-5'>嵌入式开发</b>高门槛难题

    嵌入式开发是否会成为个被看好的领域?

    嵌入式开发会不会成为个风口,现在确实是个挺热门的话题。各种论坛、投资报告都在讲物联网、智能硬件、AIoT的万亿市场,仿佛只要跟嵌入式沾边,就能乘着东风起飞。但如果套用我们刚才聊的
    的头像 发表于 02-26 09:56 652次阅读
    <b class='flag-5'>嵌入式开发</b>是否会<b class='flag-5'>成为</b>下<b class='flag-5'>一</b>个被看好的领域?

    嵌入式开发常用函数速查表

    嵌入式开发中,掌握常用函数的用法可以大大提高开发效率。无论是单片机初学者还是有定经验的工程师,熟悉函数库和调用方式都是必备技能。今天,我们为大家整理
    的头像 发表于 01-19 09:06 468次阅读
    <b class='flag-5'>嵌入式开发</b>常用函数速查表

    什么是BSP工程师

    嵌入式系统 要明白什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)说起。维基百科上对
    发表于 01-13 06:54

    探索MCIMX93-QSB开发板:开启嵌入式开发新征程

    探索MCIMX93-QSB开发板:开启嵌入式开发新征程 在嵌入式开发领域,优秀开发板能为
    的头像 发表于 12-24 14:55 1066次阅读

    系统嵌入式的学习路线

    比较简单,硬件工程师工作的含金量主要体现在产品的可靠性和稳定性设计、以及电磁兼容设计,这才是硬件设计工程师的含金量所在。 个资深的嵌入式硬件工程师
    发表于 12-16 07:49

    个面向单片机、事件驱动的嵌入式开发平台介绍

    EventOS,是个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发
    发表于 12-05 06:26

    CW32嵌入式软件开发的必备知识

    全面的测试,确保软件功能的正确性和稳定性。 了解嵌入式系统的可靠性要求,能够进行软件的可靠性测试和验证。 只有全面掌握这些知识并具备持续学习的能力,才能成为一名优秀嵌入式软件
    发表于 11-28 07:48

    嵌入式开发的关键点介绍

    嵌入式系统的应用非常广泛,例如:智能家居、智能手表、智能手机、智能汽车等等。嵌入式开发需要开发人员具备深入的硬件知识和编程经验,但是也有嵌入
    发表于 11-13 08:12

    电子发烧友工程师看!电子领域评职称,技术之路更扎实

    、ADI 等厂商的技术对接资格。​ 对嵌入式开发工程师来说,职称是岗位竞争力的 “加分项”。随着物联网、AI 技术普及,“高级嵌入式开发工程师”“
    发表于 08-20 13:53

    嵌入式工程师为什么要学QT?

    Qt对嵌入式工程师来说,真的很重要吗? Qt是个跨平台的C++应用程序开发框架,非常适合嵌入式系统的
    发表于 08-14 15:15

    作为一名PCB质检工程师,我为什么在用手持面铜测试仪?

    在PCB行业,铜厚直是决定阻抗、散热与可靠性的关键指标。过去,工程师把板子搬到实验室、等待台式铜厚仪出结果;作为一名PCB质检工程师,如今,我更愿意把“实验室”揣进口袋——手持
    发表于 08-11 11:59

    嵌入式开发就业还有前景吗?

    。在智能家居领域,嵌入式开发的主要工作是开发各种智能化设备和系统,如智能照明、智能安防、智能家电等。嵌入式开发人员需要掌握相关的硬件和软件技术,如处理器、传感器、通信技术、操作系统等,同时也需要具备
    发表于 07-16 10:47

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之。以下将为初学者提供份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1.
    发表于 05-15 09:29