SylixOS 中断底半部(笔记)

SylixOS 中断底半部

内核在处理中断请求时,要求在单位时间内可以处理尽可能多的中断,也就是系统要求处理中断的吞吐率要竟可能的大。但是大多数的中断处理程序是很复杂的,很难再短时间内处理完毕。

为了提高系统的响应能力和并发能力,SylixOS 将中断处理分为两个阶段: 顶半部底半部

  • 顶半部:一般进行一些紧急的硬件操作,包括读取寄存器中的中断状态,清除中断标志,将底半部处理程序挂到底半部的执行队列中。
  • 底半部:这部分主要完成大部分的耗时操作,并且可以被新的中断打断 (SylixOS 实现底半部的机制是工作队列)。

以 GPIO 中断中使用工作队列为例:

* 在 GpioInit 函数中:
{
	//获取 KEY_NUM 对应的 GPIO
	API_GpioRequestOne(KEY_NUM, LW_GPIOF_IN, "KEY"); 
	//配置引脚为中断模式,并申请一个中断号
	_G_iIrqNum = API_GpioSetupIrq(KEY_NUM, LW_FALSE, 0); 
	//安装对应中断号的中断处理函数
	API_InterVectorConnect((ULONG)_G_iIrqNum, (PINT_SVR_ROUTINE)&GpioIsr, 
	(PVOID)KEY_NUM, "GpioIsr"); 
	//使能中断
	API_InterVectorEnable(_G_iIrqNum); 
}
* 在 GpioIsr 函数中:
{
	API_GpioClearIrq(iGpioNum);
	API_WorkQueueInsert(..__workHandler...);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值