Files
autosar_standard_spec_v4.4/BSWGeneral/AUTOSAR_EXP_InterruptHandlingExplanation.md
T

6.9 KiB
Raw Blame History

AUTOSAR 中断处理说明

AUTOSAR CP Release 4.4.0

原文:Explanation of Interrupt Handling within AUTOSAR(文档 ID 307

翻译状态:已完成 v1

对应原文 PDFBSWGeneral/AUTOSAR_EXP_InterruptHandlingExplanation.pdf


文档标识

字段
文档标题 AUTOSAR 中断处理说明(Explanation of Interrupt Handling within AUTOSAR
文档标识号 307
文档状态 正式版(Final
所属标准 Classic Platform
所属版本 4.4.0

文档变更历史(节选)

日期 版本 变更说明
2018-10-31 4.4.0 编辑性修订
2017-12-08 4.3.1 编辑性修订
2016-11-30 4.3.0 编辑性修订
2013-03-15 4.1.1 R4.1 定稿
2007-12-21 3.0.1 初始发布

目录

  1. 介绍与文档目的
  2. 缩略语与简称
  3. 相关文档
  4. 中断配置概述
  5. 中断操作概述
  6. 中断操作步骤
  7. 中断配置
  8. 总结

1 介绍与文档目的

本文档解释 AUTOSAR 中断处理的机制和概念。它不是规范,而是说明性文档,帮助读者理解 AUTOSAR 如何处理中断。

读者应熟悉:

  • OSEK/VDX OS 概念
  • AUTOSAR 分层架构
  • 微控制器中断机制

2 缩略语与简称

缩略语 描述
ISR Interrupt Service Routine(中断服务例程)
Cat1 Category 1 interruptOS 不感知的中断)
Cat2 Category 2 interruptOS 感知的中断)
OS Operating System
ECU Electronic Control Unit
ICU Input Capture Unit(输入捕获单元)
IRQ Interrupt Request(中断请求)

3 相关文档

编号 名称
[1] AUTOSAR_EXP_LayeredSoftwareArchitecture
[2] AUTOSAR_SRS_BSWGeneral
[3] AUTOSAR_SWS_OS
[4] AUTOSAR_SWS_ICUDriver
[5] ISO 17356-3 OSEK/VDX OS

4 中断配置概述

AUTOSAR 中断配置涉及三个层级

  1. 硬件层:微控制器的中断控制器(如 NVIC、INTC)
  2. 驱动层:设备驱动(ICU 驱动、Port 驱动等)
  3. OS 层AUTOSAR OS 管理 Cat2 中断

中断源分类

中断源 示例 处理方
微控制器外设 定时器、ADC、UART 设备驱动
通信控制器 CAN、LIN、FlexRay 通信驱动
外部中断 GPIO、外部传感器 ICU 驱动

5 中断操作概述

5.1 Cat1 与 Cat2 中断的区别

AUTOSAR 区分两种类型的中断:

特性 Cat1 中断 Cat2 中断
OS 感知 不被 OS 感知 由 OS 管理
ISR 类别 不分类 类别 2
可调用 OS 服务 仅允许中断使能/禁用 可调用受限的 OS 服务
由谁实现 复杂驱动(CDD)或 BSW 模块 AUTOSAR OS
用途 关键、低延迟、硬件紧密耦合 一般外设中断
入口/出口处理 直接由硬件/驱动 由 OS 提供(保存/恢复上下文)

核心区别:Cat2 中断由 OS 管理,可以安全地调用 OS 服务;Cat1 中断绕过 OS,必须自己保存上下文。


6 中断操作步骤

6.1 处理 Cat1 中断

6.1.1 初始状态

  • 中断向量已配置
  • ISR 已安装(绕过 OS
  • 全局中断使能

6.1.2 当硬件请求中断时

  1. 硬件自动保存 部分上下文(如 PC、SR
  2. 跳转到 ISR 入口(无 OS 中介)
  3. ISR 内部保存必要的寄存器(编译器/手写)
  4. 执行 ISR 主体
    • 读取/清除外设中断标志
    • 处理中断
  5. ISR 内部恢复寄存器
  6. 中断返回

Cat1 ISR 限制

  • 不可调用 OS 服务
  • 不可调用任何 OS API
  • 不可等待/阻塞
  • 保持极短(如 5-10 微秒)
  • 不可访问 OS 管理的资源(任务、事件、信号量等)

6.2 处理 Cat2 中断

6.2.1 初始状态

  • 中断向量已配置(由 OS 启动时设置)
  • ISR 由 OS 管理
  • 中断优先级已分配

6.2.2 当硬件请求中断时

  1. 硬件自动保存 部分上下文PC、SR、关键寄存器)
  2. 跳转到 OS 提供的 ISR 入口
  3. OS 保存完整上下文(所有寄存器)
  4. OS 调用用户注册的 ISR 函数
  5. 执行 ISR 主体
    • 允许调用有限的 OS 服务
  6. OS 恢复完整上下文
  7. 中断返回

Cat2 ISR 允许的 OS 服务

  • ActivateTask
  • SetEvent
  • GetResource
  • ReleaseResource
  • GetAlarm
  • IncrementCounter
  • TerminateApplication(受限)

Cat2 ISR 限制

  • 不可调用 Schedule
  • 不可调用 WaitEvent(任务级)
  • 不可访问某些 OS 资源
  • 仍应保持简短

7 中断配置

7.1 设备驱动配置和代码

7.1.1 中断处理程序的放置

中断类型 中断处理程序位置
Cat1 由 BSW 模块(如 ICU 驱动)实现,放置在驱动 .c 文件中
Cat2 由 OS 实现,放置在 OS 配置中(中断向量表)

7.2 OS 配置

7.2.1 中断向量表

OS 启动时按 Os_Cfg.h 中的配置初始化中断向量表。Cat2 中断的 ISR 由 OS 在启动时注册。

7.2.2 中断优先级

  • Cat1:优先级高于所有 Cat2 中断(不受 OS 优先级限制)
  • Cat2:优先级由 OS 管理,低于 Cat1

7.2.3 中断嵌套

  • Cat1 可以中断 Cat2Cat1 优先级更高)
  • Cat2 之间按 OS 优先级嵌套
  • Cat1 之间按硬件优先级嵌套

8 关键概念总结

概念 说明
Cat1 直接由硬件处理,绕过 OS。不可调用 OS 服务。极低延迟。
Cat2 由 OS 包装,可调用受限 OS 服务。常规外设中断首选。
中断优先级 Cat1 > Cat2。Cat1 中断可中断 Cat2 ISR。
ISR 长度 Cat1 应 < 10μsCat2 应 < 100μs(一般)。
上下文保存 Cat1:部分(编译器);Cat2:完整(OS)。
配置位置 Cat1 在驱动中;Cat2 在 OS 中。

9 中断处理时间线(示例)

Cat2 中断处理时序

硬件事件
  ↓
[硬件自动保存 PC、SR 等]
  ↓
[OS 中断入口]
  ↓
[OS 保存完整上下文]
  ↓
[调用用户 ISR 主体]
  ↓ 允许调用受限 OS 服务
  ├─ 清除中断标志
  ├─ 读取外设数据
  ├─ 激活任务 / 设置事件
  └─ 释放资源
  ↓
[OS 恢复完整上下文]
  ↓
[中断返回]

Cat1 中断处理时序

硬件事件
  ↓
[硬件自动保存 PC、SR]
  ↓
[直接跳转到 ISR]
  ↓
[ISR 内部保存其他寄存器]
  ↓ 禁止调用 OS 服务
  ├─ 清除中断标志
  └─ 处理中断
  ↓
[ISR 内部恢复寄存器]
  ↓
[中断返回]

翻译说明

  • 本文档为说明性文档(EXP,非规范
  • Cat1/Cat2 中断分类是 AUTOSAR 中断处理的核心概念
  • 选择 Cat1 还是 Cat2 取决于:延迟要求、是否需要 OS 服务、是否访问 OS 资源

翻译:opencode-translator / Step 3 P0 批量翻译