차량 모드 및 전원 관리 (VPM) 에이전트는 차량이 소프트웨어 정의 차량 (SDV) 생태계 전원 시스템을 제어하는 데 도움이 됩니다.
VPM 에이전트는 SDV 내에서 SDV 에이전트 및 서비스 번들을 비롯한 다양한 소프트웨어 구성요소에 차량 및 전원 모드의 통신을 지원합니다.
VPM 에이전트를 사용하면 SDV 구성요소가 작동 모드 (예: 주차 또는 운전) 및 전원 상태 (예: 켜짐, 일시중지 또는 전원 끄기)와 같은 차량의 현재 상태를 추적할 수 있습니다. 차량 상태는 모든 차량 소프트웨어에서 동일하지만 전원 상태는 차량의 모든 SDV VM에 고유합니다.
VPM 에이전트는 특정 전원 모드를 시작하도록 SDV 시스템 플랫폼에 신호를 보냅니다. 이 기능은 재개 시 전원 소비를 최적화하고 부팅 시간을 줄이며 SDV의 다양한 소프트웨어 구성요소의 효율적인 작동을 보장하는 데 도움이 됩니다.
이 페이지에서는 VPM 에이전트와 관련된 주요 요구사항, 제약조건, 종속 항목을 설명합니다. VPM 에이전트의 예상되는 기능과 통합 가이드라인을 완성차 제조업체(OEM) 및 기타 SDV 개발자에게 설명합니다.
아키텍처
그림 1은 전원 관리 아키텍처를 보여줍니다.
그림 1. 전원 관리 아키텍처
VPM 에이전트는 OEM의 전원 관리 서비스에서 전원 모드 명령어 (예: 종료 및 일시중지)를 수신합니다.
VPM 에이전트는 이러한 명령어를 적절한 SDV 에이전트에 전달하고 에이전트가 명령어를 실행할 때까지 기다립니다. 이러한 조정된 접근 방식은 전원 모드 간의 원활하고 안전한 전환을 보장하고 데이터 손실 또는 시스템 불안정성의 위험을 최소화하는 데 도움이 됩니다.
모든 SDV 에이전트가 전원 전환을 완료하면 VPM 에이전트는 OEM에 알림을 보내 OEM 시스템이 필요한 작업을 진행할 수 있도록 합니다 (예: 다음 상태로 이동하거나 종료). 전원 전환은 차단됩니다. 전환은 모든 SDV 에이전트가 OEM 정의 시간 제한 내에서 전환을 실행하는 경우에만 발생합니다.
전원 관리의 상태 머신은 다음 다이어그램에 나와 있습니다.
그림 2. 전원 관리 상태 머신
VPM 에이전트는 오케스트레이션 및 수명 주기 관리 시스템과 함께 작동하여 SDV 서비스 번들에 전원 모드 업데이트를 알립니다. 이렇게 하면 서비스 번들이 전원 전환을 처리하고 작동 중단을 방지할 수 있습니다. 서비스 번들로 전원 관리 상태를 사용하고 SDV 통신을 처리하는 방법에 관한 자세한 내용은 일시중지 및 재개 처리를 참고하세요.
전원 상태
SDV의 전원 관리에 허용되는 상태는 다음과 같습니다.
| 상태 | 설명 |
|---|---|
REPORT_UNSPECIFIED |
보고서가 지정되지 않은 경우 기본값입니다. |
POWER_OFF_EXIT |
VM이 콜드 부팅에서 부팅됩니다. SDV 에이전트는 init.rc로 시작합니다. |
SUSPEND_TO_RAM_EXIT |
VM이 RAM 일시중지에서 재개됩니다. SDV 에이전트는 RAM에서 재개되고 전원 상태 알림을 구독한 경우 전원 업데이트에 관한 알림을 받습니다. |
ON |
VM이 정상적으로 실행되고 있습니다. |
POWER_OFF_ENTER |
VM이 전원 끄기를 준비하고 있습니다. 미리 정리할 수 있는 OEM 앱은 이 상태에서 정리해야 합니다. OEM 앱은 이 단계에서 실행되는 SDV 에이전트를 계속 사용할 수 있습니다. OEM 앱이 여전히 SDV 에이전트와 통신해야 할 수 있으므로 이 단계에서 SDV 에이전트를 일시중지하거나 전원을 끄면 안 됩니다. |
SUSPEND_TO_RAM_ENTER |
VM이 RAM 일시중지를 준비하고 있습니다. 미리 정리할 수 있는 OEM 앱은 이 상태에서 정리해야 합니다. OEM 앱은 이 단계에서 실행되는 SDV 에이전트를 계속 사용할 수 있습니다. OEM 앱이 여전히 SDV 에이전트와 통신해야 할 수 있으므로 이 단계에서 SDV 에이전트를 일시중지하거나 전원을 끄면 안 됩니다. |
WAIT_FOR_FINISH |
VM이 초기 정리를 완료하고 OEM의 신호를 기다려 전원 끄기 또는 일시중지를 완료하거나 취소합니다. |
SHUTDOWN_CANCELLED |
OEM이 종료 준비 취소를 요청했습니다. 이 요청은 WAIT_FOR_FINISH 이후에 발생할 수 없습니다. 수명 주기 관리자가 OEM 앱에 일시중지 또는 전원 끄기 준비를 실행취소하도록 요청합니다. |
POWER_OFF_POST_FINISH |
OEM의 FINISH_SHUTDOWN 요청에 따라 VM이 최종 정리를 완료하고 기본 플랫폼의 전원을 끕니다. SDV 에이전트는 전원을 끄기 전에 정리해야 합니다. |
SUSPEND_TO_RAM_POST_FINISH |
VM이 RAM으로 일시중지하고 기본 플랫폼을 RAM으로 일시중지하려고 합니다. OEM 앱은 이 시점에서 SDV 에이전트를 사용할 수 없습니다. SDV 에이전트도 일시중지되기 때문입니다. SDV 에이전트는 일시중지 전에 정리를 실행해야 합니다. |
차량 상태 업데이트 수신
VPM 에이전트는 OEM의 차량 제어 서비스 번들에서 현재 차량 모드에 관한 업데이트를 수신합니다.
그런 다음 에이전트는 표준화된 SDV 통신 스택을 통해 이 정보를 관련 SDV 구성요소에 전달합니다. 이렇게 하면 모든 SDV 구성요소에 차량의 작동 상태가 알려지므로 구성요소가 그에 따라 동작을 조정할 수 있습니다.
차량 상태에 관한 업데이트를 수신하려면 서비스 번들에서 다음 VSIDL 구성을 사용하세요.
package: "com.sdv.google.vpm.vehicle.client.subscriber"
service_bundle {
name: "VehicleStateSubscriber"
//Subscriber to the vehicle state updates.
subscriber {
message: "com.sdv.google.vpm.vehicle.VehicleStateChange"
}
}
차량 모드 및 전환은 차단되지 않으며 비동기식입니다. 전원 전환과 달리 상태 머신이 적용되지 않습니다.
SDV에서 차량에 허용되는 상태는 다음과 같습니다.
| 상태 | 설명 |
|---|---|
VEHICLE_STATE_UNSPECIFIED |
상태가 지정되지 않은 경우 차량 상태의 기본값입니다. |
LOW_POWER |
사용자 관점에서 자동차가 꺼져 있지만 PCU는 여전히 자동차가 켜져 있음을 감지할 수 있습니다. |
SOFTWARE_UPDATE |
차량의 일부 또는 전체에서 소프트웨어 업데이트가 진행 중입니다. SDV와 관련이 없는 소프트웨어 업데이트입니다. |
PARK |
고객이 없는 이 특정 활동에는 ECU가 거의 제공되지 않습니다. |
LIFE_ON_BOARD |
시트 히터, 클러스터, 중앙 패널과 같은 편의 ECU가 제공되고 사용 가능하거나 문 열기 또는 자동차 잠금 해제와 같은 고객 활동이 감지됩니다. |
VEHICLE_ON |
엔진 ECU가 제공되고 엔진이 작동 중이며 운전이 불가능합니다. |
TRACTION_ON |
엔진 ECU가 제공되고 엔진이 작동 중이며 운전이 가능합니다. |
VPM 에이전트로 차량 및 전원 관리 제어
다음 VSIDL 정의를 사용하여 SDV에서 전원 상태 머신을 제어하는 서비스 번들을 구현합니다.
package: "com.sdv.google.vpm.client"
service_bundle {
name: "VpmSystemClient"
//Client for VPM system interface.
client {
service: "com.sdv.google.vpm.VpmSystemService"
}
//Server to VPM notification interface.
server {
service: "com.sdv.google.vpm.client.PowerNotificationService"
}
}
번들이 구현되고 ACL이 VPM 에이전트에 추가되면 번들은 RPC 요청을 VPM 에이전트에 보내고 정의된 서버에서 전원 상태 알림을 수신할 수 있습니다.