开发RTOS应用软件架构的5条提示

实时操作系统(RTOS)正在进入几乎所有IoT设备中。 实时操作系统 能够管理低级资源和复杂的时序要求,使其非常适合这些应用程序。尽管要努力设计包含RTOS的软件体系结构并不少见。在今天的帖子中,我们将研究开发基于健壮和灵活的RTOS的软件体系结构的几个技巧。

技巧1 –打破应用程序对RTOS的依赖

我经常在基于RTOS的软件体系结构中看到的一个问题是,开发人员选择他们的RTOS,然后围绕它构建整个软件体系结构。乍一看,这似乎不是一个坏主意,但要将该代码维护或移植到可能使用其他RTOS的其他应用程序中,可能会变得很头疼。考虑一下,没有RTOS开发人员遵循的RTOS接口标准(即使Arm确实具有CMSIS-RTOSv2)。相反,大约有100个不同的RTOS,每个都有自己的API。切换RTOS要求找到并更改每个RTOS API调用,这可能很耗时。

设计架构的更好方法是使应用程序与RTOS无关。无论如何,大多数RTOS都提供类似的功能,因此将RTOS置于操作系统抽象层(OSAL)之后,可以将选定的特定RTOS推迟到更晚的时间,从而减少对应用程序RTOS的依赖性并提高体系结构的灵活性。

提示2 –使用由外而内的技术定义初始任务

定义任务的外部方法是一种方法,该方法允许开发人员查看系统,然后从用户与之交互的物理功能开始分解系统,然后向内处理与应用程序相关的任务。例如,您可以想象具有以下功能的互联网恒温器:

  • 液晶屏
  • 触摸屏
  • LED背光
  • 无线上网
  • 记忆体储存
  • 传感器接口,例如温度,湿度和电流
  • 风扇
  • 蓝牙

如您所见,这些主要是外部的,面向用户的和基于硬件的设备。全面描述“由外而内”的技术已经超出了今天的博客,但是所产生的任务可以分为以下任务:

  • 输入处理
  • 网络管理
  • 列印
  • 控制者
  • 内存管理

请记住,这项技术可以帮助您确定所需的任务,通常有不止一种方法可以很好地完成任务。 (而且有些问题只会带来超出其价值的麻烦)。

技巧3 –使用速率单调调度(RMS)定义任务优先级

一旦在架构中定义了任务,使用速率单调调度来确定任务设计是否朝着正确的方向很有用。假设您有十几个任务,但问题实际上变成了:“我真的可以成功地安排所有这些任务,并确保没有错过最后期限吗?”。 RMS旨在帮助您回答该问题。

我经常会创建一个任务表,其中包含我要跟踪的所有参数。例如,我将包含以下数据:

  • 任务优先级(即使我可能尚未分配)
  • 任务堆栈大小(或深度取决于RTOS)
  • 任务估计执行时间(以毫秒为单位)
  • 任务周期(以毫秒为单位)
  • 任务CPU利用率(执行时间/周期)

创建表后,我们将汇总每个任务的利用率,然后根据系统中的任务数量,确保CPU利用率小于以下列表中的值:

如果我们的系统有五个任务,我们希望我们的CPU利用率之和小于0.743,以确保可以安排我们的任务。 (请记住,RMS有很多假设,但这是一个很好的检查方法)。

技巧4 –创建数据流程图

数据流图通常提供有关数据如何流经应用程序的单个高级应用程序图片。使用RTOS时,该图显示:

  • 数据在哪里生成
  • 数据如何从生成位置移动到使用位置
  • 数据存储位置
  • 如何访问数据

该图通常还可以帮助开发人员了解系统中的主要RTOS组件。例如,该图经常显示:

  • 任务
  • s列
  • 信号量
  • 互斥锁保护共享数据
  • 中断服务程序
  • 事件标志

在布置框架代码以测试体系结构时,该图可以极大地帮助您。

提示5 –预先定义任务和消息界面

一旦创建了数据流程图以开始研究并开始编写应用程序,这将非常诱人。毫无疑问,这种方法会运行一段时间,但是我发现,如果开发人员不花时间仔细定义任务和消息接口,则可能导致返工。尽管数据流程图通常显示数据如何通过应用程序传播,但不一定需要定义数据结构。

然后的目标是预先检查每个消息队列,然后为这些消息建立结构。这很重要,因为它将定义消息的外观,但也将有助于任何基础模块的界面外观。例如,管理一系列阀门的任务可能期望包含以下内容的消息:

  • 阀门ID
  • 气门状态
  • 阀门所需的开启时间

再一次,它可以期待:

  • 定义阀状态的面罩
  • 准时清单

归根结底,做事总是有不止一种方式,一种不一定比另一种更好。但是,在为支持任务执行的其他模块构建接口时,了解传递的消息将有所帮助。

结论

开发RTOS软件体系结构是了解将要构建的应用程序及其主要组成部分的好方法。我们在今天的文章中探讨了一些技巧,这些技巧不仅可以帮助读者基于RTOS创建更清晰,更灵活的应用程序,还可以帮助他们交流应用程序的设计意图。这些技巧应有助于读者快速启动应用程序开发,同时最大程度地减少对RTOS的依赖。

发表评论

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

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