B_QuRT_User_Guide(27)

240 篇文章 11 订阅

17.4 qurt_interrupt_disable()

17.4.1 功能文档

17.4.1.1 unsigned int qurt_interrupt_disable ( int int_num )

禁用一个带有中断号的中断。
在调用该函数之前,必须注册该中断。在qurt_interrupt_disable()返回后,Hexagon子系统不能再向Hexagon核心发送相应的中断,直到为同一中断调用qurt_interrupt_enable()。
避免在短时间内频繁调用qurt_interrupt_disable()和qurt_interrupt_enable()。(1) 当调用qurt_interrupt_disable()时,Hexagon内核中可能已经有待处理中断。因此在一段时间后,Hexagon硬件线程上会收到待处理中断。(2) 在一个中断从Hexagon子系统发送到Hexagon核心后,Hexagon硬件自动禁用该中断,直到内核软件在中断确认阶段重新启用该中断。如果qurt_interrupt_enable()在更早的时候被某些线程调用,中断就会提前被重新启用,这就会在内核软件还在处理前一个中断的时候触发向Hexagon核心发送一个新的中断。
参数
| | | |
|---- | ---- | ---- |
| in | timer | 计时器对象。|
| out | attr | 指向计时器属性的目标结构的指针。|
返回值
QURT_EOK - 中断成功被禁用。QURT_EINT - 中断编号无效。QURT_EVAL - 中断没有被关闭。
依赖项
None.

17.5 qurt_interrupt_enable()

17.5.1 功能文档

17.5.1.1 unsigned int qurt_interrupt_enable ( int int_num )

启用一个带有中断号的中断。
在调用这个函数之前,必须先注册该中断。
参数
| | | |
|---- | ---- | ---- |
| in | group | 定时器组标识符。|

返回值
QURT_EOK - 中断成功启用。QURT_EINT - 中断编号无效。QURT_EVAL - 中断未被注册。

依赖项
None.

17.6 qurt_interrupt_get_config()

17.6.1 功能文档

17.6.1.1 unsigned int qurt_interrupt_get_config ( unsigned int int_num, unsigned int ∗ int_type, unsigned int ∗ int_polarity )

获取 L2VIC 中断配置。
该函数返回指定 L2VIC 中断的类型和极性。
参数
| | | |
|---- | ---- | ---- |
| in | group | 计时器对象。|

返回值
QURT_EOK - 配置成功返回。QURT_EINT - 中断编号无效。
依赖项
None.

17.7 qurt_interrupt_raise()

17.7.1 功能文档

17.7.1.1 int qurt_interrupt_raise ( unsigned int interrupt_num )

引起中断。
在V5 Hexagon处理器上,这个函数会触发一个电平触发的L2VIC中断,并接受0到1023范围内的中断号。
参数
在这里插入图片描述
返回值
QURT_EOK - 成功
-1 - 失败;不支持该中断。
依赖项
None.

17.8 qurt_interrupt_register()

17.8.1 功能文档

17.8.1.1 unsigned int qurt_interrupt_register ( int int_num, qurt_anysignal_t ∗ int_signal, int signal_mask )

注册中断。
启用指定的中断,并将其与指定的QuRT信号对象和信号掩码联系起来。
信号在32位掩码值中表示为第0到31位。屏蔽位值为1表示必须等待信号,0表示不等待。
当中断发生时,信号掩码中指定的信号在信号对象中被设置。中断服务线程(IST)常规地等待该信号来处理中断。注册中断的线程被设置为IST线程。
一个信号对象最多可以注册31个独立的中断,这是由该对象可以存储的独立信号的数量决定的。QuRT保留信号31。因此,一个IST可以处理几个不同的中断。
QuRT保留了一些中断供内部使用 - 其余的中断可供应用程序使用,因此是有效的中断号。如果指定的中断号不在有效范围内,注册操作会返回状态值QURT_EINT。
一次只能有一个线程被注册到一个特定的中断中。试图注册一个已经注册过的中断会返回状态值QURT_EVAL。
在一个信号对象中,一次只能有一个信号位被注册到一个特定的中断中。试图将多个信号位注册到一个中断中,会返回状态值QURT_ESIG。
一旦信号注册了一个中断,QuRT只能在接收中断时设置其信号位。来自其他软件线程的QuRT信号API不能设置信号,即使是未使用的信号位。
注意:中断号的有效范围在模拟器以外的目标执行环境中可能有所不同。欲了解更多信息,请参阅相应的硬件文件。
相关数据类型
qurt_anysignal_t
参数
在这里插入图片描述
返回值
QURT_EOK - 中断成功注册。
QURT_EINT - 中断编号无效。
QURT_ESIG - 无效的信号位掩码(不能同时设置多个信号)。QURT_EVAL - 中断已经注册。
依赖项
None.

17.9 qurt_interrupt_set_config()

17.9.1 功能文档

17.9.1.1 unsigned int qurt_interrupt_set_config ( unsigned int int_num, unsigned int int_type, unsigned int int_polarity )

设置指定的 L2VIC 中断的类型和极性。注意:在重新配置L2VIC中断之前,要取消对它们的注册。
参数
| | | |
|---- | ---- | ---- |
| in | timer | 计时器对象。|
返回值
QURT_EOK - 成功。
QURT_ENOTALLOWED - 不允许;正在注册中断。QURT_EINT - 中断编号无效。
依赖项
None.

17.10 qurt_interrupt_status()

17.10.1 定义文档

17.10.1.1 unsigned int qurt_interrupt_status ( int int_num, int ∗ status )

返回一个表示指定中断的待定状态的值。
参数

intimer计时器对象。

返回值
QURT_EOK - 成功。
QURT_EINT - 失败;无效的中断编号。

依赖项
None.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值