AutoSar_WdgM基础概念整理

AutoSar_WdgM
1.看门狗的作用,一般是预防程序跑飞
autosar wdg堆栈包含三个软件模块
看门狗管理器
App通过WdgM的接口实现程序的监控管理,WdgM通过WdgIf和Wdg Drv控制硬件实现的看门狗
WdgM抽象成硬件看门够。监控监控实体Supervised Entities的运行状态从而控制硬件看门狗实体的触发
WdgM提供了三种状态机
Alive supervision监控周期运行软件的时序
Deadline supervision监控非周期的软件
Logical supervision监控执行顺序的正确性
WdgM系统服务层基于ECU抽象层提供面向具体的应用层服务。比如看门狗服务模块负责管理看门狗的功能实现内部的监督算法
看门狗接口
WdgIf抽象层封装底层的驱动的视线细节,向服务层提供接口。WDGIF对ECU扳级看门狗物理地址和数量进行抽象,对多个看门狗提供相同的访问机制
看门狗驱动程序
封装了具体硬件看门狗寄存器的配置向WDGIF提供接口,列如喂狗和模式接口
2.SE监控实体
WDGM受监控实体SE的程序流和时间约束。当WdgM检测到违反了预先配置的程序流或者时间约束的时候,将采取一些可配置的操作来记录该违反情况/进入安全状态
检查点checkpoint标记了算法执行期间的重要步骤
转移Transitions检查点通过转移进行连接,局部检查点将检查点绑定链接成一个包含起始点和闭合点的图,这些图表示程序流程
规则Rule根据软件需求定义可配置的规则如下:Alive,Deadline,Flow control,WdgM事先知道那个程序流程是正确的,并且确定监管实体的行为是符合预期还是违反定义的规则
性能评估如何确认算法/SE的检查点的个数
算法拥有的检查点越多,代码结构的表示就越好,但这会对性能产生不利影响。
算法只有几个检查点,则存在未表示程序流分支,在这种情况下,性能会更好,但是不会监视所有的Code Segment
程序流程监控实体的实现
失败参照周期容忍度:这个参数定义了可以忍受SE在一定数量的监视周期内的程序流违规,违规的时候本

<think>好的,我现在需要回答用户关于AUTOSAR函数`WdgM_CheckpointReached`的用途。首先,我需要确认自己对AUTOSAR架构和看门狗管理模块(WdgM)的理解是否正确。 用户之前提到了链接错误,现在转向了一个具体的AUTOSAR函数,可能是在开发符合AUTOSAR标准的嵌入式系统,特别是汽车电子相关的项目。因此,需要确保回答专业且准确,同时考虑到用户可能的背景知识。 首先,我需要回忆AUTOSAR中看门狗管理模块的作用。看门狗(Watchdog)在嵌入式系统中用于检测系统是否正常运行,防止软件挂起或进入不可预测的状态。WdgM(Watchdog Manager)是AUTOSAR中的一个模块,负责管理看门狗定时器,监控应用程序的运行状况。 接下来,关于`WdgM_CheckpointReached`这个函数,我需要确定它的具体功能。根据AUTOSAR文档,该函数通常用于指示程序执行到了某个检查点(Checkpoint),即代码中的一个关键点,用于确认某个任务或进程按预期执行。这可能与监控程序流程、确保任务按时完成有关。 可能需要进一步思考以下几点: 1. **检查点的作用**:在实时系统中,检查点用于验证代码是否按预期顺序执行,避免死锁或任务超时。 2. **WdgM的工作机制**:WdgM可能通过监控这些检查点来判断应用程序是否健康。如果某个检查点未在规定时间内到达,可能触发看门狗复位。 3. **函数调用时机**:开发者在代码的关键路径中调用此函数,告知WdgM模块某个检查点已到达,从而更新监控状态。 4. **与 Alive Supervision 的关系**:是否属于存活监控的一部分,确保周期性任务按时执行。 需要确认是否有常见的误解或易错点,例如:检查点设置的位置是否合理,调用频率是否符合WdgM配置的预期,或者是否遗漏必要的检查点导致误触发看门狗复位。 另外,用户可能在使用AUTOSAR工具链(如Vector DaVinci)时,如何配置WdgM模块以及如何在代码中正确插入检查点调用。可能需要提及配置检查点ID、时间窗口等参数的重要性。 最后,确保回答结构清晰,先说明函数的作用,再解释其应用场景,可能的使用示例,以及常见注意事项,帮助用户全面理解。</think>`WdgM_CheckpointReached` 是 **AUTOSAR(汽车开放系统架构)标准中看门狗管理模块(Watchdog Manager, WdgM)** 的核心函数之一,主要用于 **监控应用程序的执行流程**,确保关键代码段按预期执行。以下是其详细功能和应用场景: --- ### **1. 核心功能** - **检查点(Checkpoint)标记** 当应用程序执行到代码中预设的关键位置时,调用此函数标记一个检查点,告知 WdgM 模块“程序已到达此处”。 - 例如:周期性任务完成、关键状态机切换、安全关键操作完成等场景。 - **存活监控(Alive Supervision)** WdgM 会记录检查点的到达时间和频率。若某个检查点未在配置的时间窗口内被触发,WdgM 会认为程序运行异常,可能触发看门狗复位(复位MCU)或上报错误。 --- ### **2. 典型应用场景** #### **场景 1:周期性任务监控** ```c void Task_10ms(void) { // 执行任务逻辑... WdgM_CheckpointReached(CheckpointID_Task10ms); // 标记检查点 } ``` - **作用**:确保 `Task_10ms` 函数每 10ms 至少执行一次。若超时未调用,WdgM 判定任务失效。 #### **场景 2:多步骤流程监控** ```c void StateMachine_Handle(void) { switch(currentState) { case STATE_INIT: // 初始化操作... WdgM_CheckpointReached(CheckpointID_InitDone); break; case STATE_RUNNING: // 运行逻辑... WdgM_CheckpointReached(CheckpointID_RunningLoop); break; } } ``` - **作用**:验证状态机按预期顺序执行,避免卡死在某个状态。 --- ### **3. 关键配置参数** 在 AUTOSAR 工具链(如 Vector DaVinci、ETAS ISOLAR)中需配置: 1. **检查点 ID** - 为每个检查点分配唯一标识符(如 `CheckpointID_Task10ms`)。 2. **监控时间窗口** - 定义检查点的最小/最大允许触发间隔(例如:10ms 任务需在 8ms~12ms 内触发检查点)。 3. **错误处理策略** - 超时后的行为:触发全局复位、记录错误日志、进入安全状态等。 --- ### **4. 使用注意事项** - **检查点位置合理性** - 仅标记关键路径,避免过度调用(增加运行时开销)或遗漏调用(导致误报故障)。 - **实时性保障** - 检查点必须与任务的真实执行时间匹配,否则监控失效。 - **多核/分区系统** - 在 AUTOSAR 多核架构中,需确保检查点与对应核的 WdgM 实例关联。 --- ### **5. 关联函数与模块** - **初始化函数** `WdgM_Init()`:初始化 WdgM 模块,加载配置的检查点参数。 - **主监控函数** `WdgM_MainFunction()`:周期性调用,执行检查点超时计算和错误处理。 - **模式控制** `WdgM_SetMode()`:切换监控模式(如正常模式、静默模式)。 --- ### **6. 调试与问题排查** - **映射检查点状态** 使用调试工具读取 WdgM 内部状态,确认检查点是否按预期触发。 - **日志与 Trace 分析** 若发生看门狗复位,检查 WdgM 的错误日志,定位超时的检查点 ID。 - **时序分析** 测量代码执行时间,确保检查点间隔符合配置的时间窗口。 --- ### **总结** `WdgM_CheckpointReached` 是 AUTOSAR 中实现 **功能安全(ISO 26262 ASIL)** 的关键机制,通过对代码执行流程的实时监控,确保系统在发生死锁、任务阻塞或逻辑错误时能够及时恢复,从而满足汽车电子对可靠性的严苛要求。正确使用此函数需结合具体的任务调度和 WdgM 模块配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sumerking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值