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标准文档之类的速度还是很重要的。阅读无障碍是一回事,能和母语一样一目十行,那才爽呀,唉,人生苦短,效率啊!光读文档,就不知道要比老外多花多少时间。

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

    关注

    5083

    文章

    19131

    浏览量

    305495
  • 工程师
    +关注

    关注

    59

    文章

    1571

    浏览量

    68535
收藏 人收藏

    评论

    相关推荐

    嵌入式工程师常用的开发工具有哪些?

    工具。 、集成开发环境(IDE) IDE是嵌入式开发的核心工具之。例如 Keil MDK,它支持多种微控制器架构,提供了强大的代码编辑、编译、调试功能。
    发表于 12-20 15:29

    如何使用 RISC-V 进行嵌入式开发

    RISC-V是种开源的指令集架构(ISA),它允许任何人设计、制造和销售基于RISC-V的处理器,这为嵌入式开发提供了极大的灵活性和创新空间。以下是使用RISC-V进行嵌入式开发的基本步骤:
    的头像 发表于 12-11 17:32 530次阅读

    零基础嵌入式开发学习路线

    底层岗位方向比如:嵌入式硬件工程师、驱动开发工程师等岗位投简历啦!当然,这只是个大致的路线,并不涵盖所有的细节和知识点。如果你想深入学习,
    发表于 10-25 15:55

    嵌入式开发常见问题排查

    嵌入式开发问题排查很多人认为嵌入式开发很难,主要是因为在这个过程中常常会遇到各式各样的问题。这些问题的复杂性和多样性使得许多人感到困惑和无所适从。然而,如果将这些问题逐拆解,实际上大部分都可以
    的头像 发表于 09-22 08:04 341次阅读
    <b class='flag-5'>嵌入式开发</b>常见问题排查

    嵌入式开发前景怎么样?

    嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分析
    的头像 发表于 07-10 09:00 2729次阅读
    <b class='flag-5'>嵌入式开发</b>前景怎么样?

    嵌入式开发者的未来

    嵌入式系统的就业方向非常广泛,涵盖了许多不同的行业和领域。以下是些常见的嵌入式系统就业方向:消费电子产品:这包括智能手机、平板电脑、智能电视、智能家居设备等。嵌入式系统
    的头像 发表于 06-23 08:10 376次阅读
    <b class='flag-5'>嵌入式开发</b>者的未来

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为一名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和
    发表于 06-12 11:20

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件
    发表于 05-16 11:00

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最
    发表于 03-25 14:12

    fpga是嵌入式开发

    FPGA(现场可编程门阵列)与嵌入式开发之间确实存在定的关联,但它们在本质上是两个不同的领域。
    的头像 发表于 03-15 14:18 1053次阅读

    单片机如何通过代码控制硬件:一名工程师的分享

    今天跟大家聊聊单片机是怎样通过代码来操控硬件的。作为一名单片机工程师,我们平时的工作就像是给单片机编写“指令集”,让它按照我们的意图去驱动各种硬件设备。
    的头像 发表于 03-06 14:46 1503次阅读
    单片机如何通过代码控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程师</b>的分享

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不样。下面给大家列举些相应岗位所需具备的技能: 嵌入式Linux,C语言开发
    发表于 02-26 10:17

    优秀电源工程师需要哪些必备技能?

    就带大家细数优秀电源工程师具备的那些技能。、新手必备课程成为一名电源高手需要扎实的理论基础
    发表于 01-29 11:29

    一名嵌入式工程师的涨薪经历

    下面是嵌入式工程师的涨薪经历,希望可以帮助到你,帮到其他的在校学生。   阶段 1 大到大三这个阶段我与大多数学生相同:   、学习
    的头像 发表于 01-05 08:39 453次阅读