如何说明一个中断驱动的过程?

9
这个问题涉及到软件流程的图示。作为一名电气工程师,我大部分编写的软件是为嵌入式微控制器而做的。在学校里,我们学习使用流程图来阐述我们的算法。然而,现在,我的许多嵌入式项目都是非常依赖于中断的,其中主要过程运行一些基本算法,各种中断源提供它的刺激。因此,我的问题是,有哪些图解技术可以用来说明我的过程,以便未来的开发人员能够轻松理解我的工作并参与开发呢?
以下是一些我需要的关键特性:
  • 显示数据结构及数据如何在进程和中断之间传递
  • 显示导致每个中断的条件
  • 显示数据是如何收集和通过下行链接传递的
  • 显示命令消息是如何被接收、解析和执行的
  • 最好适合层次化拆分为更小的过程,并具有更高级别的细节
3个回答

12

我一直看到抢占时间被画成下面这样:

interrupt timing diagram

或者是这样的行内形式:

inline timing

但我更喜欢前者,因为它给注释留了更多空间。


回应你的评论,也许一个UML状态机图表(经过一些改编)更适合你的目的:

UML状态机


虽然有用,但我更希望找到一种方法来说明微控制器正在执行的总体顶层概念。这种类型的图表更侧重于说明个别中断的执行时间,在我的系统中有几个不同的中断例程。 - kjgregory
@user2635036,您能否详细说明一下您所寻找的内容?顶部的图表显示了多个进程,这些进程可能存在于微控制器中,也可能不存在。但是,如果您忘记了B和C进程,那么A进程就是您的“主”循环,该循环被IRQx中断,然后被更高优先级的IRQy中断,最后返回到主循环。对我来说,这听起来像是一个微控制器程序的顶层概念,即被多个优先级不同的中断级别打断。 - embedded.kyle
那个图解很好地解释了中断和其他进程之间的优先级和时间关系。但它没有解释中断的目的,主函数的目的,什么情况会引起中断,整个uC期望哪些类型的输入和输出,以及uC与其他系统之间存在哪些接口。此外,该图也没有展示数据结构以及数据如何在进程之间传递。 - kjgregory
这就更像了。你知道有没有好的(最好是免费的)绘制这些类型图表的程序? - kjgregory
@user2635036,维基百科网站上的图看起来像是在Visio中完成的。 LucidChart 是一个在线的Visio竞争对手。免费使用。如果您注册,他们会给您一些存储空间;如果您付费,他们会提供许多其他功能。他们甚至有UML特定的形状,所以它应该能满足您的需求。 - embedded.kyle
显示剩余2条评论

4
使用UML类图来展示数据结构。使用序列图来展示类之间的交互和中断服务例程(仅展示函数调用)。使用活动图来展示中断如何与进程交互(信号对此很有用)。活动图还可以用于展示接收数据、解析数据和分派数据的过程。这也可以通过包图的静态视图来表示,其中命令处理程序在一个包中,命令解析器在另一个包中,并由依赖线连接。用例对功能的高级视图很好。
重点是UML支持许多不同的视图(静态、动态、逻辑、部署)进入您的系统。不要试图一次表达所有内容。
下面的图示例展示了一个中断到进程的示例(UML信号)。

4

在图形绘制中,你可以找到很多有趣的方法。我会在这里发布一些。你会发现其中有很多操作系统和架构特定的名称,例如寄存器、事件、函数名称等等。目前更多的是为了表示,对吧?所以我们来看看。

从简单的开始

比之前的略微复杂一些

大图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接