null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서
#autosar
#ecum
#startup
#shutdown
#wakeup
@devpc
|
2026-05-04 12:39:29
|
GET /api/v1/nodes/437?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서 ## EcuM이 필요한 이유 ECU는 단순히 `main()`에서 무한 루프를 도는 게 전부가 아니다. 키 ON/OFF, 버스 활성화/비활성화, 슬립 모드 진입/해제 등의 상태 전환이 있다. EcuM(ECU State Manager)이 이 전체 흐름을 관리한다. --- ## EcuM 상태 머신 ``` STARTUP └── Phase 1: EcuM_Init() — 기본 드라이버 초기화 └── Phase 2: BswM_Init(), SchM_Init(), OS_Start() │ ▼ RUN ← WakeupEvent, NetworkRequest │ ├── POST_RUN ← 슬립 요청 시 │ │ │ ▼ │ SLEEP (Halt / Poll) │ │ │ └── WakeupEvent → STARTUP (리셋) or RUN │ └── SHUTDOWN → OFF ``` --- ## 시동 시퀀스 코드 흐름 ```c /* main.c */ int main(void) { EcuM_Init(); /* Phase 1: 기본 드라이버 초기화 */ /* EcuM_Init 내부에서 OS_Start()를 호출 → 이후는 Task에서 실행 */ /* main()은 여기서 블로킹됨 (OS_Start가 리턴 안 함) */ EcuM_StartupTwo(); /* Phase 2 (OS Task 내에서 실행) */ return 0; } ``` **Phase 1에서 초기화하는 것:** - MCU, Port, Watchdog 드라이버 - NVIC(인터럽트 컨트롤러) - EcuM 자체 초기화, 슬립 소스 확인 **Phase 2에서 초기화하는 것:** - BSW 모듈 전체 Init (Com, CanIf, Dcm, Dem, NvM...) - SchM(Schedule Manager) 시작 - BswM 초기 모드 설정 --- ## WakeupSource — 슬립에서 깨어나는 조건 ```c /* WakeupSource 감지 콜백 */ void EcuM_CheckWakeup(EcuM_WakeupSourceType WakeupSources) { if (WakeupSources & ECUM_WKSOURCE_POWER) { /* 전원 공급 복귀 */ EcuM_SetWakeupEvent(ECUM_WKSOURCE_POWER); } if (WakeupSources & ECUM_WKSOURCE_CAN) { /* CAN 버스 활동 감지 */ EcuM_SetWakeupEvent(ECUM_WKSOURCE_CAN); } } ``` WakeupSource는 EcuM 설정에서 정의한다. 각 소스마다 검증 과정(Validation)이 있어 노이즈 에 의한 오작동을 방지한다. --- ## 종료 시퀀스 ```c /* 슬립/종료 요청 */ EcuM_RequestSleep(); /* RUN → POST_RUN 전환 요청 */ /* EcuM GoSleep 훅 — 슬립 직전 정리 */ void EcuM_GoSleepSequence(void) { NvM_WriteAll(); /* 모든 NvM 블록 쓰기 완료 대기 */ Com_IpduGroupStop(); /* 통신 중단 */ CanNm_NetworkRelease(); /* CAN 네트워크 해제 */ } ``` 슬립 모드에서 ECU는 CAN 트랜시버를 Low Power 모드로 전환하고 MCU를 Halt/Standby 상태로 진입시킨다. 소비 전류가 수십 mA에서 수십 µA로 줄어든다. --- ## EcuM Flexible vs EcuM Fixed | 구분 | 특징 | |------|------| | EcuM Fixed | 단일 코어, 간단한 시작/종료 | | EcuM Flexible | 멀티코어, 복잡한 부트 시퀀스, AUTOSAR R4+ 권장 | 최근 프로젝트(TriCore, Cortex-R 멀티코어)는 대부분 EcuM Flexible을 쓴다.
// COMMENTS
Newest First
ON THIS PAGE