自学内容网 自学内容网

AutosarMCAL开发——基于EB Wdg驱动

一、Wdg原理以及作用

WatchDog,顾名思义,看门狗,每次代码运行使用者需要在特定的时间内完成喂狗,否则将会发出警告,进而提醒安全保护模块做出对应处理。TC3XX系列芯片的看门狗(Watchdog)功能是其硬件安全特性的重要组成部分。以下是对TC3XX看门狗功能的详细解释:

1.看门狗类型

  • Safety Watchdog(安全看门狗):用于保护芯片系统层级的安全,防止意外写入关键系统寄存器和存储器。如果在一定时间内未响应其计时器,将引发SMU(安全管理单元)警报请求。
  • CPU Watchdog(CPU看门狗):每个CPU核心都有一个独立的看门狗定时器,用于监视单独的CPU执行线程,并为CPU寄存器以及特定的系统寄存器提供保护。如果在用户可编程的时间段内没有正确地服务(即刷新或“喂狗”),它可能会导致SMU报警请求或触发设备复位。

2.看门狗功能特点

  • 可编程性:看门狗定时器具有可编程的时间基础和重新加载值。
  • 密码保护:对看门狗寄存器的操作需要输入正确的密码才能进行。
  • 时间戳检查与窗口:看门狗功能还提供了可编程的时间戳检查和可编程窗口。
  • 独立监视:单独的CPU监视器计时器提供了监视单独的CPU执行线程的能力,而不需要软件来协调一个共同的监视器的共享使用。

3.看门狗工作模式

  • Time-Out Mode(超时模式):复位以后CPU的Watchdog默认是处在Time-Out Mode下的,WDT在Time-Out Mode下就会从0xFFFC开始往上计数,如果计数到0xFFFF就会溢出。如果在计数到0xFFFF之前没有对WDT进行正确的重新加载操作,WDT将保持在超时模式。
  • Normal Mode(正常模式):在Time-Out Mode下,如果在计数到0xFFFF之前对WDT进行了正确的重新加载操作(即“喂狗”),WDT将从Normal Mode开始从重新加载的值(REL值)往上计数。在Normal Mode下计数到0xFFFF后WDT就溢出了,触发SMU的Timeout的Alarm。
  • Disable Mode(禁用模式):在该模式下,看门狗功能被禁用,不会进行任何计时或监视操作。

4.看门狗超时响应

  • 发送警报:向SMU发送警报请求,指示看门狗定时器已超时。
  • 触发中断:配置为向CPU发送中断请求,以便软件可以采取相应的恢复措施。
  • 复位设备:在严重情况下,可以配置为触发设备复位,以确保系统的稳定性和安全性。

5.看门狗寄存器

看门狗模块主要有三类寄存器:

  • 保护寄存器WDTCPUyCON0(y=0-5)
  • 系统寄存器WDTCPUyCON1(y=0-5)
  • 状态寄存器WDTCPUySR(y=0-5)

其中y代表CORE ID;这些寄存器用于配置、监视和控制看门狗定时器的行为。

二、WDG模块EB配置(TC3X系列MCU)

1.WDG通用配置:

  • 在“General”选项卡下,配置WDG模块的基本参数,这里的Trigger即为喂狗动作,当前配置为STM系统时钟触发,配置为GTM触发将会启用GTMTimerConf选项卡
    在这里插入图片描述

2.WDG设置:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.时钟资源分配

在这里插入图片描述

4.配置STM IRQ中断

  • 配置STM中断,以便及时喂狗
    在这里插入图片描述

5.配置触发执行动作:

  • 在wdg识别异常并发出警告后需要传递至SMU(Safety Management Unit,安全管理单元)模块进行故障处理,因此需要在SMU中配置对应通道执行的异常处理动作。这里配置为NMI(Non-Maskable Interrupt,非屏蔽中断),意味着当该警报触发时,SMU会向CPU发送一个NMI信号,要求CPU中断当前任务并跳转到NMI中断处理函数进行处理,这里也可以直接选择Cpu复位。
    在这里插入图片描述
  • 关于如何确定配置的Wdg连接至SMU 的哪个组,哪个Behavior通道,可以参考User Manual Tc39x附录中的SMU模块详细说明
    在这里插入图片描述

三、Mcal接口应用

1.软件接口定义

  • Autosar标准文件中提及的API共有5个,
接口名传入参数说明返回参数函数功能
Wdg_17_Scu_Init()Wdg_17_Scu_ConfigType* ConfigPtrConfigPtr:Wdg配置指针,参数来自于EB生成代码voidWdg初始化
Wdg_17_Scu_InitCheck()Wdg_17_Scu_ConfigType* ConfigPtrConfigPtr:Wdg配置指针Std_ReturnType:0:OK 1:NotOKWdg初始化检查
Wdg_17_Scu_SetMode()WdgIf_ModeType ModeMode: 0 OFF 1SlowMode 2FastmodeStd_ReturnType:0:OK 1:NotOKWdg切换模式,需开启对应配置
Wdg_17_Scu_SetTriggerCondition()uint16 timeouttimeout:设置定时触发器计数(单位ms)void喂狗并重新设定计数值
Wdg_17_Scu_GetVersionInfo---Wdg版本信息

2.应用步骤

  • WDG超时复位
    1.Wdg_17_Scu_Init()//配置初始化
    2.Wdg_17_Scu_SetTriggerCondition()//初始化设定超时时间
    3.调用Wdg_17_Scu_SetTriggerCondition()//在Wdg溢出之前喂狗

四、总结

本文为博主个人学习总结记录,如有不正,欢迎指正


原文地址:https://blog.csdn.net/qq_45583706/article/details/142828468

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!