Autosar에서 정리되어 있는 BSW 영역의 Nm 관련 Stack은 다음과 같다.
여기서 알 수 있듯, CanNm위에 Nm이 존재하고, 또한 Nm 위에는 ComM이 존재 한다.
따라서 사용자는 CanNm의 API를 직접 호출하는 방법 보다는, ComM을 통해 Nm을 제어 하고, Nm이 CanNm을 제어하는 것이 알맞는 접근 방법이다.
그럼 이제 앞서 배운 Nm State Machine을 제어 하기 위해 필요한 CanNm API를 직접 호출하지 않고, ComM을 통해 호출하는 방법과 그 이유에 대해 알아 보도록 하자.
1. NetworkRequest
Local Wakeup Event(IGN On등)가 감지된 경우 동작
해당 Sequence Diagram을 살펴 보면 다음과 같이 동작 한다.
- User가 Rte를 통해 ComM에게 ComM_RequestComMode(COMM_FULL_COMMUNICATION)을 요청
- ComM이 Nm에게 Nm_NetworkRequest()를 요청
2. Passive Startup
Remote Wakeup Event(Nm Message 수신 등)가 감지된 경우의 동작
해당 Sequence Diagram을 살펴 보면 다음과 같이 동작 한다.
- Remote Wakeup 인지 한 경우, Nm이 ComM에게 ComM_Nm_NetworkStartIndication()을 호출
- 이로 인해, ComM이 Nm에게 Nm_PassiveStartup()를 호출
다만, 이전 장에서 언급 하였듯, Power Off상태에서 깨어나, Bus Sleep이 된 경우에는 사용자가 직접 호출 해야 한다.
따라서, Bus Sleep에서는 사용자가 ComM_Nm_NetworkStartIndication() 호출이 필요하다.
3. Network Release
System이 Normal Operation에서 동작 하다가, 스스로 꺼질 시점이라고 판단 되면, Network Release를 해야 한다.
해당 Sequence Diagram을 살펴 보면 다음과 같이 동작 한다.
- 사용자가 Rte를 통해, ComM_RequestComMode(COMM_NO_COMMUNICATION)을 호출
- 이로 인해, ComM이 Nm에게 Nm_NetworkRelease()를 호출
4. ComM API 정리
ComM API | 의도한 Nm State Machine 동작 | |
ComM_RequestComMode( COMM_FULL_COMMUNICATION ) | Network Request | |
ComM_Nm_NetworkStartIndication() | Passive Startup | |
ComM_RequestComMode( COMM_NO_COMMUNICATION ) | Network Release |
'Com Stack in ClassicAUTOSAR > NetworkManagement' 카테고리의 다른 글
2. NM State Machine - Overall (0) | 2024.09.18 |
---|---|
1. Introduce of Network Management (0) | 2024.06.09 |