MCAL Wdg模块的SchM保护问题分析
-
问题影响MCAL版本
- 所有已发布的MC0/MD1/ME0/HA0 v2.3.0 及之前的MCAL。
问题描述
通过Wdg模块的YCT工程配置无法使能Wdg_Inst0(WDG模块)和Wdg_Inst1(EWDG模块)的SchM保护,存在喂狗序列被外设中断打断导致WDG复位的风险。

问题分析:
在Wdg模块的SchM实现(SchM_Wdg_180_Inst0.h,SchM_Wdg_180_Inst0.c, SchM_Wdg_180_Inst1.h,SchM_Wdg_180_Inst1.c)中使用了基于宏WDG_SCHM_SUPPORT的条件编译,决定是否开启Wdg模块的SchM保护功能,而YCT工程中Wdg模块(Wdg_180_Inst0和Wdg_180_Inst1)SchM配置产生的宏定义为WDG_180_INST0_SCHM_SUPPOR和WDG_180_INST1_SCHM_SUPPORT,与WDG_SCHM_SUPPORT没有任何关联。
在WDG_SCHM_SUPPORT未定义的情况下,Wdg模块的SchM保护函数默认为空函数,从而导致Wdg模块的SchM保护功能总是disable ,无法enable:

解决方案:
已发布MCAL版本
通过在应用工程配置全局宏WDG_SCHM_SUPPORT = STD_ON使能Wdg模块的SchM保护。
① 通过YCT配置工程实现(适用用VSCode IDE + CMake + GCC/IAR/Keil/GHS工程)
在YCT配置工程的ProjecSetting -> Compiler Option -> Compiler Options -> Other flags输入框中单独一行输入-DWDG_SCHM_SUPPORT=STD_ON:

② 在IAR/Keil/GHS IDE工程的C compiler预定义宏配置中增加WDG_SCHM_SUPPORT = STD_ON未来发布MCAL新版本修复
通过在Wdg模块的SchM实现(SchM_Wdg_180_Inst0.h和SchM_Wdg_180_Inst1.h)中使用基于WDG_180_INST0_SCHM_SUPPORT和WDG_180_INST1_SCHM_SUPPORT判断:


具体位置:

-
F Frankie 被引用 于这个主题
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...