PARA 개요
PARA(PopcornSAR AUTOSAR Runtime for Adaptive Application)는 PopcornSAR가 개발한 Adaptive AUTOSAR(AP) 런타임으로, 표준 AUTOSAR Adaptive Platform R25-11을 대상으로 합니다. 차량용 고성능 ECU에서 동작하는 Adaptive Application이 표준 AUTOSAR AP API(ara::*)를 통해 서비스 지향 통신, 실행 관리, 로깅 등을 사용할 수 있도록 런타임 라이브러리·데몬·설정 체계를 제공합니다.
제공되는 Functional Cluster
PARA는 표준 ara:: 네임스페이스에 대응하는 Functional Cluster 라이브러리(lib/libpara_*.so)로 구성됩니다. 주요 클러스터는 다음과 같습니다.
| 라이브러리 | ara:: 네임스페이스 | 역할 | 런타임 데몬 |
|---|---|---|---|
libpara_core | ara::core | Result·Future·ErrorCode·컨테이너 등 기반 타입 | — |
libpara_com | ara::com | 서비스 지향 통신(SOME/IP·DDS·IPC 바인딩) | CM |
libpara_exec | ara::exec | 실행 관리(프로세스 수명·상태 보고) | EM |
libpara_log | ara::log | 로깅·트레이싱(DLT 백엔드) | (dlt-daemon) |
libpara_crypto | ara::crypto | 암호 연산·키 관리·인증서 처리 | — |
libpara_diag | ara::diag | 진단(UDS 기반 진단 서버) | DM |
(libpara_com에 포함) | ara::iam | 아이덴티티·접근 관리(매니페스트로 선언하는 접근 제어) | — |
libpara_idsm | ara::idsm | 침입 탐지(보안 이벤트 보고·수집) | IDSM |
libpara_phm | ara::phm | 플랫폼 헬스 관리(감시·복구 동작) | PHM |
libpara_rds | ara::rds | 원시 데이터 스트림(직렬화 없는 바이트 스트림, IEEE 1722) | — |
libpara_sm | ara::sm | 상태 관리(Function Group 상태 전환) | SM |
libpara_tsync | ara::tsync | 시간 동기화(동기화된 시간 베이스 제공) | TBM |
libpara_com은 세 가지 바인딩을 제공합니다. SOME/IP와 DDS는 네트워크를 통한 서비스 통신에, IPC는 같은 머신 안의 프로세스 간 통신에 사용합니다. 어떤 바인딩을 쓸지는 애플리케이션 코드가 아니라 통신 매니페스트의service-protocol(someip/dds/ipc)로 서비스 인스턴스마다 선언합니다. DDS 바인딩은 DDS 구현(Fast DDS)을 포함해 빌드한 런타임에서 사용할 수 있습니다.
ara::iam은 자체 라이브러리를 갖지 않습니다. AUTOSAR는 IAM에 대한 애플리케이션용 C++ API를 규정하지 않으며, 접근 권한은 매니페스트에 선언되고 PARA는 통신이 이뤄지는 시점에libpara_com안에서 이를 강제합니다.
런타임 동작 모델
PARA 런타임은 매니페스트 기반 기동으로 동작합니다. 머신이 켜지면 EM 이 가장 먼저 올라와 MachineFG 를 Startup으로 전환하고, 이 전환으로 Platform Functional Cluster 데몬이 기동됩니다. 이 모델을 먼저 이해하면 이후 설치·예제·설정 문서가 한결 쉽게 읽힙니다.
| 데몬 | 이름 | 역할 |
|---|---|---|
| Execution Manager | EM | 런타임의 진입점. 매니페스트를 스캔해 의존성 그래프를 만들고 프로세스를 기동/종료합니다. |
| Communication Manager | CM | 서비스 지향 통신(서비스 디스커버리, SOME/IP·DDS·IPC 바인딩)을 담당합니다. |
| Diagnostic Manager | DM | UDS 진단 요청을 처리하고 애플리케이션으로 중계합니다. |
| Intrusion Detection System Manager | IDSM | 보고된 보안 이벤트를 수집·처리합니다. |
| Platform Health Manager | PHM | 프로세스를 감시하고 실패 시 복구 동작을 수행합니다. |
| State Manager | SM | Function Group 상태 전환을 결정해 EM에 요청합니다. 서비스 레벨의 애플리케이션이므로 구현은 프로젝트마다 달라집니다. |
| Time Base Manager | TBM | 다른 ECU와 공유하는 동기화된 시간 베이스를 유지합니다. |
이 가운데 실제로 기동되는 데몬은 머신의 매니페스트 선언에 따라 정해집니다.
기동 흐름은 다음과 같습니다.
- 환경을 구성하고
EM을 실행합니다. - EM이
MachineFG(Machine Function Group)를Off→Startup으로 전환합니다. - 각 프로세스는 실행 매니페스트의
state-dependencies로 "어느 Function Group의 어느 상태에서 기동할지"를 선언합니다.MachineFG:Startup에 묶인 Platform Functional Cluster 데몬(CM·DM·SM등)과 애플리케이션이 기동됩니다. - 즉, 무엇을 언제 띄울지는 코드가 아니라 매니페스트가 결정합니다.
Function Group은 함께 시작/정지되는 프로세스 묶음이자 상태 전환 단위이고, 매니페스트는 그 선언을 담은 JSON 설정입니다. 상세는 Function Group 설정·실행 설정에서 다룹니다.
다음으로
- 설치 & 환경 설정 — 사전 요구사항부터
- 첫 애플리케이션 — 예제로 시작하기