AA Design 튜토리얼
무엇을 만드는가
이 튜토리얼은 HPC 한 대에서 도는 Adaptive Application 설계를 프로젝트가 열려 있지 않은 PAIO 창에서부터 PAIO 화면만으로 만든다. 프로젝트 AADesign 의 System 편집기에 HPC 노드 Ecu 하나를 두고, 그 위에 컴포지션 HPC 를 매핑한다. 컴포지션 안에는 Adaptive Application 다섯 개 Sensor, Fusion, Actuator, CM, EM 이 있다. Sensor 는 서비스 인터페이스 Sensor 를 SOME/IP 서비스(서비스 ID 11)로 제공하고, Fusion 과 Actuator 는 그 서비스를 소비한다. 다섯 프로세스는 머신의 함수 그룹 MachineFG 의 상태에 묶여 시작하고, Sensor, Fusion, Actuator 는 CM 프로세스가 Running 이 된 뒤에 시작한다. 각 프로세스는 DLT 애플리케이션으로 로그를 낸다. 마지막 장에서 이 설계를 검증 오류 없이 ARXML 파일 다섯 개로 내보낸다.
설계의 목표는 참조 설계 EM_Arxml 이다. 참조 설계와 일부러 다르게 한 곳은 세 군데이다. 첫째, 참조 설계의 EM 프로세스는 함수 그룹 상태에 묶여 있지 않지만, PAIO 검증은 그 모양을 거부하므로 이 튜토리얼은 EM 을 MachineFG : Startup 에 묶는다. 둘째, 참조 설계는 CM 과 EM 의 ROOT SWC PROTOTYPE 만 RootSwComponent 이지만, 이 튜토리얼은 다섯 모두 기본값 AA 로 통일한다. 셋째, constr_10641 을 없애려고 머신에 상태 관리 모듈 SM(MAX-ACTION-LIST-DURATION 1000)을 둔다. 참조 설계에는 이 모듈이 없다. 전체 목록은 부록에 있다.
| 요소 | 이름 | 내용 |
|---|---|---|
| 머신 | Ecu | System 편집기의 HPC 노드. OS POSIX, 프로세서 CPU, 코어 Core0~Core3, 함수 그룹 MachineFG, DLT ECU ID ECU1 |
| 컴포지션 | HPC | 노드 Ecu 에 매핑. Adaptive Application 다섯 개와 어셈블리 커넥터 두 개를 담음 |
| 네트워크 | eth0 | Ethernet 커넥터. 유니캐스트 127.0.0.1, SD 멀티캐스트 224.0.0.1:30490, UDP 포트 20001, 20002, 20003 |
| 서비스 인터페이스 | Sensor | 이벤트 SensorData(ByteArray), 메서드 Calculation(float32 인자 다섯 개) |
| SOME/IP 서비스 | Sensor | 서비스 ID 11, 제공자 Provider_Sensor, 소비자 Actuator_Sensor, Fusion_Sensor |
| Adaptive Application | 역할 | 포트 | DLT 애플리케이션 ID |
|---|---|---|---|
Sensor | 서비스 Sensor 제공 | P 포트 Sensor | SENS |
Fusion | 서비스 Sensor 소비 | R 포트 Sensor | FUSN |
Actuator | 서비스 Sensor 소비 | R 포트 Sensor | ACTA |
CM | 통신 관리. 다른 세 프로세스가 이 프로세스의 Running 을 기다림 | 없음 | CM |
EM | 실행 관리 | 없음 | EM |
무엇이 필요한가
- PAIO 가 설치되어 있고 실행할 수 있어야 한다.
- 프로젝트가 열려 있지 않은 PAIO 창에서 시작한다. 다른 튜토리얼이나 예제 프로젝트는 필요하지 않다.
- 이 튜토리얼의 화면은 1920×1080 화면에서 찍었다. 다이얼로그가 넓으므로 그 이상의 화면을 권한다.
- ARXML 은 AUTOSAR 스키마
R25-11로 내보내고 검사한다. - AUTOSAR Adaptive Platform 의 Adaptive Application, 서비스 인터페이스, SOME/IP 를 대강 알고 있으면 충분하다. 어느 PAIO 화면에 무엇을 입력하는지는 장마다 단계별로 안내한다.
장 구성
각 장은 앞 장의 결과 위에서 시작하므로 차례대로 따라간다.
| 장 | 제목 | 쓰는 편집기 | 끝나면 갖게 되는 것 |
|---|---|---|---|
| 1 | 프로젝트와 HPC 머신 만들기 | System 편집기, VFB, Machine Configuration | 프로젝트 AADesign, 노드 Ecu, 컴포지션 HPC [Ecu], 기본값으로 저장한 머신. 검증 오류 constr_10641 1건 |
| 2 | 머신 설정 | Machine Configuration | OS POSIX, 코어 4개, ECU ID ECU1, MAX ACTION LIST DURATION 1000. No validation issues. |
| 3 | 토폴로지 — Ethernet 커넥터와 엔드포인트 | System 편집기, Communication Cluster Configuration | 컨트롤러, 커넥터 eth0, NM 을 꺼 둔 클러스터 EthernetCluster, 엔드포인트, UDP 포트 3개 |
| 4 | 데이터 타입 | DataType | ByteArray, String |
| 5 | 서비스 인터페이스 | Interface | 서비스 인터페이스 Sensor |
| 6 | SOME/IP 배포와 서비스 인스턴스 | Interface | 배포 Sensor(서비스 ID 11), 인스턴스 Provider_Sensor, Actuator_Sensor, Fusion_Sensor |
| 7 | 커넥터에 서비스 인스턴스 바인딩 | System 편집기 | 커넥터 eth0 에 묶인 인스턴스 3개와 UDP 포트 |
| 8 | Adaptive Application 과 포트 | VFB | Adaptive Application 5개, 포트 3개, 어셈블리 커넥터 2개 |
| 9 | Executable 과 Process | AA Internal Behavior, Machine Configuration | Executable 5개, Process 5개, 시작 타임아웃, 함수 그룹 상태, 실행 의존성 |
| 10 | 서비스 인스턴스 매핑 | AA Internal Behavior | 포트와 서비스 인스턴스의 매핑 3개 |
| 11 | 로그와 DLT | AA Internal Behavior, Machine Configuration | DLT 애플리케이션 5개, DLT 컨텍스트 3개 |
| 12 | 검증 | VALIDATION 패널, AA Internal Behavior, VFB | 일부러 심은 결함 3개를 고쳐 No validation issues. |
| 13 | ARXML 익스포트 | EDITOR 뷰, XML 편집기 | export 폴더의 ARXML 파일 5개와 참조 설계와의 차이 |
| 14 | 부록 | — | 완성된 설계의 점검표, 값 표 모음, 파일 구성, 참조 설계와의 차이, 자주 겪는 문제 |
읽는 법
- 장마다 같은 순서이다. "이 장에서 할 일" 로 목표를 밝히고, "시작하기 전에" 에서 출발 상태와 그 장에서 입력할 값을 표로 보인다. 그다음 번호 붙은 단계와 단계별 스크린샷이 이어진다.
- 반복 작업은 대표 하나만 절차로 보인다. 예를 들어 Adaptive Application 다섯 개 가운데
Sensor하나를 끝까지 따라가고, 나머지는 값 표로 준다. 표의 항목은 같은 방법으로 직접 입력한다. - 장의 끝에는 "확인하기" 점검표가 있다. 화면에 무엇이 보여야 하는지 적은 목록이다. 모두 맞으면 다음 장으로 넘어간다.
- "왜 이렇게 설계하는가" 는 값이 그렇게 정해진 이유를 참조 설계와 비교해 짧게 설명한다.
- UI 라벨은 화면에 보이는 그대로 굵게, 모델 요소의 이름과 값은
코드로 적는다.
내 익스포트가 참조 설계와 다른 경우
이 튜토리얼대로 만든 ARXML 은 참조 설계의 파일 EM_Test_*.arxml 과 설계 내용이 같지만, 파일이 바이트 단위로 같지는 않는다. 차이는 모두 이유가 알려진 것이다. 참조 설계 파일에 남은 결함, PAIO 익스포터의 이름 규칙, PAIO 가 스스로 넣는 요소, 이 튜토리얼이 일부러 바꾼 값(EM 의 Startup 바인딩 등), PAIO 화면에 입력칸이 없는 값이다. 전체 목록과 이유는 ARXML 익스포트에서, 요약은 부록에서 본다.
다음 단계
프로젝트와 HPC 머신 만들기부터 시작한다.