• 397查看
  • 0回复

[Autosar] AUTOSAR架构下RH850芯片断电系统配置实践

[复制链接]


该用户从未签到

发表于 28-1-2024 17:26:30 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


前言

项目开始时考虑硬件成本,ECU设计为休眠系统(无SBC,满足休眠条件后系统进入深度休眠状态),则AUTOSAR架构下的模式管理走的Shutdown的Sleep流程。经过一段时间的验证后,发现休眠系统存在系统起不来的风险,则第二版硬件加上一个简单的SBC,ECU改为断电系统(有SBC),则AUTOSAR架构下的模式管理又要重新配置为Shutdown后走OFF流程。在测试过程中也遇到一些问题,最终都被一一解决。本文将接收断电系统的模式管理配置及遇到的问题及解决过程。

MCU:Renesas RH850 F1KM

MCAL:DavinceCFG

BSW:ISOLAR-9.1

正文

1.状态机设计

本系统配置为Flexible EcuM系统,EcuM存在STARTUPONE,STARTUPTWO,RUN,RESHUTDOWN,SHUTDOWN五种状态。

AUTOSAR架构下RH850芯片断电系统配置实践w1.jpg

图1-EcuM在BswM中的状态机--BswMMode

ASW请求接口SleepReq == TRUE(同时满足其他,NvMWriteAll成功 && IGNOff等)后BswMMode状态机切换到SHUTDOWN状态后调用EcuMSelectShutdownTarget_OFF_MCU和EcuMGoDown使得EcuM接管程序走OffPreOs Sequence和OffPostOs。

AUTOSAR架构下RH850芯片断电系统配置实践w2.jpg

图2:SHUTDOWN阶段

AUTOSAR架构下RH850芯片断电系统配置实践w3.jpg

图3:OffPreOS Sequence

AUTOSAR架构下RH850芯片断电系统配置实践w4.jpg

图4:OffPostOS Sequence

2.ISOLAR配置BSW

ECU模式管理中主要配置的BswM模块和EcuM模块。EcuM主要去掉休眠系统的配置,BswM模块配置模式管理接口(MRP)、模式仲裁及模式控制。
2.1 配置EcuM模块

2.1.1 删除EcuMSleepModes

设计为休眠系统的EcuM模块必须配置EcuMSleepModes。EcuM_Cfg.h文件里面的ECUM_SLEEP_SUPPORT_ENABLE宏需要配置了EcuMSleepModes后才会配置为TURE。我们现在改为断电系统,则必须删除EcuMSleepModes。

AUTOSAR架构下RH850芯片断电系统配置实践w5.jpg

2.1.2 配置唤醒源

以下五个唤醒源是系统默认配置的:

EcuMConf_EcuMWakeupSource_ECUM_WKSOURCE_INTERNAL_RESET EcuMConf_EcuMWakeupSource_ECUM_WKSOURCE_EXTERNAL_WDG     EcuMConf_EcuMWakeupSource_ECUM_WKSOURCE_INTERNAL_WDG     EcuMConf_EcuMWakeupSource_ECUM_WKSOURCE_POWER EcuMConf_EcuMWakeupSource_ECUM_WKSOURCE_RESE

其他唤醒源需要根据实际系统设计配置。本项目有一个本地Local唤醒源(IGN)及一个CAN唤醒源。

AUTOSAR架构下RH850芯片断电系统配置实践w6.jpg

和休眠系统不一样的地方是,休眠系统的唤醒源直接接到MCU芯片,但是断电系统的唤醒源接到了SBC上用来唤醒SBC,然后SBC给MCU供电。

2.2 配置BswM模块

BswM模块的配置最主要的就是配置:一个和SWC交互的MRP(SleepReq,应用层满足休眠条件后请求休眠的模式管理请求接口);EcuMGoDown的Action(BswMode进入SHUTDOWN状态后调用);EcuMSelectShutdownTarget_OFF_MCU的Action(BswMode进入SHUTDOWN状态后调用)。
2.2.1 添加Sleep相关的Action

AUTOSAR架构下RH850芯片断电系统配置实践w7.jpg

AUTOSAR架构下RH850芯片断电系统配置实践w8.jpg

2.2.2 添加ActionList

AUTOSAR架构下RH850芯片断电系统配置实践w9.jpg

2.2.3 PreShutdownToShutdown添加Shutdown的ActionList

AUTOSAR架构下RH850芯片断电系统配置实践w10.jpg

3.Callout函数实现

EcuM模块提供的Callout函数EcuM_AL_SwitchOff中调用SBC的复杂驱动接口接口(不是AUTOSAR标准接口)CDD_SBC_GoToSleep函数控制SBC给MCU下电。

AUTOSAR架构下RH850芯片断电系统配置实践w11.jpg

4.ASW配置

设计一个 SWC模块来专门管理应用层的休眠唤醒功能。SWC模块设计一个Pport设置当前应用层是否满足休眠条件(SleepReq == TRUE)。
4.1 添加应用请求休眠接口

AUTOSAR架构下RH850芯片断电系统配置实践w12.jpg

4.2 CDD_WKSM_Init中清除预留唤醒源

系统每次被唤醒后如果没有检测到唤醒源,会默认设置一个Reset的唤醒源。因为系统休眠后立即被复位了,复位起来后最好将默认的唤醒源都清除掉。

AUTOSAR架构下RH850芯片断电系统配置实践w13.jpg

4.3 设置唤醒事件

在休眠管理模块中检测和设置唤醒事件。

AUTOSAR架构下RH850芯片断电系统配置实践w14.jpg

5.预计效果

满足IGN == IgOff & SleepReq == TRUE后系统进入了断电状态。

6.总结

AUTOSAR架构下的模式管理是SWC - BSW - ECUM三方交互的一个过程,SWC请求,BSW仲裁后调用ECUM的请求接口,ECUM完成最后的执行。

7.问题分析

测试过程中遇到了一个奇怪现象:IGOff后,ASW发送SleepReq请求后,ECU确实下电了,一位一把成功到位,But,在EcuM_AL_SwitchOff函数中打了一个断点后重新测试,居然没有跑到EcuM_AL_SwitchOff函数中ECU就自己下电了。

最后分析是因为EcuM_SelectShutdownTarget配置成了Reset,最后OffPostSequence走了EcuM_AL_Reset流程,执行了Mcu_PerformReset,这个时候因为IG电下了,SBC也没有唤醒源,看上去和EcuM_AL_SwitchOff的现象一样。

end

分享不易,恳请点个【再看】

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 5-3-2025 04:35 , Processed in 0.499241 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.