当前位置: 首页 > news >正文

AUTOSAR_CP_OS-Protection Error Handling:保护错误处理

Protection Error Handling:保护错误处理

在这里插入图片描述

概述

保护错误处理

  • 是保护机制的最终响应环节

  • 负责在检测到 “内存访问违规、时序故障、非法服务调用” 等保护错误时

  • 通过用户配置的 ProtectionHook 执行预设处理逻辑

  • 核心目标是 “精准隔离故障源,避免故障扩散”

与 “监控机制” 不同

  • 保护错误处理在错误发生时立即捕获(检测延迟极短)

  • 且仅针对 OS 管理的对象(如任务、Category 2 ISR、OS 应用)生效

背景与原理

保护错误的检测与特点

  • 检测依据

    • OS 基于静态配置的 “对象访问权限、时序约束”

      • 如 OsTaskExecutionBudget、OsPeripheralArea
    • 在运行时实时检测保护错误

      • 如非可信应用写 OS 数据段、任务执行时间超预算
  • 与监控的区别

    • 监控机制(如栈监控)可能存在 “错误发生到检测的延迟”

      • 如栈溢出后,需等到上下文切换才检测
    • 保护机制则在错误发生瞬间捕获

      • 如 MPU 触发内存违规中断时立即响应
  • 错误类型

    • 内存访问违规
      (E_OS_PROTECTION_MEMORY)

      • 写未授权内存

      • 读禁止访问的私有数据

    • 时序故障
      (E_OS_PROTECTION_TIME /E_OS_PROTECTION_ARRIVAL /E_OS_PROTECTION_LOCKED)

      • 执行时间超预算

      • 任务高频激活

      • 资源锁定超时

    • 非法服务调用(E_OS_ACCESS/E_OS_CALLEVEL)

      • 跨应用调用无权限对象

      • 错误上下文调用服务

    • 硬件异常
      (E_OS_PROTECTION_EXCEPTION)

      • 除零

      • 非法指令

ProtectionHook 的角色与运行环境

  • 定义

    • ProtectionHook 是用户提供的可信代码

    • 由 OS 在检测到保护错误时调用

    • 运行在 OS 内核上下文

      • 非用户应用上下文
    • 拥有与 OS 相同的权限

      • 如访问所有内存、修改硬件寄存器
  • 职责

    • 接收 OS 传入的 “错误类型”

    • 返回 “处理策略”

      • 如终止违规任务、重启应用
    • 是用户控制保护错误响应逻辑的唯一入口

  • 信任要求

    • ProtectionHook 必须无安全漏洞

      • 如无内存越界、无死锁
    • 否则会导致 OS 自身故障

    • 因 OS 假设其为可信代码,不额外检查其行为

保护错误的处理选项

  • PRO_IGNORE(忽略错误)

    • 描述

      • 不执行任何操作

      • 返回用户应用继续运行

    • 适用场景

      • 仅允许到达率错误(E_OS_PROTECTION_ARRIVAL)

      • 如任务提前激活但不影响全局

  • PRO_TERMINATETASKISR(终止违规任务 / ISR)

    • 描述

      • 强制终止触发错误的任务 / Category 2 ISR

      • 释放其持有的资源、启用中断

    • 适用场景

      • 错误仅影响单个任务 / ISR

      • 如 “任务栈溢出”

  • PRO_TERMINATEAPPL(终止违规应用)

    • 描述

      • 强制终止触发错误的 OS 应用

        • 含所有任务 / ISR、闹钟、调度表
      • 禁用其中断源

    • 适用场景

      • 错误影响整个应用

      • 如 “应用内多个任务时序违规”

  • PRO_TERMINATEAPPL_RESTART(终止并重启应用)

    • 描述

      • 终止违规应用后

      • 激活其配置的 OsRestartTask 重启应用

    • 适用场景

      • 应用故障可恢复

      • 如 “临时内存访问违规”

  • PRO_SHUTDOWN(关闭 OS)

    • 描述

      • 调用 ShutdownOS 关闭所有核心

      • 进入安全状态

    • 适用场景

      • 严重错误

        • 如可信函数内存违规
      • 无法隔离故障

  • ProtectionHook 返回值规则

      • 若返回非定义的无效值

        • 如超出 PRO_* 枚举范围的值
      • OS 将视为‘未配置 ProtectionHook’,直接调用 ShutdownOS

      • 参考SWS_Os_00308

      • 仅 5 种预定义返回值视为有效,需严格按枚举值返回

        • PRO_IGNORE、PRO_TERMINATETASKISR、PRO_TERMINATEAPPL、PRO_TERMINATEAPPL_RESTART、PRO_SHUTDOWN

特殊场景的处理规则

  • PRO_IGNORE 的限制

    • 仅生效场景

      • 仅当错误类型为 E_OS_PROTECTION_ARRIVAL(任务 / ISR 提前激活)时

      • 有效返回值为 PRO_IGNORE 或 PRO_SHUTDOWN:

        • PRO_IGNORE

          • OS 会继续执行原服务(如激活任务)并返回 E_OK
        • PRO_SHUTDOWN

          • OS 调用 ShutdownOS 关闭系统
    • 无效场景

      • 若其他错误类型(如 E_OS_PROTECTION_MEMORY)返回 PRO_IGNORE

      • OS 会直接调用 ShutdownOS,因这类错误可能已破坏系统完整性

  • 强制终止的区别:ISR vs 应用

    • 强制终止 ISR

      • 仅终止当前 ISR 实例(中断源保持当前状态)

        • 后续 ISR 仍可触发(因中断源未被禁用)
      • 同时执行(参考SWS_Os_00109):

        • 清除中断请求

        • 释放 ISR 持有的 OSEK 资源

        • 启用被 ISR 禁用的中断

    • 强制终止应用

      • 不仅终止所有任务 / ISR

      • 还会禁用应用的

        • 中断源(防止后续中断触发)

        • 取消闹钟

        • 停止调度表

      • 确保应用完全 “离线”

    • 可信函数导致的保护错误

      • 若保护错误由可信函数触发

        • 如可信函数访问非法内存
      • 可能影响多个应用

      • 因此 仅允许返回 PRO_SHUTDOWN

      • 返回其他值时,OS 仍会强制关闭 OS,避免故障扩散

保护错误检测与处理流程

  • 在这里插入图片描述

需求

ProtectionHook 的权限与基础行为

  • 权限要求

    • SWS_Os_00211

      • ProtectionHook 必须以与 OS 相同的权限执行

      • 如特权模式、访问所有内存

    • 确保 ProtectionHook 能执行高权限操作

      • 如修改应用状态、激活重启任务
    • 无需额外授权

  • 无 ProtectionHook 时的处理

    • SWS_Os_00107

      • 若未配置 ProtectionHook,检测到保护错误时

      • OS 直接调用 ShutdownOS

    • 默认安全策略

      • 无用户自定义处理时

      • 优先保证系统不被故障破坏,进入安全关闭状态

不同返回值的具体处理需求

  • PRO_IGNORE 的处理

    • SWS_Os_00106

      • 若 ProtectionHook 返回 PRO_IGNORE 且错误类型为 E_OS_PROTECTION_ARRIVAL

      • OS 需返回用户应用继续运行

    • SWS_Os_00475

      • 若其他错误类型返回 PRO_IGNORE

      • OS 调用 ShutdownOS

    • 示例:

      • 任务 A 提前激活任务 B

        • 触发 E_OS_PROTECTION_ARRIVAL
      • ProtectionHook 返回 PRO_IGNORE

        • OS 会继续激活任务 B,并向任务 A 返回 E_OK
  • PRO_TERMINATETASKISR 的处理

    • SWS_Os_00553

      • 若返回 PRO_TERMINATETASKISR

      • OS 需强制终止违规任务 / Category 2 ISR

    • SWS_Os_00108

      • 终止任务时

      • 需释放其持有的 OSEK 资源,并启用被禁用的中断

      • 如任务调用 DisableAllInterrupts 后未恢复

  • PRO_TERMINATEAPPL 的处理

    • SWS_Os_00554

      • 若返回 PRO_TERMINATEAPPL

      • OS 需强制终止违规应用

    • SWS_Os_00110

      • 终止操作包括:

        • 终止所有任务 / ISR

        • 取消闹钟

        • 停止调度表

        • 禁用中断源

    • SWS_Os_00502

      • 应用终止后

      • 状态设为 APPLICATION_TERMINATED

        • 不可访问
  • PRO_TERMINATEAPPL_RESTART 的处理

    • SWS_Os_00555

      • 若返回 PRO_TERMINATEAPPL_RESTART

      • OS 需终止应用后,激活其 OsRestartTask 重启

    • SWS_Os_00557

      • 若未配置 OsRestartTask,调用 ShutdownOS
    • SWS_Os_00503

      • 应用重启前,状态设为 APPLICATION_RESTARTING

        • 其他应用无法访问
      • 直到调用 AllowAccess 切换为 APPLICATION_ACCESSIBLE

  • PRO_SHUTDOWN 的处理

    • SWS_Os_00556

      • 若返回 PRO_SHUTDOWN

      • OS 调用 ShutdownOS 关闭所有核心

    • SWS_Os_00860

      • 若错误由可信函数触发

      • 仅 PRO_SHUTDOWN 有效,其他返回值仍会关闭 OS

无故障源时的默认处理

  • 无违规任务 / ISR

    • SWS_Os_00243

      • 若返回 PRO_TERMINATETASKISR 但无法关联到具体任务 / ISR

        • OS 会强制终止当前运行的应用
      • 若仍无应用可关联,调用 ShutdownOS

  • 无违规应用

    • SWS_Os_00244

      • 若返回 PRO_TERMINATEAPPL/PRO_TERMINATEAPPL_RESTART 但无法关联到具体应用

      • OS 直接调用 ShutdownOS

强制终止应用的操作步骤

在这里插入图片描述

总结

AUTOSAR OS 的保护错误处理是保护机制的闭环

核心逻辑可概括为 “检测 - 通知 - 处理 - 隔离” 四步:

  • 检测

    • OS 实时监控保护规则

      • 内存权限、时序约束
    • 错误发生时立即捕获

  • 通知

    • 调用 ProtectionHook 向用户传递错误信息

    • 提供处理选项

  • 处理

    • 根据 Hook 返回值执行对应操作

      • 终止对象 / 应用、重启、关闭 OS
    • 严格限制 PRO_IGNORE 的适用场景

  • 隔离

    • 强制终止时确保故障源完全离线

      • 如禁用中断源、取消闹钟
    • 避免影响其他对象

需根据系统安全等级配置 ProtectionHook

  • 对安全要求高的场景(如动力域 ECU),优先选择 PRO_SHUTDOWN 或 PRO_TERMINATEAPPL

  • 对可用性要求高的场景(如信息娱乐 ECU),可选择 PRO_TERMINATEAPPL_RESTART 恢复应用,但需确保重启逻辑无漏洞

http://www.dtcms.com/a/615122.html

相关文章:

  • 网站信息内容建设实施办法西安的网站制作公司
  • ollydbg快捷键
  • 企业网站推广方案相册制作模板
  • 石家庄科技中心网站注册完域名 如何做网站
  • 正保建设教育网站网站空间每年继费到哪交
  • 网络公司网站赏析网络建站步骤
  • [Powershell 入门教程]】第5天内容:远程管理(WinRM、SSH)、PSSession 与 CIM/WMI
  • 知名做漫画网站网站设计制作ihanshi
  • 解释型语言与编译型语言的区别与特点 | 深入了解两者的优势和应用领域
  • 【Java 开发日记】SQL 语句左连接右连接内连接如何使用,区别是什么?
  • 深圳做自适应网站公司网站开发销售怎么做
  • 微电影网站源码xiazai网站购买外链
  • 盐城做网站需要多少钱2023年新开市场动态
  • 投融网站建设方案网站建设要考虑哪些内容
  • 怎么做网站vs2015网站开发实例
  • 数字波束赋型及其数学原理介绍
  • 站长网站模板百度导航地图下载
  • 操作系统?进程(下)!!!
  • “忆境构建师”智能记忆辅助平台 - 产品介绍【具身记忆的软体】
  • 万网 填写网站备案信息西安网站排名推广
  • flash同视频做网站重庆网站搜索引擎seo
  • 网站会员管理一鸣东莞网站建设公司
  • Labview实用03:Labview中事件回调注册与使用
  • 智能制造——解读112页汽车制造业大数据项目之产品主数据蓝图方案【附全文阅读】
  • 如何做优化网站的原创性文章群晖nas做网站性能
  • 龙岗做网站wordpress 4.3.1 下载
  • 关于时间戳
  • 分享一个操作系统一键优化脚本
  • 网站专属定制高端网站建设个人网站建设方案
  • 广东省省考备考(第一百五十一天11.15)——言语、判断推理(强化训练)