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 노드 HPC | TopologyDesign_COM.arxml | <MACHINE-DESIGN> | 1 of 1 | 109행 |
| 이더넷 엔드포인트 세 개 | TopologyDesign_COM.arxml | <NETWORK-ENDPOINTS> | 1 of 1 | 185행 |
VLAN VLAN_13 | TopologyDesign_COM.arxml | <VLAN> | 1 of 1 | 231행 |
프로젝트 익스포트하기
Export 아이콘 클릭하기
-
EDITOR 뷰에서 DESIGN 머리글 오른쪽에 있는 아이콘 네 개 가운데 두 번째에 마우스를 올린다. 툴팁 Export 가 보인다. 네 아이콘에는 툴팁 말고는 이름이 없으며, 툴팁은 왼쪽부터 Import, Export, PRTE Code Generation, PARA Code Generation 이다.

그림 7-1. DESIGN 머리글의 Export 아이콘. ① 뷰 머리글
EDITOR: TopologyDesign, ② 마우스를 올린 Export 아이콘과 그 툴팁 Export. DESIGN 과 MODULE 은 펼쳐져 있고 DOC, CODE, EXPORT 는 접혀 있다. 열린 탭이 없어 편집기 영역에는Open a file to start editing이 보인다. -
Export 를 클릭한다.
참고. Export 는 Explorer(창 맨 왼쪽 아이콘 막대 맨 아래의 Explorer 아이콘)에서
design폴더를 오른쪽 클릭하면 열리는 메뉴에도 있다. 두 곳 모두 같은 익스포트를 실행한다.
진행 창 확인하기
-
파일 선택기나 저장 위치를 묻는 창은 뜨지 않는다. 곧바로 진행 창 Exporting to AUTOSAR 가 뜬다. 잠시 뒤 익스포트가 끝나면 메시지가
Export complete: 36 elements exported to TopologyDesign_*.arxml로 바뀐다.
그림 7-2. 익스포트가 끝난 순간의 진행 창. ① 창 제목 Exporting to AUTOSAR, ② 메시지
Export complete: 36 elements exported to TopologyDesign_*.arxml, ③ 단계 표시✓ Complete!. 그 아래에100%,3 / 3 elements와 경과 시간, Close 버튼이 있다. -
진행 창은 완료 2초 뒤에 저절로 닫힌다. 기다려도 되고 Close 를 클릭해도 된다.
참고. 익스포트는 항상 프로젝트의
export폴더에<프로젝트 이름>_*.arxml이름으로 쓴다.design폴더의 설계 파일은 바뀌지 않는다. 진행 창의 경과 시간은 실행할 때마다0s또는1s로 달라진다.
export 폴더의 파일 네 개 보기
-
EDITOR 뷰에서 EXPORT 머리글을 클릭해 펼친다. EXPORT 에는 프로젝트
export폴더의 파일이 보인다. 파일 네 개가 이름 순서로 보이고, 잘린 이름은 없다.
그림 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.arxml | ECU 노드 ECU, ZONE, SLAVE_ECU 와 HPC 노드 HPC(각 노드의 컨트롤러와 커넥터 포함), 클러스터 CanCluster, EthernetCluster, LinCluster, 네트워크 엔드포인트와 VLAN | 15 356 |
TopologyDesign_DataType.arxml | PAIO 가 모든 프로젝트의 익스포트에 넣는 기본 데이터 타입. 이 설계는 데이터 타입을 쓰지 않는다 | 30 921 |
TopologyDesign_SWC.arxml | 빈 패키지 SwComponentType 하나 | 379 |
TopologyDesign_System.arxml | 시스템 System | 2 354 |
참조 설계는 이 내용이 모두 파일 하나 System_Design.arxml 에 들어 있다.
시스템 System 보기
TopologyDesign_System.arxml 을 XML 편집기로 열기
-
EXPORT 에서
TopologyDesign_System.arxml을 더블클릭한다. XML 편집기 탭이 열리고 1행부터 보인다. 탭 이름은TopologyDesign:TopologyDesign_System.arxml이지만, 탭 폭이 좁아TopologyDesign:TopologyDesign_까지만 보인다. 어느 파일이 열렸는지는 EXPORT 에서 선택된 행으로 알 수 있다. -
편집기 아래의 상태 표시줄을 본다.
Ln 1, Col 1,UTF-8,Schema: R25-11,✓ No problems이다. XML 편집기는 파일을 열 때 PAIO 에 들어 있는 AUTOSAR 스키마로 파일을 자동으로 검사한다.✓ No problems는 스키마 오류가 없다는 뜻이다. 그 위의 PROBLEMS 머리글은 오류가 없으므로 접힌 채이다.
그림 7-4.
TopologyDesign_System.arxml을 연 직후(1-45행). ① 편집기 탭, ② 9행CATEGORYSYSTEM_DESIGN_DESCRIPTION, ③ 12-21행 노드 참조 네 개(ECU,ZONE,SLAVE_ECU,HPC), ④ 24-30행 클러스터 세 개의 참조, ⑤ 39행SYSTEM-VERSION1.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, 18 | FIBEX-ELEMENT-REF DEST="ECU-INSTANCE" = /System/EcuInstance/ECU, /System/EcuInstance/ZONE, /System/EcuInstance/SLAVE_ECU | 입력 없음. System 편집기 캔버스의 ECU 노드이며, 프로젝트와 노드 만들기에서 추가한 순서이다 |
| 21 | FIBEX-ELEMENT-REF DEST="MACHINE-DESIGN" = /System/MachineDesign/HPC | 입력 없음. 캔버스의 HPC 노드이며, ECU 노드 다음에 온다 |
| 24, 27, 30 | CAN-CLUSTER /System/CommunicationCluster/Can/CanCluster, ETHERNET-CLUSTER /System/CommunicationCluster/Ethernet/EthernetCluster, LIN-CLUSTER /System/CommunicationCluster/Lin/LinCluster | CAN 버스, 이더넷 버스, LIN 버스에서 만든 클러스터 |
| 33-38 | ROOT-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 열기
-
EXPORT 에서
TopologyDesign_COM.arxml을 더블클릭한다. 두 번째 탭이 열리고, 이 탭도TopologyDesign:TopologyDesign_까지만 보인다. 상태 표시줄은✓ No problems이다. -
마우스 휠을 아래로 조금 굴려 10행
<ECU-INSTANCE>가 편집기 위쪽에 오게 한다.
그림 7-5.
TopologyDesign_COM.arxml의 ECU 노드ECU(10-51행). ① 활성 편집기 탭, ② 10-11행ECU-INSTANCE와SHORT-NAMEECU, ③ 28-37행LIN-MASTERLinController_Master(PROTOCOL-VERSIONLIN20,TIME-BASE0.001,TIME-BASE-JITTER0.001), ④ 39-48행CONNECTORS(CanConnector,LinConnector_Master와 각 컨트롤러 참조), ⑤ 49-50행SLEEP-MODE-SUPPORTEDtrue,WAKE-UP-OVER-BUS-SUPPORTEDtrue, ⑥ 상태 표시줄의✓ 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-27 | CAN-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-37 | LIN-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-43 | CAN-COMMUNICATION-CONNECTOR CanConnector, COMM-CONTROLLER-REF = /System/EcuInstance/ECU/CanController(42행) | CAN 버스에서 커넥터의 CONTROLLER 로 고른 컨트롤러 |
| 44-47 | LIN-COMMUNICATION-CONNECTOR LinConnector_Master, COMM-CONTROLLER-REF = /System/EcuInstance/ECU/LinController_Master(46행) | LIN 버스에서 커넥터의 CONTROLLER 로 고른 컨트롤러 |
| 49-50 | SLEEP-MODE-SUPPORTED true, WAKE-UP-OVER-BUS-SUPPORTED true | ECU 속성의 SLEEP MODE SUPPORTED, WAKE-UP OVER BUS |
참조 설계의 ECU 에 있는 파티션 두 개 ECU_Partition0, ECU_Partition1 은 이 블록에 없다. ECU 속성에서 본 것처럼 System 편집기에는 파티션을 넣는 칸이 없다.
나머지 두 ECU 노드도 같은 꼴이다. 같은 파일에서 다음 줄을 보면 된다.
| 노드 | 볼 곳 | 내용 |
|---|---|---|
ZONE | 52-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_ECU | 83-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 으로 이동하기
-
편집기 안을 클릭하고
Ctrl+F를 누른다. 편집기 오른쪽 위에 찾기 창이 열린다. -
<MACHINE-DESIGN>을 입력한다. 찾기 창에1 of 1이 보이고, 편집기가 109행으로 이동해 그 글자를 선택한다. 상태 표시줄은Ln 109, Col 29,16 selected이다. -
찾기는 찾은 줄을 편집기 가운데에 놓는다. 블록 전체가 보이도록 마우스 휠을 아래로 몇 칸 굴려 109행이 편집기 위쪽에 오게 한다.

그림 7-6. 찾기로 이동한 HPC 노드(109-135행). ① 109-110행
MACHINE-DESIGN과SHORT-NAMEHPC, ② 114행COMM-CONTROLLER-REF(/System/MachineDesign/HPC/EthernetController), ③ 115-117행UNICAST-NETWORK-ENDPOINT-REF(HPC_EthernetConnector_Endpoint), ④ 121-128행ETHERNET-COMMUNICATION-CONTROLLEREthernetController(MAC-UNICAST-ADDRESS00:11:22:33:44:55), ⑤ 130-134행SERVICE-DISCOVERY-CONFIGS, ⑥ 찾기 창(<MACHINE-DESIGN>,1 of 1). 아래쪽에는CanCluster와 148행BAUDRATE500000이 보인다.
블록 읽기
| 줄 | 내용 | 화면에서 넣은 곳 |
|---|---|---|
| 109-110 | <MACHINE-DESIGN>, <SHORT-NAME>HPC</SHORT-NAME> | 프로젝트와 노드 만들기의 HPC 노드. HPC 노드는 ECU-INSTANCE 가 아니라 MACHINE-DESIGN 으로 나간다 |
| 112-113 | ETHERNET-COMMUNICATION-CONNECTOR EthernetConnector | 이더넷 버스에서 만든 커넥터 |
| 114 | COMM-CONTROLLER-REF = /System/MachineDesign/HPC/EthernetController | 커넥터의 CONTROLLER EthernetController |
| 115-117 | UNICAST-NETWORK-ENDPOINT-REF = /System/CommunicationCluster/Ethernet/EthernetCluster/PhysicalChannel/HPC_EthernetConnector_Endpoint | 커넥터의 UNICAST IPV4 ADDRESS 192.168.0.11 |
| 121-128 | ETHERNET-COMMUNICATION-CONTROLLER EthernetController, MAC-UNICAST-ADDRESS 00:11:22:33:44:55(125행) | 컨트롤러의 MAC ADDRESS |
| 130-134 | SERVICE-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 커넥터를 바로잡은 곳" 절에서 설명한다.
이더넷 엔드포인트 보기
찾기 문자열 바꾸기
-
찾기 창의 입력칸 내용을 지우고
<NETWORK-ENDPOINTS>를 입력한다. 찾기 창에1 of 1이 보이고, 편집기가 185행으로 이동한다. 상태 표시줄은Ln 185, Col 46,19 selected이다. -
앞에서와 같이 마우스 휠을 아래로 굴려 185행이 편집기 위쪽에 오게 한다.

그림 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-PRIORITY0,TTL0), ④ 216-223행SO-AD-CONFIG의 소켓HPC_EthernetConnector_Multicast_Socket과ApplicationEndpoint. 그 아래 224-227행MULTICAST-CONNECTOR-REFS는ZONE과HPC의EthernetConnector를 가리킨다.
블록 읽기
| 줄 | 엔드포인트 | 주소 | 화면에서 넣은 곳 |
|---|---|---|---|
| 186-194 | ZONE_EthernetConnector_Endpoint | IPV-4-ADDRESS 192.168.0.19(190행), IPV-4-ADDRESS-SOURCE FIXED(191행) | ZONE 커넥터의 UNICAST IPV4 ADDRESS 와 ADDRESS SOURCE 의 FIXED |
| 195-203 | HPC_EthernetConnector_Endpoint | 192.168.0.11(199행), FIXED(200행) | HPC 커넥터의 UNICAST IPV4 ADDRESS 와 FIXED |
| 204-214 | HPC_EthernetConnector_Multicast | 224.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 클러스터 보기
찾기 문자열 바꾸기
-
찾기 창의 입력칸 내용을 지우고
<VLAN>을 입력한다. 찾기 창에1 of 1이 보이고, 편집기가 231행으로 이동한다. 상태 표시줄은Ln 231, Col 33,6 selected이다. -
마우스 휠을 아래로 굴려 231행이 편집기 위쪽에 오게 한다.

그림 7-8. 찾기로 이동한 VLAN 과 LIN 클러스터(230-273행). ① 231-234행
VLANVLAN_13과VLAN-IDENTIFIER13, ② 245-246행LIN-CLUSTER와SHORT-NAMELinCluster, ③ 249행BAUDRATE19200, ④ 254-258행 채널에 붙은SLAVE_ECU의LinConnector(255행)와ECU의LinConnector_Master(258행) 참조. 채널은BUS-IDLE-TIMEOUT-PERIOD없이 261행에서 끝난다. -
Escape키를 눌러 찾기 창을 닫는다.
블록 읽기
| 줄 | 내용 | 화면에서 넣은 곳 |
|---|---|---|
| 231-234 | VLAN VLAN_13, VLAN-IDENTIFIER 13 | 이더넷 버스에서 채널에 넣은 VLAN ID 13. 이름 VLAN_13 은 익스포트가 VLAN_<ID> 로 붙인다 |
| 245-246 | LIN-CLUSTER LinCluster | LIN 버스의 클러스터 NAME |
| 249 | BAUDRATE 19200 | 입력 없음. PAIO 가 새 LIN 클러스터에 저장하는 값이다 |
| 252 | 채널 PhysicalChannel | 클러스터의 CHANNEL NAME |
| 255, 258 | COMMUNICATION-CONNECTOR-REF = /System/EcuInstance/SLAVE_ECU/LinConnector, /System/EcuInstance/ECU/LinConnector_Master | 클러스터에 붙인 두 커넥터. 순서도 같다 |
| 251-261 | BUS-IDLE-TIMEOUT-PERIOD 가 없는 LIN-PHYSICAL-CHANNEL | 입력 없음. LIN 버스에서 클러스터의 IDLE TIMEOUT 이 10 ms 를 받지 않아 비어 있다 |
나머지 두 클러스터도 같은 꼴이다.
| 클러스터 | 볼 곳 | 내용 |
|---|---|---|
CanCluster | 144-164행 | BAUDRATE 500000(148행), 채널 PhysicalChannel 에 ZONE 과 ECU 의 CanConnector(154, 157행) |
EthernetCluster | 170-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-SOURCE | WIRED, 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)이 있는 요소를 패키지 경로로 짝지어 했다.
요약
| 참조 설계 | 내 익스포트 | |
|---|---|---|
| 파일 | 1 | 4 |
| 이름이 있는 요소(패키지 제외) | 29 | 79 |
| 경로가 같은 요소 | 1 | 1 |
| 다른 패키지로 옮겨진 요소 | 22 | 22 |
| 같은 자리에서 이름이 바뀐 요소 | 4 | 4 |
| 참조 설계에만 있는 요소 | 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 소켓 | 2 | SOCKET-ADDRESS HPC_EthernetConnector_Multicast_Socket, APPLICATION-ENDPOINT ApplicationEndpoint | 자동 생성: 멀티캐스트 주소가 있는 커넥터마다 익스포트가 만든다 |
| 기본 데이터 타입 | 49 | TopologyDesign_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 가 모든 익스포트에 넣는 기본 타입이다. 이 설계는 쓰지 않는다 |
| 루트 컴포지션 | 1 | ROOT-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-FD | CanCluster | 없음 | CAN 버스 |
PROTOCOL-NAME IEEE 802.3 | EthernetCluster | 없음 | 이더넷 버스 |
CATEGORY WIRED | 이더넷 채널, 컨트롤러 2개, 커넥터 2개 | 없음 | 이더넷 버스 |
MAC-LAYER-TYPE X-MII | 이더넷 컨트롤러 2개 | 없음 | 이더넷 버스 |
WAKE-UP-BY-CONTROLLER-SUPPORTED | LinController_Master(true), HPC 의 EthernetController(false) | 없음 | LIN 버스, 이더넷 버스 |
BUS-IDLE-TIMEOUT-PERIOD 0.01 | LinCluster 의 채널 PhysicalChannel | 없음 | LIN 버스 |
CATEGORY SYSTEM_DESCRIPTION | SYSTEM System | SYSTEM_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 false | HPC 의 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-VERSION1.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를 참조한다. - 두 탭 어느 것에도 수정됨 표시
●가 없다.
다음 단계
튜토리얼의 본문은 여기까지이다. 이어서 부록을 본다.