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* ConfigPtr | ConfigPtr:Wdg配置指针,参数来自于EB生成代码 | void | Wdg初始化 |
Wdg_17_Scu_InitCheck() | Wdg_17_Scu_ConfigType* ConfigPtr | ConfigPtr:Wdg配置指针 | Std_ReturnType:0:OK 1:NotOK | Wdg初始化检查 |
Wdg_17_Scu_SetMode() | WdgIf_ModeType Mode | Mode: 0 OFF 1SlowMode 2Fastmode | Std_ReturnType:0:OK 1:NotOK | Wdg切换模式,需开启对应配置 |
Wdg_17_Scu_SetTriggerCondition() | uint16 timeout | timeout:设置定时触发器计数(单位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)!