본문으로 건너뛰기

ARXML 익스포트

이 장에서 할 일​

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

그다음 앞 장들에서 화면으로 넣은 값이 어떤 ARXML 이 되었는지 XML 편집기로 본다. TopologyDesign_System.arxml 에서는 시스템 System 을, TopologyDesign_COM.arxml 에서는 ECU 노드 ECU 를 대표로 따라간다. 이어서 같은 파일에서 찾기로 HPC 노드 HPC, 이더넷 엔드포인트 세 개, VLAN 과 LIN 클러스터로 이동한다.

마지막으로 내 익스포트가 참조 설계의 파일 System_Design.arxml 과 어디가, 왜 다른지 표로 읽는다. HPC 의 이더넷 커넥터처럼 이 튜토리얼이 참조 설계를 바로잡아 만든 곳도 여기서 설명한다.

이 장을 마치면 export 폴더에 TopologyDesign_COM.arxml, TopologyDesign_DataType.arxml, TopologyDesign_SWC.arxml, TopologyDesign_System.arxml 네 개가 있고, 두 파일을 연 XML 편집기의 상태 표시줄이 모두 ✓ No problems 이다.

시작하기 전에​

  • 검증을 마친 상태에서 시작한다. 푸터의 V 아이콘으로 여는 VALIDATION 패널에 No validation issues. 가 보인다. 패널이 열려 있으면 V 아이콘으로 닫아 둔다. 그림은 패널을 닫은 화면이다.
  • 프로젝트의 export 폴더는 비어 있다. 검증에서 연 탭 TopologyDesign:System 이 아직 열려 있으면 탭의 × 를 클릭해 닫아, 편집기가 하나도 열려 있지 않게 한다.
  • 이 장에서 키보드로 입력하는 것은 찾기 창에 넣는 문자열 세 개뿐이다. 세 문자열 모두 TopologyDesign_COM.arxml 에서 정확히 한 곳만 찾는다.
찾을 것파일찾기 문자열찾기 창이동하는 줄
HPC 노드 HPCTopologyDesign_COM.arxml<MACHINE-DESIGN>1 of 1109행
이더넷 엔드포인트 세 개TopologyDesign_COM.arxml<NETWORK-ENDPOINTS>1 of 1185행
VLAN VLAN_13TopologyDesign_COM.arxml<VLAN>1 of 1231행

프로젝트 익스포트하기​

Export 아이콘 클릭하기​

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

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

    그림 7-1. DESIGN 머리글의 Export 아이콘. ① 뷰 머리글 EDITOR: TopologyDesign, ② 마우스를 올린 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: 36 elements exported to TopologyDesign_*.arxml 로 바뀐다.

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

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

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

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

export 폴더의 파일 네 개 보기​

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

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

    그림 7-3. 펼친 EXPORT. ① EXPORT 머리글, ② 파일 네 개 TopologyDesign_COM.arxml, TopologyDesign_DataType.arxml, TopologyDesign_SWC.arxml, TopologyDesign_System.arxml, ③ 다음에 열 TopologyDesign_System.arxml.

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

파일담긴 것크기(바이트)
TopologyDesign_COM.arxmlECU 노드 ECU, ZONE, SLAVE_ECU 와 HPC 노드 HPC(각 노드의 컨트롤러와 커넥터 포함), 클러스터 CanCluster, EthernetCluster, LinCluster, 네트워크 엔드포인트와 VLAN15 356
TopologyDesign_DataType.arxmlPAIO 가 모든 프로젝트의 익스포트에 넣는 기본 데이터 타입. 이 설계는 데이터 타입을 쓰지 않는다30 921
TopologyDesign_SWC.arxml빈 패키지 SwComponentType 하나379
TopologyDesign_System.arxml시스템 System2 354

참조 설계는 이 내용이 모두 파일 하나 System_Design.arxml 에 들어 있다.

시스템 System 보기​

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

  1. EXPORT 에서 TopologyDesign_System.arxml 을 더블클릭한다. XML 편집기 탭이 열리고 1행부터 보인다. 탭 이름은 TopologyDesign:TopologyDesign_System.arxml 이지만, 탭 폭이 좁아 TopologyDesign:TopologyDesign_ 까지만 보인다. 어느 파일이 열렸는지는 EXPORT 에서 선택된 행으로 알 수 있다.

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

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

    그림 7-4. TopologyDesign_System.arxml 을 연 직후(1-45행). ① 편집기 탭, ② 9행 CATEGORY SYSTEM_DESIGN_DESCRIPTION, ③ 12-21행 노드 참조 네 개(ECU, ZONE, SLAVE_ECU, HPC), ④ 24-30행 클러스터 세 개의 참조, ⑤ 39행 SYSTEM-VERSION 1.0.0;POPCORNSAR, ⑥ 상태 표시줄의 ✓ No problems. EXPORT 에서 그 파일이 선택되어 있다.

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

블록 읽기​

SYSTEM System 의 줄과, 그 값을 넣은 곳은 다음과 같다.

줄내용화면에서 넣은 곳
7-8<SYSTEM>, <SHORT-NAME>System</SHORT-NAME>입력 없음. 새 프로젝트가 만든 시스템 이름이다
9<CATEGORY>SYSTEM_DESIGN_DESCRIPTION</CATEGORY>입력 없음. 익스포트가 정하는 값이다
12, 15, 18FIBEX-ELEMENT-REF DEST="ECU-INSTANCE" = /System/EcuInstance/ECU, /System/EcuInstance/ZONE, /System/EcuInstance/SLAVE_ECU입력 없음. System 편집기 캔버스의 ECU 노드이며, 프로젝트와 노드 만들기에서 추가한 순서이다
21FIBEX-ELEMENT-REF DEST="MACHINE-DESIGN" = /System/MachineDesign/HPC입력 없음. 캔버스의 HPC 노드이며, ECU 노드 다음에 온다
24, 27, 30CAN-CLUSTER /System/CommunicationCluster/Can/CanCluster, ETHERNET-CLUSTER /System/CommunicationCluster/Ethernet/EthernetCluster, LIN-CLUSTER /System/CommunicationCluster/Lin/LinClusterCAN 버스, 이더넷 버스, LIN 버스에서 만든 클러스터
33-38ROOT-SOFTWARE-COMPOSITIONS › ROOT-SW-COMPOSITION-PROTOTYPE System입력 없음. 새 프로젝트의 루트 컴포지션이다
39<SYSTEM-VERSION>1.0.0;POPCORNSAR</SYSTEM-VERSION>ECU 속성에서 System 편집기 SYSTEM 패널의 VERSION

참고. 시스템 정보 design/SYSTEM.io.model 의 노드 목록은 비어 있다. SYSTEM 패널은 바꾼 칸의 값만 적기 때문이다(ECU 속성). 그래서 익스포트는 노드 참조를 캔버스의 노드에서 가져와, ECU 노드를 추가한 순서대로 먼저 쓰고 그다음 HPC 노드를 쓴다.

참고. 36행의 SOFTWARE-COMPOSITION-TREF 는 /SwComponentType/Composition/System 을 가리키지만, 익스포트한 네 파일 어디에도 이 컴포지션은 없다. TopologyDesign_SWC.arxml 은 빈 패키지 하나뿐이다. 스키마 검사는 참조가 가리키는 곳까지 확인하지 않으므로 ✓ No problems 는 그대로이다. 참조 설계에는 루트 컴포지션이 없다.

ECU 노드 ECU 보기​

TopologyDesign_COM.arxml 열기​

  1. EXPORT 에서 TopologyDesign_COM.arxml 을 더블클릭한다. 두 번째 탭이 열리고, 이 탭도 TopologyDesign:TopologyDesign_ 까지만 보인다. 상태 표시줄은 ✓ No problems 이다.

  2. 마우스 휠을 아래로 조금 굴려 10행 <ECU-INSTANCE> 가 편집기 위쪽에 오게 한다.

    TopologyDesign_COM.arxml 의 ECU-INSTANCE ECU 블록

    그림 7-5. TopologyDesign_COM.arxml 의 ECU 노드 ECU(10-51행). ① 활성 편집기 탭, ② 10-11행 ECU-INSTANCE 와 SHORT-NAME ECU, ③ 28-37행 LIN-MASTER LinController_Master(PROTOCOL-VERSION LIN20, TIME-BASE 0.001, TIME-BASE-JITTER 0.001), ④ 39-48행 CONNECTORS(CanConnector, LinConnector_Master 와 각 컨트롤러 참조), ⑤ 49-50행 SLEEP-MODE-SUPPORTED true, WAKE-UP-OVER-BUS-SUPPORTED true, ⑥ 상태 표시줄의 ✓ No problems. 13-27행에는 CanController 와 비트 타이밍 값이 보인다.

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

블록 읽기​

줄내용화면에서 넣은 곳
10-11<ECU-INSTANCE>, <SHORT-NAME>ECU</SHORT-NAME>프로젝트와 노드 만들기의 노드 이름
13-27CAN-COMMUNICATION-CONTROLLER CanController: PROP-SEG, SYNC-JUMP-WIDTH, TIME-SEG-1, TIME-SEG-2 모두 0(19-22행)CAN 버스의 PROPAGATION SEGMENT, SYNC JUMP WIDTH, TIME SEGMENT 1, TIME SEGMENT 2
28-37LIN-MASTER LinController_Master: PROTOCOL-VERSION LIN20(32행), TIME-BASE 0.001(33행), TIME-BASE-JITTER 0.001(34행)LIN 버스의 PROTOCOL VERSION LIN 2.0, TIME BASE 1 ms, TIME BASE JITTER 1 ms
40-43CAN-COMMUNICATION-CONNECTOR CanConnector, COMM-CONTROLLER-REF = /System/EcuInstance/ECU/CanController(42행)CAN 버스에서 커넥터의 CONTROLLER 로 고른 컨트롤러
44-47LIN-COMMUNICATION-CONNECTOR LinConnector_Master, COMM-CONTROLLER-REF = /System/EcuInstance/ECU/LinController_Master(46행)LIN 버스에서 커넥터의 CONTROLLER 로 고른 컨트롤러
49-50SLEEP-MODE-SUPPORTED true, WAKE-UP-OVER-BUS-SUPPORTED trueECU 속성의 SLEEP MODE SUPPORTED, WAKE-UP OVER BUS

참조 설계의 ECU 에 있는 파티션 두 개 ECU_Partition0, ECU_Partition1 은 이 블록에 없다. ECU 속성에서 본 것처럼 System 편집기에는 파티션을 넣는 칸이 없다.

나머지 두 ECU 노드도 같은 꼴이다. 같은 파일에서 다음 줄을 보면 된다.

노드볼 곳내용
ZONE52-82행CanCommController(이름만 있음, 56행), EthernetCommController(MAC-UNICAST-ADDRESS 11:22:ee:44:55:66, 62행), CanConnector, EthernetConnector(NETWORK-ENDPOINT-REF → ZONE_EthernetConnector_Endpoint, 76행), 80-81행 SLEEP-MODE-SUPPORTED, WAKE-UP-OVER-BUS-SUPPORTED true
SLAVE_ECU83-103행LIN-SLAVE LinSlaveController(PROTOCOL-VERSION LIN20, 90행), LinConnector(→ LinSlaveController, 98행), 101-102행 SLEEP-MODE-SUPPORTED, WAKE-UP-OVER-BUS-SUPPORTED true

HPC 노드 HPC 보기​

찾기로 MACHINE-DESIGN 으로 이동하기​

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

  2. <MACHINE-DESIGN> 을 입력한다. 찾기 창에 1 of 1 이 보이고, 편집기가 109행으로 이동해 그 글자를 선택한다. 상태 표시줄은 Ln 109, Col 29, 16 selected 이다.

  3. 찾기는 찾은 줄을 편집기 가운데에 놓는다. 블록 전체가 보이도록 마우스 휠을 아래로 몇 칸 굴려 109행이 편집기 위쪽에 오게 한다.

    MACHINE-DESIGN HPC 블록

    그림 7-6. 찾기로 이동한 HPC 노드(109-135행). ① 109-110행 MACHINE-DESIGN 과 SHORT-NAME HPC, ② 114행 COMM-CONTROLLER-REF(/System/MachineDesign/HPC/EthernetController), ③ 115-117행 UNICAST-NETWORK-ENDPOINT-REF(HPC_EthernetConnector_Endpoint), ④ 121-128행 ETHERNET-COMMUNICATION-CONTROLLER EthernetController(MAC-UNICAST-ADDRESS 00:11:22:33:44:55), ⑤ 130-134행 SERVICE-DISCOVERY-CONFIGS, ⑥ 찾기 창(<MACHINE-DESIGN>, 1 of 1). 아래쪽에는 CanCluster 와 148행 BAUDRATE 500000 이 보인다.

블록 읽기​

줄내용화면에서 넣은 곳
109-110<MACHINE-DESIGN>, <SHORT-NAME>HPC</SHORT-NAME>프로젝트와 노드 만들기의 HPC 노드. HPC 노드는 ECU-INSTANCE 가 아니라 MACHINE-DESIGN 으로 나간다
112-113ETHERNET-COMMUNICATION-CONNECTOR EthernetConnector이더넷 버스에서 만든 커넥터
114COMM-CONTROLLER-REF = /System/MachineDesign/HPC/EthernetController커넥터의 CONTROLLER EthernetController
115-117UNICAST-NETWORK-ENDPOINT-REF = /System/CommunicationCluster/Ethernet/EthernetCluster/PhysicalChannel/HPC_EthernetConnector_Endpoint커넥터의 UNICAST IPV4 ADDRESS 192.168.0.11
121-128ETHERNET-COMMUNICATION-CONTROLLER EthernetController, MAC-UNICAST-ADDRESS 00:11:22:33:44:55(125행)컨트롤러의 MAC ADDRESS
130-134SERVICE-DISCOVERY-CONFIGS › SOMEIP-SERVICE-DISCOVERY › MULTICAST-SD-IP-ADDRESS-REF = …/PhysicalChannel/HPC_EthernetConnector_Multicast(132행)입력 없음. 커넥터에 MULTICAST IPV4 ADDRESS 를 넣으면 익스포트가 만든다

참고. MACHINE-DESIGN 안에서는 커넥터(111-119행)가 컨트롤러(120-129행)보다 먼저 나온다. 참조 설계도 같은 순서이다.

114행과 115-117행은 이 튜토리얼이 참조 설계를 바로잡은 곳이다. 이 장 뒤쪽의 "HPC 커넥터를 바로잡은 곳" 절에서 설명한다.

이더넷 엔드포인트 보기​

찾기 문자열 바꾸기​

  1. 찾기 창의 입력칸 내용을 지우고 <NETWORK-ENDPOINTS> 를 입력한다. 찾기 창에 1 of 1 이 보이고, 편집기가 185행으로 이동한다. 상태 표시줄은 Ln 185, Col 46, 19 selected 이다.

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

    NETWORK-ENDPOINTS 블록과 SO-AD-CONFIG

    그림 7-7. 찾기로 이동한 이더넷 채널의 엔드포인트(185-228행). ① 186-194행 ZONE_EthernetConnector_Endpoint(192.168.0.19, FIXED), ② 195-203행 HPC_EthernetConnector_Endpoint(192.168.0.11, FIXED), ③ 204-214행 HPC_EthernetConnector_Multicast(224.0.0.1, FIXED, ASSIGNMENT-PRIORITY 0, TTL 0), ④ 216-223행 SO-AD-CONFIG 의 소켓 HPC_EthernetConnector_Multicast_Socket 과 ApplicationEndpoint. 그 아래 224-227행 MULTICAST-CONNECTOR-REFS 는 ZONE 과 HPC 의 EthernetConnector 를 가리킨다.

블록 읽기​

줄엔드포인트주소화면에서 넣은 곳
186-194ZONE_EthernetConnector_EndpointIPV-4-ADDRESS 192.168.0.19(190행), IPV-4-ADDRESS-SOURCE FIXED(191행)ZONE 커넥터의 UNICAST IPV4 ADDRESS 와 ADDRESS SOURCE 의 FIXED
195-203HPC_EthernetConnector_Endpoint192.168.0.11(199행), FIXED(200행)HPC 커넥터의 UNICAST IPV4 ADDRESS 와 FIXED
204-214HPC_EthernetConnector_Multicast224.0.0.1(209행), FIXED(210행), ASSIGNMENT-PRIORITY 0(208행), TTL 0(211행)HPC 커넥터의 MULTICAST IPV4 ADDRESS. ASSIGNMENT-PRIORITY 와 TTL 은 익스포트가 넣는 값이다

엔드포인트 이름은 화면에서 넣지 않는다. 익스포트가 <노드>_<커넥터>_Endpoint, <노드>_<커넥터>_Multicast 로 이름을 붙인다. 216-230행의 SO-AD-CONFIG 도 입력 없이 생긴다. 멀티캐스트 주소가 있는 커넥터마다 익스포트가 소켓 <노드>_<커넥터>_Multicast_Socket 과 그 APPLICATION-ENDPOINT 를 만들고, 멀티캐스트 엔드포인트를 가리키게 한다(222행).

VLAN 과 LIN 클러스터 보기​

찾기 문자열 바꾸기​

  1. 찾기 창의 입력칸 내용을 지우고 <VLAN> 을 입력한다. 찾기 창에 1 of 1 이 보이고, 편집기가 231행으로 이동한다. 상태 표시줄은 Ln 231, Col 33, 6 selected 이다.

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

    VLAN VLAN_13 과 LIN-CLUSTER LinCluster 블록

    그림 7-8. 찾기로 이동한 VLAN 과 LIN 클러스터(230-273행). ① 231-234행 VLAN VLAN_13 과 VLAN-IDENTIFIER 13, ② 245-246행 LIN-CLUSTER 와 SHORT-NAME LinCluster, ③ 249행 BAUDRATE 19200, ④ 254-258행 채널에 붙은 SLAVE_ECU 의 LinConnector(255행)와 ECU 의 LinConnector_Master(258행) 참조. 채널은 BUS-IDLE-TIMEOUT-PERIOD 없이 261행에서 끝난다.

  3. Escape 키를 눌러 찾기 창을 닫는다.

블록 읽기​

줄내용화면에서 넣은 곳
231-234VLAN VLAN_13, VLAN-IDENTIFIER 13이더넷 버스에서 채널에 넣은 VLAN ID 13. 이름 VLAN_13 은 익스포트가 VLAN_<ID> 로 붙인다
245-246LIN-CLUSTER LinClusterLIN 버스의 클러스터 NAME
249BAUDRATE 19200입력 없음. PAIO 가 새 LIN 클러스터에 저장하는 값이다
252채널 PhysicalChannel클러스터의 CHANNEL NAME
255, 258COMMUNICATION-CONNECTOR-REF = /System/EcuInstance/SLAVE_ECU/LinConnector, /System/EcuInstance/ECU/LinConnector_Master클러스터에 붙인 두 커넥터. 순서도 같다
251-261BUS-IDLE-TIMEOUT-PERIOD 가 없는 LIN-PHYSICAL-CHANNEL입력 없음. LIN 버스에서 클러스터의 IDLE TIMEOUT 이 10 ms 를 받지 않아 비어 있다

나머지 두 클러스터도 같은 꼴이다.

클러스터볼 곳내용
CanCluster144-164행BAUDRATE 500000(148행), 채널 PhysicalChannel 에 ZONE 과 ECU 의 CanConnector(154, 157행)
EthernetCluster170-239행채널 PhysicalChannel 에 ZONE 과 HPC 의 EthernetConnector(179, 182행), 엔드포인트 세 개(185-215행), SO-AD-CONFIG(216-230행), VLAN_13(231-234행)

HPC 커넥터를 바로잡은 곳​

참조 설계의 HPC 이더넷 커넥터에는 결함이 두 개 있다. 이 튜토리얼은 이더넷 버스에서 이 커넥터를 바로잡아 만들었다. 두 파일의 같은 커넥터를 나란히 놓으면 다음과 같다.

항목참조 설계 (System_Design.arxml 201-208행)내 익스포트 (TopologyDesign_COM.arxml 112-118행)
위치/System/VehicleTopology/Ecu/HPC/EthernetConnector/System/MachineDesign/HPC/EthernetConnector
COMM-CONTROLLER-REF없음/System/MachineDesign/HPC/EthernetController(114행)
유니캐스트 엔드포인트…/PhysicalChannel/ZONE_Endpoint(206행) = 192.168.0.19. ZONE 커넥터의 주소이다…/PhysicalChannel/HPC_EthernetConnector_Endpoint(116행) = 192.168.0.11
CATEGORY, CREATE-ECU-WAKEUP-SOURCEWIRED, false없음, 없음
  • 컨트롤러를 잇는다. 같은 노드 HPC 에 이더넷 컨트롤러 EthernetController 가 있는데, 참조 설계의 커넥터는 그것을 가리키지 않는다. ZONE 의 같은 이름 커넥터는 자기 컨트롤러 EthernetCommController 를 가리킨다(참조 설계 273행). 커넥터는 컨트롤러를 거쳐 버스에 붙으므로 이 튜토리얼은 둘을 잇는다.
  • HPC 자신의 주소를 쓴다. 참조 설계대로라면 ZONE 과 HPC 의 두 커넥터가 같은 주소 192.168.0.19 를 갖고, HPC 의 주소인 엔드포인트 HPC_Endpoint(192.168.0.11)는 어느 커넥터도 쓰지 않는 채로 남는다. 이 튜토리얼은 HPC 커넥터에 192.168.0.11 을 넣는다.
  • 검증은 이 결함을 알리지 않는다. 커넥터의 컨트롤러 참조는 AUTOSAR 스키마에서 선택 항목이고, 커넥터에 컨트롤러가 없다는 오류 constr_5398 은 ECU 노드의 커넥터만 검사한다. 그래서 참조 설계를 그대로 PAIO 로 임포트해 검증해도 VALIDATION 패널은 No validation issues. 이다.

내 익스포트와 참조 설계의 차이​

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

요약​

참조 설계내 익스포트
파일14
이름이 있는 요소(패키지 제외)2979
경로가 같은 요소11
다른 패키지로 옮겨진 요소2222
같은 자리에서 이름이 바뀐 요소44
참조 설계에만 있는 요소2—
내 익스포트에만 있는 요소—52
  • 짝이 있는 요소 27개 가운데 14개는 값이나 참조가 다르고, 13개는 값과 참조가 같다.
  • 설계 내용은 파티션 두 개와 아래 표의 값 몇 개를 빼고 모두 들어 있다. 노드 네 개와 컨트롤러, 커넥터, 슬립과 버스 웨이크업 설정, 클러스터 세 개와 채널, 엔드포인트 세 개의 주소, VLAN ID, 시스템 버전이다.
  • 다른 곳의 이유는 다섯 가지이다.
이유뜻
이름 규칙PAIO 익스포트가 정해 둔 패키지, 이름, 표기, 순서
자동 생성PAIO 가 화면에서 만든 프로젝트에 스스로 넣는 요소와 값
화면에 입력칸 없음System 편집기와 그 SYSTEM 패널로 넣을 수 없는 값. 입력칸이 없거나, 입력칸이 그 값을 받지 않는다
튜토리얼의 의도이 튜토리얼이 일부러 다르게 한 값
참조 설계의 결함참조 설계 파일 자체가 잘못된 곳

주의. HPC 커넥터의 컨트롤러 참조와 유니캐스트 엔드포인트는 참조 설계와 일부러 다르게 한 곳이다. 앞의 "HPC 커넥터를 바로잡은 곳" 절을 본다.

시스템​

요소결과이유
SYSTEM System값 다름: CATEGORY SYSTEM_DESCRIPTION → SYSTEM_DESIGN_DESCRIPTION(System 파일 9행)이름 규칙, 화면에 입력칸 없음: 익스포트는 시스템의 종류를 항상 SYSTEM_DESIGN_DESCRIPTION 으로 쓴다. SYSTEM 패널에는 이 값을 넣는 칸이 없다
SYSTEM System 의 FIBEX-ELEMENTS순서 다름: 같은 참조 일곱 개가 다른 순서로 있음(System 파일 12-30행). 참조 설계는 CanCluster, ECU, EthernetCluster, HPC, LinCluster, SLAVE_ECU, ZONE, 내 익스포트는 ECU, ZONE, SLAVE_ECU, HPC, CanCluster, EthernetCluster, LinCluster 순서이다이름 규칙: 익스포트는 ECU 노드를 추가한 순서대로 쓰고, 그다음 HPC 노드, 그다음 클러스터를 쓴다. 순서를 정하는 칸은 없다
SYSTEM-VERSION같음ECU 속성에서 System 편집기 SYSTEM 패널의 VERSION 에 넣은 값이다

노드​

요소결과이유
ECU-INSTANCE ECU, ZONE, SLAVE_ECU, MACHINE-DESIGN HPC 와 그 컨트롤러 6개, 커넥터 6개이동: /System/VehicleTopology/Ecu/<노드> → /System/EcuInstance/<노드>(HPC 는 /System/MachineDesign/HPC)이름 규칙: 익스포트는 ECU 노드를 /System/EcuInstance, HPC 노드를 /System/MachineDesign 에 둔다. 패키지를 고르는 칸은 없다. 요소 이름과 하위 구조는 같다
ECU-PARTITION ECU_Partition0(EXEC-IN-USER-MODE true), ECU_Partition1(false)참조 설계에만 있음화면에 입력칸 없음: System 편집기에 파티션을 넣는 칸이 없고, 익스포트에도 파티션이 나오지 않는다
LIN-MASTER LinController_Master값 다름: WAKE-UP-BY-CONTROLLER-SUPPORTED true 가 없음튜토리얼의 의도: LIN 버스에서 LIN MASTER 패널의 WAKE-UP BY CONTROLLER 를 누르지 않았고, 값이 없는 항목은 익스포트에서 빠진다
CAN-COMMUNICATION-CONTROLLER CanCommController(ZONE)값 다름: 빈 CAN-COMMUNICATION-CONTROLLER-CONDITIONAL 이 없음(COM 파일 55-57행)이름 규칙: 속성이 하나도 없는 CAN 컨트롤러는 빈 하위 요소를 쓰지 않는다. 설계 내용은 같다
ETHERNET-COMMUNICATION-CONTROLLER EthernetCommController(ZONE)값 다름: CATEGORY WIRED 와 MAC-LAYER-TYPE X-MII 가 없음, MAC-UNICAST-ADDRESS 11:22:EE:44:55:66 → 11:22:ee:44:55:66(COM 파일 62행)화면에 입력칸 없음: CATEGORY 칸이 없다. 튜토리얼의 의도: MAC LAYER TYPE 은 누르면 스키마에 없는 값 XMII 가 나가므로 누르지 않는다(이더넷 버스의 "주의"). 이름 규칙: MAC 주소는 소문자로 저장되며 같은 주소이다
ETHERNET-COMMUNICATION-CONNECTOR EthernetConnector(ZONE)값 다름: CATEGORY WIRED 가 없음화면에 입력칸 없음
MACHINE-DESIGN HPC값 다름: SERVICE-DISCOVERY-CONFIGS 가 더 있음(COM 파일 130-134행)자동 생성: HPC 커넥터에 MULTICAST IPV4 ADDRESS 를 넣으면 익스포트가 그 멀티캐스트 엔드포인트를 SD 주소로 가리키는 설정을 만든다. 참조 설계에서는 어느 요소도 SOMEIP_SD_Multicast 를 가리키지 않는다
ETHERNET-COMMUNICATION-CONTROLLER EthernetController(HPC)값 다름: CATEGORY WIRED, WAKE-UP-BY-CONTROLLER-SUPPORTED false, MAC-LAYER-TYPE X-MII 가 없음화면에 입력칸 없음: CATEGORY 와 컨트롤러 웨이크업 칸이 없다. 튜토리얼의 의도: MAC LAYER TYPE 은 누르지 않는다
ETHERNET-COMMUNICATION-CONNECTOR EthernetConnector(HPC)값 다름: COMM-CONTROLLER-REF 가 더 있음(COM 파일 114행), 유니캐스트 엔드포인트 ZONE_Endpoint → HPC_EthernetConnector_Endpoint(116행), CATEGORY WIRED 와 CREATE-ECU-WAKEUP-SOURCE false 가 없음참조 설계의 결함, 튜토리얼의 의도: 앞의 "HPC 커넥터를 바로잡은 곳" 절. CATEGORY 는 화면에 입력칸 없음. CREATE-ECU-WAKEUP-SOURCE 는 커넥터의 PARTIAL NETWORK › CREATE ECU WAKEUP SOURCE 를 건드리지 않아 값이 없고, 값이 없는 항목은 익스포트에서 빠진다
ECU-INSTANCE 세 개, CanController, LinSlaveController, CAN 커넥터 2개, LIN 커넥터 2개같음(위치만 옮겨짐)슬립과 버스 웨이크업, 비트 타이밍, LIN 프로토콜 버전 LIN20, 컨트롤러 참조가 모두 같다

클러스터와 채널​

요소결과이유
클러스터 세 개와 채널 세 개이동: /System/VehicleTopology/Cluster/… → /System/CommunicationCluster/Can/…, /System/CommunicationCluster/Ethernet/…, /System/CommunicationCluster/Lin/…이름 규칙: 익스포트는 클러스터를 버스 종류별 패키지에 둔다. 패키지를 고르는 칸은 없다
CAN-CLUSTER CanCluster값 다름: PROTOCOL-NAME CAN-FD 가 없음, BAUDRATE 500000 이 더 있음(COM 파일 148행)튜토리얼의 의도: CAN 버스에서 CAN CLUSTER 패널 PROTOCOL 섹션의 PROTOCOL NAME 을 비워 둔다. 자동 생성: 500000 은 PAIO 가 새 CAN 클러스터에 저장하는 값이다
ETHERNET-CLUSTER EthernetCluster값 다름: PROTOCOL-NAME IEEE 802.3 이 없음화면에 입력칸 없음: ETHERNET CLUSTER 패널에 PROTOCOL 섹션이 없다
ETHERNET-PHYSICAL-CHANNEL PhysicalChannel값 다름: CATEGORY WIRED 가 없음화면에 입력칸 없음
LIN-CLUSTER LinCluster값 다름: BAUDRATE 19200 이 더 있음(COM 파일 249행)자동 생성: PAIO 가 새 LIN 클러스터에 저장하는 값이다
LIN-PHYSICAL-CHANNEL PhysicalChannel값 다름: BUS-IDLE-TIMEOUT-PERIOD 0.01 이 없음화면에 입력칸 없음: LIN CLUSTER 패널의 IDLE TIMEOUT 은 0.1 초 이상만 받는다(LIN 버스). 붙은 커넥터와 그 순서는 같다
NETWORK-ENDPOINT HPC_Endpoint, ZONE_Endpoint이름 바뀜: HPC_EthernetConnector_Endpoint, ZONE_EthernetConnector_Endpoint이름 규칙, 화면에 입력칸 없음: 엔드포인트는 커넥터의 UNICAST IPV4 ADDRESS 로 넣고, 이름은 익스포트가 <노드>_<커넥터>_Endpoint 로 붙인다. 주소와 FIXED 는 같다
NETWORK-ENDPOINT SOMEIP_SD_Multicast이름 바뀜: HPC_EthernetConnector_Multicast. 값 다름: ASSIGNMENT-PRIORITY 0, TTL 0 이 더 있음이름 규칙: HPC 커넥터의 MULTICAST IPV4 ADDRESS 로 넣고, 이름은 <노드>_<커넥터>_Multicast 이다. 두 값은 익스포트가 멀티캐스트 엔드포인트에 넣는 0 이다
VLAN Vlan_13이름 바뀜: VLAN_13이름 규칙, 화면에 입력칸 없음: 채널에는 VLAN ID 칸만 있고, 이름은 익스포트가 VLAN_<ID> 로 붙인다. VLAN-IDENTIFIER 13 은 같다
CAN-PHYSICAL-CHANNEL PhysicalChannel같음(위치만 옮겨짐)붙은 커넥터와 그 순서가 같다

내 익스포트에만 있는 요소​

묶음개수요소이유
SD 소켓2SOCKET-ADDRESS HPC_EthernetConnector_Multicast_Socket, APPLICATION-ENDPOINT ApplicationEndpoint자동 생성: 멀티캐스트 주소가 있는 커넥터마다 익스포트가 만든다
기본 데이터 타입49TopologyDesign_DataType.arxml 의 SW-BASE-TYPE boolean, float32, float64, sint8 …(12), IMPLEMENTATION-DATA-TYPE(13), STD-CPP-IMPLEMENTATION-DATA-TYPE(11), APPLICATION-PRIMITIVE-DATA-TYPE(11), DATA-TYPE-MAPPING-SET(2)자동 생성: PAIO 가 모든 익스포트에 넣는 기본 타입이다. 이 설계는 쓰지 않는다
루트 컴포지션1ROOT-SW-COMPOSITION-PROTOTYPE System자동 생성: 새 프로젝트의 시스템이 갖는 루트 컴포지션이다

참고. 내 익스포트에는 NM 이나 TP 요소가 없다. 이 설계는 CanCluster 와 EthernetCluster 의 네트워크 관리(NM), CanCluster 와 LinCluster 의 전송 프로토콜(TP)을 꺼 둔 채이다(CAN 버스, 이더넷 버스, LIN 버스). 참조 설계에도 둘 다 없다.

설계 정보가 아닌 차이​

항목참조 설계내 익스포트
UUID 속성이름이 있는 요소 33개 모두에 있음없음
파일 구성파일 하나_COM, _DataType, _SWC, _System 네 파일
요소 순서참조 설계의 순서익스포트 규칙의 순서
네임스페이스와 스키마http://autosar.org/schema/r4.0, AUTOSAR_00054.xsd같음

화면으로 만들지 않는 값 모아 보기​

위 표에서 화면으로 만들지 않는 참조 설계의 값만 모으면 다음과 같다.

참조 설계의 값위치내 익스포트다룬 장
ECU_Partition0(EXEC-IN-USER-MODE true), ECU_Partition1(false)ECU없음ECU 속성
PROTOCOL-NAME CAN-FDCanCluster없음CAN 버스
PROTOCOL-NAME IEEE 802.3EthernetCluster없음이더넷 버스
CATEGORY WIRED이더넷 채널, 컨트롤러 2개, 커넥터 2개없음이더넷 버스
MAC-LAYER-TYPE X-MII이더넷 컨트롤러 2개없음이더넷 버스
WAKE-UP-BY-CONTROLLER-SUPPORTEDLinController_Master(true), HPC 의 EthernetController(false)없음LIN 버스, 이더넷 버스
BUS-IDLE-TIMEOUT-PERIOD 0.01LinCluster 의 채널 PhysicalChannel없음LIN 버스
CATEGORY SYSTEM_DESCRIPTIONSYSTEM SystemSYSTEM_DESIGN_DESCRIPTION이 장
이름 HPC_Endpoint, ZONE_Endpoint, SOMEIP_SD_Multicast, Vlan_13이더넷 채널HPC_EthernetConnector_Endpoint, ZONE_EthernetConnector_Endpoint, HPC_EthernetConnector_Multicast, VLAN_13이더넷 버스
CREATE-ECU-WAKEUP-SOURCE falseHPC 의 EthernetConnector없음이 장
패키지 /System/VehicleTopology/Ecu, /System/VehicleTopology/Cluster노드와 클러스터 전체/System/EcuInstance, /System/MachineDesign, /System/CommunicationCluster/…이 장

왜 이렇게 설계하는가​

  • 결과는 XML 편집기로 확인한다. 파일을 열면 스키마 검사가 함께 돌아 ✓ No problems 로 구조가 맞는지 바로 알 수 있다. 다만 이 검사는 참조가 가리키는 곳이 실제로 있는지까지는 보지 않는다.
  • 차이는 대부분 위치와 이름이다. 참조 설계의 요소 29개 가운데 27개가 내 익스포트에 짝이 있고, 다른 곳의 대부분은 익스포트의 패키지와 이름 규칙 때문이다. 요소째 빠지는 것은 파티션 두 개뿐이다.
  • HPC 커넥터는 참조 설계를 따르지 않는다. 컨트롤러가 없고 ZONE 의 주소를 가리키는 참조 설계의 모양은 결함이므로, 이 튜토리얼은 HPC 자신의 컨트롤러와 주소 192.168.0.11 로 만든다.

확인하기​

  • EDITOR 뷰의 EXPORT 에 TopologyDesign_COM.arxml, TopologyDesign_DataType.arxml, TopologyDesign_SWC.arxml, TopologyDesign_System.arxml 네 개가 있다.
  • 익스포트 진행 창 Exporting to AUTOSAR 에 Export complete: 36 elements exported to TopologyDesign_*.arxml 와 ✓ Complete! 가 보였고, 창이 닫혔다.
  • TopologyDesign_System.arxml 과 TopologyDesign_COM.arxml 을 연 두 탭의 상태 표시줄이 Schema: R25-11 과 ✓ No problems 이다.
  • TopologyDesign_System.arxml 의 39행이 SYSTEM-VERSION 1.0.0;POPCORNSAR 이고, 12-21행에 노드 ECU, ZONE, SLAVE_ECU, HPC 의 참조가 있다.
  • TopologyDesign_COM.arxml 에서 <MACHINE-DESIGN> 을 찾으면 1 of 1 이고, 114행이 /System/MachineDesign/HPC/EthernetController 를, 116행이 HPC_EthernetConnector_Endpoint 를 가리킨다.
  • <NETWORK-ENDPOINTS> 를 찾으면 1 of 1 이고, 엔드포인트 세 개의 주소가 192.168.0.19, 192.168.0.11, 224.0.0.1 이다.
  • <VLAN> 을 찾으면 1 of 1 이고, VLAN_13 의 VLAN-IDENTIFIER 가 13 이며, LinCluster 의 채널이 SLAVE_ECU 의 LinConnector 와 ECU 의 LinConnector_Master 를 참조한다.
  • 두 탭 어느 것에도 수정됨 표시 ● 가 없다.

다음 단계​

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