异步事件
异步支持
通常,您从周期中断源(例如硬件计时器)对计划从其生成代码的模型进行计时。采用周期性时钟的单速率模型中的模块以计时器中断速率(模型的基本速率)运行。采用周期性时钟多速率的模型中的模块以基本速率或该速率的倍数运行。
许多系统还必须支持模块的执行,以响应与系统的周期计时源有关的异步事件。例如,外围设备可能通过产生中断来发出信号通知输入操作已完成。系统必须处理这种中断,例如,通过从中断设备获取数据来处理。
本主题介绍如何使用模块为异步事件处理建模和生成代码,其中包括处理硬件生成的中断、计时器维护、异步读写操作以及实时操作系统 (RTOS) 下异步任务的生成。此模块库演示与示例 RTOS (VxWorks®) 的集成。虽然这些模块是针对示例 RTOS 的,但本章提供的源代码分析和其他信息可用于开发支持其他目标 RTOS 的异步事件处理的模块。1
用于调用示例实时操作系统的模块库
下图显示了 vxlib1
模块库中的模块。
库中的关键模块是 Async Interrupt 和 Task Sync 模块。这些模块是针对示例 RTOS (VxWorks) 的。您可以对它们进行修改,以将其用于您的 RTOS 应用程序。
注意
使用 Interrupt Templates 模块库中的模块(Async Interrupt 和 Task Sync)进行仿真和代码生成。您可用使用这些模块提供的示例作为起点,帮助您为目标环境开发自定义模块。
要实现对示例 RTOS 以外的 RTOS 的异步支持,请使用这些规范和 Create a Customized Asynchronous Library 中的示例代码来针对您的 RTOS 调整 Interrupt Template 库模块。
Interrupt Template 库包括可用于以下目的的模块:
生成中断级代码 - Async Interrupt 模块
生成调用函数调用子系统的 RTOS 任务 - Task Sync 模块
Rate Transitions and Asynchronous Blocks中讨论了在异步环境中使用受保护和不受保护的 Rate Transition 模块。有关速率转换的一般信息,请参阅基于时间的调度和代码生成。
示例和其他信息
示例模型
rtwdemo_async
使用tornado.tlc
系统目标文件和 Interrupt Template 模块库。要打开模型,请在 MATLAB® 命令提示符下键入rtwdemo_async
。示例模型
rtwdemo_async_mdlreftop
使用tornado.tlc
系统目标文件和 Interrupt Template 模块库。要打开模型,请在 MATLAB 命令提示符下键入rtwdemo_async_mdlreftop
。基于时间的调度和代码生成讨论周期性模型的一般多任务和速率转换问题。
Embedded Coder® 文档讨论了
ert.tlc
系统目标文件,包括任务执行和调度。有关对本主题提及的示例 RTOS (VxWorks) 的系统调用的信息,请参阅 Wind River® 网站上的 VxWorks 系统文档。
相关主题
- 基于时间的调度和代码生成
- Generate Interrupt Service Routines
- 生成并同步 RTOS 任务的执行
- Pass Asynchronous Events in RTOS as Input to a Referenced Model
- Timers in Asynchronous Tasks
- Import Asynchronous Event Data for Simulation
- Rate Transitions and Asynchronous Blocks
- Create a Customized Asynchronous Library
- Asynchronous Support Limitations
1 VxWorks is a registered trademark of Wind River Systems, Inc.