본문으로 건너뛰기

ARXML 익스포트

이 장에서 할 일​

이 장에서는 검증을 통과한 설계를 AUTOSAR ARXML 파일로 내보낸다. EDITOR 뷰 DESIGN 머리글의 Export 아이콘을 클릭하면, 저장 위치를 묻지 않고 프로젝트의 export 폴더에 파일 다섯 개가 바로 생긴다.

그다음 앞 장들에서 화면으로 넣은 값이 어떤 ARXML 이 되었는지 XML 편집기로 본다. 대표로 Sensor 하나를 따라간다. Executable 과 Process에서 만든 PROCESS Sensor 와 그 시작 조건, 서비스 인스턴스 매핑에서 만든 매핑 Sensor_AA_Sensor, 로그와 DLT에서 만든 DLT 애플리케이션 SENS 이다. 앞의 둘은 AADesign_SWC.arxml 에, DLT 애플리케이션은 AADesign_COM.arxml 에 있다.

마지막으로 내 익스포트가 참조 설계의 파일 EM_Test_*.arxml 다섯 개와 어디가, 왜 다른지 표로 읽는다.

이 장을 마치면 export 폴더에 AADesign_COM.arxml, AADesign_DataType.arxml, AADesign_Interface.arxml, AADesign_SWC.arxml, AADesign_System.arxml 다섯 개가 있고, 두 파일을 연 XML 편집기의 상태 표시줄이 모두 ✓ No problems 이다.

시작하기 전에​

  • 검증을 마친 상태에서 시작한다. 푸터의 V 아이콘으로 여는 VALIDATION 패널에 No validation issues. 가 보인다. 패널이 열려 있으면 V 아이콘으로 닫아 둔다.
  • 프로젝트의 export 폴더는 비어 있다. 검증에서 연 탭 AADesign:VFB 가 아직 열려 있으면 탭의 × 를 클릭해 닫아, 편집기가 하나도 열려 있지 않게 한다.
  • 이 장에서 키보드로 입력하는 것은 찾기 창에 넣는 문자열 세 개와 Enter 한 번뿐이다. 첫 문자열은 해당 파일에서 두 곳을 찾고, 나머지 두 문자열은 정확히 한 곳씩 찾는다.
찾을 것파일찾기 문자열찾기 창이동하는 줄
PROCESS SensorAADesign_SWC.arxml/Executable/Sensor/Sensor1 of 2, Enter 뒤 2 of 2562행, 이어서 575행
매핑 Sensor_AA_SensorAADesign_SWC.arxmlSensor_AA_Sensor1 of 1553행
DLT 애플리케이션 SENSAADesign_COM.arxml<APPLICATION-ID>SENS1 of 1446행

프로젝트 익스포트하기​

Export 아이콘 클릭하기​

  1. EDITOR 뷰에서 DESIGN 머리글 오른쪽에 있는 아이콘 네 개 가운데 두 번째에 마우스를 올린다. 툴팁 Export 가 보인다. 네 아이콘에는 툴팁 말고는 이름이 없으며, 툴팁은 왼쪽부터 Import, Export, PRTE Code Generation, PARA Code Generation 이다.

    EDITOR 뷰 DESIGN 머리글의 Export 아이콘을 가리켜 툴팁이 보이는 화면

    그림 13-1. DESIGN 머리글의 Export 아이콘. ① 뷰 머리글 EDITOR: AADesign, ② 마우스를 올린 Export 아이콘과 그 툴팁 Export. DESIGN 과 MODULE 은 펼쳐져 있고 DOC, CODE, EXPORT 는 접혀 있다. 열린 탭이 없어 편집기 영역에는 Open a file to start editing 이 보인다.

  2. Export 를 클릭한다.

참고. Export 는 Explorer(창 맨 왼쪽 아이콘 막대 맨 아래의 Explorer 아이콘)에서 design 폴더를 오른쪽 클릭하면 열리는 메뉴에도 있다. 두 곳 모두 같은 익스포트를 실행한다.

진행 창 확인하기​

  1. 파일 선택기나 저장 위치를 묻는 창은 뜨지 않는다. 곧바로 진행 창 Exporting to AUTOSAR 가 뜬다. 잠시 뒤 익스포트가 끝나면 메시지가 Export complete: 30 elements exported to AADesign_*.arxml 로 바뀐다.

    익스포트가 끝난 Exporting to AUTOSAR 진행 창

    그림 13-2. 익스포트가 끝난 순간의 진행 창. ① 창 제목 Exporting to AUTOSAR, ② 메시지 Export complete: 30 elements exported to AADesign_*.arxml, ③ 단계 표시 ✓ Complete!. 그 아래에 100%, 3 / 3 elements 와 경과 시간, Close 버튼이 있다.

  2. 진행 창은 완료 2초 뒤에 저절로 닫힌다. 기다려도 되고 Close 를 클릭해도 된다.

참고. 익스포트는 항상 프로젝트의 export 폴더에 <프로젝트 이름>_*.arxml 이름으로 쓴다. design 폴더의 설계 파일은 바뀌지 않는다. 진행 창의 경과 시간은 실행할 때마다 0s 또는 1s 로 달라진다.

참고. 참조 설계를 PAIO 로 임포트해 그대로 다시 내보내면 메시지의 숫자는 30 보다 크다. 임포트한 프로젝트에는 이 튜토리얼이 만들지 않는 파생 요소가 더 있기 때문이다. 파일 내용의 차이는 이 장 끝의 "내 익스포트와 기준 파일의 차이" 절에서 본다.

export 폴더의 파일 다섯 개 보기​

  1. EDITOR 뷰에서 EXPORT 머리글을 클릭해 펼친다. EXPORT 에는 프로젝트 export 폴더의 파일이 보인다. 파일 다섯 개가 이름 순서로 보이고, 잘린 이름은 없다.

    EDITOR 뷰의 EXPORT 를 펼쳐 ARXML 파일 다섯 개가 보이는 화면

    그림 13-3. 펼친 EXPORT. ① EXPORT 머리글, ② 파일 다섯 개 AADesign_COM.arxml, AADesign_DataType.arxml, AADesign_Interface.arxml, AADesign_SWC.arxml, AADesign_System.arxml, ③ 다음에 열 AADesign_SWC.arxml.

다섯 파일에 담기는 것은 다음과 같다. 다섯 파일 모두 스키마 AUTOSAR_00054 이고, PAIO 에 들어 있는 스키마로 검사하면 오류와 경고가 0건이다. 크기는 PAIO 버전에 따라 조금 다를 수 있다.

파일담긴 것크기(바이트)
AADesign_COM.arxml머신 디자인 Ecu, Ethernet 클러스터와 커넥터 eth0, 엔드포인트, SOME/IP 배포와 서비스 인스턴스, 인스턴스와 머신의 매핑, DLT ECU 와 DLT 애플리케이션, DLT 컨텍스트, 소비자 두 개의 이벤트 그룹 구독 타이밍28 444
AADesign_DataType.arxml데이터 타입 ByteArray, String 과 프리미티브 타입, 그 CP 측 미러, 포인터 타입 VoidPtr, ConstVoidPtr39 671
AADesign_Interface.arxml서비스 인터페이스 Sensor3 317
AADesign_SWC.arxmlAdaptive Application 다섯 개와 포트, 컴포지션 HPC 와 System, Executable, Process, 시작 설정, 서비스 인스턴스 매핑, DLT 애플리케이션과 프로세스의 매핑, 머신 Ecu 와 그 모듈42 260
AADesign_System.arxml시스템 System 과, 컴포지션 HPC 를 머신 디자인 Ecu 에 놓는 매핑 SwMapping_HPC_to_Ecu2 513

AADesign_SWC.arxml 을 XML 편집기로 열기​

  1. EXPORT 에서 AADesign_SWC.arxml 을 더블클릭한다. 편집기 탭 AADesign:AADesign_SWC.arxml 이 열리고 1행부터 보인다.

  2. 편집기 아래의 상태 표시줄을 본다. Ln 1, Col 1, UTF-8, Schema: R25-11, ✓ No problems 이다. XML 편집기는 파일을 열 때 PAIO 에 들어 있는 AUTOSAR 스키마로 파일을 자동으로 검사한다. ✓ No problems 는 스키마 오류가 없다는 뜻이다. 그 위의 PROBLEMS 머리글은 오류가 없으므로 접힌 채이다.

    AADesign_SWC.arxml 을 XML 편집기로 연 화면

    그림 13-4. AADesign_SWC.arxml 을 연 직후. ① 편집기 탭 AADesign:AADesign_SWC.arxml, ② 상태 표시줄의 ✓ No problems. EXPORT 에서 그 파일이 선택되어 있고, 편집기 첫 부분에는 ADAPTIVE-APPLICATION-SW-COMPONENT-TYPE Actuator, CM, EM, Fusion, Sensor 가 차례로 보인다.

참고. 파일은 보기 모드(읽기 전용)로 열린다. 툴바의 첫 버튼은 툴팁 Switch to Edit mode 로, 편집 모드로 바꾸는 버튼이다. 나머지 버튼은 Save (Ctrl+S), Undo (Ctrl+Z), Redo (Ctrl+Y), Format XML (Shift+Alt+F) 이다. 이 장에서는 파일을 고치지 않으므로 편집 모드로 바꾸지 않는다.

PROCESS Sensor 와 시작 조건 보기​

찾기로 PROCESS Sensor 로 이동하기​

  1. 편집기 안을 클릭하고 Ctrl+F 를 누른다. 편집기 오른쪽 위에 찾기 창이 열린다.

  2. /Executable/Sensor/Sensor 를 입력한다. 찾기 창에 1 of 2 가 보이고, 편집기가 다음 절에서 볼 서비스 인스턴스 매핑 안의 562행으로 이동한다. Enter 를 한 번 누른다. 찾기 창에 2 of 2 가 보이고, 편집기가 575행으로 이동해 그 글자를 선택한다. 상태 표시줄은 Ln 575, Col 80, 25 selected 이다.

  3. 575행은 편집기 아래쪽에 있다. 블록 전체가 보이도록 마우스 휠을 아래로 몇 칸 굴려, 3줄 위의 572행 <PROCESS> 가 편집기 위쪽에 오게 한다.

    PROCESS Sensor 블록과 그 STATE-DEPENDENT-STARTUP-CONFIG

    그림 13-5. 찾기로 이동한 PROCESS Sensor(571-614행). ① 572-573행 <PROCESS> 와 SHORT-NAME Sensor, ② 583-590행 EXECUTION-DEPENDENCY(CM 의 Running), ③ 591-596행 FUNCTION-GROUP-STATE-IREF(MachineFG 의 Startup), ④ 597행 STARTUP-CONFIG-REF, ⑤ 찾기 창(/Executable/Sensor/Sensor, 2 of 2). 575행에 찾은 글자가 선택되어 있고, 603행부터는 STARTUP-CONFIG Sensor 가 이어진다.

참고. 편집기 맨 위의 5줄(줄 번호 2, 3, 199, 201, 534)은 파일의 그 자리에 있는 내용이 아니다. 지금 보이는 줄을 감싸는 상위 요소(AUTOSAR, AR-PACKAGES, AR-PACKAGE …)를 편집기 위쪽에 고정해 보여 주는 머리글이다.

블록 읽기​

PROCESS Sensor 의 줄과, 그 값을 넣은 곳은 다음과 같다.

줄내용화면에서 넣은 곳
572-573<PROCESS>, <SHORT-NAME>Sensor</SHORT-NAME>Executable 과 Process의 Process 이름
575EXECUTABLE-REF = /Executable/Sensor/Sensor같은 장의 Executable(이미 채워져 있음)
577-580PROCESS-STATE-MACHINE Sensor, TYPE-TREF = /ModeDeclarationGroup/ProcessState입력 없음. 익스포터가 만든다
583-590EXECUTION-DEPENDENCY › PROCESS-STATE-IREF: /Executable/CM/Process/CM/CM, /ModeDeclarationGroup/ProcessState/RunningEXECUTION DEPENDENCY 행 CM : Running — CM 프로세스가 Running 이 된 뒤에 시작
591-596FUNCTION-GROUP-STATE-IREF: /MachineConfig/Ecu/FunctionGroup/Ecu_FunctionGroup/MachineFG, /ModeDeclarationGroup/MachineState/StartupFUNCTION GROUP STATE 행 MachineFG : Startup
597STARTUP-CONFIG-REF = /Executable/Sensor/StartupConfig/Sensor입력 없음. 아래 시작 설정을 가리킨다
603-616STARTUP-CONFIG Sensor: SCHEDULING-POLICY SCHED_OTHER, SCHEDULING-PRIORITY 0, ENTER-TIMEOUT-VALUE 5, EXIT-TIMEOUT-VALUE 5STARTUP CONFIG 의 ENTER TIMEOUT 5, EXIT TIMEOUT 5

나머지 프로세스도 같은 꼴이다. 같은 파일에서 다음 줄을 보면 된다.

프로세스볼 곳내용
Actuator251-258행Sensor 와 같은 EXECUTION-DEPENDENCY(/Executable/CM/Process/CM/CM, Running)
Fusion488-495행같은 EXECUTION-DEPENDENCY
EM394-414행FUNCTION-GROUP-STATE-IREF(MachineFG, Startup). 참조 설계와 일부러 다르게 한 곳이다. 이 장 끝의 "SWC 파일" 표를 본다

서비스 인스턴스 매핑 Sensor_AA_Sensor 보기​

찾기 문자열 바꾸기​

  1. 찾기 창의 입력칸 내용을 지우고 Sensor_AA_Sensor 를 입력한다. 찾기 창에 1 of 1 이 보이고, 편집기가 553행으로 이동한다. 상태 표시줄은 Ln 553, Col 47, 16 selected 이다.

  2. 앞에서와 같이 마우스 휠을 아래로 굴려 552행이 편집기 위쪽에 오게 한다.

    SERVICE-INSTANCE-TO-PORT-PROTOTYPE-MAPPING Sensor_AA_Sensor 블록

    그림 13-6. 찾기로 이동한 매핑 블록(551-594행). ① 552-553행 SERVICE-INSTANCE-TO-PORT-PROTOTYPE-MAPPING 과 SHORT-NAME Sensor_AA_Sensor, ② 554-560행 ADMIN-DATA(CLIENT-ID 가 빈 값), ③ 561-564행 PORT-PROTOTYPE-IREF, ④ 565행 SERVICE-INSTANCE-REF(Provider_Sensor). 그 아래 569행부터는 Process 패키지와 PROCESS Sensor 의 앞부분이 보인다.

블록 읽기​

줄내용뜻
552-553SHORT-NAME Sensor_AA_Sensor이름 규칙 <Executable>_<ROOT SWC PROTOTYPE>_<포트>
554-560SDG GID="PARA-SOMEIP-CONFIGURATION" › <SD GID="CLIENT-ID"></SD>제공자 매핑이므로 비어 있다
562CONTEXT-ROOT-SW-COMPONENT-PROTOTYPE-REF = /Executable/Sensor/Sensor/AAExecutable Sensor 의 루트 프로토타입 AA
563TARGET-PORT-PROTOTYPE-REF DEST="P-PORT-PROTOTYPE" = /SwComponentType/AdaptiveApplication/Sensor/SensorSensor 의 P 포트 Sensor
565SERVICE-INSTANCE-REF DEST="PROVIDED-SOMEIP-SERVICE-INSTANCE" = /System/Service/Instance/SOMEIP/Provider/Provider_SensorSOME/IP 배포와 서비스 인스턴스의 제공 인스턴스 Provider_Sensor

소비자 쪽 매핑 둘은 같은 꼴이고 CLIENT-ID 만 값이 있다.

매핑CLIENT-ID줄
Sensor_AA_Sensor빈 값557행
Actuator_AA_Sensor1225행
Fusion_AA_Sensor2462행

참고. 파일에서 매핑은 PROCESS 보다 앞에 있다. 그래서 그림 13-6 의 아래쪽에 PROCESS Sensor 가 다시 보인다.

참고. 562행은 패키지 /Executable/Sensor 에 있는 EXECUTABLE Sensor 안의 루트 프로토타입 AA 를 가리킨다. 그래서 경로에 Sensor 가 두 번 나오고, 찾기 문자열 /Executable/Sensor/Sensor 가 이 줄도 찾았다. 참조 설계의 같은 블록은 이 자리가 한 단계 짧은 /Executable/Sensor/AA 로, 어떤 요소도 가리키지 않는다. 두 블록의 차이는 이 한 줄뿐이다.

DLT 애플리케이션 SENS 보기​

DLT-APPLICATION 은 AADesign_SWC.arxml 이 아니라 AADesign_COM.arxml 에 있다. AADesign_SWC.arxml 에는 그 애플리케이션을 프로세스에 잇는 DLT-APPLICATION-TO-PROCESS-MAPPING Mapping_SENS_TO_Sensor(620-624행)만 있다.

AADesign_COM.arxml 을 열고 찾기​

  1. EXPORT 에서 AADesign_COM.arxml 을 더블클릭한다. 두 번째 탭 AADesign:AADesign_COM.arxml 이 열린다. 상태 표시줄은 ✓ No problems 이다.

  2. 편집기 안을 클릭하고 Ctrl+F 를 누른 뒤 <APPLICATION-ID>SENS 를 입력한다. 찾기 창에 1 of 1 이 보이고, 편집기가 446행으로 이동한다. 상태 표시줄은 Ln 446, Col 39, 20 selected 이다.

  3. 마우스 휠을 아래로 굴려 11줄 위의 435행 <DLT-APPLICATION> 이 편집기 위쪽에 오게 한다.

    DLT-APPLICATION SENS 블록

    그림 13-7. AADesign_COM.arxml 의 DLT-APPLICATION SENS(434-477행). ① 편집기 탭 AADesign:AADesign_COM.arxml, ② 435-436행 DLT-APPLICATION 과 SHORT-NAME SENS, ③ 439-443행 PARA-DLT-CONFIGURATION(CONSOLE, VERBOSE), ④ 446행 APPLICATION-ID SENS, ⑤ 449행 DLT-CONTEXT-REF(/DLT/Context/SENS/DltContext_0). 아래에 454행 ECU-ID ECU1 과 Context 패키지(ACTA …)가 이어진다.

블록 읽기​

줄내용화면에서 넣은 곳
435-436DLT-APPLICATION, SHORT-NAME SENS로그와 DLT의 APPLICATION ID
440<SD GID="LOG-MODE">CONSOLE</SD>LOG MODE CONSOLE
441<SD GID="LOG-LEVEL">VERBOSE</SD>DEFAULT LOG LEVEL VERBOSE
442<SD GID="LOG-FILE-PATH"/>비워 둔 값
446<APPLICATION-ID>SENS</APPLICATION-ID>APPLICATION ID SENS
449DLT-CONTEXT-REF = /DLT/Context/SENS/DltContext_0DLT CONTEXTS 에 추가한 컨텍스트 SENS
454<ECU-ID>ECU1</ECU-ID>머신 설정의 Log and Trace › ECU ID

나머지 DLT 애플리케이션은 다음과 같다.

애플리케이션로그 모드 / 로그 레벨컨텍스트
FUSN, ACTACONSOLE / VERBOSE/DLT/Context/FUSN/DltContext_0, /DLT/Context/ACTA/DltContext_0
CM, EMCONSOLE / FATAL없음

Context 패키지(458행부터)에는 ACTA, FUSN, SENS 아래에 DLT-CONTEXT DltContext_0 이 하나씩 있고, 각 CONTEXT-ID 는 ACTA, FUSN, SENS 이다. 컨텍스트의 이름이 DltContext_0 인 이유는 아래 표에 있다.

내 익스포트와 기준 파일의 차이​

참조 설계의 파일 EM_Test_COM.arxml, EM_Test_DataType.arxml, EM_Test_Interface.arxml, EM_Test_SWC.arxml, EM_Test_System.arxml 을 내 익스포트와 나란히 놓으면 줄 수와 내용이 다르다. 이 절은 그 차이를 모두 모아 이유를 한 줄씩 적는다. 비교는 이름(SHORT-NAME)이 있는 요소를 패키지 경로로 짝지어 했다.

요약​

참조 설계내 익스포트
이름이 있는 요소(패키지 포함)245289
경로가 같고 값과 참조까지 같은 요소204204
경로는 같고 값이나 참조가 다른 요소2323
다른 패키지로 옮겨진 요소66
같은 자리에서 이름이 바뀐 요소66
참조 설계에만 있는 요소6—
내 익스포트에만 있는 요소—50
  • AADesign_Interface.arxml 은 EM_Test_Interface.arxml 과 바이트 단위로 같다.
  • 설계 내용은 모두 같다. 서비스 인터페이스, SOME/IP 배포와 인스턴스, 서비스 디스커버리 설정, 엔드포인트, Adaptive Application 다섯 개와 포트, 커넥터, Executable, Process 의 시작 설정 값, 실행 의존성, 서비스 인스턴스 매핑, DLT 애플리케이션과 ECU, 데이터 타입, 시스템 매핑이다.
  • 다른 곳의 이유는 다섯 가지이다.
이유뜻
참조 설계의 결함참조 설계 파일이 다른 설계에서 옮겨 오며 남긴 끊어진 참조나 엇갈린 머신 디자인
이름 규칙PAIO 익스포터가 정해 둔 이름과 경로
자동 생성PAIO 가 화면에서 만든 프로젝트에 스스로 넣는 요소
튜토리얼의 의도이 튜토리얼이 일부러 다르게 한 값
화면에 입력칸 없음PAIO 화면으로 넣을 수 없는 값

주의. EM 을 MachineFG : Startup 에 묶은 것은 참조 설계와 일부러 다르게 한 곳이다. 내 익스포트의 PROCESS EM(AADesign_SWC.arxml 394-414행)에는 FUNCTION-GROUP-STATE-IREF(/MachineConfig/Ecu/FunctionGroup/Ecu_FunctionGroup/MachineFG, /ModeDeclarationGroup/MachineState/Startup)가 있다. 참조 설계의 EM 에는 이것이 없다. 그 모양은 PAIO 검증이 The process "EM" declares no functionGroupState; at least one is required. 로 거부하므로, Executable 과 Process에서 EM 을 Startup 에 묶었다.

Interface 파일​

요소결과이유
파일 전체같음바이트 단위로 같다

DataType 파일​

요소결과이유
STD-CPP-IMPLEMENTATION-DATA-TYPE String값 다름: <ARRAY-SIZE>256</ARRAY-SIZE> 가 더 있음(502행)이름 규칙: 데이터 타입에서 넣은 MAX SIZE 256 을 ARRAY-SIZE 로 내보낸다. 참조 설계의 String 에는 최대 크기가 없다
APPLICATION-PRIMITIVE-DATA-TYPE String값 다름: SW-TEXT-PROPS(ARRAY-SIZE-SEMANTICS VARIABLE-SIZE, SW-MAX-TEXT-SIZE 256, BASE-TYPE-REF uint16)가 더 있음이름 규칙: 문자열 타입을 내보내는 PAIO 의 표준 형태이다. 참조 설계는 CATEGORY STRING 뿐이다
IMPLEMENTATION-DATA-TYPE ByteArray, String(CP 측 미러), APPLICATION-ARRAY-DATA-TYPE ByteArray값 다름: DYNAMIC-ARRAY-SIZE-PROFILE 이 VSA_LINEAR(참조 설계는 빈 값이거나 없음). IMPLEMENTATION-DATA-TYPE 두 개는 배열 크기(1, 256)와 ARRAY-SIZE-SEMANTICS 가 한 단계 안쪽 요소로 옮겨 가고, 그 요소에 ARRAY-SIZE-HANDLING ALL-INDICES-SAME-ARRAY-SIZE 가 더 있음. APPLICATION-ARRAY-DATA-TYPE 은 MAX-NUMBER-OF-ELEMENTS 1 을 요소에만 두고, 그 요소에 ARRAY-SIZE-HANDLING 이 더 있음이름 규칙: 가변 크기 배열인 DYNAMIC_ARRAY ByteArray 와 STRING String 을 내보내는 PAIO 의 표준 형태이다. 크기 1, 256 은 같다
SW-BASE-TYPE void, IMPLEMENTATION-DATA-TYPE VoidPtr, ConstVoidPtr내 익스포트에만 있음자동 생성: 데이터 타입의 내장 포인터 타입 두 개와 그 기본 타입이다. PAIO 가 프리미티브 타입처럼 모든 익스포트에 넣는다. 이 설계는 쓰지 않는다
나머지 타입(STD-CPP-IMPLEMENTATION-DATA-TYPE ByteArray, 프리미티브와 그 CP 측 미러, DATA-TYPE-MAPPING-SET)같음ByteArray 의 네임스페이스 aa, type 까지 같다

COM 파일​

요소결과이유
MACHINE-DESIGN HPC(빈 요소)참조 설계에만 있음참조 설계의 결함: 참조 설계는 머신 디자인이 Ecu(커넥터)와 HPC(컴포지션 매핑) 둘로 엇갈려 있다. 튜토리얼은 노드 Ecu 하나에 둘 다 붙인다
ETHERNET-COMMUNICATION-CONNECTOR eth0값 다름: COMM-CONTROLLER-REF → Ecu_EthernetController 가 더 있음(15행)자동 생성: 토폴로지에서 컨트롤러를 만들어 커넥터의 Controller 로 고른 결과이다
ETHERNET-COMMUNICATION-CONTROLLER Ecu_EthernetController내 익스포트에만 있음위와 같은 이유이다
SOMEIP-SD-CLIENT-EVENT-GROUP-TIMING-CONFIG SdEventgroupConfig_Actuator_Sensor_Eventgroup_SensorData, SdEventgroupConfig_Fusion_Sensor_Eventgroup_SensorData(298-317행)내 익스포트에만 있음자동 생성, 참조 설계의 결함: 익스포터가 소비자마다 이벤트 그룹의 구독 타이밍을 별도 요소로 쓴다. 값은 SOME/IP 배포와 서비스 인스턴스의 소비자 카드 EVENT GROUPS 에 있는 값이며, 이 튜토리얼은 기본값 그대로 둔다(REQUEST-RESPONSE-DELAY 0/0, SUBSCRIBE-EVENTGROUP-RETRY-DELAY 0.5, SUBSCRIBE-EVENTGROUP-RETRY-MAX 3, TIME-TO-LIVE 16777215). 참조 설계의 두 소비자 이벤트 그룹도 이 두 이름을 가리키지만, 참조 설계에는 그 정의가 없다. 내 익스포트에서는 같은 참조가 찾아진다
DLT-APPLICATION SENS, FUSN, ACTA값 다름: DLT-CONTEXT-REF 의 마지막 부분이 SENS → DltContext_0(FUSN, ACTA 도 같음)아래 DLT-CONTEXT 행의 짝이다. 로그 모드, 로그 레벨, APPLICATION-ID 는 같다
DLT-CONTEXT SENS, FUSN, ACTA이름 바뀜: …/SENS/SENS → …/SENS/DltContext_0 등이름 규칙, 화면에 입력칸 없음: 익스포터가 컨텍스트 이름을 DltContext_<번호> 로 정한다. 화면에는 컨텍스트 이름을 넣는 칸이 없다. CONTEXT-ID 값 SENS 등은 그대로이다
머신 디자인 Ecu, 엔드포인트, SOME/IP 배포, 인스턴스, 서비스 디스커버리 설정, 인스턴스와 머신의 매핑, DLT-ECU, DLT-APPLICATION CM, EM같음

System 파일​

요소결과이유
SYSTEM System값 다름: FIBEX-ELEMENTS 가 참조 설계의 3개(MACHINE-DESIGN Ecu, MACHINE-DESIGN HPC, ETHERNET-CLUSTER)에서 2개(12행 MACHINE-DESIGN Ecu, 15행 ETHERNET-CLUSTER)로HPC 가 없는 것은 COM 파일의 MACHINE-DESIGN HPC 행의 짝이다
SWC-TO-ECU-MAPPING이름 바뀜: SwMapping_HPC_to_HPC → SwMapping_HPC_to_Ecu이름 규칙 SwMapping_<컴포지션>_to_<ECU>: 참조 설계는 빈 머신 디자인 HPC 에 매핑했고(참조 설계의 결함), 튜토리얼은 노드 Ecu 에 매핑한다. 컴포지션을 가리키는 두 참조는 같다
SYSTEM-MAPPING, 루트 컴포지션 프로토타입 System같음

SWC 파일​

요소결과이유
PROCESS Sensor, Fusion, Actuator값 다름: 실행 의존성과 함수 그룹 상태의 참조 경로 4개가 PAIO 경로(/Executable/CM/Process/CM/CM, /ModeDeclarationGroup/ProcessState/Running, /MachineConfig/Ecu/FunctionGroup/Ecu_FunctionGroup/MachineFG, /ModeDeclarationGroup/MachineState/Startup)이고 RESOURCE-GROUP-REF 가 없음참조 설계의 결함: 참조 설계의 네 경로(/AdaptiveApplication/Process/CM/CM, /StateMachine/ProcessState/Running, /Platform/FunctionGroup/FunctionGroup/MachineFG, /StateMachine/MachineState/Startup)는 다섯 파일 안에서 찾을 수 없는 경로이다. 내 익스포트의 경로는 모두 같은 파일 안에서 찾아진다
PROCESS CM값 다름: 함수 그룹 상태 4개의 경로가 위와 같이 바뀌고 RESOURCE-GROUP-REF 가 없음위와 같은 이유이다
PROCESS EM값 다름: FUNCTION-GROUP-STATE-IREF(MachineFG, Startup)가 더 있음(394-414행)튜토리얼의 의도: 위 "주의" 를 본다
SERVICE-INSTANCE-TO-PORT-PROTOTYPE-MAPPING Actuator_AA_Sensor, Fusion_AA_Sensor, Sensor_AA_Sensor값 다름: CONTEXT-ROOT-SW-COMPONENT-PROTOTYPE-REF 가 /Executable/<이름>/AA 에서 /Executable/<이름>/<이름>/AA 로(230행, 467행, 562행)참조 설계의 결함: 참조 설계의 경로는 한 단계 짧아 어떤 요소도 가리키지 않고, 내 익스포트의 경로는 각 Executable 의 루트 프로토타입 AA 를 가리킨다. 세 블록의 나머지는 같다
RESOURCE-GROUP-REF(프로세스 4개)참조 설계에만 있음이름 규칙, 화면에 입력칸 없음: 머신 설정 화면의 OS 칸에 넣은 POSIX 는 머신의 속성으로만 저장되며, 익스포터가 이 값으로 OS-MODULE-INSTANTIATION POSIX 요소를 쓴다(아래 "머신 패키지" 행). 그러나 머신 설정 화면이 미리 만드는 모듈 목록(MODULE 탭)에는 OS 모듈 항목이 없고, 익스포터는 이 목록에 OS 모듈 항목이 있을 때만 프로세스의 RESOURCE-GROUP-REF 를 쓴다. 참조 설계의 이 참조도 찾을 수 없는 경로(/Platform/HPCMachine/POSIX/ResourceGroup)였다
RESOURCE-GROUP ResourceGroup참조 설계에만 있음이름 규칙: 익스포터는 공유 리소스 그룹 하나 대신 프로세스마다 그룹을 만든다(아래 행)
RESOURCE-GROUP Sensor_ResourceGroup, Fusion_ResourceGroup, Actuator_ResourceGroup, CM_ResourceGroup, EM_ResourceGroup(CPU-USAGE 0, MEM-USAGE 0)내 익스포트에만 있음이름 규칙: 각 Adaptive Application 의 CPU USAGE, MEM USAGE 를 프로세스별 그룹으로 내보낸다. 값이 0 이어도 쓴다
머신 패키지 /Machine/HPCMachine참조 설계에만 있음: 내 익스포트는 MACHINE Ecu 를 패키지 /Machine 에 바로 두고(634행), 머신의 함수 그룹과 프로세스 매핑은 /MachineConfig/Ecu 아래에 둠이름 규칙, 화면에 입력칸 없음: PAIO 는 머신을 HPC 노드 이름(여기서는 Ecu)으로 /Machine 에 두고, 그 설정 패키지는 /MachineConfig/<머신> 에 둔다. 화면에는 머신 이름을 넣는 칸이 없다. PROCESSOR CPU, 코어 Core0 … Core3, OS-MODULE-INSTANTIATION POSIX 는 값이 같은 채로 /Machine/HPCMachine/HPCMachine 에서 /Machine/Ecu 로 옮겨진다
MACHINE HPCMachine → MACHINE Ecu이름 바뀜. MACHINE-DESIGN-REF 도 /System/VehicleTopology/Ecu/Ecu 에서 /System/MachineDesign/Ecu 로(634-636행)위와 같은 이유이다. 참조 설계의 결함: 참조 설계의 경로는 다섯 파일 안의 어떤 요소도 가리키지 않고, 내 익스포트의 경로는 COM 파일의 MACHINE-DESIGN Ecu 를 가리킨다. 실제로 잃는 값은 ADMIN-DATA 의 WAIT-FOR-SHUTDOWN 1 하나이다. 머신 설정 화면에 이 칸이 없다
ROOT-SW-COMPONENT-PROTOTYPE CM, EM 의 RootSwComponent이름 바뀜: AA튜토리얼의 의도: 참조 설계는 Sensor, Fusion, Actuator 가 AA, CM 과 EM 이 RootSwComponent 로 섞여 있다. 튜토리얼은 다섯 모두 ROOT SWC PROTOTYPE 기본값 AA 이다
CM-MODULE-INSTANTIATION CmModuleInstantiation(REQUEST-TIMEOUT 10, ALIVE-CHECK-INTERVAL 0, MAX-DATA-BYTES 0)이름 바뀜: LOCAL-COM-ACCESS-CONTROL-ENABLED false 와 REMOTE-ACCESS-CONTROL-ENABLED false 만 있는 CM(644-645행)화면에 입력칸 없음: Communication Management 모듈 화면에는 이 세 값을 넣는 칸이 없다. 익스포터는 접근 제어 플래그 두 개를 항상 쓰며, 이 튜토리얼은 둘을 켜지 않는다. 이름 CM 은 머신 설정 화면의 기본 이름이다
LOG-AND-TRACE-INSTANTIATION Log이름 바뀜: LOG이름 규칙: 머신 설정 화면의 기본 이름이다. DLT-ECU-REF → /DLT/Ecu/Ecu 는 같다
STATE-MANAGEMENT-MODULE-INSTANTIATION SM(MAX-ACTION-LIST-DURATION 1000)내 익스포트에만 있음튜토리얼의 의도: 머신 설정에서 constr_10641 을 없애려고 넣은 값이다. 참조 설계에는 상태 관리 모듈이 없다
NM-INSTANTIATION NM, TIME-SYNC-MODULE-INSTANTIATION TIME_SYNC, CRYPTO-MODULE-INSTANTIATION CRYPTO, IDSM-MODULE-INSTANTIATION IDSM, UCM-MASTER-MODULE-INSTANTIATION VUCM(하위 요소 4개 포함), UCM-SUBORDINATE-MODULE-INSTANTIATION UCM(하위 요소 3개 포함)내 익스포트에만 있음자동 생성: 머신 설정 화면이 모듈을 미리 만들어 두고, 익스포터는 값이 없는 모듈도 내보낸다
함수 그룹 패키지 /MachineConfig/Ecu/FunctionGroup, FUNCTION-GROUP-SET Ecu_FunctionGroup, 함수 그룹 MachineFG내 익스포트에만 있음자동 생성, 참조 설계의 결함: 머신의 기본 함수 그룹 MachineFG 가 그대로 나온다. 참조 설계는 프로세스 7곳이 MachineFG 를 가리키면서 그 정의가 없었다
MODE-TRANSITION 8개(Off_To_Startup, Startup_To_Shutdown, Startup_To_Restart, Startup_To_Verify, Startup_To_Off, Shutdown_To_Off, Restart_To_Off, Verify_To_Off)내 익스포트에만 있음자동 생성: MachineFG 상태 머신의 기본 전이이다. 참조 설계의 MachineState 에는 전이가 없다
PROCESS-TO-MACHINE-MAPPING-SET Ecu_ProcessToMachineMapping 과 매핑 5개(Sensor_To_Ecu_Mapping … EM_To_Ecu_Mapping)내 익스포트에만 있음자동 생성: 프로세스 다섯 개가 머신 Ecu 에 놓인 결과를 익스포터가 내보낸다. 코어 배정을 하지 않아도 나온다
Adaptive Application 다섯 개와 포트, 컴포지션 HPC, System, 커넥터 2개, MachineState, ProcessState, Executable 5개, PROCESS-STATE-MACHINE 5개, STARTUP-CONFIG 5개, DLT-APPLICATION-TO-PROCESS-MAPPING 5개같음

확인하기​

  • EDITOR 뷰의 EXPORT 에 AADesign_COM.arxml, AADesign_DataType.arxml, AADesign_Interface.arxml, AADesign_SWC.arxml, AADesign_System.arxml 다섯 개가 있다.
  • 익스포트 진행 창 Exporting to AUTOSAR 에 Export complete: 30 elements exported to AADesign_*.arxml 와 ✓ Complete! 가 보였고, 창이 닫혔다.
  • 편집기 탭 AADesign:AADesign_SWC.arxml 과 AADesign:AADesign_COM.arxml 의 상태 표시줄이 Schema: R25-11 과 ✓ No problems 이다.
  • AADesign_SWC.arxml 에서 /Executable/Sensor/Sensor 를 찾으면 1 of 2, Enter 한 번이면 575행의 2 of 2 이고, 572행 PROCESS Sensor 의 583-590행에 /Executable/CM/Process/CM/CM 과 Running, 591-596행에 MachineFG 와 Startup 이 있다.
  • AADesign_SWC.arxml 에서 Sensor_AA_Sensor 를 찾으면 1 of 1 이고, 565행이 /System/Service/Instance/SOMEIP/Provider/Provider_Sensor 를 가리킨다.
  • AADesign_COM.arxml 에서 <APPLICATION-ID>SENS 를 찾으면 1 of 1 이고, 그 블록에 CONSOLE, VERBOSE, /DLT/Context/SENS/DltContext_0 이 있다.
  • 두 탭 어느 것에도 수정됨 표시 ● 가 없다.

다음 단계​

튜토리얼의 본문은 여기까지이다. 이어서 부록을 본다.