嵌入式系统设计不仅需要理解硬件,还需要理解软件对硬件的影响以及与硬件的交互。设计硬件所需的范式可能与设计软件完全相反。从硬件设计过渡到包含软件的设计时,硬件工程师(news.eda365.com)必须牢记一些软件技术。
下面分享一下——硬件工程师必须要做的十大软件诀窍。
提示#1:流程图第一,实现第二
工程师第一次进入软件开发领域时,会有强烈的诱惑,让他们立即投入工作,开始写代码。这相当于在电路逻辑图完成之前设计印刷电路板(PCB)。在着手开发软件时,抑制写代码的冲动很重要,所以首先要使用流程图开发软件体系结构。这种方法使开发人员能够形成应用程序所需的多个部分和程序集的概念,就像电路逻辑图可以告诉工程师所需的硬件组件一样。这样,整个程序可以在良好的组织和深思熟虑的基础上减少程序调试时间,长期节省时间,减少麻烦。
提示#2:使用状态机控制程序流
状态机是20世纪最伟大的软件发明之一。应用程序通常可以分为多个状态机,每个状态机控制应用程序的特定部分。这种状态机通过自身的内部状态和状态转换,可以了解软件如何与各种激励机制交互。使用状态机设计软件可以简化软件开发,并使其易于模块化、维护和理解。现在有多种资源可以演示状态机理论和算法。
提示#3:防止使用全局变量
在函数式编程的时代,函数必须先于形式,程序员唯一的目标是让程序尽快运行,而不管程序结构或可重用性如何。这种编程范式无忧地使用程序中所有函数都可以修改的全局变量。结果,变量被破坏的概率增加了,或者变量被误用的可能性增加了。新推荐的面向对象范式要求在最小范围内定义和封装变量,以防止其他函数的误用或损坏。因此,最好限制使用的全局变量的数量。在c语言中,这些变量可以通过外部关键字进行标识。
提示#4:利用模块化功能
不管你问哪个工程师,即使项目的哪个部分最有可能推迟发货,超过预算,答案也是软件。软件往往很复杂,很难开发和维护。尤其是当整个应用程序位于单个文件或多个松散连接的文件中时。为了提高可维护性、可重用性和复杂性,程序员最好充分利用现代编程语言的模块化功能,将通用功能划分为模块。通过这种方式分解代码,程序员可以构建函数和特性库,然后在一个应用程序中再次使用,从而通过连续测试提高代码质量,同时减少开发时间,降低开发成本。提示#5:保持中断服务实例的简单性
中断服务例程用于中断处理器当前代码的执行,并处理刚刚触发中断的外围设备。每次中断时,都需要存储当前程序的状态,运行中断,然后将处理器恢复到原始程序状态的开销。现代处理器比几年前的处理器快得多,但仍要考虑这个成本。一般来说,程序员会尽量减少停机时间,以免干扰主代码。换句话说,中断应该是短暂而简单的。中断不应该调用函数。此外,如果中断太复杂或太耗时,则只有在必要时才使用中断来执行最少的任务。例如,必须将数据加载到缓冲区中,设置标志,然后让主代码处理输入的数据。这样,大多数处理器时间将用于运行应用程序,而不是处理中断。
提示#6:使用处理器示例代码进行测试
设计硬件时,建立原型测试电路总是有益的。这样,工程师在布置电路之前,就能对电路有正确的了解。设计软件时也是如此。硅制造商通常有样品代码,可以测试微处理器的各个部分,从而使工程师能够确定该部分的工作方式。通过这种方法,人们可以清楚地知道如何设计软件体系结构以及可能出现的任何问题。了解设计初期可能存在的障碍比产品配送前最后几个小时发现的障碍我最好。这是预先测试代码的好方法,但请记住,制造商代码经常不模块化,必须彻底修改,以便在实际应用中使用。随着技术的发展,也许有一天芯片供应商会提供可用于生产的代码。
提示#7:限制功能的复杂性
工程上有个古老的词叫“吻”。——简单直白。处理某些复杂的事情时,最简单的方法是把它分解成更小、更简单、更容易处理的任务。随着工作或功能越来越复杂,人们准确记录所有细节也变得更加困难。编写函数时,其复杂性在当时看起来是适当的,但也要考虑到,6个月后工程师进行维护时需要确认代码。衡量函数复杂性(如循环复杂性)的方法有多种,现在有了自动计算函数循环复杂性的工具。经验表明,函数的循环复杂性保持在10以下是最理想的。
处理某些复杂的任务时,最简单的方法是把它分解成更容易处理的任务。
提示#8:使用源代码存储库并经常提交代码
人都会犯错,写代码的时候也会犯错。这就是开发人员使用源代码存储库的重要原因。源代码存储库使开发人员能够“保存”好的代码版本,并说明对基本代码所做的修改。这使开发人员不仅可以还原或向下钻取的上一个代码,还可以比较上一个代码之间的差异。开发人员进行了一系列修改,系统损坏后,只需单击一下即可恢复代码版本!请记住,如果不经常提交代码,存储库将无法达到预期的目的。如果做出不可恢复的更改,过了两周才提交代码并恢复,可能会造成很多业务和时间损失!提示#9:代码注释
在紧张的软件开发中,开发人员可以忽略详细注释,轻松地集中精力编写和调试代码。在压力下,锡工作经常被拖到最后。因为开发者认为这是最后一件事。但是,当代码记忆犹新时,注释很重要。这样可以让其他开发者或以后自己阅读注释,理解代码是如何工作的。
提示#10:使用Agile开发过程
无论进行什么样的工程设计,最好先设置和遵循流程,以确保质量和成本稳定,按时交货。软件开发人员成功地开发了高质量的软件,可以使用Agile开发过程根据任务优先级进行开发。优先级最高的任务在指定的时间内首先完成,称为重复。这种方法的优点是能够顺利地保持软件开发过程,并根据结果和客户的需求,根据每次迭代调整和修改需求和任务。
制图网(www.makepic.net),专业的logo免费设计在线生成网站,全自动智能化logo设计,商标设计,logo在线生成!
欢迎使用制图网制作属于您公司自己的logo,不仅专业而且经济实惠,全方位满足您公司品牌化、视觉化的需求。