반응형

[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (8) Partial Networking

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf

 

1. NM PDU의 RX 처리

[SWS_UdpNm_00328]UdpNmPnEnabled가 FALSE이면 UdpNm은 정상적인 수신 표시 처리를 수행하고 부분 네트워킹 확장은 비활성화됩니다.

[SWS_UdpNm_00329]UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 0이고 UdpNmAllNmMessagesKeepAwake가 TRUE인 경우 UdpNm 모듈은 부분 네트워킹에 대한 확장을 생략하고 정상적인 Rx 표시 처리를 수행해야 합니다.

[SWS_UdpNm_00462]UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 0이고 UdpNmAllNmMessagesKeepAwake가 FALSE이면 UdpNm 모듈은 수신된 NM-PDU를 무시합니다.

[SWS_UdpNm_00331] {OBSOLETE replace by SWS_UdpNm_00486 } UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 1이면 UdpNm 모듈은NM-PDU의 부분 네트워킹 정보를 처리해야 합니다.

[SWS_UdpNm_00486] {DRAFT} UdpNmPnEnabled가 TRUE로 설정되면 수신된 NM-PDU의 PNI 비트가 1로 설정되고 PNSR 비트가 0으로 설정되면 UdpNm 모듈은 부분 네트워크 구성(해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength)으로 이동하고 Nm_PncBitVectorRxIndication⌋(RS_Nm_02546, RS_Nm_02519, RS_Nm_02547)을 호출하여 PNC 비트 벡터를 전달합니다.

[SWS_UdpNm_00487] {DRAFT} UdpNmPnEnabled가 TRUE로 설정되고 Nm_PncBitVectorRxIndication이 호출된 경우 수신된 NM PDU는 다음 조건 하에서만 추가 처리를 위해 고려됩니다.
- UdpNmAllNmMessagesKeepAwake가 TRUE로 설정되거나
- RelevantPncRequestDetectedPtr의 출력 값이 TRUE ⌋(RS_Nm_02546, RS_Nm_02527)로 설정됩니다.

참고:
- UdpNmAllNmMessagesKeepAwake는 게이트웨이가 모든 종류의 NM-PDU에서 깨어 있는 상태를 유지하는 데 필요합니다.
- SWS_UdpNm_00487의 결과로 모든 메시지가 ECU를 깨우지 않거나 관련 PN 정보가 감지되지 않은 경우 NM PDU는 추가 처리를 위해 고려되지 않습니다.
예시:
- UdpNmPduCbv위치 = 0
- UdpNmPduNidPosition = 1
- NmPncBitVectorOffset = 4
- NmPncBitVectorLength = 4
- 사용자 데이터 범위의 계산된 길이 = 2
NM PDU의 바이트 2와 바이트 3에는 사용자 데이터가 포함되고 NM PDU의 바이트 4~바이트 7에는 PNC 비트 벡터가 포함됩니다.


이 예에서는 4개의 NmPnFilterMaskBytes가 정의되어야 합니다. PN 필터 마스크의 값은 부분 네트워크 설계에 따라 사용됩니다. 

예:
- NmPnFilterMaskByteIndex = 0, NmPnFilterMaskByteValue = 0x01
- NmPnFilterMaskByteIndex = 1, NmPnFilterMaskByteValue = 0x97
- NmPnFilterMaskByteIndex = 2, NmPnFilterMaskByteValue = 0x00
- NmPnFilterMaskByteIndex = 3, NmPnFilterMaskByteValue = 0x00
참고: PNC 비트 벡터의 오프셋은 Nm 모듈(NmPncBitVectorOffset)에서 파생됩니다. PNC 비트 벡터 길이는 NM 채널당 Nm 모듈(NmPncBitVectorLength)에서 파생됩니다. Nm 모듈에서 찾아 사용되는 PN 필터 마스크(NmPnFilterMaskByteIndex 및 NmPnFilterMaskByteValue)입니다.

[SWS_UdpNm_00473] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE이면 수신된 NM-PDU의 PNI 비트는 1이고 수신된 NM-PDU의 PNSR 비트는 1이며 UdpNmComMNetworkHandleRef를 통해 구성된 해당 ComMChannel은 이 NM-PDU가 능동적으로 수신된 곳입니다. 조정된 경우(ComMPncGatewayType이 COMM_GATEWAY_TYPE_ACTIVE로 설정됨) UdpNm 모듈은 수신된 NM-PDU를 무시해야 합니다. 또한 UdpNm 모듈은 다음을 수행해야 합니다.
- 런타임 오류 UDPNM_E_INVALID_PN_SYNC_SHUTDOWN_REQUEST를 기본 오류 추적기에 보고합니다.
- UdpNmPnSyncShutdownErrorReactionEnabled가 TRUE로 설정된 경우 영향을 받는 UdpNm-Channel의 다음 주 기능 호출에서 최신 PN 정보가 있는 NM-PDU의 전송을 요청합니다.

[SWS_UdpNm_00488] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE이면 수신된 NM-PDU의 PNI 비트가 1로 설정되고 PNSR 비트가 1로 설정되면 UdpNm 모듈은 부분 네트워크 구성(해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength) 및 Nm_ForwardSynchronizedPncShutdown을 호출하여 PNC 비트 벡터를 전달합니다. 
참고: 1로 설정된 PNSR 비트는 동기화된 PNC 종료가 요청된 경우에만 가능합니다. 동기화된 PNC 종료는 PN 토폴로지에서 처리해야 합니다. 따라서 모든 코디네이터가 동기화된 PNC 종료를 활성화했거나 모든 코디네이터가 동기화된 PNC 종료를 비활성화했다고 가정합니다. 두 가지를 혼합하면 동기화되지 않은 PNC 종료가 발생하므로 이를 방지해야 합니다.

 

2. NM PDU의 TX 처리

[SWS_UdpNm_00332]UdpNmPnEnabled가 TRUE인 경우 UdpNm 모듈은 CBV에서 전송된 PNI 비트의 값을 1로 설정해야 합니다.
참고: 부분 네트워킹을 사용하는 경우 CBV를 사용해야 합니다.

[SWS_UdpNm_00333] UdpNmPnEnabled가 FALSE이면 UdpNm 모듈은 CBV에서 전송된 PNI 비트의 값을 항상 0으로 설정해야 합니다.


[SWS_UdpNm_00489] {DRAFT} UdpNmPnEnabled가 TRUE이면 NM-PDU 가 SoAd(SoAdBswModules /SoAdIfTriggerTransmit이 FALSE로 설정됨)에서 트리거된 전송에 대해 구성되지 않고 동기화된 PNC 종료에 대한 요청이 보류되지 않고 NM-PDU가 전송되어야 합니다. UdpNm 모듈은 지정된 순서대로 다음 작업을 수행합니다.
- Nm_PncBitVectorTxIndication(<NM-channel>, <집합된 내부 PNC 요청의 필터링되지 않은 PNC 비트 벡터를 저장하는 버퍼>)을 호출하여 전송 요청을 표시하고 내부 PNC 요청을 검색합니다.
- 내부 PNC 요청을 위한 수신된 PNC 비트 벡터를 해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength를 고려하여 NM-PDU에 복사
- 사용자 데이터가 활성화된 경우 사용 가능한 데이터(UdpNmComUserDataSupport가 활성화된 경우 Com 또는 내부 저장소에서)를 가져와 NM-PDU의 사용자 데이터 범위에 있는 데이터를 복사합니다.
- SoAd_IfTransmit RS_Nm_02546, RS_Nm_02519, RS_Nm_02547을 호출하여 NM-PDU의 전송을 트리거합니다.

 

[SWS_UdpNm_00474] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNm 모듈이 UdpNm_RequestSynchronizedPncShutdown을 통해 표시되는 경우 UdpNm 모듈은 주어진 UdpNm-Channel에 대한 PNC(pncId)를 저장해야 합니다.
참고: 동기화된 PNC 종료 및 PN 종료 메시지(CBV의 PNSR 비트를 1로 설정)로 전송을 위해 요청된 모든 PNC의 집계는 해당 UdpNm_Mainfunction의 컨텍스트에서 비동기적으로 수행됩니다.

[SWS_UdpNm_00475] { OBSOLETE replace by SWS_UdpNm_00490 } UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정된 경우 동기화된 PNC 종료 요청이 보류 중이며 전송 확인(UdpNm_TxConfirmation을 통해 표시됨)이 전송 확인이 되지 않으면 이전 호출의 모듈 Udm 요청이 보류됩니다. 대응하는 NM-채널의 호출은 SoAd_IfTransmit을 호출함으로써 NM 메시지의 전송이다. NM-PDU가 SoAd에서 트리거된 전송에 대해 구성되지 않은 경우(SoAdBswModules/SoAdIfTriggerTransmit = FALSE), UdpNm은 이 메시지에 대해 일반 데이터 아래에 다음 데이터를 추가로 설정해야 합니다.
- CBV의 PNSR 비트를 1로 설정
- 동기화된 PNC 종료에 대한 보류 요청으로 저장된 PNC ID에 해당하는 비트를 1로 설정하고 다른 모든 비트를 0으로 설정하여 사용자 데이터의 PN 정보를 덮어씁니다(NM 사용자 데이터를 가져온 후 UdpNmComUserDataSupport가 활성화된 경우).

 

[SWS_UdpNm_00490] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되면 동기화된 PNC 종료에 대한 요청이 보류되고 이전 호출의 전송 확인(UdpNm_TxConfirmation을 통해 표시됨)이 보류 중인 경우 UdpNm 모듈은 다음 주 기능 호출에서 a를 요청해야 합니다. SoAd_IfTransmit를 호출하여 NM-PDU를 PN 종료 메시지로 전송합니다. NM-PDU가 SoAd에서 트리거된 전송을 위해 구성되지 않은 경우(SoAdBswModules/SoAdIfTriggerTransmit = FALSE), UdpNm은 이 메시지에 대해 일반 데이터 아래에 다음 데이터를 추가로 설정해야 합니다.
- CBV의 PNSR 비트를 1로 설정
- 사용자 데이터가 활성화된 경우 사용 가능한 데이터(UdpNmComUserDataSupport가 활성화된 경우 Com 또는 내부 저장소에서)를 가져와 NM-PDU의 사용자 데이터 범위에 있는 데이터를 복사합니다.
- 동기화된 PNC 종료에 대한 보류 요청으로 저장된 PNC ID에 해당하는 비트를 1로, 다른 모든 비트를 0으로 설정하여 해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength에 대한 PNC 비트 벡터 쓰기 
참고: UdpNm 모듈은 동기화된 PNC 종료에 대해 표시된 모든 PNC를 집계하고 pncId를 바이트 배열(PNC 비트 벡터)로 전송해야 합니다. PNC 비트 벡터의 각 비트(PNC 비트)는 특정 PNC를 나타냅니다. PNC 비트의 PNC 비트 벡터 내의 byteIndex 및 bitindex는 다음과 같이 결정됩니다.
- byteIndex = (PncId div 8) - NmPncBitVectorOffset
- bitIndex = (PncId 모드 8)

[SWS_UdpNm_00481] UdpNmPnShutdownMessageRetransmissionDuration이 구성되고 PN 종료 메시지 전송이 처음으로 요청되면(SWS_UdpNm_00475 참조), PN 종료 메시지에 대한 해당 재전송 타이머는 UdpNmPnShutdownMessageRetransmissionRetransmissionRetransmission.NmPnDurationRetransmission에 의해 시작되어야 합니다.

[SWS_UdpNm_00476] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정된 경우 UdpNm 모듈은 NM-PDU의 전송을 PN 종료 메시지로 요청했습니다(SWS_UdpNm_00490 참조). 해당 NM 채널의 동기화된 PNC 종료에 대한 보류 중인 요청을 완료하고 저장소에서 제거합니다. 또한 UdpNmPnShutdownMessageRetransmissionDuration이 구성되면 UdpNm은 영향을 받는 NM 채널의 PN 종료 메시지에 대한 재전송 타이머를 취소해야 합니다. RS_Nm_02545 )
참고: UdpNm은 동기화된 PNC 종료에 대한 새 요청(UdpNm_RequestSynchronizedPncShutdown을 통해 표시됨)이 PN 종료 NM 프레임의 진행 중인 전송 중에 손실되지 않도록 해야 합니다.

 

[SWS_UdpNm_00477] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNmPnShutdownMessageRetransmissionDuration이 구성된 경우 UdpNm 모듈이 동기화된 PNC 종료로 인해 전송을 요청했거나(SWS_UdpNm_004475 UdpTPN iso가 있는 종료 요청에 대한 SWS_UdpNm_00dpTPN_OK 호출 결과)
메시지가 수락되지 않은 경우(SoAd_IfTransmit가 E_NOT_OK를 반환함) UdpNm 모듈은 동기화된 PNC 종료에 대한 보류 중인 요청으로 저장된 해당 PNC ID를 유지하고 다음 주 기능에서 재전송을 수행해야 합니다. RS_Nm_02545 )

 

참고:
- PN 종료 메시지의 전송이 하위 계층에 의해 확인되지 않은 경우(E_NOT_OK 또는 UdpNm_SoAdIfTxConfirmation이 호출되지 않은 경우) UdpNm은 해당하는 주요 기능 호출의 컨텍스트에서 PN 종료 메시지에 대한 재시도 전송 처리를 수행해야 합니다. 재시도 하위 계층이 Nm 메시지를 전송할 수 없는 경우 전송 요청은 오류 사례를 다루어야 합니다. 최악의 경우 UdpNmMsgCycleTime으로 전송된 연기된 NM 메시지와 충돌합니다(SWS_UdpNm_00472 참조). 그러나 어떤 경우에도 NM 메시지 전송 기능이 PN 재설정 시간(EIRA) 내에 복구되지 않으면 PNC가 동기화되지 않고 종료되어 애플리케이션에서 시간 초과 오류가 발생할 수 있습니다.

- 하위 계층이 나타내는 보류 중인 전송 확인에 대한 종속성은 신뢰할 수 있는 통신을 지원해야 합니다. 예를 들어 하위 계층의 대기열이 구성된 경우 PN 종료 메시지가 네트워크에서 전송되었는지 확인하거나 오래된 PN 종료 메시지의 전송을 피하십시오.

[SWS_UdpNm_00482] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNm 모듈이 동기화된 PNC 종료에 대한 보류 중인 요청으로 PNC ID를 저장한 경우 UdpNm은 외부 또는 내부적으로 다시 요청되는 해당 PNC ID를 저장소에서 제거해야 합니다.
- UdpNm은 외부에서 요청한 PNC가 수신된 경우 NM 메시지 수신을 확인해야 합니다.
- UdpNm은 해당 ComPdu에서 내부 PNC 요청을 파생하여 내부 PNC 요청을 사용할 수 있는 경우 PN 종료 메시지의 각 전송에 앞서 확인해야 합니다(UdpNmTxUserDataPduRef 참조).

[SWS_UdpNm_00483] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNmPnShutdownMessageRetransmissionDuration이 구성되지 않은 경우 UdpNm 모듈이 동기화된 PNC 종료로 인해 전송을 요청했습니다(SWS_UdpNm_00475 참조). (SoAdIf_Transmit가 E_NOT_OK를 반환함), UdpNm은 해당 NM 채널의 동기화된 PNC 종료에 대한 보류 중인 요청으로 저장된 PNC ID를 제거하고 런타임 오류 UDPNM_E_TRANSMISSION_OF_PN_SHUTDOWN_MESSAGE_FAILED를 DET에 보고합니다.

[SWS_UdpNm_00484] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 PN 종료 메시지에 대한 재전송 타이머(ECUC_UdpNm_00098 참조)가 만료되면 UdpNm은 동기화된 PNC 종료에 대한 보류 요청을 제거하고 오류 저장소에서 해당 NM 채널의 런타임을 보고합니다.

 

3. 내부 요청된 Partial Network 클러스터 처리

모든 내부 PNC 요청은 ComM에서 관리합니다. ComM은 채널당 집계된 내부 PNC 요청을 NmIf에 PNC 비트 벡터로 전달합니다. 이 PNC 비트 벡터는 소위 "Internal Request Array"을 전달합니다. UdpNm은 NM_PDU가 전송될 때마다 NmIf에서 최신 IRA를 검색해야 합니다. NmIf는 UdpNm에 IRA 정보를 제공하고 PNC 재설정 타이머를 업데이트합니다(관련 PNC가 전송될 때마다 PNC 재설정 타이머가 다시 시작됨).
참고: UdpNmPnEnabled가 TRUE로 설정된 모든 구성된 NM 채널의 경우 UdpNm은 Nm_PncBitVectorTxIndication(<NM-channel>, <집계된 내부 PNC 요청의 필터링되지 않은 PNC 비트 벡터를 저장하는 버퍼>)을 호출합니다. 전송을 표시하고 구성된 NmPncBitVectorLength에 대한 PNC 비트 벡터로 현재 내부 PNC 요청을 검색합니다. UdpNm은 수신된 내부 PNC 요청을 NM-PDU의 PNC 비트 벡터 바이트로 복사합니다.

 

4. NM PDU Filter Algorithm

[SWS_UdpNm_00335] {OBSOLETE} 수신된 NM-PDU에서 PN 요청 정보(PN Info Range)를 포함하는 범위(바이트)는 바이트 0에서 시작하는 UdpNmPnInfoOffset(바이트) 및 UdpNmPnInfoLength(바이트)로 정의됩니다. 이 범위를 PN 정보 범위라고 합니다.

예시:
- UdpNmPnInfoOffset = 3
- UdpNmPnInfoLength = 2
NM 메시지의 Byte 3 및 Byte 4에만 PN 요청 정보가 포함됩니다.

[SWS_UdpNm_00336] {OBSOLETE} PN 정보 범위의 모든 비트는 하나의 부분 네트워크를 나타냅니다. 비트가 1로 설정되면 부분 네트워크가 요청됩니다. 비트가 0으로 설정되면 이 PN에 대한 요청이 없습니다.

[SWS_UdpNm_00337] {OBSOLETE} 구성 매개변수 UdpNmPnFilterMaskByte를 통해 UdpNm은 ECU와 관련된 PN과 그렇지 않은 PN을 감지할 수 있습니다.

UdpNmPnFilterMasskByte의 각 비트는 다음과 같은 의미를 갖습니다.
0) PN 요청은 ECU와 관련이 없습니다. 이 비트가 수신된 NM-PDU에 설정되어 있으면 ECU의 통신 스택이 깨어 있는 상태로 유지되지 않습니다.

1) PN 요청은 ECU와 관련이 있습니다. 이 비트가 수신된 NM-PDU에 설정되어 있으면 ECU의 통신 스택이 깨어 있는 상태로 유지됩니다.

[SWS_UdpNm_00338] {OBSOLETE} 각 PN 필터 마스크 바이트는 NM 메시지의 PN 정보 범위에 있는 해당 바이트에 매핑(비트 AND)해야 합니다.

[SWS_UdpNm_00339] {OBSOLETE replace by SWS_UdpNm_00487 } 수신된 NM-PDU의 PN 정보 범위 내의 적어도 하나의 비트가 NM 필터 마스크의 비트와 일치하는 경우 PN 요청 정보는 ECU와 관련됩니다.

[SWS_UdpNm_00460] {OBSOLETE replace by SWS_UdpNm_00487 } 수신된 NM-PDU에 관련 PN이 요청되지 않고
UdpNmAllNmMessagesKeepAwake가 FALSE이면 PDU가 추가 처리에서 삭제됩니다.

[SWS_UdpNm_00461] {OBSOLETE replace by SWS_UdpNm_00487 } 수신된 NM-PDU에 관련 PN이 요청되지 않고
UdpNmAllNmMessagesKeepAwake가 TRUE이면 PDU가 추가 Rx 표시 처리에서 삭제되지 않아야 합니다.

 

5. 내부 및 외부 요청된 Partial Network 집계

참고: 이 기능은 Partial Network의 활동으로 인해 I-PDU-그룹을 전환해야 하는 모든 ECU에서 사용됩니다. (예: 잘못된 타임아웃을 방지하기 위해) I-PDU-그룹은 해당 PN이 내부 또는 외부에서 요청되는 경우 켜야 합니다. I-PDU-그룹은 해당 PN에 대한 모든 내부 및 외부 요청이 해제될 때까지 꺼지지 않습니다.

 

IPDU 그룹을 전환하기 위한 논리는 ComM에 의해 구현됩니다. UdpNm은 PN이 요청되었는지 여부만 정보를 제공합니다. COM 모듈은 데이터를 상위 계층으로 전송하는 데 사용됩니다.

 

모든 직접 연결된 ECU에서 I-PDU-그룹을 동기적으로 전환하기 위해 UdpNm은 모든 ECU에서 (거의) 동일한 시간에 상위 계층에 요청 변경 정보를 제공해야 합니다. 이것이 재설정 타이머가 수신된 모든 NM 메시지와 전송된 모든 NM 메시지에서 다시 시작되는 이유입니다(아래 참조).
내부/외부 요청 PN의 집계된 상태를 EIRA(External Internal Requests Aggregated)라고 합니다.

[SWS_UdpNm_00344] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE인 경우 UdpNm은 모든 관련 채널(UdpNmPnEnabled가 TRUE인 모든 UdpNm 채널)을 통해 결합된 외부 및 내부 요청 PN을 저장할 가능성을 제공해야 합니다. 초기화 시 모든 PN의 값은 0으로 설정되어야 합니다(요청되지 않음).

[SWS_UdpNm_00347] {OBSOLETE} 만약
- UdpNmPnEiraCalcEnabled가 참인 경우
- NM-PDU가 수신된 경우
- 이 메시지 내에서 PN이 요청된 경우(비트는 1로 설정됨)
- 그리고 요청된 PN이 [구성된 PN 필터 마스크] 내에서 1로 설정되면 UdpNm은 이러한 PN에 대한 요청 정보(값 1)를 저장해야 합니다.

[SWS_UdpNm_00348] {OBSOLETE} 만약
- UdpNmPnEiraCalcEnabled가 참인 경우
- NM-PDU가 UdpNM에서 보내도록 요청된 경우
- 이 메시지 내에서 PN이 요청된 경우(비트는 1로 설정됨)
- 그리고 요청된 PN이 [구성된 PN 필터 마스크] 내에서 1로 설정되면 UdpNm은 이러한 PN에 대한 요청 정보(값 1)를 저장해야 합니다.

[SWS_UdpNm_00345] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE이면 UdpNm 모듈은 이 PN이 관련 채널 중 적어도 하나에서 여전히 외부 또는 내부적으로 요청되는 경우 각 PN을 모니터링할 가능성을 제공해야 합니다.

참고: 즉, 연결된 여러 물리적 채널에서 하나의 PN을 처리하는 데 하나의 타이머만 필요합니다. 예: 6개의 물리적 채널과 8개의 부분 네트워크가 있는 게이트웨이의 요청을 처리하려면 8개의 EIRA 재설정 타이머만 필요합니다.
이는 PN PDU-그룹의 전환이 물리적 채널에 종속되지 않고 ECU에 대해 전역적으로 수행되기 때문에 가능합니다.

[SWS_UdpNm_00349] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE이고 메시지 수신 또는 전송에 의해 PN이 요청되는 경우(SWS_UdpNM_00347 및 SWS_UdpNm_00348 참조) 이 PN에 대한 모니터링은 UdpnResetTime과 관련하여 다시 시작되어야 합니다.

참고: UdpNmPnResetTime은 UdpNmMsgCycleTime보다 큰 값으로 구성되어야 합니다. UdpNmPnResetTime이 UdpNmMsgCycleTime보다 작은 값으로 구성되고 하나의 ECU만 PN을 요청하는 경우 요청 상태가 EIRA에서 토글됩니다.

참고: UdpNmPnResetTime은 NM이 이미 버스 슬립 준비로 변경된 후 타이머가 경과할 수 있는 것을 피하기 위해 UdpNmTimeoutTime보다 작은 값으로 구성되어야 합니다.

[SWS_UdpNm_00351] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE이고 UdpNmPnResetTime 내에 PN이 다시 요청되지 않으면 이 PN에 해당하는 저장된 값을 0으로 설정해야 합니다(요청되지 않음).

[SWS_UdpNm_00352] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE이고 PN에 대한 저장된 값이 요청됨으로 설정되거나 다시 요청되지 않음으로 설정되는 경우(SWS_UdpNm_00347, SWS_UdpNm_00347 참조, SWS_UdpNm_00348 및 SWS_035NmR에 대해 구성된 SWS_UdpNm_00348 및 SWS_UdpNmR을 호출하여 SWS_UdpNm_R을 알립니다. 즉, 변경된 EIRA 정보는 COM에 전달됩니다).

참고: PN 종료 메시지가 수신되면(PNSR이 1로 설정됨) 해당 PNC 상태 머신이 COMM_PNC_READY_SLEEP에 있어야 하기 때문에 특별한 처리가 필요하지 않습니다. ERA PDU만 다른 방식으로 처리됩니다(SWS_UdpNm_00478 참조).

[SWS_UdpNm_00372] {OBSOLETE} UdpNmPnEiraCalcEnabled가 TRUE이고 UdpNmPnEraCalcEnabled가 TRUE인 경우 PN 상태 정보는 EIRA 및 ERA 정보에 대해 별도로 저장되어야 합니다(SWS_UdpNM_00344 및 SWS_00345와 비교).

 

7. UdpNm_NetworkRequest를 통한 NM-PDU의 자발적 전송

[SWS_UdpNm_00362]⌈ UdpNm_NetworkRequest가 호출되면 UdpNmPnHandleMultipleNetworkRequests는 TRUE로 설정되고 UdpNm은 준비 슬립 상태, 정상 작동 상태 또는 반복 메시지 상태, UdpNm은 반복 메시지 상태로 변경하거나 다시 시작해야 합니다.


참고: UdpNmPnHandleMultipleNetworkRequests가 TRUE로 설정된 경우 UdpNm 기능 '즉시 전송'은 필수입니다.
참고: PNC 제어 모듈(예: ComM)은 PNC 비트가 변경되는 경우 UdpNm_NetworkRequest를 호출합니다.

반응형
반응형

[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (7) 추가 기능

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf

 

원격 Sleep 표시 감지(선택 사항)

"원격 Sleep 표시"는 정상 작동 상태의 노드가 클러스터의 다른 모든 노드가 Sleep할 준비가 되었음을 발견한 상황을 나타냅니다. 여전히 정상 작동 상태에 있는 노드는 bus를 계속 깨어 있는 상태로 유지합니다.

 

[SWS_UdpNm_00149] 원격 Sleep 표시 감지는 UdpNmRemoteSleepIndEnabled 스위치(구성 매개변수)를 사용하여 정적으로 구성해야 합니다.


[SWS_UdpNm_00150] UdpNmRemoteSleepIndTime(구성 매개변수)에 의해 결정된 구성 가능한 시간 동안 정상 작동 상태에서 NM PDU가 수신되지 않으면 NM은 클러스터의 다른 모든 노드가 Sleep할 준비가 되었음을 일반 네트워크 관리 인터페이스에 알려야 합니다( Nm_RemoteSleepIndication을 호출하여 소위 '원격 Sleep표시').

 

[SWS_UdpNm_00151] Remote Sleep Indication이 이전에 감지되었고 NM PDU가 Normal Operation State 또는 Ready Sleep State에서 다시 수신되면 NM은 클러스터의 일부 노드가 더 이상 슬립할 준비가 되지 않았음을 Generic Network Management Interface에 알려야 합니다. Nm_RemoteSleepCancellation을 호출하여 (소위 '원격 Sleep 취소').

[SWS_UdpNm_00152] 원격 Sleep 표시가 이전에 감지되었고 Repeat Message 상태가 정상 작동 상태 또는 Ready Sleep 상태에서 입력된 경우 UdpNm은 클러스터의 일부 노드가 더 이상 절전할 준비가 되지 않았음을 일반 네트워크 관리 인터페이스에 알려야 합니다( Nm_RemoteSleepCancellation을 호출하여 소위 '원격 수면 취소').

[SWS_UdpNm_00154] NM은 Bus-Slee 모드, Prepare Bus-Sleep 및 Repeat Message 상태에서 원격 Sleep 표시 확인을 거부해야 합니다. 서비스가 실행되지 않고 E_NOT_OK가 반환됩니다.

 

사용자 데이터(선택 사항)

[SWS_UdpNm_00158] NM 사용자 데이터 지원은 UdpNmUserDataEnabled 스위치(구성 매개변수)를 사용하여 정적으로 구성해야 합니다.


[SWS_UdpNm_00159] UdpNm_SetUserData가 호출되면 버스에서 다음에 전송되는 NM 패킷에 대한 NM 사용자 데이터가 설정됩니다. NM 사용자 데이터 설정 작업은 데이터 일관성을 보장해야 합니다.


[SWS_UdpNm_00160] UdpNm_GetUserData가 호출되면 가장 최근에 수신된 NM PDU의 페이로드에 포함된 NM 사용자 데이터가 제공되어야 합니다. NM 사용자 데이터를 제공하는 작업은 데이터 일관성을 보장해야 합니다.
참고: NM 사용자 데이터가 구성된 경우 반복 메시지 상태에서 확실히 전송됩니다. Ready Sleep 상태에서는 사용자 데이터가 전송되지 않습니다.


[SWS_UdpNm_00312] UdpNmComUserDataSupport가 활성화된 경우 API UdpNm_SetUserData를 사용할 수 없습니다.


[SWS_UdpNm_00317] UdpNmComUserDataSupport가 활성화되고 NM-PDU가 SoAd에서 트리거된 전송에 대해 구성되지 않은 경우(SoAdBswModules/SoAdIfTriggerTransmit = FALSE), UdpNm은 PduR_UdpNm을 호출하여 참조된 NM I-  PDU에서 NM 사용자 데이터를 수집해야 합니다. 해당 NM 메시지의 전송을 요청하기 전에 매번 추가 NM 바이트를 사용합니다. (RS_Nm_02503)

참고: 트리거 전송의 경우 전송 요청 시 데이터가 필요하지 않으며 길이만 있으면 됩니다. 데이터는 UdpNm_SoAdIfTriggerTransmit 내에서 수집됩니다(챕터 8.4.3 UdpNm_SoAdIfTriggerTransmit 참조)

[SWS_UdpNm_00464] UdpNmComUserDataSupport가 활성화되어 있고 UdpNm이 RepeatMessage 상태 또는 NormalOperation 상태이고 UdpNm_Transmit이 호출되면 UdpNm은 현재 데이터와 함께 NM PDU의 추가 전송을 요청해야 합니다. 
참고: 현재 데이터(예: 시스템 바이트, 사용자 데이터 및 PNC 비트 벡터)와의 주기적 전송 사이에 NM PDU를 전송하기 위한 UdpNm_Transmit 요청 호출

 

Passive 모드(선택 사항)

수동 모드에서 노드는 NM 메시지만 수신하고 NM 메시지는 전송하지 않습니다.
[SWS_UdpNm_00161] 수동 모드는 UdpNmPassiveModeEnabled 스위치(구성 매개변수)를 사용하여 정적으로 구성해야 합니다.


[SWS_UdpNm_00162] 패시브 모드는 하나의 ECU 내의 모든 인스턴스에 대해 정적으로 일관되게 구성되어야 합니다.


[SWS_UdpNm_00163] 수동 모드를 사용하는 경우(구성 매개변수 UdpNmPassiveModeEnabled) 다음 옵션을 사용하면 안 됩니다.
버스 동기화(구성 매개변수 UdpNmBusSynchronizationEnabled)
원격 sleep 표시(구성 매개변수 UdpNmRemoteSleepIndEnabled)
노드 감지(구성 매개변수 UdpNmNodeDetectionEnabled)

 

상태 변경 알림(선택 사항)

[SWS_UdpNm_00166] AUTOSAR UdpNm 상태의 모든 변경 사항은 Nm_StateChangeNotification 콜백이 활성화된 경우(구성 매개변수 UdpNmStateChangeIndEnabled가 TRUE인 경우) Nm_StateChangeNotification을 호출하여 상위 계층에 알려야 합니다.

 

통신 제어(선택 사항)

[SWS_UdpNm_00168] 통신 제어는 UdpNmComControlEnabled 스위치(구성 매개변수)를 사용하여 정적으로 구성해야 합니다.

[SWS_UdpNm_00170] 선택적 서비스 UdpNm_DisableCommunication은 NM PDU 전송 능력을 비활성화해야 합니다.
참고: NM PDU 전송 기능이 비활성화된 경우 NM 조정 알고리즘이 올바르게 작동하지 않습니다. 따라서 NM PDU 전송 기능이 비활성화되어 있는 한 ECU가 셧다운되지 않도록 해야 합니다.
UdpNm_NetworkRelease가 호출되고 NM PDU 전송 기능이 비활성화된 경우 ECU가 종료됩니다. 이를 통해 경합 상태(예: 통신을 활성화하기 직전에 진단 세션이 남음) 또는 잘못된 통신 제어 사용의 경우에도 ECU가 종료될 수 있습니다.

[SWS_UdpNm_00172] 옵션 서비스 UdpNm_DisableCommunication은 현재 모드가 네트워크 모드가 아닌 경우 E_NOT_OK를 반환해야 합니다.

 

[SWS_UdpNm_00173] 네트워크 관리 PDU 전송 기능이 비활성화된 경우 UdpNm 모듈은 네트워크 관리 PDU의 전송을 중지하기 위해 UdpNm 메시지 주기 타이머를 중지해야 합니다.

 

[SWS_UdpNm_00174] NM PDU 전송 기능이 비활성화되면 NM-Timeout Timer가 중지됩니다.

 

[SWS_UdpNm_00175] NM PDU 전송 능력이 비활성화되면 원격 sleep 표시 타이머의 감지가 중단됩니다.

 

[SWS_UdpNm_00178] 네트워크 관리 PDU 전송 능력이 활성화되면 NM PDU의 전송은 다음 NM 주요 기능 내에서 가장 늦게 시작되어야 합니다. ⌋(RS_Nm_02512)

 

[SWS_UdpNm_00179] NM PDU 전송 기능이 활성화되면 NM-Timeout Timer가 다시 시작되어야 합니다.

 

[SWS_UdpNm_00180] NM PDU 전송 능력이 활성화되면 원격 슬립 표시 타이머의 감지가 재개됩니다.

 

[SWS_UdpNm_00181] 선택적 서비스 UdpNm_RequestBusSynchronization은 NM PDU 전송 능력이 비활성화된 경우 E_NOT_OK를 반환해야 합니다.

 

NM 조정 동기화 지원(선택 사항)

둘 이상의 조정자가 CBV의 특수 비트에 동일한 버스에 연결되어 있는 경우 NmCoordinatorSleepReady 비트는 주 조정자가 종료 시퀀스를 시작하도록 요청함을 나타내는 데 사용됩니다. 알고리즘의 주요 기능은 Nm 모듈에 설명되어 있습니다.

[SWS_UdpNm_00320]UdpNm이 NM_CoordReadyToSleepIndication을 호출하고 여전히 네트워크 모드에 있는 경우 NmCoordinatorSleepReady 비트(CB0V 참조)가 설정된 NM 메시지를 처음 수신할 때 Nm_CoordReadyToSleepCancellation을 호출하여 Nm에 알려야 합니다.

[SWS_UdpNm_00364]UdpNm이 네트워크 모드에 진입했거나 Nm_CoordReadyToSleepCancellation을 호출한 경우 NmCoordinatorSleepReady 비트(.CBV 참조)가 로 설정된 NM 메시지의 첫 수신 시 Nm_CoordReadyToSleepIndication을 호출하여 NM에 알려야 합니다.

[SWS_UdpNm_00321]UdpNmCoodinatorSyncSupport가 TRUE로 설정되고 API UdpNm_SetSleepReadyBit이 UdpNm이라고 하면 "NM Coordinator Sleep Ready 비트" 비트를 전달된 값으로 설정하고 단일 네트워크 관리 PDU를 트리거합니다.

[SWS_UdpNm_00322] API UdpNm_SetSleepReadyBit() 및 "Coordinated Bus 종료" 기능은 UdpNmCoordinatorSyncSupport가 TRUE로 설정된 경우에만 사용할 수 있습니다.

 

반응형
반응형

[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (6) Communication Scheduling

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf

 

NM Message 송출

참고: 이 장에서 설명하는 전송 메커니즘은 NM 메시지 전송 기능이 활성화된 경우에만 관련이 있습니다.

[SWS_UdpNm_00072] NM 메시지의 전송은 UdpNmPassiveModeEnabled를 통해 구성되어야 합니다.
참고: 수동 노드는 NM 메시지를 전송하지 않습니다. 즉, 종료 결정에 능동적으로 영향을 줄 수 없지만 동기적으로 종료할 수 있도록 NM 메시지를 수신합니다.
참고: 이 장에서 설명하는 전송 메커니즘은 UdpNmPassiveModeEnabled가 FALSE인 경우에만 관련이 있습니다.

[SWS_UdpNm_00237] UdpNm 모듈은 주기적 전송 모드를 제공해야 합니다. 이 전송 모드에서 UdpNm 모듈은 주기적으로 네트워크 관리 PDU를 전송해야 합니다. 
참고: 주기적 전송 모드는 "Repeat Message State" 및 "Normal Operation State"에서 사용됩니다.

[SWS_UdpNm_00005] 반복 메시지 상태가 UdpNm_NetworkRequest를 통해 입력되지 않거나 UdpNmImmediateNmTransmissions가 0이면 반복 메시지 상태에 들어간 후 NM PDU의 전송이 UdpNmMsgCycleOffset만큼 지연됩니다.

참고: 이 요구 사항은 Repeat Message 요청 또는 비트(SWS_UdpNm_00111,  SWS_UdpNm_00112, SWS_UdpNm_00119, SWS_UdpNm_00120 참조)로 인해 Network Operation 상태 또는 Ready Sleep 상태에서 Repeat Message 상태가 입력되는 경우에도 적용됩니다. 이는 이 경우 즉각적인 전송이 사용되지 않음을 의미합니다(UdpNmImmediateNmTransmissions > 0이고 UdpNmPnHandleMultipleNetworkRequests의 구성과 독립적인 경우에도). 즉, UdpNmMsgCycleOffset이 항상 적용됩니다. 이 메커니즘은 NM 메시지의 버스트를 방지합니다.

[SWS_UdpNm_00334] UdpNm_NetworkRequest()(active wakeup)로 인해 Bus Sleep 모드 또는 Prepare Bus Sleep 모드에서 반복 메시지 상태로 들어갈 때 UdpNmImmediateNmTransmissions가 0보다 큰 경우 NM PDU는 UdpNmImmediateNmCycleTime을 주기 시간으로 사용하여 전송됩니다. 첫 번째 NM PDU의 전송은 가능한 한 빨리 트리거되어야 합니다. 전송 후 메시지 주기 타이머는 UdpNmImmediateNmCycleTime으로 다시 로드됩니다. 이 경우 UdpNmMsgCycleOffset이 적용되지 않습니다.

[SWS_UdpNm_00006] Ready Sleep State에서 Normal Operation State가 되면 NM PDU의 전송은 즉시 시작되어야 한다.

[SWS_UdpNm_00454] UdpNmPnHandleMultipleNetworkRequests가 TRUE로 설정되면 UdpNm_NetworkRequest는 Network Mode에서 Repeat Message 상태로 상태 전환을 트리거해야 합니다. PDU 전송 능력이 활성화되면 NM PDU는 UdpNmImmediateNmCycleTime을 주기 시간으로 사용하여 전송되어야 합니다. 첫 번째 NM PDU의 전송은 가능한 한 빨리 트리거되어야 합니다. 전송 후 메시지 주기 타이머는 UdpNmImmediateNmCycleTime으로 다시 로드됩니다. 이 경우 UdpNmMsgCycleOffset이 적용되지 않습니다.

참고: UdpNmImmediateNmTransmissions는 이 경우 ECUC_UdpNm_00075로 인해 0보다 커야 합니다.

[SWS_UdpNm_00330] NM PDU가 UdpNmImmediateNmCycleTime과 함께 전송되어야 하는 경우(SWS_UdpNm_00334 및 SWS_UdpNm_00454 참조), UdpNm은 UdpNmImmediateNmTransmissions를 포함하여 성공적으로 요청된 UdpNmImmediateNmTransmissions SoAd에 대한 전송 요청이 실패하면(E_NOT_OK가 반환됨) UdpNm은 다음 주 기능에서 전송 요청을 다시 시도합니다. 그 후 UdpNm은 UdpNmMsgCycleTime을 사용하여 NM PDU를 계속 전송해야 합니다.
참고: UdpNmImmediateNmCycleTime을 사용하여 NM PDU를 전송하는 동안 다른 Nm PDU는 전송되지 않습니다(즉, UdpNmMsgCycleTime 전송 주기가 중지됨).

[SWS_UdpNm_00032] NM PDU의 전송이 시작되고 UdpNm 메시지 사이클 타이머가 만료되면 NM PDU는 SoAd_IfTransmit을 호출하여 SoAd를 통해 전송되어야 합니다.
 
[SWS_UdpNm_00040] UdpNm 메시지 주기 타이머가 만료되면 UdpNmMsgCycleTime으로 다시 시작해야 합니다.

[SWS_UdpNm_00051] NM PDU의 전송이 중단된 경우 UdpNm 메시지 주기 타이머는 취소되어야 합니다.

[SWS_UdpNm_00007] 매개변수 UdpNmRetryFirstMessageRequest(ECUC_UdpNm_00085 참조)가 TRUE이고 버스 슬  립에서 메시지 반복 상태로의 전환 후 첫 번째 전송 요청이 SoAd에 의해 수락되지 않으면 메시지 요청은 하나의 전송 요청이 수락될 때까지 다음 주 기능에서 반복되어야 합니다. SoAd에 의해.

참고: 이 기능은 부분 네트워크 웨이크업 필터의 경우 수동 시작 및 첫 번째 메시지 요청이 그렇지 않은 경우 모든 메시지의 차단을 피하기 위해 사용할 수 있습니다.
EthSM으로 인해 SoAd에 의해 허용된 것은 전송 경로를 충분히 빠르게 활성화할 수 없습니다(예: 비동기 트랜시버 처리의 경우).

[SWS_UdpNm_00379] UdpNm_SoAdIfTxConfirmation이 결과 E_NOT_OK와 함께 호출되면 UdpNm은 함수 Nm_TxTimeoutException을 호출해야 합니다. (SRS_Nm_00137)

 

 

수신

NM 메시지가 성공적으로 수신되면 SoAd는 UdpNm_SoAdIfRxIndication을 호출합니다.

[SWS_UdpNm_00035] UdpNm_SoAdIfRxIndication의 호출 시 UdpNm 모듈은 기능 매개변수에서 참조하는 네트워크 관리 PDU의 데이터를 내부 버퍼에 복사해야 합니다.

[SWS_UdpNm_00037] NM PDU가 수신되면 UdpNmPduRXIndicationEnabled(구성 매개변수)가 TRUE인 경우 Nm 기능 Nm_PduRxIndication이 호출됩니다.

 

반응형
반응형

[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (5) Execution

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf

 

프로세서 아키텍처

[SWS_UdpNm_00146] AUTOSAR UdpNm 조정 알고리즘은 프로세서에 독립적이어야 합니다. 즉, 프로세서별 하드웨어 지원에 의존하지 않으므로 AUTOSAR 범위 내에 있는 모든 프로세서 아키텍처에서 실현 가능해야 합니다.

 

타이밍 매개변수

[SWS_UdpNm_00246] 구성 매개변수 UdpNmTimeoutTime은 AUTOSAR UdpNm 타이밍 매개변수 NM-Timeout Time을 결정해야 합니다.


[SWS_UdpNm_00247] 구성 매개변수 UdpNmRepeatMessageTime은 AUTOSAR UdpNm 타이밍 매개변수 반복 메시지 시간을 결정해야 합니다.


[SWS_UdpNm_00248] 구성 매개변수 UdpNmWaitBusSleepTime은 AUTOSAR UdpNm 타이밍 매개변수 Wait Bus-Sleep Time을 결정해야 합니다.


[SWS_UdpNm_00249] 선택적 구성 매개변수 UdpNmRemoteSleepIndTime은 AUTOSAR UdpNm 타이밍 매개변수 원격 절전 표시 시간을 결정해야 합니다.

반응형

+ Recent posts