AUTOSAR架构下的WdgDriver WdgIf WdgM模块

本文主要介绍autosar 架构下的wdgdriver wdgif wdgm 模块,分析模块之间的依赖关系以及运行原理以帮助快速理解。本文以mpc5746r为主控芯片,以fs6500为sbc,davinci configurator 为autosar工具链。
01
模块架构与依赖
1、模块介绍autosar架构中的wdg 一共分为三个部分,wdg driver wdg interface wdg manager。其中wdg driver分为 external watchdog driver 与 internal watch driver。其中外部驱动由sbc提供功能,内部驱动由swt模块提供功能。mpc5746r有三个swt(soft watchdog timer),swt0 负责cpu0,swt1负责cpu1,swt2可以由cpu0 与cpu1访问。wdg driver 提供底层喂狗与设置看门狗模式的驱动函数,由wdgif抽象成wdg device。wdgm获取wdgif的抽象数据得到底层的配置数据与驱动接口函数。wdgm一共支持三种形式的看门狗检查方式。
1.alivespuervision
2.deadlinesupervision
3. logicalsupervision。alivespuervision提供一般的喂狗服务,即监控周期性程序是否能正常执行,保证程序处于alive状态。deadlinesupervision提供监督软件在两个状态之间的转换时间。logicalsupervision提供监督软件执行顺序的正确性。
根据不同的检查方式,wdgm可以抽象出不同的checkpoint,rte层可以通过函数wdgm_checkpointreached()来通知wdgm程序正在正确运行。2、模块交互与依赖看门狗模块由wdgm统一管理后对外,这里只围绕wdgm模块分析与其他模块的依赖性。
wdgif模块,wdgm通过wdgif接口更改wdgdriver的驱动模式,同时通知看门狗触发条件ecum模块,管理wdgm的initializing 和deinitializing状态,在sleep模式下出发硬件看门狗mcu模块,在wdgm监控程序失败之后,可以通过mcu的接口mcu_performreset立即重新ecu单元det模块,诊断开发中的错误dem模块,wdgm 在侦测到错误之后,可以通过dem模块触发eventschm模块,wdgm 调用schm模块接口wdgm_globalsuspendinterrupts进入临界区,wdgm_globalrestoreinterrupts退出临界区rte模块,rte通过wdgm_checkpointreached()接口,监控swc是否按照设计运行bswm模块,wdgm在监控spuervised entity失败后,可以通过bswm模块重启被监控程序os模块
02
模块配置
1、wdg wdg driver提供三种喂狗模式给wdgm管理,wdgm可以通过wdg_setmode接口设置看门狗运行模式wdgsettingfast 快速喂狗wdgsettingoff 关闭看门狗wdgsettingslow 慢速喂狗wdg external trigger counter :外部定时器,定时调用cbk函数,检测喂狗条件并喂狗2、wdg_sbcwdggptchannelparameterref :关联gpt 模块,利用cbk函数喂狗执行喂狗操作。q :为何要用定时中断喂狗?
a : 一般理解,不在定时中断函数中喂狗是为了方式在主函数异常的情况,中断服务函数还能正常执行,这样喂狗起不到真正的作用。在autosar中为何在sbc 外部看门狗采用这种方式,因为 wdg_30_sbc_settriggercondition 函数只是负责根据配置调整看门狗喂狗的时机,然后gpt的cbk函数会在这个时间到达的同时执行喂狗操作。如果,mainfunction没有及时的设置看门狗触发条件,cbk会因为提前喂狗导致看门狗出错。截取gpt回调函数如下:
3、wdgif关联wdg driver驱动函数,与wdgm直接通过函数接口关联,因此wdgif没有lcfg文件。关联的关键函数如下
4、wdgmwdgmdemeventparameterrefs :关联dem模块,在wdgm模块出错时可以event的方式记录下来。wdgmmode :1)wdgmalivesupervision :激活监控模式2 ) wdgmdeadlinesupervision :截止监控模式3)wdgmlocalstatusparams :逻辑监控模式4)wdgmsupervisedentity :监控实体wdgmwatchdog ::管理的wdg device,需要关联wdgif 的device,通过配置的wdgm_configset关联不同的device,可以实现不同的wdg device关联不同的core。1.、关联wdgif device
2、关联trigger 的device
3、关联core
3
源码分析
wdgif 有两个对外接口:std_returntype wdgif_setmode(uint8 deviceindex, wdgif_modetype wdgmode ) void wdgif_settriggercondition( uint8 deviceindex, uint16 timeout )都是通过deviceindex 来确定所属的驱动列表,wdgm模块会通过所管理的device数量来轮询调用接口截取一段wdgm_init的代码说明:
1、内部狗与外部狗的区别wdgm对外部狗与内部狗的管理方式相同,都是通过settriggercondition的方式设置,在通过关联的gpt模块的ckb函数来实现喂狗。但是两者在内部实现方式不一致。内部狗通过定时器完成计数,每次触发中断都会关闭定时器,需要setmode重新开启然后继续计数,最后在cbk中完成喂狗。设置运行模式,开启定时器
设置触发条件,写入计数值
gpt 回调函数检测喂狗条件,并喂狗
2、checkpointwdgm 提供了三种对supervisedentity的方式1. alive 2. deadline 3. programeflowwdgm通过接口函数wdgm_checkpointreached 来表示spuervisedentityes的checkpoint到达,函数接口的详细描述如下。std_returntype wdgm_checkpointreached( wdgm_supervisedentityidtype seid, wdgm_checkpointidtype checkpointid );
04
多核的wdgm管理
wdgm支持多核,每个内核互不干扰,每个core下面都关联了单独的supervisedentityes, 每个core都需要单独单独调用wdgm_mainfunction。1.获取coreid,根据coreid获取配置指针
2. 更新wdgm节拍数 wdgm提供三种更新节拍数的方式 1. wdgm_internal_software_tick , 通过mainfunction调度跟新节拍 2. wdgm_os_counter ,根据os节拍数跟新wdgm节拍 3. wdgm_external_tick ,根据接口wdgm_updatetickcounter更新节拍
3. 更新spuervisedentityes的状态
4. 根据global spuervised entityes的状态喂狗


电容器厂家排名
Mini LED技术迭代,GKG Mini LED整线方案来袭
Taycan热管理系统整体概览
鸿蒙操作系统特点:时延非常低,毫秒级到亚毫秒级
华为 MateX5 、Mate 60 Pro+加入先锋计划,上架华为商城
AUTOSAR架构下的WdgDriver WdgIf WdgM模块
Intersil收购本土IC设计公司磐大微电子
NHK开发出8K影像传感器 可以120fps帧速拍摄
电子增程器是否可用,它的原理是怎样的
电信在大规模网络视频监控的应用概述
什么是CSMA/CD (CSMA with Collisio
如果所有手机都使用Type-C,将会产生什么影响
功耗低至25uA的高性价比指纹模块海凌科HLK-FPM383F
CAN总线的组成部分有哪些?浅析CAN总线电路图
SAMSUNG S3C9454 示例程序
海量、安全、高可靠的华为云对象存储服务OBS,助力企业数据存储降本提效
两尘四气大气环境检测模块介绍
分立元件设计的耳聋助听器方法
5G进入实战阶段,华为高通终端网络争夺战打响
未来智能办公将让我们的工作效率事半功倍