主要内容

任务同步

运行下游函数调用子系统的代码或Stateflow通过生成一个示例RTOS (VxWorks)任务

  • 库:
  • 金宝appSimulink编码器/异步/中断模板

  • 任务同步块

描述

任务同步block生成一个示例RTOS (VxWorks)任务,该任务调用函数调用子系统或statflow®图表。通常,你放置任务同步块之间的异步中断块和函数调用子系统块或状态流程图。或者,你可以把任务同步阻塞到具有事件的状态流图的输出端口,输出仿真软件金宝app,配置为函数调用。

任务同步布洛克:

  • 使用RTOS (VxWorks)系统调用taskSpawn产生一个独立的任务。当任务被激活时,它将调用下游函数调用子系统代码或状态流程图。块调用taskDelete在模型终止期间删除任务。

  • 创建一个信号量,使连接的子系统与块的执行同步。

  • 将生成的任务封装在一个infinite中循环。在循环中,派生的任务通过使用semTake.第一个呼叫semTake指定NO_WAIT.这个设置让任务决定是否有第二个semGive已发生在功能调用子系统或图表完成之前。该顺序表示中断速率过快或任务优先级过低。

  • 生成同步代码(例如,semGive ()).这段代码允许生成的任务运行。该任务依次调用连接的函数调用子系统代码。同步代码可以在中断级别运行。两者之间的联系异步中断任务同步块完成此操作并触发任务同步块在一个ISR。

  • 如果下游算法代码中的块需要绝对时间,则提供绝对时间。时间来自由维护的定时器异步中断块或来自与之关联的任务维护的独立计时器任务同步块。

在设计应用程序时,请考虑何时可以为连接到任务同步块。默认情况下,当RTOS (VxWorks)激活任务时读取时间和输入数据。在这种情况下,数据(输入和时间)被同步到任务本身。如果您选择将此任务的数据传输与调用者任务同步选择和任务同步块驱动程序是异步中断块,时间和输入数据读取时,中断发生(即,在ISR)。在这种情况下,数据与任务同步块。

请注意

你可以使用vxlib1库(异步中断任务同步)进行模拟和代码生成。这些块提供了起点示例,以帮助您为目标环境开发自定义块。

港口

输入

全部展开

一个电话异步中断块。

输出参数

全部展开

对函数调用子系统的调用。

参数

全部展开

的第一个参数taskSpawnRTOS中的系统调用。RTOS (VxWorks)使用此名称作为任务函数的名称。这个名称也可以作为调试辅助。例程使用任务名称来标识调用它们的任务。

生成时分配给函数调用子系统任务的RTOS任务优先级。RTOS (VxWorks)的优先级范围为0 ~ 255,其中0代表最高优先级。

请注意

的仿真软金宝app件®软件不模拟异步任务行为。异步任务的任务优先级仅用于代码生成,在模拟过程中不考虑。

任务堆栈可增长到的最大大小。当RTOS (VxWorks)生成任务时分配堆栈大小。根据任务中的局部变量数量选择堆栈大小。通过检查为任务生成的代码(以及从生成的代码中调用的函数)来确定大小。

如果未选中(默认值),

  • 该块维护一个计时器,提供下游块计算所需的绝对时间值。定时器是独立于定时器维护异步中断块调用任务同步块。

  • 一个计时器分辨率选项出现。

  • 计时器的大小选项指定时间计数器的字长。

如果选中,

  • 该块不维护一个独立的计时器,也不显示计时器分辨率字段。

  • 需要定时器的下游块使用由异步中断块调用任务同步块(见异步任务中的计时器).定时器值是在异步中断服务时读取的。的调用所调用的块的数据传输任务同步对象关联的任务中执行异步中断块。因此,数据传输与调用者同步。

块的计时器的分辨率,以秒为单位。只有当将此任务的数据传输与调用者任务同步不是选择。默认情况下,块通过调用tickGet函数在RTOS (VxWorks)中。默认分辨率是1/60秒。

用于存储硬件计时器的时钟滴答声的比特数。大小可以是32位(默认),16位8位,或汽车.如果您选择汽车时,代码生成器根据的设置确定计时器的大小应用程序生命周期(天)计时器分辨率

默认情况下,定时器值存储为32位整数。当计时器的大小汽车时,可通过设置参数间接控制计数器的字长应用程序生命周期(天)选择。如果你设置应用程序生命周期(天)如果值太大,代码生成器无法将其作为指定分辨率的32位整数处理,则它将使用第二个32位整数来处理溢出。

有关更多信息,请参见控制时间计数器的内存分配.另请参阅异步任务中的计时器

另请参阅

主题

介绍了R2006a