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,分别如下
List | Module |
---|---|
EcuM_AL_DriverInitZero | Det_Init() :Default Error Tracer必须在第一个Dem_PreInit() |
EcuM_AL_DriverInitOne | Mcu_Init() :MCU必须在第一个Gpt_Init() Wdg_Init() :只有Internal WatchdogWdgM_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