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

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

3天内不再提示

从硬件转向软件设计,硬件工程师请牢记这十大技巧

lPCU_elecfans 来源:未知 作者:肖冰 2019-07-05 14:14 次阅读

嵌入式系统设计不仅要求了解硬件,还要求了解软件的作用方式,以及如何与之交互。设计硬件需要的某种范式可能与设计软件完全相反。当从硬件设计转向包含软件的设计时 ,硬件工程师应牢记以下十个技巧。

技巧1:流程图第一,实现第二

当工程师首次迈入软件开发领域时,会有种强烈的诱惑力促使他们立刻投入工作并开始写代码。这样的定式思维就等同于在电路 逻辑图还未完成前就试图设计印刷电路板 (PCB )。在着手开发软件时,抑制想写代码的冲动是至关重要的,应首先用流程图制定一个软件架构图。这样的方法会使开发人员对应用所需的不同部分与组件形成一个概念,就像电路逻辑图可以告诉工程师需要哪些硬件元件一样。这样可确保程序整体建立在良好的组织和深思熟虑之上,减少程序调试时间,从长期看,这样做还可以节省时间、省去麻烦。

技巧2:使用状态机控制程序流程

状态机是20世纪最伟大的软件发明之一。某应用程序往往可被分为多个状态机,每个状态机都控制该应用程序的特定部件。这些状态机都拥有自己的内部状态和状态转换,从中可看出软件如何与各种激励相互作用。用状态机来设计软件,可简化软件的开发,使之模块化 、可维护,并易于理解。目前拥有的广泛资源可演示状态机的理论和算法

技巧3:避免使用全局变量

在函数式编程的年代,函数要先于形式,程序员的唯一目标是尽可能地让程序按预期方式快速运行,而不用考虑程序结构或可重用性。这种编程范式会毫无顾虑地使用全局性变量,程序中的任何函数都可能修改它。其结果就造成了变量被破坏的几率增加或变量被误用。在新推荐的面向对象范式中,应在最小的范围内定义变量并封装它们,以防止其他函数的误用或破坏。因此,建议您限制全局范围使用的变量数量。可在C语言中用外部关键字标识这些变量。

技巧4:利用模块性的好处

无论问哪一名工程师,项目的哪部分最有可能延迟交付并超出预算?答案都是软件。软件往往是复杂的,且难以开发和维护,尤其是当整个应用都存在于单一文件或松散关联的多个文件中时。为了缓解可维护性、可重用性及复杂性,强烈建议程序员充分利用现代编程语言的模块化特性,将常用功能分解成模块。以这样的方式分解编码,程序员就能着手建立函数与特性库,然后在一个接一个的应用中重用它们,从而通过连续测试而改善代码质量,同时也减少了时间,降低了开发成本。

技巧5:保持中断服务例程的简单性

中断服务例程用来中断处理器对当前代码分支的执行,从而处理刚刚触发中断的外围设备。无论何时执行中断,都需要一定数量的开销,用于保存当前程序的状态、运行中断,然后将处理器回归原程序状态。现代处理器要比多年前的处理器快得多,但仍需要考虑此花销。一般情况下,程序员都想把中断运行时间降至最低,以避免干扰主代码分支。这意味着中断应该短而简单。中断中不应调用函数。此外,如果中断开始变得过于复杂或耗时,则仅应在必要时利用中断做最少量的工作,例如,将数据装入缓冲区并设置一个标志,然后让主分支处理输入的数据。这样做可保证大多数处理器周期被用于运行应用,而不是处理中断。

技巧6:使用处理器示例代码做外设的实验

设计硬件时,做原型测试电路总是有益的,这样可确保工程师对电路有正确的理解,然后再做电路板 布局。此点对设计软件也同样适用。硅片制造 商通常都有示例代码,可用来测试微处理器的各个部分,这样工程师们就可判定该部分的工作情况。此方法使人们洞察到软件体系架构的应该组织方式,以及可能造成的任何潜在问题。在设计初期阶段认清潜在的障碍,比在产品交付前最后几小时才发现它们要好。这是预先测试代码片段的一个很好的方法,但需提醒的是,制造商代码往往不是模块化的,未经大的修改不方便用于实际应用。这一局限已随着时间的发展而改变,也许某一天芯片供应商会给出可用于生产的代码。

技巧7:限制功能复杂度

工程学中有一个旧词叫“KISS”——保持简单和直接。无论在处理何种复杂工作时,最简单的方法就是把它分解为更小、更简单、更易处理的任务。随着工作或功能变得越来越复杂,人们要准确无误地记录所有的细节也变得更困难。在写一个函数时,其复杂度在当时看似适中,然而要考虑到,一名工程师如何在六个月的维护时间内查看代码。测量 函数复杂度(如循环的复杂度)的方法很多。现在有工具可以自动计算某个函数的循环复杂度。经验法则建议,函数的循环复杂度保持在10以下是最理想的。

无论在处理何种复杂工作时,最简单的方法就是把它分解为更易处理的任务。

技巧8:使用源代码存储库并频繁提交

人都是会犯错误的,写代码时也会犯错。这就是为什么开发人员使用源代码存储库是如此重要。源代码存储库可使开发人员“登记”一个好的代码版本,并描述对该代码基所做的修改。该步骤不仅使得开发人员可以复原或追溯到代码的旧版本,还可以比较旧版本之间的不同。如果开发人员做的一系列改变破坏了系统,只需点击一下即可恢复好的代码版本!请谨记,如果不频繁提交代码,存储库就不会达到预期目的。如果做了不可逆的修改,两周后才提交代码,然后再恢复,就会造成大量工作和时间的损失!

技巧9:代码做详细说明

在软件开发的激烈战斗中,开发人员很容易把注意力集中在编写和代码上,因此会忽略详细解释的需求。在压力之下,说明工作往往是项目的收尾工作,因为开发人员认为它是最后的一项工作。然而,当代码仍在你脑中新鲜热火时就做出详细解释是至关重要的,这样做可使开发人员或你自己读懂注释,理解代码的工作方式。

如果开发人员做的一系列改变破坏了系统,只需点击一下即可恢复好的代码版本!

技巧10:使用一种Agile开发流程

无论做何种类型的工程工作,都建议您先设定并遵守一项流程。这样的结果应有一致的质量和成本,并能按时交付。软件开发人员已成功使用Agile开发流程来开发高质量软件。这一流程可按需求的优先等级做开发。优先级别最高的工作在限定的时间段内首先开展,这被称为迭代。这种方法的好处是它可使软件开发流程保持顺畅,还可以根据结果和客户所需,在每次迭代中适应并修改需求和任务。

技巧10A:站在开发技术之巅

要学习嵌入式软件开发所使用的最新工具和技术,最好的一个场合是嵌入式系统研讨会(Embedded Systems Conferences)。该会议每年召开两次,地点分别位于加利福尼亚州圣荷西(San Jose)和波士顿(east.ubmdesign.com)。会议吸引了来自全世界的工程师,他们可以开展互动、参加研讨会,并进行实际操作,以促进对软件开发的理解。此外,EDN.com社区还提供了与软件和硬件相关的一系列网站,工程师们可通过不断的参与和学习,为了将最尖端技术应用于他们未来的发展项目而做好准备。

为了帮助大家更好的学习嵌入式系统、软硬件设计知识、项目管理,我们为此专门组建了一个工程师互动答疑群。如果你有关于硬件工程师职业规划、电路设计或者项目管理方面的问题,都可以加入我们的交流群,就工程师相关问题咨询老师,老师会帮助解答您的疑惑。

答疑老师

白纪龙:上市公司的研发团队负责人,10余年工作经验,专攻物联网AI等热门领域资深硬件工程师,被多家知名企业,高校受邀内训。

上课机制:群满300人后,每天10点助理老师会在群里收集问题,并精选10个问题。每天晚上20:00,白老师会在群里为大家集中答疑。

面向人群:

硬件工程师、电子工程师、嵌入式工程师、应届毕业生

点拨方向:

职场规划、项目管理、硬件设计、高速PCB设计

往期问答

1.这两种RC滤波有什么好处跟区别呢?

答:RC串联一般是用用来消除阻尼振荡,或者让电路中可能存在电感等在开关过程产生电压激变超过峰值电压,RC串联电路就可以通过充放电选择合适的电阻就可以把这一能量消除或者减少,这种电路也叫snubber circuit,在反激式开关电源电路设计中经常用到

2.两级差分放大怎么理解?

答: 典型的仪表运放是先差分放大然后减法电路,理解最关键点在于Rg。其实仪表运放和一般运放的功能是一样的,主要在于针对性的一些参数优化上,因为对于仪表设计里的小信号为主的信号检测而言,对于更高的输入阻抗和更高的PSRR,低失调电压电流等参数要求比较高,因此才会有仪表运放一说。但是仪表运放比较贵,所以很多公司就自己搭这个电路

3.本身是学材料的,想跳槽去搞硬件研发,但是总感觉电路博大精深,不可能什么都懂,怎么办?

答:可以先拿公司的产品自己一个元器件的绘制,然后仿照PCB一步一步的layout出来,慢慢地学会基本套路,如果有时间的话可以学习我这次众筹课程的第一大部分,我会比较详细的系统化的教大家如何全体系的学习

4. 现在从事器件可靠性,想转硬件工程师或者电子工程师,对器件一块比较熟悉,但是其他方面比较薄弱,我应该从哪方面入手?画板开始?还是接触一个项目来由浅入深?

答:最好是从接触一个项目开始。如果只是单独的画板的话,那只是公司的其中一个环节。如果说有一个项目,整个项目做下来的话,对该项目细节就会了解的比较全面,之后再做新的项目的时候,就会比较顺畅。所以如果说是从项目开始接手进来………..

为保证互动体验,答疑群将严格限制报名人数,满员即止。

有任何疑问,可扫码添加助教老师入群(18138814636/18145814587)

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

    关注

    251

    文章

    758

    浏览量

    95213

原文标题:从硬件转向软件设计,硬件工程师请牢记这十大技巧

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何入门硬件工程师

    想跨行业做硬件设计工程师,应该如何学习规划呢
    发表于 03-17 21:49

    如何搞崩一个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    年底接到电话那刻,硬件工程师顿时汗流浃背

    硬件工程师扬兴科技
    扬兴科技
    发布于 :2023年12月29日 19:15:30

    有没有谁做过DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件的软硬件高级工程师

    急需 DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件等丰富经验的软件高级工程师硬件高级工程师,深圳,面议面议,自荐/推荐
    发表于 12-14 17:32

    硬件工程师面试时最常被问到的8个问题,看看你能答对几个

    晶振硬件工程师
    扬兴科技
    发布于 :2023年12月08日 18:21:15

    嵌入式硬件软件哪个好?

    嵌入式硬件软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师
    发表于 12-05 15:17

    硬件工程师需要了解主机厂的标准吗?

    公司最近购买了GMW14082-2010通用汽车的标准,要求硬件工程师进行阅读。我有点不清楚这个标准的作用对于我们来说有什么用,里面的内容需要全部都掌握吗?还是只要知道其中一些关键点就行?
    发表于 11-23 15:03

    嵌入式软件好还是硬件好?

    架构,有一定的C语言基础,熟悉ARM、PROTEL设计软件,有四层板开发经验。 成为优秀的嵌入式硬件开发工程师需具备以下技能:由需求分析至总体方案、详细设计的规划能力;熟练运用设计工具、设计原理图
    发表于 09-18 15:31

    居然还有人不知道,硬件工程师的好脾气是怎么炼成的?

    元器件硬件工程师
    扬兴科技
    发布于 :2023年08月16日 17:41:06

    硬件工程师还有前途吗?

    摘要 :硬件要做得好,周期比软件长,而且一旦你在某个领域行业里积累了一定的经验是非常吃香的,硬件不是个吃学历的职业,非常吃经验。 一、做硬件工程师
    的头像 发表于 06-27 08:45 2963次阅读
    做<b class='flag-5'>硬件</b><b class='flag-5'>工程师</b>还有前途吗?

    明明硬件软件难,但为什么硬件工程师待遇还不如软件???

    前言 大家好,最近在知乎上看到一个很有意思的问题: 硬件明明比软件更难,国内的硬件技术也不如软件,为什么硬件
    的头像 发表于 06-25 19:35 842次阅读
    明明<b class='flag-5'>硬件</b>比<b class='flag-5'>软件</b>难,但为什么<b class='flag-5'>硬件</b><b class='flag-5'>工程师</b>待遇还不如<b class='flag-5'>软件</b>???

    热门推荐:硬件工程师必备工具

    硬件PCB产品顺利投产。 华秋DFM可制造性检查软件,在硬件开发流程中起到了非常关键的作用,对于广大硬件工程师来说具有很大的便利性和实用性
    发表于 06-21 10:15