1. ARM安全分区中断处理概述
中断处理机制是嵌入式系统开发中最核心的基础设施之一,特别是在安全关键领域。ARM安全分区架构为安全敏感应用提供了隔离的执行环境,而其中的中断处理设计直接关系到系统的实时性和可靠性。
在传统嵌入式系统中,中断处理通常分为两个层级:
- FLIH(First-Level Interrupt Handler):第一级中断处理程序,运行在中断上下文中,负责最紧急的现场保存和硬件响应
- SLIH(Second-Level Interrupt Handler):第二级中断处理程序,运行在任务上下文中,处理耗时较长的业务逻辑
安全分区架构下的中断处理面临三个特殊挑战:
- 执行权限隔离:FLIH需要访问硬件寄存器,但安全分区限制了内存访问权限
- 上下文切换成本:安全分区间的上下文切换比普通任务切换开销更大
- 并发控制复杂度:FLIH与分区线程可能并发访问共享数据
关键设计原则:在满足实时性要求的前提下,尽可能使用SLIH模式。只有当中断响应延迟要求小于上下文切换时间时,才考虑FLIH方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. FLIH与SLIH的选型决策
2.1 响应时间分析模型
选择FLIH还是SLIH,核心决策依据是中断响应的时间约束。我们可以建立如下数学模型:
code复制总响应时间(T_response) = 中断延迟(T_latency) + 处理时间(T_process)
对于FLIH模式:
- T_latency:从中断触发到FLIH开始执行的时间(通常<100ns)
- T_process:FLIH本身的执行时间
对于SLIH模式:
- T_latency:包含上下文切换时间(安全分区环境下通常1-10μs)
- T_process:SLIH执行时间 + 信号处理延迟
2.2 典型场景决策树
基于上述模型,我们得出以下决策流程:
-
首先明确硬实时要求(Hard Deadline)
- 如果要求<1μs → 必须使用FLIH
- 如果>10μs → 优先考虑SLIH
- 中间值 → 需要实测验证
-
评估数据处理复杂度
- 简单状态读取/寄存器操作 → 适合FLIH
- 需要协议解析/复杂计算 → 必须使用SLIH
-
检查资源共享需求
- 无共享数据 → 两种模式均可
- 有共享数据 → 优先SLIH,必须用FLIH时需严格设计并发控制
3. FLIH编程模式详解
3.1 连续执行模式
适用于产生连续数据流的外设(如UART、ADC等),特点是在处理当前数据时不能错过后续中断。典型实现包含三个关键组件:
- 原子状态变量:记录中断状态
- 环形缓冲区:存储数据流
- 信号量机制:通知线程上下文
c复制// 示例:UART接收中断处理
#define BUF_SIZE 256
static uint8_t
