一种制造技术

技术编号:39833750 阅读:7 留言:0更新日期:2023-12-29 16:16
本发明专利技术公开了一种

【技术实现步骤摘要】
一种Linux内核支持快速中断响应的方法


[0001]本专利技术属于嵌入式
Linux
设备
,涉及一种
Linux
内核支持快速中断响应的方法,适用于快速响应某一外设的中断,通过中断执行实时性需求较高任务的场景


技术介绍

[0002]Linux
系统因其强大的功能和开源特性广泛应用与嵌入式设备,经过多年发展虽然在实时性方面有了一些的提高,但对于一些需要快速响应的场景仍有些力不从心

现代嵌入式
CPU
的中断系统多数支持快速中断
(FIQ)

FIQ
是优先级高于普通中断
(IRQ)
的一种快速响应中断,
CPU
从硬件上保证了
FIQ
的快速响应特性
。Linux
内核中
FIQ
完全独立于操作系统,不受系统调度和普通中断的影响,因此系统软件上响应优先级最高

但在
Linux kernel
中仅提供了开启支持快速中断
FIQ
使能和拷贝
FIQ
中断服务函数到函数入口地址的功能,不能直接使用
FIQ
响应中断,对
FIQ
的支持并不完整


技术实现思路

[0003]本专利技术的目的是提供一种
Linux
内核支持快速中断响应的方法

[0004]本专利技术方法具体是:
[0005]步骤
(1)

Linux
系统中断初始化时,将所有外设和系统中断根据
CPU
技术手册配置为普通中断
IRQ

[0006]步骤
(2)

CPU
的中断寄存器的物理基地址映射到虚拟基地址,通过中断寄存器将需要快速响应的外设从普通中断
IRQ
中断移除,配置为快速中断
FIQ
;快速中断
FIQ
优先级高于普通中断
IRQ

[0007]步骤
(3)
申请一段内存,对齐申请内存的起始地址,对齐后的内存空间作为
FIQ
中断的栈;
[0008]步骤
(4)
调用
Linux
系统接口函数,将
FIQ
中断服务函数拷贝到
Linux
系统的
FIQ
中断入口地址;
[0009]由于系统为
FIQ
预留的地址空间仅有
500
字节左右,所以
FIQ
的中断服务函数要尽可能简短,所述的
FIQ
中断服务函数采用汇编语言实现,
FIQ
中断服务仅做
C
函数调用的上下文保存到栈和从栈恢复操作,复杂的业务逻辑放在
C
函数中实现;
[0010]步骤
(5)

C
函数地址保存到
CPU
通用寄存器组其中一个通用寄存器中,用于在
FIQ
中断服务函数中跳转调用,并将
CPU
通用寄存器组中每个通用寄存器的值保存至
FIQ
中断的栈中;
[0011]步骤
(6)
当有外设中断触发时,
Linux
系统跳转至
FIQ
中断入口地址,执行
FIQ
中断服务函数,通过中断控制器的寄存器获取触发中断的外设中断
ID

[0012]步骤
(7)FIQ
中断服务函数要调用
C
函数时,按照标准将调用参数保存在通用寄存器中;保存调用参数和保存
C
函数地址的通用寄存器为不同的通用寄存器;
[0013]步骤
(8)
跳转到通用寄存器保存的
C
函数地址,执行
C
函数;
[0014]步骤
(9)

C
函数中,查找外设中断
ID
所对应的业务逻辑函数,执行业务逻辑函数,响应对应的外设中断;
[0015]C
函数中设计有调用函数链表结构,调用函数链表中保存有各个外设中断
ID
,以及每个外设中断
ID
所对应的业务逻辑函数;
[0016]步骤
(10)
业务逻辑函数执行结束后,返回上一级
C
函数中;
C
函数执行结束后,返回上一级
FIQ
中断服务函数;通过
FIQ
中断服务函数,将
CPU
通用寄存器组中每个通用寄存器的值恢复为
FIQ
中断的栈中保存的值;由于在调用子函数
(C
函数

业务逻辑函数
)
时,
CPU
通用寄存器组中每个通用寄存器的值可能会被修改,通过保存在
FIQ
中断的栈中的通用寄存器的值进行恢复;最后退出
FIQ
中断服务函数,完成响应

[0017]在多核
CPU
系统中,每个
CPU
核拥有独立的中断寄存器,锁定配置中断寄存器的
CPU
核,保证响应中断的
CPU
核与配置中断寄存器的
CPU
核一致

[0018]本专利技术可以将需要快速响应的外设中断配置成快速中断
(FIQ)
,将外设中断
ID
和外设中断服务函数绑定,并将业务逻辑函数注册到
FIQ
中断调用函数链表结构中

当中断触发,即可响应
FIQ
中断调用业务逻辑函数

由于快速中断
(FIQ)
独立于
Linux
系统,所以可以在执行
FIQ
中断服务函数不被
Linux
系统调度所打断,保证优先执行
FIQ
中断服务函数

附图说明
[0019]图1为本专利技术实施例中
ARM GIC
中断系统的
IRQ

FIQ
示意图

具体实施方式
[0020]以下结合实施例对本专利技术技术方案做进一步的说明,以
ARM CPU
集成的中断系统
GIC v2
为例,开启
GPIO

FIQ
中断

如图1所示,
ARM GIC v2
中断系统中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
Linux
内核支持快速中断响应的方法,其特征在于:步骤
(1)

Linux
系统中断初始化时,将所有外设和系统中断根据
CPU
技术手册配置为普通中断
IRQ
;步骤
(2)

CPU
的中断寄存器的物理基地址映射到虚拟基地址,通过中断寄存器将需要快速响应的外设从普通中断
IRQ
中断移除,配置为快速中断
FIQ
;快速中断
FIQ
优先级高于普通中断
IRQ
;步骤
(3)
申请一段内存,对齐申请内存的起始地址,对齐后的内存空间作为
FIQ
中断的栈;步骤
(4)
调用
Linux
系统接口函数,将
FIQ
中断服务函数拷贝到
Linux
系统的
FIQ
中断入口地址;所述的
FIQ
中断服务函数采用汇编语言实现,
FIQ
中断服务仅做
C
函数调用的上下文保存到栈和从栈恢复操作,复杂的业务逻辑放在
C
函数中实现;步骤
(5)

C
函数地址保存到
CPU
通用寄存器组其中一个通用寄存器中,用于在
FIQ
中断服务函数中跳转调用,并将
CPU
通用寄存器组中每个通用寄存器的值保存至
FIQ
中断的栈,覆盖已有的值;步骤
(6)
当有外设中断触发时,
...

【专利技术属性】
技术研发人员:杨明超任昂刘怡雄
申请(专利权)人:杭州国芯科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1