null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
⌂
AUTOSAR 개발자 실전 가이드
Structure
overview
•
AUTOSAR가 필요한 이유
•
AUTOSAR 레이어드 아키텍처 구조
components
•
Core, Partition, OS Application 관계
•
SWC와 Runnable — 실행 단위 이해
rte-ports
•
P-Port, R-Port와 인터페이스 설계
•
Explicit vs Implicit Write — 언제 무엇을 쓰나
autosar-os
•
AUTOSAR OS Task와 ISR 설계
•
Alarm, Counter, Schedule Table 정리
•
OS Application과 메모리 보호 설정
spec-practice
•
MUST vs SHALL vs SHOULD — 스펙 용어 해석법
•
DET 에러 처리 — Det_ReportError와 RuntimeError
com-stack
•
ComSignal에서 PduR까지 — 신호가 CAN 프레임이 되는 경로
•
CanIf부터 CanNm까지 — CAN 통신 스택 계층 분리
diagnostics
•
DEM으로 DTC 관리하기 — 이벤트 상태와 고장 이력
•
DCM과 UDS 서비스 — 진단 통신의 실전 구조
ecum-bswm
•
EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서
•
BswM 모드 전환 — 규칙 기반 상태 관리
nvm-schm
•
NvM 읽기/쓰기 패턴 — 비휘발성 메모리를 안전하게 다루는 방법
•
SchM Exclusive Area — 인터럽트와 Task 간 공유 자원 보호
Flow Structure
EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서
17 / 19
NvM 읽기/쓰기 패턴 — 비휘발성 메모리를 안전하게 다루는 방법
☆ Star
↗ Full
BswM 모드 전환 — 규칙 기반 상태 관리
#autosar
#bswm
#mode
#modemanagement
#modeswitching
@devpc
|
2026-05-04 12:39:29
|
GET /api/v1/flows/24/nodes/438?fv=1&nv=1
Context:
Flow v1
→
Node v1
0
Views
1
Calls
# BswM 모드 전환 — 규칙 기반 상태 관리 ## BswM이 존재하는 이유 EcuM이 ECU 전체 상태를 관리한다면, BswM(Basic Software Mode Manager)은 그 상태에 따라 BSW 모듈들의 동작을 제어한다. "통신을 켜라", "COM을 시작해라", "NvM 쓰기를 시작해라" 같은 결정을 BswM이 내린다. 핵심 개념: **Rule-based 모드 전환**. 조건(Rule)이 충족되면 액션(Action)이 자동으로 실행된다. --- ## ModeDeclarationGroup — 모드 선언 ``` ModeDeclarationGroup: BswMModeGroup_ComState Mode: ACTIVE ← COM 통신 활성 Mode: INACTIVE ← COM 통신 비활성 ``` SWC나 BSW 모듈이 모드 요청을 보내면 BswM이 해당 모드로 전환하고 등록된 액션을 실행한다. --- ## Rule + Action 구조 BswM의 핵심은 간단한 if-then 규칙이다. ``` Rule: "EcuM RUN 상태 진입 시 COM 시작" Condition: EcuM_State == RUN Action List: 1. Com_IpduGroupStart(IpduGroup_All) 2. CanSM_RequestComMode(CanSMChannel_0, CANSM_BSWM_FULL_COMMUNICATION) 3. BswM_RequestMode(ComState, ACTIVE) ``` 아래는 C 코드로 보면: ```c /* BswM이 자동 생성하는 액션 함수 (예시) */ FUNC(void, BSWM_CODE) BswM_ActionList_StartCommunication(void) { Com_IpduGroupStart(ComConf_ComIpduGroup_AllTxGroup, FALSE); Com_IpduGroupStart(ComConf_ComIpduGroup_AllRxGroup, FALSE); CanSM_RequestComMode(CanSMConf_CanSMChannel_Channel0, CANSM_BSWM_FULL_COMMUNICATION); } ``` 이 함수는 개발자가 직접 쓰지 않는다. arxml 설정에서 BswM 제너레이터가 생성한다. --- ## 모드 요청 흐름 ```c /* SWC가 BswM에 모드 전환 요청 */ Rte_Switch_BswM_Switch_ESH_ModeSwitch_BswM_MDGP_ESH_Mode( RTE_MODE_BswM_ESH_Mode_RUN); /* BSW 모듈이 직접 요청하는 경우 */ BswM_RequestMode( BswMModeRequestPort_EcuM_State, ECUM_STATE_RUN); ``` --- ## 실전 모드 전환 예시: 시동 ON ``` 이그니션 ON → EcuM STARTUP 완료 → EcuM RUN 요청 │ ▼ BswM Rule 평가 │ ├── CanSM Full Communication 시작 ├── NvM_ReadAll() 트리거 (NvM 전체 읽기) ├── Com_IpduGroupStart() (통신 시작) └── Dem_Init() (DEM 초기화 완료 후 이벤트 처리 활성화) ``` ``` 이그니션 OFF → EcuM POST_RUN 진입 │ ▼ BswM Rule 평가 │ ├── Com_IpduGroupStop() (통신 중단) ├── NvM_WriteAll() 트리거 (NvM 전체 쓰기) ├── CanNm_NetworkRelease() (버스 슬립 요청) └── EcuM_GoDown() (슬립/종료) ``` --- ## BswM 설정 시 주의점 1. **Rule 우선순위**: 여러 Rule이 동시에 트리거될 수 있다. 우선순위 설정이 중요하다. 2. **ActionList 순서**: NvM_WriteAll은 통신 중단 이후에 실행해야 한다. 순서가 틀리면 NvM 쓰기 중 전원이 끊길 수 있다. 3. **Deferred vs Immediate**: 일부 액션은 즉시 실행(Immediate), 일부는 MainFunction에서 지연 실행(Deferred)된다. 인터럽트 컨텍스트에서 호출 시 주의.
EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서
NvM 읽기/쓰기 패턴 — 비휘발성 메모리를 안전하게 다루는 방법
// COMMENTS
Newest First
ON THIS PAGE
No content selected.