首页>>科技 >>内容

嵌入式系统设计与应用期末考试题,嵌入式系统设计的10个应用技巧

发布时间:2023-09-09 12:04:36编辑:温柔的背包来源:

嵌入式系统设计与应用期末考试题,嵌入式系统设计的10个应用技巧

很多朋友对嵌入式系统设计与应用期末考试题,嵌入式系统设计的10个应用技巧不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

嵌入式系统的设计不仅要知道硬件,还要知道软件是如何影响硬件并与硬件交互的。设计硬件所需的范式可能与设计软件完全相反。当从硬件设计转向包含软件的设计时,硬件工程师应该记住以下十项技能。技巧1:流程图第一,实现第二。

当工程师第一次进入软件开发领域时,会有一种强烈的诱惑促使他们投入工作,立刻开始编写代码。这就像在电路逻辑图完成之前试图设计一个印刷电路板(PCB)一样。开发软件的时候,一开始就抑制住写代码的冲动是非常重要的。你应该首先制作一个带有流程图的软件架构图。

这种方法将使开发者对应用所需的不同零部件形成一个概念,就像电路逻辑图可以告诉工程师需要哪些硬件部件一样。这样可以保证整个程序建立在良好的组织和周密的考虑之上,减少程序的调试时间,从长远来看省时省事。技巧2:使用状态机来控制程序流是20世纪最伟大的软件发明之一。

一个应用程序通常可以分为多个状态机,每个状态机控制应用程序的一个特定部分。这些状态机都有自己的内部状态和状态转换,从中可以看出软件是如何与各种激励交互的。用状态机来设计软件可以简化软件的开发,使其模块化、可维护、易于理解。有许多资源可以演示状态机理论和算法。技巧3:避免使用全局变量。

在函数式编程时代,功能先于形式,程序员的唯一目标是让程序尽可能快地运行,而不考虑程序结构或可重用性。这种编程范式将毫无顾虑地使用全局变量,程序中的任何函数都可能修改它。这样一来,变量被破坏或者变量被误用的概率就增加了。在新近推荐的面向对象范例中,变量应该在最小范围内定义和封装,以防止误用或破坏其他函数。

因此,建议限制使用的全局变量的数量。这些变量可以通过C语言中的外部关键字来标识。技巧4:充分利用模块化。无论你问哪个工程师,项目的哪个部分最有可能延期和超预算,答案都是软件。软件通常很复杂,难以开发和维护,尤其是当整个应用程序存在于单个文件或松散关联的多个文件中时。

为了提高可维护性、可重用性和复杂性,强烈建议程序员充分利用现代编程语言的模块化,将常用功能分解成模块。通过这种方式分解代码,程序员可以着手构建函数库和特征库,然后在一个又一个应用程序中重用它们,从而通过持续测试提高代码质量,同时减少开发时间和成本。技巧5:保持中断服务程序简单。

中断服务例程用于中断处理器当前代码的执行,并处理刚刚触发中断的外围设备。每当执行中断时,都需要一定的开销来保存当前的程序状态并运行中断,然后将处理器返回到原来的程序状态。现代的处理器比许多年前的处理器快得多,但我们仍然需要考虑成本。一般来说,程序员希望尽量减少中断时间,以避免干扰主代码。

这意味着中断应该简短,并且不应该在中断中调用函数。此外,如果中断变得过于复杂或耗时,您应该只在必要时使用中断来做最少的工作,例如,将数据加载到缓冲区并设置标志,然后让主代码处理输入的数据。这样做可以确保大多数处理器把时间花在运行应用程序上,而不是处理中断。技巧6:用示例处理器代码进行测试。

在设计硬件的时候,建立一个原型测试电路总是有好处的,可以保证工程师对电路有正确的理解,然后进行电路板布局,在设计软件的时候也是适用的。硅片制造商通常有样本代码,可以用来测试微处理器的各个部分,以便工程师可以确定该部分的工作条件。

这种方法使人们清楚地知道如何设计软件体系结构以及他们可能遇到的任何问题。在设计初期就知道可能的障碍,比在产品交付前的最后几个小时才发现要好得多。这是一个提前测试一段代码的好方法,但是需要提醒的是,厂商的代码往往不是模块化的,只有经过彻底的修改才能在实际应用中使用。随着技术的发展,也许有一天芯片供应商会提供可以用于生产的代码。

技巧7:限制函数复杂度工程学中有一个老词叫“吻”——。保持简单直接。不管你在处理什么样的复杂工作,最简单的方法就是把它分解成更小、更简单、更容易处理的任务。随着工作或职能越来越复杂,人们越来越难以准确记录所有细节。当编写一个函数时,它的复杂性在当时看起来是适中的,但也必须考虑到工程师需要在6个月后查看代码进行维护。

衡量函数复杂度的方法有很多(比如循环复杂度),现在有工具可以自动计算函数的循环复杂度。经验表明,将函数的循环复杂度保持在10以下是理想的。不管你在处理什么样的复杂工作,最简单的方法就是把它分解成更容易处理的任务。技巧8:使用源代码库并经常提交代码。

人都会犯错,写代码的时候也会犯错。这就是开发人员使用源代码库如此重要的原因。源代码库使开发人员能够“存储”好的代码版本,并描述对基本代码所做的更改。这不仅使开发人员能够恢复或追溯到旧版本的代码,还可以比较旧版本代码之间的差异。

如果开发者的一系列修改破坏了系统,只需一键即可恢复代码版本!请记住,如果您不经常提交代码,存储库将无法实现其预期的目的。如果做了不可修复的修改,提交代码然后恢复需要两周时间,会造成大量的工作和时间损失!

技巧9:代码注释在紧张的软件开发中,开发人员很容易专注于编写和调试代码,而忽略了进行详细的注释。在压力下,注释经常被推迟到最后,因为开发人员认为这是最后一件事。但是,在代码还记忆犹新的时候进行注释是非常重要的,这样其他开发人员或者您就可以阅读注释,并理解代码以后是如何工作的。技巧# 10:使用敏捷开发过程

无论做何种类型的工程设计,都建议先设定并遵守某种流程,以便质量和成本都保持稳定的并能按时交付。

软件开发人员已成功使用Agile开发流程开发高质量软件,这一流程可按任务的优先顺序做开发。

优先级别最高的任务在指定的时间内首先完成,这被称为迭代。

这种方法的好处是可以使软件开发流程保持顺畅,还可以根据结果和客户的需要,使需求和任务适应每一次迭代并做相应的修改。

网友评论@ DickB 我不支持关于中断程序的建议。在使用德州仪器(TI)MSP430低功耗微控制器时,主代码经常只用于将处理器置于睡眠状态。当处理器处于激活状态时,所有工作都在中断程序中完成。 @ The Real Dr Bob 从我的经验看,也许这篇文章的标题应为“软件工程师的10大技巧”。

我在面试一名软件工程师时曾问过这样一个问题:如何为一个新项目写软件? 回答是:着手写软件代码! 我以为他会说“先阅读规范,然后将软件分解成小模块并为它们设计流程图”之类的话。 当然,我没录用他。 @ Thinking_J 一切都很好。 但我还想增加一条:让管理层学习Agile。 最重要的是,在项目的开始阶段就为项目的完成设定一个现实的目标(这是反复强调的)。

而且,项目一开始就应安排好适当的人力和流程,而不是后来才补上。

黄飞

以上知识分享希望能够帮助到大家!