Skip to main content

ECUC

이 장에서 다루는 것

이 장에서는 AUTOSAR Classic Platform의 BSW 모듈 설정(ECUC)을 다루는 두 에디터와, IVC·Signal 모델에서 설정을 자동 생성하는 기능, 그리고 ECUC 전용 임포트·익스포트 경로를 설명합니다. BSW 모듈의 파라미터 구조(정의)와 그 값(설정)을 직접 다루는 사용자를 대상으로 합니다. 시작하기 전에 프로젝트가 열려 있어야 하고, 자동 생성을 사용할 경우 06. IVC 에디터에 CAN 토폴로지가, 07. Signal 에디터에 프레임·PDU·시그널이 정의되어 있어야 합니다.

두 에디터가 다루는 대상과 저장 위치를 정리하면 다음과 같습니다.

대상에디터저장 위치
모듈 정의(스키마)Module Definition 에디터모듈 정의
모듈 설정값Module Configuration 에디터모듈 설정

정의(.def)는 "어떤 파라미터가 있는가"를, 설정(.conf)은 "그 값이 무엇인가"를 담습니다. 설정 하나는 반드시 어떤 정의를 참조하며, 정의 하나에 설정을 여러 개 만들 수 있습니다(1:N). 설정 파일이 ECU 하위 폴더에 놓이는지 Configuration/ 바로 아래에 놓이는지는 그 설정의 ECU 값이 결정합니다(12.2.5 참고).

이 두 에디터는 다른 에디터와 조작 방식이 조금 다릅니다. 파일 하나씩을 오가며 편집하는 탐색형 에디터이므로 자체 위젯 계층을 사용합니다. 다만 저장·실행 취소·다시 실행의 동작 자체는 다른 에디터와 동일합니다.

12.1 Module Definition 에디터

12.1.1 여는 방법과 화면 구성

Module Definition 에디터는 다음 순서로 엽니다.

  1. 프로젝트 탐색기에서 design ▸ Module 아래의 Definition 노드를 더블클릭합니다. Module Definition 탭이 열립니다.
  2. 탭이 열린 직후에는 어떤 모듈도 로드되지 않은 상태입니다. 좌측 MODULE 패널에서 모듈을 선택합니다. 가운데 트리와 우측 속성 패널이 채워집니다.

Definition 노드는 펼쳐지지 않습니다. 셰브론이 없고, 폴더 안의 모듈 정의 파일이 탐색기 트리에 개별 노드로 나타나지도 않습니다. 파일 목록은 에디터의 MODULE 패널이 담당합니다.

화면은 좌·중·우 3분할이며, 패널 사이 경계선을 드래그해 폭을 조절할 수 있습니다. 좌측 패널의 제목은 MODULE, 가운데 패널의 제목은 DEFINITION 입니다. 우측 속성 패널에는 고정 제목이 없고, 대신 선택한 항목에 따라 Module: <이름>, Container: <이름>, Parameter: <이름>, Reference: <이름> 형식의 헤더가 표시됩니다.

Module Definition 에디터 — MODULE · DEFINITION · 속성 3분할

표준 정의를 임포트한 프로젝트에서 Can 모듈을 고른 상태입니다. 가운데 트리를 모두 펼쳐 두었기 때문에 각 행이 배지 · 이름 · [하한..상한] 형식이라는 것이 한눈에 들어옵니다 — C 는 컨테이너, I·F·B·E 는 파라미터 종류, R 은 레퍼런스입니다. 우측은 Container: CanController 헤더 아래로 BASIC INFO · MULTIPLICITY · METADATA 구역이 이어집니다.

12.1.2 MODULE 패널

패널의 두 버튼은 다음과 같이 동작합니다.

버튼도구 설명동작
+Add Module이름을 물어보는 다이얼로그를 열고 모듈 정의를 만듭니다
Delete Module선택한 모듈을 확인 후 삭제합니다
  • + 를 누르면 Add Module Definition 다이얼로그가 열립니다. 입력값 검증 메시지는 세 가지입니다. 비어 있으면 Module name is required, 문자 규칙 위반이면 Module name must start with a letter and contain only letters, numbers, and underscores, 이미 있는 이름이면 Module "<입력값>" already exists 입니다.
  • 는 모듈이 선택되어 있어야 누를 수 있습니다. 누르면 Delete Module 확인 다이얼로그 (Are you sure you want to delete module "<이름>"?)가 열립니다.
  • 목록이 비어 있으면 No modules found. 가 표시됩니다.
  • 목록에 포커스를 두면 위·아래 방향키로 이동하고 Enter 로 선택할 수 있습니다.
  • 새로 만든 모듈과 삭제 예약은 저장 시점에 디스크에 반영됩니다. 즉 + 로 만든 직후에는 파일이 아직 없고, Ctrl+S 를 눌러야 모듈 정의 파일이 생깁니다.
  • 다른 모듈로 이동하기 전에 편집 내용이 남아 있으면 자동으로 저장합니다. 탐색형 에디터가 한 번에 한 파일만 들고 있으므로, 저장하지 않고 전환하면 편집이 사라지기 때문입니다.

12.1.3 DEFINITION 트리

이 트리에서는 컨테이너·파라미터·레퍼런스의 계층을 편집합니다. 각 행은 배지 · 이름 · [하한..상한] 형식입니다. 무제한 상한은 컨테이너 행과 레퍼런스 행에서 * 로, 파라미터 행에서는 inf 로 표시됩니다.

컨테이너 배지는 두 가지입니다.

종류배지
컨테이너 (ParamDef)C
컨테이너 (Choice)CH

파라미터와 레퍼런스는 타입마다 배지가 다릅니다.

파라미터 타입배지레퍼런스 타입배지
integerIreferenceR
floatFforeign-referenceFR
booleanBinstance-referenceIR
enumEchoice-referenceCR
stringSsymbolic-name-referenceSNR
function-nameFN
linker-symbolLS
multiline-stringMS
add-infoAI

파라미터의 OriginAUTOSAR_ECUC 가 아니면(벤더 정의) 타입 배지 대신 V 배지가 붙습니다. 즉 V 는 타입 배지를 대체하므로, 그 행의 파라미터 타입은 배지로 구분되지 않습니다. 레퍼런스에는 V 배지가 붙지 않습니다.

툴바 버튼은 세 개입니다.

버튼도구 설명동작비활성 조건
+Add Container최상위 컨테이너를 추가합니다모듈이 로드되지 않음
Delete선택한 컨테이너·파라미터·레퍼런스를 삭제합니다선택이 없거나 모듈 자체가 선택됨
펼침 아이콘Expand All / Collapse All전체 펼치기·접기를 번갈아 실행합니다컨테이너가 하나도 없음

트리의 빈 상태 문구는 두 가지입니다. 모듈을 고르지 않았으면 Select a module from Module Explorer., 모듈은 열렸지만 컨테이너가 없으면 No containers. Click [+] to add. 가 표시됩니다.

행 조작은 다음과 같습니다. 좌클릭은 선택, 셰브론 클릭이나 더블클릭은 펼치기·접기, 우클릭은 컨텍스트 메뉴입니다.

컨테이너 행의 컨텍스트 메뉴

항목하위 메뉴
Add ContainerParamDef / Choice
Add ParameterInteger / Float / Boolean / Enumeration / String / Function Name / Linker Symbol / Multiline String / Add Info
Add ReferenceReference / Foreign Reference / Instance Reference / Choice Reference
Delete없음

파라미터 행과 레퍼런스 행의 컨텍스트 메뉴에는 Delete 만 있습니다. 추가 메뉴는 컨테이너 행에만 나타납니다. 하위 항목은 그것을 담을 컨테이너 아래에만 만들 수 있기 때문입니다.

삭제는 툴바 와 컨텍스트 메뉴 Delete 모두 확인 다이얼로그 없이 즉시 수행됩니다. 되돌리려면 Ctrl+Z 를 사용합니다.

새로 만든 항목의 기본 이름은 NewContainer, NewParam, NewRef 이며, 같은 이름이 이미 있으면 NewContainer_1 처럼 뒤에 번호가 붙습니다. 초기값은 다음과 같습니다.

항목초기 타입초기 다중도그 밖의 초기값
컨테이너툴바 + 는 ParamDef, 컨텍스트 메뉴는 고른 종류0..*없음
파라미터메뉴에서 고른 타입(직접 지정하지 않으면 integer)1..1integer는 Range 0..4294967295, float는 0..3.4028235e38, boolean은 Default FALSE, enum은 Literal value1 하나와 Default value1
레퍼런스메뉴에서 고른 종류(직접 지정하지 않으면 reference)1..1Destination 비어 있음

Symbolic Name Reference(SNR)는 추가 메뉴에 없고, 임포트한 정의에서만 나타납니다. 익스포트할 때는 일반 Reference로 나가며 REQUIRES-SYMBOLIC-NAME-VALUEtrue 로 함께 붙습니다(모델에 명시적으로 FALSE 가 들어 있으면 그 값이 유지됩니다). 따라서 ARXML 왕복을 거치면 이 종류는 reference 로 정규화되고, SNR 이라는 구분은 모듈 정의 안에만 남습니다.

12.1.4 속성 패널

선택한 항목의 속성을 구역별로 편집합니다. 구역 제목은 Basic Info, Multiplicity, Type Options, Reference Options, Value & Variant, Variant Support, Metadata 입니다.

모듈 선택 시

구역필드
Basic InfoName, Target, Version, Description
Variant SupportSupported Config Variants, Post-Build Variant Support

Target 의 선택지는 AUTOSAR Classic Platform, AUTOSAR Adaptive Platform, Custom Middleware 세 가지입니다.

컨테이너 선택 시

구역필드
Basic InfoType(읽기 전용, Container:ParamDef 또는 Container:Choice), Name
MultiplicityMultiplicity, Requires Index, Post-Build Variant Multiplicity, Multiplicity Config Classes
MetadataOrigin, Description

파라미터 선택 시

구역필드
Basic InfoType(읽기 전용), Name
MultiplicityMultiplicity, Requires Index, Post-Build Variant Multiplicity, Multiplicity Config Classes
Type Options타입별 (아래 표)
Value & VariantWith Auto, Symbolic Name Value, Post-Build Variant Value, Value Config Classes
MetadataOrigin, Description

타입별 Type Options 구성은 다음과 같습니다.

파라미터 타입표시 라벨Type Options
integer / floatInteger / FloatRange(min..max), Default
booleanBooleanDefault (3상태)
enumEnumerationLiteral 표, Default 콤보
stringStringDefault, Length(min..max), Regular Expression
function-nameFunction NameDefault, Length, Regular Expression
linker-symbolLinker SymbolDefault, Length, Regular Expression
multiline-stringMultiline StringDefault(여러 줄), Length, Regular Expression
add-infoAdd Info없음

레퍼런스 선택 시

구역필드
Basic InfoType(읽기 전용), Name
Multiplicity컨테이너와 동일
Reference Options종류별 (아래)
Value & VariantWith Auto, Requires Symbolic Name Value, Post-Build Variant Value, Value Config Classes
MetadataOrigin, Description

레퍼런스 종류별 Reference Options 구성은 다음과 같습니다.

레퍼런스 종류Reference Options
Reference / Symbolic Name ReferenceDestination — 컨테이너 경로 검색 콤보
Choice ReferenceDestinations — 여러 컨테이너 경로를 체크로 고르는 표
Foreign ReferenceDestination Type — AUTOSAR 메타타입 콤보
Instance ReferenceDestination Type + Destination Context

편집 규칙에서 알아 둘 점은 다음과 같습니다.

  • Multiplicity 는 하한·상한 두 칸입니다. 상한 칸에 * 또는 inf 를 입력하면 무제한이 됩니다.
  • 3상태 필드(Requires Index, With Auto, Post-Build Variant Value 등)는 미설정 · TRUE · FALSE 세 상태를 갖습니다. 미설정은 false 와 다르며, 미설정 값은 익스포트 시 아예 방출되지 않습니다. 그래서 임포트한 문서를 다시 내보내도 없던 필드가 생기지 않습니다.
  • Value Config Classes / Multiplicity Config Classes 는 변형(variant)과 클래스의 짝을 여러 줄로 편집합니다. 클래스 선택지는 PRE-COMPILE, LINK, POST-BUILD, PUBLISHED-INFORMATION 이고, 변형 선택지는 VARIANT-PRE-COMPILE, VARIANT-LINK-TIME, VARIANT-POST-BUILD 입니다. 목록을 모두 비우면 필드가 사라진 상태(미설정)가 됩니다.
  • Supported Config Variants 도 같은 세 변형을 체크 목록으로 선택합니다.
  • Destination Type 콤보는 DEST 카탈로그에 등록된 62종의 AUTOSAR 메타타입을 제안하지만, 목록에 없는 값을 직접 입력해도 그대로 저장됩니다(벤더 확장 대응).
  • Range 의 상한이 무제한이면 입력 칸에 값 대신 INF 자리표시자가 보입니다. 실제로 편집해야만 값이 덮어써집니다.

12.2 Module Configuration 에디터

12.2.1 여는 방법과 화면 구성

Module Configuration 에디터는 다음 순서로 엽니다.

  1. 프로젝트 탐색기에서 design ▸ Module 아래의 Configuration 노드를 더블클릭합니다. Module Config 탭이 열립니다.
  2. 탭이 열린 직후에는 어떤 설정도 로드되지 않은 상태입니다. 좌측 MODULE 패널에서 정의 모듈을 펼치고 그 아래의 설정을 선택합니다. 가운데 트리와 우측 값 편집 패널이 채워집니다.

Configuration 노드도 펼쳐지지 않습니다. ECU 하위 폴더에 들어 있는 모듈 설정 파일은 탐색기 트리에 전혀 나타나지 않습니다. 설정 목록은 에디터의 MODULE 패널이 담당하며, 이 패널은 Configuration/ 바로 아래와 ECU 하위 폴더를 모두 훑습니다.

가운데 패널의 제목은 CONFIGURATION 입니다. 우측 값 편집 패널에는 고정 제목이 없고, 선택에 따라 Module: <이름>, Container: <이름>, Definition: <이름> 헤더가 표시됩니다.

가운데 패널은 위아래로 나뉘며, 아래쪽에 DescriptionValidation 두 탭이 있습니다. 두 영역 사이의 경계선을 드래그해 높이를 조절할 수 있습니다.

Module Configuration 에디터 — MODULE · CONFIGURATION · 값 편집 3분할

좌측 MODULE 은 정의 모듈이 상위, 그 모듈의 설정이 하위인 2단 트리입니다. 설정을 가진 모듈에만 개수가 붙어 있어(Can 1, CanIf 1, Os 1) 어디에 무엇이 있는지 바로 보입니다. 여기서는 CanIf 설정을 골랐고, 가운데에 그 설정의 최상위 컨테이너가 다중도와 함께 나열됐습니다.

12.2.2 MODULE 패널

정의 모듈을 상위 행으로, 그 모듈의 설정 인스턴스를 하위 행으로 보여 주는 2단 트리입니다.

  • 정의 모듈 행: 셰브론 · 모듈 이름 · 설정 개수(설정이 하나 이상일 때만) · + 버튼으로 구성됩니다. 행을 클릭하면 펼쳐지거나 접힙니다.
  • 설정 행: 설정 이름(ECU 값이 있으면 이름 (ECU명) 형식) · × 버튼으로 구성됩니다. 여기 표시되는 이름은 설정 파일 안에 기록된 이름이며, 그 값이 없을 때만 파일 이름을 대신 사용합니다.

패널에서 할 수 있는 조작은 다음과 같습니다.

조작도구 설명동작
정의 모듈 행의 +Create Configuration그 정의를 기반으로 새 설정을 만듭니다
설정 행의 ×Delete Configuration확인 후 설정을 삭제합니다
설정 행 더블클릭없음이름을 그 자리에서 편집합니다
설정 행 우클릭 ▸ Rename없음이름을 그 자리에서 편집합니다
설정 행 우클릭 ▸ Delete없음확인 후 설정을 삭제합니다
  • 새 설정의 이름은 <모듈명>_0 에서 시작해 비어 있는 번호를 찾습니다. 예를 들어 Can 정의에서 Create Configuration 을 두 번 누르면 Can_0, Can_1 이 만들어집니다.
  • 삭제는 Delete Configuration 다이얼로그(Are you sure you want to delete "<이름>"?)로 확인한 뒤 진행됩니다.
  • 새로 만든 설정은 저장 전까지 디스크에 없습니다. 그래서 목록이 다시 스캔되어도 사라지지 않도록 메모리에 따로 붙잡아 둡니다. Ctrl+S 를 눌러야 모듈 설정 파일이 생깁니다.
  • 이름 바꾸기는 Enter 로 확정하고 Esc 로 취소합니다. 확정하면 파일 이름도 같은 폴더 안에서 바뀝니다. 즉 ECU 하위 폴더에 있던 설정은 그 폴더에 그대로 남습니다.
  • 이름 충돌 검사 기준은 모듈이 아니라 대상 폴더입니다. ECU1의 Os 설정이 이미 있으면 ECU1 폴더 안의 다른 설정을 Os 로 바꿀 수 없지만, ECU2의 Os 설정은 다른 파일이므로 막지 않습니다.
  • 정의가 하나도 없으면 No module definitions found., 특정 정의에 설정이 없으면 No configurations 가 표시됩니다.
  • 다른 설정으로 이동하기 전에 저장하지 않은 편집이 있으면 자동으로 저장합니다.

12.2.3 CONFIGURATION 트리

이 트리는 정의를 뼈대로 삼습니다. 즉 정의에 선언된 컨테이너가 그룹 행으로 먼저 나오고, 그 아래에 실제 인스턴스가 붙습니다.

  • 정의 그룹 행: C 또는 CH 배지(외곽선 스타일) · 정의 이름 · + 버튼 · 다중도로 구성됩니다. 현재 인스턴스 수가 하한에 못 미치면 다중도가 붉게 표시되고 At least <n> required 툴팁이 나타납니다.
  • 인스턴스 행: C 배지 · 인스턴스 이름 · [정의 이름] 으로 구성됩니다.

인스턴스를 추가하는 절차는 다음과 같습니다.

  1. 정의 그룹 행 오른쪽의 +(도구 설명 Add <정의 이름>)를 누릅니다. 그 정의의 인스턴스가 생성되고, 정의에 기본값이 있는 파라미터는 기본값으로 채워집니다.
  2. 상한에 도달했거나 Choice 컨테이너에서 다른 갈래가 이미 선택되어 있으면 + 버튼 자체가 나타나지 않습니다.
  3. 이름은 자동으로 정해집니다. 상한이 1이면 정의 이름 그대로, 그보다 크면 <정의명>_0, <정의명>_1 순으로 붙습니다.

툴바의 +(Add Container)는 인스턴스를 바로 만들지 않습니다. 추가 가능한 첫 정의 그룹 행으로 스크롤해 줄 뿐입니다. 실제 추가는 그 행의 + 버튼이나 컨텍스트 메뉴로 합니다.

툴바 버튼은 세 개입니다.

버튼도구 설명동작비활성 조건
+Add Container추가 가능한 첫 정의 그룹으로 스크롤합니다설정이 로드되지 않음
Delete선택한 인스턴스를 확인 후 삭제합니다컨테이너 인스턴스가 선택되지 않음
펼침 아이콘Expand All / Collapse All전체 펼치기·접기트리가 비어 있음

인스턴스 행의 컨텍스트 메뉴

항목동작
Add Container하위 정의 컨테이너 목록에서 골라 인스턴스를 만듭니다
RenameRename Container 다이얼로그를 엽니다
Duplicate인스턴스를 복제합니다
DeleteDelete Container 확인 다이얼로그를 거쳐 삭제합니다

Rename Container 다이얼로그의 검증 메시지는 두 가지입니다. 비어 있으면 Name is required, 문자 규칙 위반이면 Must start with a letter, only letters/digits/underscores 입니다. 삭제 확인 문구는 Delete container "<이름>"? 입니다.

Choice 컨테이너 아래에서는 이미 한 갈래를 선택한 뒤에는 다른 갈래가 메뉴와 + 버튼 양쪽에서 사라집니다. Choice는 하나만 고를 수 있기 때문입니다.

빈 상태 문구는 두 가지입니다. 설정을 고르지 않았으면 Select a module from the list., 정의에 최상위 컨테이너가 없으면 No container definitions available. 가 표시됩니다.

12.2.4 Description 탭과 Validation 탭

가운데 패널 아래쪽의 두 탭은 모두 읽기 전용입니다.

Description 탭은 방금 클릭한 파라미터·레퍼런스·컨테이너의 정의 설명을 보여 줍니다. 구성은 배지 · 이름 · [Type, 하한..상한, Origin] 제목 줄, integer/float일 때의 보조 줄 (Range: 0..65535, Default: 1 형식), 그리고 설명 본문입니다. 아무것도 선택하지 않았으면 Select a parameter or reference to view its description., 정의에 설명이 없으면 No description available. 가 표시됩니다.

Validation 탭

탭 이름 옆의 숫자가 검출 건수이고, 탭을 열면 첫 줄에 16 error(s), 29 warning(s) 형식의 합계가 나옵니다. 항목은 컨테이너 경로별로 묶이며 각 줄 오른쪽에 어느 모듈에서 나온 것인지 배지가 붙습니다. 표준 정의를 그대로 임포트하면 값이 채워지지 않은 필수 파라미터가 이렇게 남습니다.

Validation 탭은 프로젝트의 ECUC 설정 전체를 검사한 결과를 컨테이너 경로별로 묶어 보여 줍니다. 문제가 없으면 No issues found., 있으면 <n> error(s), <n> warning(s) 요약이 먼저 나타납니다.

검사 항목은 다음과 같습니다.

코드심각도의미
DEF_NOT_FOUNDwarning인스턴스가 가리키는 정의를 찾지 못함
MISSING_REQUIRED_PARAMwarning하한이 1 이상인 파라미터에 값이 없음
VALUE_RANGEerror숫자 값이 정의의 min/max를 벗어남
ENUM_INVALIDerror열거 값이 정의의 리터럴 목록에 없음
REF_MULT_MIN / REF_MULT_MAXerror레퍼런스 값 개수가 다중도를 벗어남
REF_UNRESOLVEDwarning레퍼런스가 가리키는 대상을 찾지 못함
REF_CONTEXT_UNRESOLVEDwarningInstance Reference의 컨텍스트 체인 항목이 가리키는 대상을 찾지 못함
REF_DEST_MISMATCHerror레퍼런스 대상이 destination과 맞지 않음
MULT_MIN_VIOLATION / MULT_MAX_VIOLATIONerror컨테이너 인스턴스 수가 다중도를 벗어남
NAME_DUPLICATEerror같은 범위 안에 이름이 같은 컨테이너가 둘 이상 있음

프로젝트 전체 검증 패널과의 관계는 14. Validation을 참고하세요.

12.2.5 값 편집 패널

컨테이너 인스턴스를 선택했을 때의 값 편집 패널

가운데 트리를 모두 펼치고 CanIfInitCfg 인스턴스를 고른 상태입니다. 트리에서 정의 그룹과 실제 인스턴스가 구분되는 것을 볼 수 있습니다 — CanIfRxPduCfg_WheelButtons 처럼 오른쪽에 [정의 이름] 이 붙은 행이 인스턴스입니다. 우측에는 PARAMETERS 가 종류 배지·다중도·값 순으로, 그 아래 SUB-CONTAINERS현재 개수/상한 과 함께 놓입니다.

모듈을 선택했을 때(트리에서 아무 인스턴스도 고르지 않은 상태)의 구역은 세 가지입니다.

구역필드
Basic InfoName, Definition(읽기 전용), ECU, Extensions(있을 때만, 읽기 전용)
VariantImplementation Config Variant, Post-Build Variant Used
Containers최상위 컨테이너 인스턴스 추가·삭제
  • Name 을 바꾸면 모듈 설정 파일 이름도 함께 바뀝니다. 옛 파일은 지워지고 새 파일이 만들어지며, 다른 모듈 설정이 들고 있던 참조 경로도 함께 갱신됩니다. 이 전체가 하나의 실행 취소 단위입니다.
  • ECU 콤보에서 값을 고르면 파일이 Configuration/<ECU>/ 아래로 이동합니다. 값을 지우면 Configuration/ 바로 아래로 돌아옵니다. 후보 목록은 IVC 모델의 ECU 노드 이름만이며, HPC 노드는 이 목록에 나타나지 않습니다. (none) 항목으로 해제할 수 있고, 목록에 없는 이름을 직접 입력할 수도 있습니다. 한 프로젝트가 여러 ECU에 같은 모듈을 설정할 수 있으므로, 설정의 신원은 <ECU>/<이름> 조합입니다.
  • Implementation Config Variant 의 선택지는 정의의 Supported Config Variants 가 비어 있지 않으면 그 목록이고, 비어 있으면 표준 5종(VARIANT-PRE-COMPILE, VARIANT-LINK-TIME, VARIANT-POST-BUILD, PRECONFIGURED-CONFIGURATION, RECOMMENDED-CONFIGURATION)입니다. 임포트한 값이 목록 밖이어도 그대로 선택 상태로 남습니다. - 를 고르면 미설정이 됩니다.
  • Post-Build Variant Used 는 미설정 · TRUE · FALSE 의 3상태입니다. 미설정을 false 로 바꿔 적지 않습니다.

컨테이너 인스턴스를 선택했을 때의 구역은 Basic Info(Definition 읽기 전용, Name), Parameters, References, Sub-Containers 입니다. 뒤의 세 구역은 정의가 해당 항목을 선언했을 때만 나타납니다. 예를 들어 파라미터를 하나도 선언하지 않은 컨테이너에는 Parameters 구역 자체가 생기지 않습니다.

파라미터 행의 형식은 타입 배지 · [하한..상한] 배지 · (유효 Config Class 배지) · 이름 · 입력 위젯 · 기본값 버튼 입니다. 다중도 배지의 무제한 상한은 파라미터 행에서 inf, 레퍼런스 행에서 * 로 표시됩니다. 라벨을 클릭하면 아래 Description 탭이 그 파라미터의 설명으로 바뀝니다.

타입별 입력 형태는 다음과 같습니다.

파라미터 타입입력 형태
Integer / Float숫자 입력. 정의에 범위가 있으면 0..65535 형태의 자리표시자가 표시됩니다
Boolean3상태 토글 (미설정 → TRUEFALSE 순환)
Enumeration콤보 상자. - 를 고르면 값이 지워집니다
String / Function Name / Linker Symbol한 줄 텍스트 입력
Multiline String / Add Info여러 줄 텍스트 입력
  • 값이 설정되어 있지 않아도 정의에 기본값이 있으면 입력 칸에는 그 기본값이 채워져 보입니다. 즉 화면에 값이 보인다고 해서 설정 파일에 값이 저장되어 있다는 뜻은 아닙니다. Boolean 만 예외로, 미설정과 FALSE 를 구분하기 위해 기본값을 채우지 않습니다.
  • 값을 완전히 비우면 그 파라미터 값 자체가 설정에서 제거됩니다(미설정으로 돌아갑니다).
  • 하한이 1 이상인데 값이 비어 있으면 입력 칸이 경고 표시로 강조됩니다.

행 오른쪽의 되돌리기 아이콘 버튼은 정의에 선언된 기본값으로 값을 되돌립니다. 정의에 기본값이 없으면 이 버튼은 보이지 않습니다(자리만 남습니다). 기본값이 있으면 툴팁에 Default: <값> 이 표시됩니다.

레퍼런스 행은 다중도에 따라 두 형태로 나뉩니다.

다중도형태
상한이 1검색 콤보 상자 하나. - 로 값 해제
상한이 2 이상 또는 무제한체크 목록을 여는 트리거 + 선택된 값들의 행 목록
  • 다중 레퍼런스의 체크 목록에서는 후보를 체크해 추가하고, 체크를 풀거나 행의 제거 버튼으로 뺍니다. 목록 위의 검색 입력은 자유 입력도 겸하므로, 후보에 없는 경로를 직접 입력하고 Enter 를 눌러 넣을 수 있습니다. ECUC 경로가 후보 집합 밖일 수 있기 때문입니다.
  • 하한이 1 이상인데 값이 하나도 없으면 트리거나 입력 칸의 밑줄이 붉게 표시됩니다.
  • 대상이 존재하지 않는 값은 미해결 표시로 강조됩니다. 다만 Foreign/Instance Reference는 DEST 카탈로그가 판정 가능한 메타타입일 때만 판정하고, 그 밖에는 판정 자체를 건너뜁니다(12.3 참고).
  • Instance Reference 에 값이 있으면 그 아래에 Context Refs 행이 생깁니다. 여기서 DEST 칸과 VALUE 칸으로 이루어진 컨텍스트 체인을 한 줄씩 편집합니다. 두 칸 모두 후보를 제안하지만 자유 입력도 받습니다. 다중 레퍼런스일 때는 각 행을 펼쳐 그 항목의 체인을 따로 편집합니다.
  • 파라미터·레퍼런스 옆에 붙는 Config Class 배지는 표시 전용입니다. 모듈에서 고른 Implementation Config Variant 와 짝이 맞는 항목이 있을 때만 나타나며, 편집을 막지 않습니다.

12.3 레퍼런스가 해석되는 방식

이 절에서는 레퍼런스 후보 목록이 어떻게 만들어지고, 미해결 판정과 자동 갱신이 언제 이루어지는지 설명합니다. ECUC 레퍼런스의 후보 목록은 정의의 destination 경로로 걸러집니다. 경로 형식을 정리하면 다음과 같습니다.

항목형식
정의의 destination모듈명/컨테이너명[/하위...]Os/OsApplication
설정 인스턴스 경로모듈명/인스턴스명[/하위...]Os/OsApplication_0
ARXML DESTINATION-REF/AR패키지.../모듈/컨테이너/AUTOSAR/EcucDefs/Os/OsApplication
  • PAIO 안에서는 AR-PACKAGE 경로를 쓰지 않습니다. 임포트 시 AR-PACKAGE 접두어를 떼고, 익스포트 시 다시 붙입니다(/{EcucModuleDef}/...).
  • 같은 모듈 안의 컨테이너와 다른 모듈의 컨테이너를 모두 후보로 모아 보여 줍니다.
  • Choice Reference 는 destination이 여러 개입니다. 각각을 따로 해석해 결과를 합치고 중복을 없앱니다.

Foreign/Instance Reference의 DESTINATION-TYPE(AUTOSAR 메타타입)은 내부 대응 표를 통해 PAIO 안의 대상과 연결됩니다. 카탈로그에는 62종이 등재되어 있고 세 등급으로 나뉩니다.

등급개수동작
resolved16PAIO 안에 같은 이름의 요소가 있습니다. 후보 드롭다운·미해결 판정·이름 변경 추종이 모두 켜집니다
derived8이름이 익스포트 시 합성됩니다(PT_<pdu> 등). 합성 이름 기준으로 후보와 판정을 제공합니다
opaque38PAIO 안에 대응 요소가 없습니다. 값을 자유 입력으로 두고 그대로 보존합니다
  • 카탈로그에 없는 메타타입(벤더 확장)은 오류가 아니라 opaque로 처리됩니다.
  • opaque 값과, dest 정보가 없는 옛 임포트 값은 판정하지 않습니다. 추측으로 경고를 띄우지 않기 위해서입니다.
  • 미해결 판정의 심각도는 resolved·derived 모두 경고입니다.
  • 저장 형식은 앞의 슬래시만 뗀 절대 경로이며, 익스포트 시 그대로 되돌려 씁니다. 카탈로그는 값을 만들 때판정할 때만 개입하고, 익스포트 경로를 바꾸지 않습니다.
  • 다른 모델의 이름을 바꾸면 닫혀 있는 .conf 파일의 해당 참조 값까지 자동으로 갱신됩니다. 대상은 일곱 갈래로, Signal, IVC, SWC, Interface, DataType, VFB, 그리고 다른 ECUC 설정입니다. 갱신은 값에 기록된 dest 메타타입과 이름이 둘 다 일치할 때만 일어나므로, dest 가 없는 옛 임포트 값은 건드리지 않습니다.

12.4 ECUC 자동 생성

IVC + Signal 모델에서 CAN 기반 BSW 모듈 설정을 자동으로 만듭니다.

12.4.1 실행 방법

  1. 06. IVC 에디터를 엽니다.
  2. 대상 ECU 노드를 선택합니다. 우측 속성 패널에 ECUC GENERATION 아코디언이 나타납니다. 이 구역은 ECU 노드에만 있고 HPC 노드에는 없습니다.
  3. MODULES 아래에서 생성할 모듈을 체크합니다. 다섯 개(Can, CanIf, Com, EcuC, PduR)가 모두 체크된 상태로 시작합니다.
  4. Generate ECUC 를 누릅니다. 생성이 끝나면 화면 하단에 ECUC Configuration generated successfully: <ECU명> 알림이 나타납니다. 실패하면 ECUC generation failed: <사유>, 처리 도중 예외가 발생하면 ECUC generation error: <메시지> 가 표시됩니다.
  5. Module Configuration 에디터를 열고 MODULE 패널에서 해당 정의 모듈을 펼칩니다. 새로 생긴 설정이 <모듈> (<ECU명>) 형식으로 나타납니다.

IVC 속성 패널의 ECUC GENERATION 구역

IVC 캔버스에서 ECU 노드를 고르면 우측 속성 패널 맨 아래에 이 구역이 나타납니다. 위쪽의 CONNECTORS 에 CAN 배지가 붙은 커넥터가 있어야 아래 체크박스와 Generate ECUC 버튼이 살아 있습니다. 모듈 다섯 개가 모두 체크된 것이 기본 상태입니다.

12.4.2 전제 조건과 비활성 상태

생성을 실행하려면 다음 조건을 충족해야 합니다.

조건확인 방법
대상 ECU에 CAN 프로토콜 커넥터가 있어야 합니다없으면 체크박스와 Generate ECUC 버튼이 모두 비활성이 됩니다
체크된 모듈이 하나 이상이어야 합니다모두 해제하면 버튼을 눌러도 아무 일도 일어나지 않습니다

CAN 커넥터가 없으면 구역 위쪽에 경고 상자가 표시됩니다. No CAN connector configured. Please add a CAN connector first to enable ECUC generation.

12.4.3 생성 결과

  • 결과는 designModuleConfiguration<ECU 이름> 아래에 모듈 설정으로 저장됩니다.
  • 같은 ECU를 다시 생성하면 기존 파일을 덮어씁니다. 이 재생성 전체가 하나의 실행 취소 단위 (Generate ECUC: <ECU명>)로 기록되므로 Ctrl+Z 로 되돌릴 수 있습니다. 내용이 바뀌지 않은 파일은 이력에 남지 않습니다.
  • 정의 파일(모듈 정의)이 있으면, 생성 결과에 빠진 파라미터·레퍼런스를 정의를 참고해 보충합니다.

12.4.4 제약과 주의점

  • CAN 컨트롤러가 1개라고 가정합니다. 다중 CAN 구성은 현재 지원하지 않습니다.
  • 정의 파일이 없어도 생성은 막히지 않습니다. 대신 보충이 생략되고 Definition file not found for <모듈>. Generated config may have incomplete parameters. 경고가 만들어집니다. 프레임이 없거나 CAN 컨트롤러가 없을 때도 각각 경고가 만들어집니다.

생성 과정에서 만들어진 경고 문자열은 현재 화면에 표시되지 않습니다. 알림은 성공·실패 한 줄뿐입니다. 따라서 정의 파일이 빠져 파라미터가 덜 찬 설정이 생겨도 화면상으로는 성공으로만 보입니다. 생성 후에는 Module Configuration 에디터의 Validation 탭에서 결과를 확인하는 것이 안전합니다.

진행률 표시도 없습니다. 그래서 큰 모델에서는 알림이 나타날 때까지 아무 반응이 없는 것처럼 보일 수 있습니다.

12.5 ECUC 임포트 · 익스포트

12.5.1 임포트

ECUC를 들여오는 방법은 두 가지입니다.

방법대상
프로젝트 노드 우클릭 ▸ ImportARXML 전체 임포트. ECUC-MODULE-DEF와 ECUC-MODULE-CONFIGURATION-VALUES를 함께 처리합니다
Module ▸ Configuration 노드 우클릭 ▸ Import ECUC ConfigurationECUC 전용 임포트. 고른 파일 안의 ECUC-MODULE-DEF와 ECUC-MODULE-CONFIGURATION-VALUES만 처리합니다

Module ▸ Definition 노드에는 임포트 메뉴가 없습니다. 정의만 따로 들여올 때도 위의 Import ECUC Configuration 을 사용합니다.

전체 임포트의 ECUC 단계

  1. 모델 파일 생성이 끝난 뒤 ARXML에서 ECUC-MODULE-DEF 를 찾아 모듈 정의로 씁니다. 이 단계는 충돌 다이얼로그를 거치지 않고 같은 이름의 정의 파일을 덮어씁니다.
  2. 이어서 ECUC-MODULE-CONFIGURATION-VALUES 를 처리합니다. 정의가 먼저 들어오므로 같은 파일 안의 정의와도 짝지을 수 있습니다.
  3. 이미 있는 모듈 설정은 다른 모델과 같은 충돌 해결 다이얼로그에서 처리합니다.
  4. 정의를 찾지 못해 건너뛴 모듈, 구조가 맞지 않아 거부된 모듈, 파싱 경고는 임포트 결과에 담깁니다.

ECUC 전용 임포트 절차

  1. design ▸ Module ▸ Configuration 노드를 우클릭하고 Import ECUC Configuration 을 선택합니다.
  2. 파일 선택 다이얼로그(Select ARXML File to Import ECUC Configuration)에서 .arxml 파일을 선택합니다. Import ECUC Configuration 진행 다이얼로그가 나타납니다.
  3. 기존 파일과 충돌하면 충돌 해결 다이얼로그가 나타납니다. 취소해도 이미 쓴 비충돌 설정은 남습니다.
  4. 결과가 표시됩니다.
    • 전부 성공하면 ECUC Configuration Import Complete — imported <n> module configuration(s). 알림이 나타납니다.
    • 일부만 들어오면 ECUC Configuration Import — Partial 다이얼로그가 나타나고, Skipped — Module Definition not found:Rejected — definition mismatch: 목록이 사유와 함께 표시됩니다.
    • 실패하면 ECUC Configuration Import Failed 다이얼로그에 오류가 표시됩니다.
  5. 탐색기가 갱신되고, 열려 있던 ECUC 에디터가 캐시를 다시 읽습니다.

ECUC 전용 임포트에서 알아 둘 점은 다음과 같습니다.

  • 이 경로도 정의를 먼저 들여옵니다. 고른 파일에 ECUC-MODULE-DEF 가 들어 있으면 모듈 정의로 먼저 쓴 뒤 설정값을 처리합니다. 이 정의 쓰기는 충돌 다이얼로그를 거치지 않고 같은 이름의 파일을 덮어씁니다. 그래서 정의와 설정이 한 파일에 함께 들어 있어도 짝지을 수 있습니다.
  • 해당 모듈의 정의가 프로젝트에도 없고 그 파일에도 없으면 그 설정은 건너뜁니다. 정의가 없으면 어떤 파라미터가 유효한지 판정할 수 없기 때문입니다.
  • 정의와 구조가 맞지 않는 설정은 사유와 함께 거부됩니다.

ECUC-MODULE-DEF의 모듈 직속 파라미터·레퍼런스는 의도적으로 버립니다. 표준 스키마에 해당 자리가 없어, 보존하면 익스포트가 스키마 위반이 됩니다. 지원하지 않는 ECUC-*-DEF 요소도 같은 이유로 무시됩니다.

버려진 항목은 현재 어느 경로에서도 화면에 표시되지 않습니다. 전체 임포트는 이 경고를 [<파일명>] ... 형식으로 결과 데이터에 담고 전용 임포트도 경고를 담지만, 두 경로의 결과 화면 모두 경고 목록을 그리지 않습니다. 전체 임포트는 Import complete: <n> elements imported from <m> file(s) 한 줄만, 전용 임포트는 건너뜀·거부 목록만 보여 줍니다. 무엇이 버려졌는지 확인하려면 임포트한 모듈 정의를 Module Definition 에디터에서 직접 살펴봐야 합니다.

12.5.2 익스포트

프로젝트 노드를 우클릭하고 Export 를 실행하면 ECUC도 함께 내보내집니다. 자세한 절차는 13. 임포트 · 익스포트를 참고하세요.

생성되는 파일과 요소의 절대 경로는 다음과 같습니다.

파일내용요소의 절대 경로
<Project>_EcucModuleDef.arxml모듈 정의 + EcucDefinitionCollection/EcucModuleDef/<모듈>
<Project>_EcucConfVal.arxml모듈 설정값/EcucConfigVal/<ECU명>/<모듈>

AR-PACKAGE 자체는 EcucModuleDef 하나, 그리고 EcucConfigVal 과 그 아래의 ECU 이름 패키지입니다. 모듈 요소는 그 패키지의 ELEMENTS 안에 놓이므로 절대 경로가 위 표와 같아집니다.

  • ECU 가 지정되지 않은 설정은 EcucConfigVal 패키지 바로 아래에 놓입니다.
  • 설정이 어느 ECU/HPC의 것인지는 AR-PACKAGE 이름뿐 아니라 각 설정 요소의 ADMIN-DATA에도 기록됩니다(SDG GID IO-ECUC-CONFIG-TO-ECU-MAPPING). Classic 노드는 ECU-INSTANCE, HPC는 MACHINE-DESIGN으로 가리킵니다. 임포트할 때 이 SDG가 있으면 그 이름이 소유 ECU로 쓰이므로, 벤더 도구가 패키지를 다르게 묶어도 소유 관계가 유지됩니다.
  • 반대로 이 SDG가 없는 외부 ARXML을 임포트하면 소유 ECU를 AR-PACKAGE 이름에서 유추합니다. 모든 설정이 한 패키지에 모여 있는 벤더 파일은 그 패키지 이름이 ECU 폴더 이름이 되므로, 실제 ECU와 맞지 않을 수 있습니다. 이 경우 ECU Extract가 해당 설정을 골라내지 못합니다.
  • ECU Extract 모드에서는 모듈 정의는 전부 내보내고, 설정은 해당 ECU의 것만 내보냅니다. 정의를 모두 넣는 이유는 그 ECU의 설정이 참조하는 DEFINITION-REF가 언제나 풀려야 하기 때문입니다.

12.6 편집 규칙 · 단축키

12.6.1 이름 규칙

  • 모듈·컨테이너·파라미터·레퍼런스 이름은 AUTOSAR SHORT-NAME 규칙(영문자로 시작, 영문자·숫자·밑줄만, 128자 이하)을 따릅니다. 규칙에 어긋나는 값은 모델에 저장되지 않으며, 입력 칸은 마지막으로 받아들여진 값으로 되돌아가고 한 줄짜리 오류 문구가 표시됩니다.
  • 같은 부모 아래에서 이름이 겹치는 변경도 거부됩니다. 이름이 겹치면 두 항목을 구분할 수 없게 되기 때문입니다. 이 중복 검사는 Module Definition 에디터의 컨테이너·파라미터·레퍼런스에 적용됩니다.
  • Module Configuration 에디터에서 컨테이너 인스턴스 이름을 바꾸면 같은 설정 안에서 그 인스턴스를 가리키던 레퍼런스 값 경로가 함께 갱신됩니다.
  • Module Definition 에디터에서 모듈 이름을 바꾸면 모듈 정의 파일 이름이 함께 바뀌고, 모든 모듈 설정의 정의 링크도 갱신됩니다. 이미 같은 이름의 모듈이 있으면 변경이 거부되고 A module named '<이름>' already exists 알림이 표시됩니다.
  • Module Configuration 에디터에서 설정 이름을 바꾸면 모듈 설정 파일 이름이 함께 바뀝니다. 다만 이름 규칙 검사는 값 편집 패널의 Name 필드에서만 이루어집니다. MODULE 패널에서 행을 더블클릭해 바꾸는 경로는 빈 이름과 같은 폴더 안의 이름 충돌만 막고, AUTOSAR SHORT-NAME 규칙은 확인하지 않습니다. 규칙에 맞는 이름을 사용하는 것이 안전합니다.
  • 다른 에디터에서 이름을 바꾸면 닫혀 있는 .conf 파일의 Foreign/Instance Reference 값까지 자동으로 갱신되고, 열려 있는 ECUC 에디터에는 즉시 반영됩니다. 조건은 12.3에 정리되어 있습니다.

12.6.2 단축키

두 에디터가 대부분 같은 단축키를 사용합니다. Ctrl+DF2 만 Module Configuration 에디터 전용입니다.

조작단축키비고
저장Ctrl+S편집 중이던 입력 칸의 값을 먼저 확정한 뒤 저장합니다
실행 취소Ctrl+Z
다시 실행Ctrl+Y 또는 Ctrl+Shift+Z
선택 항목 삭제Delete 또는 Backspace입력 칸에 포커스가 있으면 동작하지 않습니다
컨테이너 인스턴스 복제Ctrl+DModule Configuration 에디터에만 있습니다
이름 필드로 포커스 이동F2Module Configuration 에디터에만 있습니다. 우측 패널의 첫 입력 칸을 선택 상태로 만듭니다
  • Delete 는 Module Definition 에디터에서 컨테이너·파라미터·레퍼런스를, Module Configuration 에디터에서 컨테이너 인스턴스를 지웁니다. 모듈 자체는 이 키로 지워지지 않습니다.
  • Delete 키로 지울 때는 확인 다이얼로그가 나타나지 않습니다. Module Configuration 에디터에서 툴바 나 컨텍스트 메뉴 Delete 로 지울 때만 Delete container "<이름>"? 확인을 거칩니다.
  • Project ▸ Save, Project ▸ Save All, Edit ▸ Undo/Redo 메뉴로도 같은 동작을 실행할 수 있습니다.

12.6.3 외부 변경

다른 도구가 편집 중인 .def 또는 .conf 파일을 바꾸면 두 에디터 모두 이를 감지합니다. 저장하지 않은 편집이 남아 있으면 디스크 내용을 읽어 들이지 않고 경고만 표시합니다.

  • Module Definition 에디터: Module definition file changed on disk. Keeping your unsaved edits - save to overwrite the external change.
  • Module Configuration 에디터: ECUC config file changed on disk. Keeping your unsaved edits - save to overwrite the external change.

편집이 없으면 조용히 다시 읽어 화면을 갱신합니다. 저장하지 않은 내용을 말없이 덮어써서 잃는 상황을 막기 위한 동작입니다.

12.6.4 라이선스 상태와 편집 제한

트리 툴바, 컨텍스트 메뉴, 속성 편집 등 모델을 바꾸는 모든 경로는 기능 게이트를 거칩니다. 읽기 전용 세션에서는 편집이 거부되고 안내 다이얼로그가 표시됩니다. 자세한 내용은 03. 설치 · 로그인 · 라이선스를 참고하세요.