EcuM模块

0 前言

ECU State Manager (EcuM) 主要工作是:

  • 初始化BSW (Basis Software)
  • ECU的sleep和wake up
  • ECU的shut down和reset

EcuM有两种模式,EcuM flex和EcuM fixed,这里只谈EcuM flex。

1 EcuM状态列表

EcuM有以下Module State:
ECUM_STATE_STARTUP
EcuM_Init()内,EcuM_DriverInitListZero()前
ECUM_STATE_STARTUP_ONE
EcuM_Init()内,EcuM_DriverInitListOne()前,获得reset reason 和 default shutdown target
ECUM_STATE_APP_RUN
完成所有BSW初始化,EcuM_StartupTwo()、MainFunction中
ECUM_STATE_GO_SLEEP
EcuM_GoSleep()中,准备进入sleep phase
ECUM_STATE_SLEEP
EcuM_GoHalt()和EcuM_GoPoll()中
ECUM_STATE_GO_OFF_ONE
EcuM_GoDown()中,准备进入Off phase.
ECUM_STATE_GO_OFF_TWO
EcuM_Shutdown()
ECUM_STATE_WAKEUP_ONE
从sleep mode重新初始化
ECUM_STATE_WAKEUP_VALIDATION
等待wake up确认
EcuM_CurrentShutdownTarget有以下状态:
ECUM_STATE_RESET
ECUM_STATE_OFF
ECUM_STATE_SLEEP

2 EcuM从Called 到RUN

2.1 CPU0从Called 到RUN

EcuM的初始化分为2步
第1步是EcuM_Init(),必须在StartOS()之前完成
第2步是EcuM_StartupTwo(),在OS的Default_Init_Task期间执行

EcuM_Init()执行basic driver initialization,分为两个List,分别如下

ListModule
EcuM_AL_DriverInitZeroDet_Init():Default Error Tracer必须在第一个
Dem_PreInit()
EcuM_AL_DriverInitOneMcu_Init():MCU必须在第一个
Gpt_Init()
Wdg_Init():只有Internal Watchdog
WdgM_Init()
Adc_Init()
Icu_Init()
Pwm_Init()

EcuM_StartupTwo()完成后,EcuM处于RUN状态,且ECU的控制权交给BswM模块

在这里插入图片描述

2.2 CPUx从Called 到RUN

当系统Reset时,CPU0处于激活状态,CPUx(x>0)处于Halt状态,由CPU0执行CPUx的寄存器DBGSR.HALT=0x2可激活对应的CPUx
在这里插入图片描述

3 EcuM_MainFunction

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值