gzyueqian
13352868059

嵌入式开发:设计嵌入式软件架构的5个步骤—步骤2

更新时间: 2022-11-30 10:30:23来源: 粤嵌教育浏览量:9264

上一篇文章讨论了设计嵌入式软件架构的五个步骤的第一步骤,我们探讨了在嵌入式开发中将嵌入式软件系统视为两种架构的好处独立于硬件的应用业务架构和依赖于硬件的实时架构。

 

在今天的帖子中,我们将探索设计嵌入式软件架构的第二步识别和跟踪数据资产。

 

当团队一起设计他们的嵌入式软件时,工程师有两种倾向;首先,他们想从第一天就进入硬件领域。工程师们表现得好像与硬件交互的底层代码就是最终产品,一刻也不能浪费。不幸的是,这是嵌入式软件开发的过时观点。在大多数系统中,真正的价值在于应用程序代码,即体系结构中与硬件无关的部分。

 

第二,工程师们几乎立即开始抛出围绕中断、消息传递、RTOS交互等设计模式的架构思想。虽然集思广益并让想法得到评估是很好的,但是如何知道什么架构概念和设计模式在第一天就与设计问题相匹配呢?答案是你没有!

 

一旦嵌入式开发团队完成了第一步,分离软件架构,设计嵌入式软件架构的第二步就是识别和跟踪系统中的数据资产。数据资产是系统用来帮助其执行功能的任何数据。例如,嵌入式系统可能有如下数据资产

加密密钥

唯一的标识号

像素地图

控制器状态

 

更多的数据资产进入一个系统,当我们将一切归结为设计和构建实时嵌入式系统时,我们所做的核心工作是管理数据。

 

嵌入式软件设计的首要原则

现代嵌入式软件设计的首要原则是数据决定设计我们可以为完成给定的任务创建各种令人兴奋和独特的架构。然而,最有效的架构是围绕系统数据资产设计的架构。这是因为所有无关紧要的垃圾,因为它是最新和最伟大的,或者因为我们认为它是优雅的,所以经常会被丢弃。

 

当我们关注数据时,体系结构可能会过度关注它应该如何处理数据。事实证明,只能对数据进行一些操作。首先,系统可以输入数据。例如,用户可以按下按钮或通过通信接口接收串行数据。第二,系统可以输出数据。例如,向显示器显示像素图或驱动电机。第三,系统可以处理数据。例如,可能串行数据以分组格式进入系统,然后进行解码。进行处理以验证数据包,然后解压缩存储的数据。最后,系统可以将数据存储在易失性或非易失性存储器中。

 

识别数据资产和可以在数据上执行的操作可以极大地帮助嵌入式开发团队设计其嵌入式软件架构。数据资产就像向架构师挥舞的红旗,表明设计中的架构需求。不幸的是,太多的团队忽略了数据,而是在了解他们试图用系统解决的数据问题之前追逐现代设计模式。

 

以数据为中心的架构意味着什么?

许多嵌入式软件开发人员会觉得数据决定设计这个想法有点奇怪。这很令人惊讶,因为在面向对象编程中,我们专注于创建对象,这些对象是数据的集合,并对这些数据进行操作。老实说,以数据为中心的架构设计观点并不新鲜。然而,从数据的角度来看架构有很多优点。

首先,以数据为中心的架构方法非常适合那些系统存在安全问题的团队。如果对保护的嵌入式系统感兴趣,必须执行威胁模型安全分析(TMSA)。这种分析要求开发人员识别系统中的各种数据资产,并确定他们需要的保护级别。TMSA需要在设计系统架构之前执行,这意味着数据决定的架构所需的许多细节已经可用。

 

第二,识别数据资产可以帮助我们确定如何在组件级别分解系统。假设我们是优秀的架构师,并遵循单一责任原则(SRP)。在这种情况下,很有可能我们识别的每个数据资产都将被包装在它的模块中,并具有对其进行操作的功能。

 

第三,跟踪各种数据资产如何交互可以开始提示系统在应用程序级别的架构。例如,在嵌入式开发中,假设我可以看到输入到系统中的数据及其与处理数据的速率相比的高频率。在这种情况下,我可以开始将交互与接收数据的输入活动和处理数据的活动绑定。在早期的架构阶段,我不会选择是使用中断、缓冲区还是直接内存访问(DMA)来接收高频数据输入。我只想把问题解决,等到有必要时再做最后决定。我不会立即跳出来说处理活动是一项RTOS任务。该活动可能是一项任务或其他内容。现在说还为时过早。虽然工程师经常努力尽快锁定尽可能多的细节,但优秀的软件架构师会尽可能长时间地推迟决策,以最大限度地提高灵活性。

 

结论

设计嵌入式软件架构的第二步是识别和跟踪系统中的数据资产。对于一个通常专注于硬件的嵌入式软件工程师来说,过度关注数据似乎有些奇怪。改变我们思维模式的一个方法是修改嵌入式软件的定义,使其:

嵌入式软件是为确定性运行而设计和构建的代码,通常有实时期限,通过各种形式的输入、处理、输出和存储来管理数据

 

强大的嵌入式软件架构允许数据决定设计。在嵌入式开发中,识别数据,然后跟踪它如何与系统中的其他数据交互,可以帮助软件架构师看到架构是如何出现的。架构图通常从30000英尺的高处开始,提示组件和任务可能有意义的地方。然而,在这个阶段,我们只想识别数据资产和它们所涉及的操作。

免费预约试听课