针对硬件工程师的10个软件技巧

嵌入式系统设计通常不仅需要了解硬件,还需要了解软件如何影响硬件并与之交互。设计硬件需要某种工程范例,这可能与设计软件完全相反。从硬件设计过渡到包含软件设计时,硬件工程师在开始开发软件时应牢记十个软件提示。

 

技巧1 –首先流程图,然后实施第二点当工程师首先进入开发软件领域时,就会有强烈的诱惑力直接进入并开始编写代码。这种想法等同于在原理图完成之前尝试布局PCB。当坐下来开发软件时,至关重要的一点是,开始写代码的冲动被忽略,而是使用流程图来开发软件的体系结构图。这将使开发人员可以了解应用程序所需的不同零件和组件,就像示意图如何告诉工程师需要哪些硬件组件一样。通过这样做,整个程序将更有可能具有良好的组织和思考能力,从长远来看,通过减少调试时间,可以节省时间和头痛。

 

技巧2 –使用状态机来控制程序流程状态机是20世纪伟大的软件发明之一。一个应用程序通常可以分为多个状态机,每个状态机控制该应用程序的特定组件。这些状态机中的每一个都有自己的内部状态和状态转换,这些状态和状态转换决定了软件如何对各种刺激做出反应。使用状态机设计软件将简化模块化,可维护且易于理解的软件开发。存在各种各样的资源,这些资源展示了状态机理论和算法。

 

技巧3 –避免使用全局变量在函数式编程的早期,函数早于形式出现,程序员的唯一目标是使程序尽可能快地按预期运行,而不考虑程序的结构或可重用性。此编程范例不担心使用程序中任何函数都可以修改的全局变量。结果是增加了变量损坏或变量滥用的机会。在新的推荐的面向对象范例中,应在尽可能小的范围内定义变量并将其封装以防止其他函数滥用或破坏变量。因此,建议您限制使用全局范围的变量的数量。可以使用extern关键字以C语言标识这些变量。

 

提示#4 –利用模块化优势如果您要求任何工程师在项目中最有可能延迟交付且超出预算的部分,那么答案就是软件。软件通常很复杂,并且可能难以开发和维护,特别是如果整个应用程序驻留在一个或多个松散关联的文件中。为了简化可维护性,可重用性和复杂性,强烈建议利用现代编程语言的模块化,并将通用功能分解为模块。通过以这种方式拆分代码,程序员将可以开始构建功能和特性的库,然后可以从一个应用程序重用到另一个应用程序,从而通过持续的测试提高了代码质量,同时还减少了时间和开发成本。

 

技巧5 –使中断服务程序保持简单中断服务程序用于从当前正在执行的代码分支中中断处理器,以处理刚刚触发其中断的外设。每当执行中断时,都需要一定的开销才能保存当前程序状态,运行中断,然后将处理器返回到原始程序状态。现代处理器的速度比几年前快得多,但是仍然需要考虑这一开销。通常,程序员希望最大程度地减少中断所花费的时间,以免干扰主代码分支。这意味着中断应该简短而简单。不应从中断中调用函数。另外,如果中断开始变得太复杂或花费太多时间,则应使用该中断来执行所需的最小操作,例如将数据加载到缓冲区中并设置一个标志,然后允许主分支处理该中断。传入数据。通过这样做,可以确保大部分处理器周期都花在了运行应用程序上,而不仅仅是处理中断。

 

技巧6 –使用处理器示例代码对外围设备进行试验在设计硬件时,构建原型测试电路总是有帮助的,以确保工程师在布局电路板之前对电路的理解是正确的。编写软件时也可以这样做。硅制造商通常会提供示例代码,可用于测试微处理器的各个部分,以便工程师可以了解该部分的工作原理。这样可以洞悉应如何组织软件体系结构以及可能遇到的任何潜在问题。在设计过程的早期识别潜在的障碍,而不是在产品交付前的最后几个小时发现。这是一种预先测试代码段的好方法,但是要警告制造商代码通常不是模块化的,并且无需进行大量修改即可在实际应用中轻松使用。随着时间的流逝,这种情况一直在变化,有一天可能会直接从芯片供应商处获得生产就绪代码。

 

提示7 –极限功能的复杂性工程学中有一句古老的名言叫KISS。保持简单愚蠢。处理任何复杂的任务时,最简单的方法是将其分解为更小和更容易管理的任务。随着任务或功能变得越来越复杂,人们越来越难以跟踪所有细节而不会出现错误。编写功能时,复杂性在当时似乎是适当的,但是工程师在需要时如何查看代码。应考虑保持六个月的路途。有许多用于测量函数复杂度(例如圈复杂度)的技术。存在可以自动计算函数的圈复杂度的工具。一般经验法则表明,需要具有小于10的圈复杂度的函数。

 

提示#8 –使用源代码存储库并频繁提交错误是人类的一部分,当人类编写代码时,他们不会奇迹般地改变。因此,开发人员必须使用源代码存储库。源代码存储库允许开发人员检入良好版本的代码,并描述对代码库进行了哪些更改。这使开发人员不仅可以还原或返回到旧版本的代码,还可以比较以前的版本进行更改。如果开发人员进行了大量更改,然后破坏了系统,只需单击一下鼠标,即可返回良好的代码版本!请记住,如果不经常提交代码,则存储库将无法按预期工作。如果进行了不可逆的更改,等待两周提交代码然后再返回将浪费大量的工作和时间!

 

提示#9 –彻底记录代码在软件开发大战中,仅将精力集中在编写和调试代码上,而忽略记录是非常容易的。文档往往会成为项目任务的终点,因为在承受压力时这是开发人员心目中的最后一件事。但是,很重要的一点是要记录代码,以便将来的开发人员或将来的自己阅读注释并理解代码的工作方式。

 

提示10 –使用敏捷开发流程在进行任何类型的工程设计时,始终建议定义并遵循某种流程,其结果是质量,成本和按时交付的一致性。软件开发人员已成功使用敏捷开发过程来开发高质量的软件。该过程允许优先考虑需求。优先级最高的任务首先在称为迭代的计划时间段内执行。该过程的优点在于,它使软件开发过程能够流畅进行,并允许需求和任务根据客户的结果和需求随每次迭代进行调整和更改。

 

提示#10a –掌握开发技术的最前沿知识学习用于开发嵌入式软件的最新工具和技术的最重要的地方之一就是参加一年一度的嵌入式系统大会,该大会每年在整个地区的不同地点举行三届。 United这些会议吸引了来自世界各地的工程师,为他们提供了互动,参加研讨会和动手练习的机会,这将增进工程师对软件开发的理解。除了参加会议之外,EDN还提供各种有关硬件和软件主题的博客,以使工程师始终参与并学习,以便他们准备在其下一个开发项目中应用前沿技术。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.