AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

admin 2024年10月20日00:42:38评论35 views字数 3299阅读10分59秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

正文

项目中的ECU硬件设计为休眠系统(无SBC,满足休眠条件后系统进入深度休眠状态),整个项目的模式管理及ECU休眠唤醒功能涉及到EcuMBswMSWC三方交互,设计及实现中遇到了不少问题,最终都被一一解决。本文将详细介绍模式管理实现过程中的关键步骤。

MCURenesas RH850 F1KM

MCALDavinceCFG

BSWISOLAR-9.1

在开始系统配置之前先回答以下问题:

1).为什么在硬件上要设计为深度休眠系统?

--减少SBCSystem base chip)降低成本,热启动提高启动速度。

2).基于RH850芯片的ECU设计为深度休眠系统后,怎么让系统进入深度休眠状态?

--BswM中维持一个EcuM状态的状态机,当状态机跳转到SLEEP状态后执EcuM_GoHaltEcuM_SelectShutdownTarget(EcuMSelectShutdownTarget_SLEEP_MCU,SLEEP_MCU)动作后EcuM接管程序,EcuM调用Mcu模块的Mcu_SetMode(Deep_Sleep)进入深度休眠状态。

3).基于RH850芯片的ECU设计为深度休眠系统后,AUTOSAR架构下在哪里设置系统进入深度休眠?

--EcuM没有提供Callout函数让系统设计去设置Mcu进入深度休眠,EcuM在检测到系统满足休眠条件后在Sleep Sequence中直接调用Mcu_SetMode(Deep_Sleep)进入深度休眠。

4).基于RH850芯片的ECU设计为深度休眠系统后,AUTOSAR架构下在哪里及怎么开启唤醒中断?

--EcuM提供EcuM_EnableWakeupSources Callout中调用RH850提供的Mcu_WakeUpFactor_Preparation函数设置唤醒中断。

5).基于RH850芯片的ECU进入深度休眠状态后被唤醒是直接复位还是接着往下跑?

-- 芯片特性,直接复位。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

6).基于RH850芯片的ECU进入深度休眠状态后被唤醒如果是复位,AUTOSAR架构下在哪里调用Mcu_PerforReset

-- 不用调用Mcu_PerforResetRH850-F1KM芯片自动从0地址开始运行(相当于复位)。

7).基于RH850芯片的ECU进入深度休眠状态后被唤醒如果是接着跑,AUTOSAR架构下在哪里关闭唤醒中断?

-- RH850芯片进入深度休眠后被唤醒会自动复位,所以不用进行关闭唤醒中断的操作。但是,如果是NXP S32K系列的芯片在进入深度休眠后,被唤醒后是接着往下跑的,这个时候在AUTOSAR架构下改怎么去关闭唤醒中断了(目前作者也还没有答案),这个问题留个大家思考。

1.状态机设计

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

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

1-EcuMBswM中的状态机-BswMMode

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

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

2-Sleep阶段

2.Davince配置MCAL

DavinceCFG根据硬件设计配置唤醒脚和唤醒中断,需要配置MCAL架构中的PortMCU模块。Port模块中配置唤醒脚的Pin属性,MCU模块中配置深度休眠模式及其对应的唤醒中断源。

2.1 配置port模块

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

查看软硬件接口表找到硬件唤醒脚。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

Davince中配置Port模块的唤醒Pin的属性。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

配置中断唤醒Pin的电平触发模式。

2.2 配置MCU模块

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

添加一个Mcu深度休眠模式。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

添加MCU唤醒Pin

3.ISOLAR配置BSW

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

3.1 添加MCU模块

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

EcuM模块配置Sleep Mode的时候需要引用到Mcu模块的的信息,所以需要在ISOLAR工程种配置一个Mcu的模块。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

ISOLAR工程目录xxxISOLAR_CfgPrjConfigecu_configparamdefs(这个是作者的工程目录)

添加模块UI信息。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

新建一个Mcu模块。

3.2配置OS模块

虽然F1KM是单核系统,但是在配置EcuM模块的时候还是需要在OS配置一个RES_AUTOSAR_ECUM的资源锁,不然在生成BSW的过程中ISOSALR会报错。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

3.3 配置EcuM模块

3.3.1 EcuM引用RES_AUTOSAR_ECUM

3.3.2 配置EcuMSleepModes

设计为休眠系统的EcuM模块必须配置EcuMSleepModesEcuM_Cfg.h文件里面的ECUM_SLEEP_SUPPORT_ENABLE宏需要配置了EcuMSleepModes后才会配置为TURE

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

3.3.3 配置唤醒源

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

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芯片深度休眠配置实践-Conifig EcuM and BswM

3.3.4 引用NormalMcuMode

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

3.4配置BswM模块

BswM模块的配置最主要的就是配置:一个和SWC交互的MRPSleepReq,应用层满足休眠条件后请求休眠的模式管理请求接口);EcuMGoHaltActionBswMode进入SLEEP状态后调用);EcuMSelectShutdownTarget_SLEEP_MCUActionBswMode进入SLEEP状态后调用)。

3.4.1 添加Sleep相关的Action

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

3.4.2添加ActionList

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

3.4.3 PreShutdownToShutdown添加SleepActionList

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

4.Callout函数实现

EcuM模块提供的Callout函数EcuM_EnableWakeupSource中调用MCAL提供的标准接口(不是AUTOSAR标准接口)Mcu_WakeUpFactor_Preparation函数设置唤醒中断。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

5.ASW配置

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

5.1 添加应用请求休眠接口

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

5.2 SWC中清除预留唤醒源

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

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

5.3设置唤醒事件

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

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

6.实际效果

满足IGN == IgOff & SleepReq == TRUE后系统进入了深度休眠状态。

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

7.总结

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

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM
AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

码上报名

AutoSec 2023 第七届中国汽车网络安全周暨第四届智能汽车数据安全展,9月13-15日,上海

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月20日00:42:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswMhttps://cn-sec.com/archives/1863428.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息