지난 2014년 이타스코리아는 아주대학교와 자동차 소프트웨어 인력 양성을 위한 산학협력 업무협약(MOU)을 체결하고 아주대학교 소프트웨어융합학과에 개설된 소프프트웨어융합프로젝트 교과목에 자동차 전장장치 소프트웨어 개발을 위한 AUTOSAR 툴 체인(ISOLAR-A, ISOLAR-EVE, RTPC-EVE)과 모델링 개발 툴인 ASCET을 공급했다. 2011년 아주대학교가 유치한 미래창조과학부 정보통신산업진흥원 주관 대학 소프트웨어 인력 양성사업인 ‘서울어코드 활성화사업’ 활성화와 양측의 연구 및 교육 분야의 협력을 위해, 지난 2월 이타스코리아는 아주대학교 소프트웨어융합학과 및 정보컴퓨터공학과 학생들을 중심으로 AUTOSAR 현장실습 프로젝트를 진행했으며 이에 대한 연구결과를 소개함으로써 자동차 전장 관련 개발자, SW 개발자의 실무에 활용될 수 있기를 기대한다.
이타스는 AUTOSAR 플랫폼 개발을 위한 Application S/W 개발 툴 체인 전체를 제공한다. 이를 이용해 가상 ECU와 일반 컴퓨터 프로그램(java)을 연동해 가상으로 ECU 테스트를 할 수 있다. 이 글에서 간단한 툴 사용 방법과 컴포넌트 단위 모델링부터 implementation까지 도출하는 과정을 설명한다.
최근 뉴스나 학교에서 개최하는 세미나에서 소프트웨어 융합 관련 소식을 자주 접하다 보니 AUTOSAR라는 흥미로운 주제를 발견하게 됐다. 하드웨어와 독립적으로 ECU에 소프트웨어를 탑재해 자동차를 제어할 수 있는 시스템 구조를 구축했다는 것이 인상적이었는데, 마침 해당 학기 학과에서 소프트웨어 융합프로젝트 과목에서 다루는 주제가 AUTOSAR기반 ECU 개발이어 좋은 기회를 갖게 됐다. 하드웨어와 독립적으로 동작 가능한 AUTOSAR기반 가상 ECU만 개발한 후, 시뮬레이션 프로그램과 연동해 가상 ECU를 테스트하면 결함없는 실제 ECU를 개발하는데 도움이 된다.
AUTOSAR(AUTomotive Open System Architecture)는 자동차 E/E(Electrical/Electronic) 아키텍처의 표준화를 위해 개발된 것으로, ECU 설계 방향을 새롭게 개척했다. 이를 통해 전기/전자 기능이 다양해지고 복잡해지는 것을 관리하고 제품의 수정, 개선, 설계를 체계적으로 함으로써 소프트웨어 코드 재사용성을 높일 수 있다.
먼저 본 예제에서는 두 가지를 설명하고자 한다. AUTOSAR 기반으로 가상 ECU를 만들기 위해 컴포넌트 모델링부터 시작해서 실행 코드까지 만드는 작업을 탑다운 방식으로 설명하고, 가상 ECU를 시뮬레이션 프로그램과 연동해 테스트해보는 과정을 설명한다.
가상 ECU는 자동차 스티어링 휠이 돌아간 각도를 기반으로 사용자에게 편의를 제공하는 기능을 구현했다. 기능 중 하나는 차선 인식 센서로부터 차선이 변경된 것이 인식되면 자동으로 차선을 변경하는 방향의 방향 지시등을 점등하는 것이고, 다른 하나는 자동차 회전반경으로 제한속도를 계산해 차량이 커브 구간에서 밖으로 쏠리는 현상을 방지하고자 하는 것이다.
탑다운 방식
탑다운 방식은 큰 개념부터 시작해 작은 개념으로 일을 진행하는 방식을 말한다. 먼저 어떤 기능이 필요한지 어떤 요소가 필요한지를 시작으로 설계한 요소를 만족시키기 위해서 어떤 하위 요소가 필요한지를 구성하는 방식으로 신규개발의 경우 사용이 용이하다. 이는 기획자가 기획한 틀 안에서 개발자가 일하게 돼 기획자 입장에서 프로젝트 관리, 개선, 유지, 보수를 체계적으로 할 수 있기 때문이다.
요구 기능별 단위를 나누고 내부 동작을 구성하는 순서이기 때문에 AUTOSAR 기반 프로그램 개발에 적용하기 쉽다. 간단히 탑다운 방식을 AUTOSAR에 적용해 본다면, 먼저 기능별로 컴포넌트를 나누고 이를 배치한 뒤, 인터페이스를 구성하고 내부 실행 코드를 작성하는 순서로 이어지게 된다. 본격적인 설명에 앞서 이 프로젝트는 학부과정의 S/W 전공자가 개발해 본 AUTOSAR용 애플리케이션으로 기능 및 콘셉트 자체가 다소 미흡할 수 있음을 밝힌다.
컴포넌트 단위 모델링 : ISOLAR-A
AUTOSAR 아키텍처 및 설계환경 구성을 위해 Authoring 툴인 이타스 ISOLAR-A를 사용한다. ISOLAR-A에서 컴포넌트를 생성하면 AUTOSAR Specification을 기반으로 표준화된 디지털 교환 포맷인 ARXML 파일에 해당 컴포넌트 구성 요소들이 기록된다.
인터페이스 생성 뒤, 컴포넌트에 포트 생성할 때 인터페이스를 기반으로 매핑할 수 있다. 컴포넌트의 “Generic Editor” 에서 자동으로 컴포넌트의 포트 타입이 인터페이스에 맞게 지정돼 포트를 컴포넌트에 쉽게 구성할 수 있다. 이후 컴포넌트가 어떠한 동작을 하는지 설정하기 위해 Internal Behavior를 구성해야 한다.
Internal Behavior는 컴포넌트가 어떠한 데이터를 읽고 쓰는지, 어떠한 함수를 사용하는지에 대한 Runnable Entity 구성과 이를 실행시킬 이벤트에 대한 내용을 포함하고 있다(그림 3).
컴포넌트에 대한 설정이 완료되면 모든 컴포넌트를 포함하는 컴포지션(Composition)이 필요하다. 컴포지션에는 컴포넌트 프로토타입과 커넥터를 지정해준다(그림 4). 커넥터는 설정을 어떻게 하느냐에 따라 어셈블리 커넥터(*), 델리게이션 커넥터(*)와 포트 프로토타입이 자동으로 생성되기도 한다.
* 어셈블리 커넥터: 동일한 컴포지션 내부 컴포넌트 사이에서 같은 포트 프로토타입끼리 연결되는 커넥터
* 델리게이션 커넥터: 서로 다른 컴포지션 사이에서 동일한 포트 프로토타입끼리 연결되는 커넥터
컴포지션이 완성되면 Task를 지정할 수 있다. 컴포지션을 시스템에 매핑시키고, ECU 인스턴스를 구성하면 ECU Extract를 생성할 수 있다. 생성된 ECU Extract를 토대로 OS task, RTE task를 지정할 수 있다.
Task는 각 컴포넌트의 Runnable Entity 단위로 지정이 가능하다. Task 지정 후 RTE generate를 통해서 모델링의 오류 발생여부를 확인할 수 있다. 이 과정을 거치면 탑다운의 큰 틀이라고 할 수 있는 ISOLAR-A의 컴포넌트 모델링의 결과물인 ARXML 파일이 완성된다.
모델링을 통한 코드작성:ACSET
ISOLAR-A를 통해 모든 컴포넌트를 구성하고 서로 연결이 완료되면 Top Down에서 Down 단계인 컴포넌트의 동작을 지정해주는 내부 코드를 작성해야 한다. 코드는 모델 기반의 애플리케이션 소프트웨어 개발 툴인 ASCET을 사용해 작성된다. ASCET은 모델링을 통해 코드를 생성하기 때문에 전통적인 핸드 코딩방식보다 여러 사람이 보기 편하고 오류발생 지점도 찾기 수월하다. 또, 0으로 나눴을 때 발생하는 에러, 오버 플로우, 배열의 인덱스 값 초과와 같이 런타임 도중 발생할 수 있는 에러 등 발견하기 어려운 논리적 오류를 자동으로 보정해주기 때문에 ASCET을 사용했다.
ASCET은 다른 툴과 달리 프로젝트가 아닌 데이터베이스 기반으로 작업된다. 데이터베이스에 ISOLAR-A에서 생성한 컴포넌트, 인터페이스를 그대로 불러와서 직접 사용 가능하다. 이때 ASCET에서 제공하는 “AUTOSAR to ASCET convert Tool”을 사용한다(그림 5-1). 이는 ARXML 파일에 기록된 컴포넌트와 인터페이스에 대한 기록을 ASCET 고유 format인 AMD 파일에 기록, 생성하고 데이터베이스로 옮겨준다(그림 5-2).
Convert가 완료된 후 컴포넌트를 활성화시키면 ISOLAR-A에서 구성한 포트 단위의 인터페이스와 Runnable Entity가 표시된다(그림 6-1).
ASCET에서 개발자는 필요한 상수 및 변수, 알고리즘을 핸드코딩이 아닌 그림 6-2와 같은 모델링을 통해 코드를 작성할 수 있다. 모델로 표현하기 어려운 코드나 이미 검증된 수학, 물리 공식이 활용되는 코드의 경우는 직접 “ESDL(Embedded Software Description Language) 또는 Ccode Class(그림 6-2의 Curb)”를 생성해 활용할 수도 있다. 모델링을 완성하면 모델 요소가 코드로 작성될 line의 순서를 지정할 수 있다. 그림 6-2의 “RE_CurbAlgo(Runnable Entity 이름)”의 왼쪽에 위치한 숫자가 순서를 의미한다. 숫자가 낮은 요소부터 높은 순으로 코드가 작성된다.
컴포넌트 Runnable Entity의 모델링이 완성되면 오류 여부는 “Component Editor” 혹은 해당 컴포넌트의 “Project Editor”에서 빌드를 통해 확인한다. 완성된 모델을 토대로 코드를 생성할 수 있다. ASCET은 OSEK용 개발을 위해 다양한 타깃과 컴파일러를 지원하지만 AUTOSAR를 위해서는 비교적 설정이 간단하다. 프로젝트 Properties에서 타깃은 ANSI-C, OS는 버전별 설정이 가능하지만 이 프로젝트에서는 최근 버전인 RTE-AUTOSAR 4.0.3으로 설정한다. 설정이 완료되면 “Component Editor” 혹은 해당 컴포넌트의 “Project Editor”의 메뉴에서 export를 통해 코드 생성을 선택한다. 이렇게 탑다운 방식에서 하위 요소라 할 수 있는 ASCET의 코드 파일이 생성됐다(그림 7).
가상 ECU 실행 : ISOLAR-EVE
이제 가상 ECU 생성에 필요한 준비 작업이 완료됐으므로 AUTOSAR 소프트웨어 개발 및 검증을 위해 ISOLAR-EVE를 사용한다.
ISOLAR-EVE 프로젝트를 생성하고 가상 ECU에 필요한 파일인 ISOLAR-A와 ASCET에서 작업한 파일을 Import한다. 이 프로젝트에선 가상 ECU 프로그램 실행에 필요한 코드를 담는 src 폴더에 SWC라는 폴더를 생성해 ASCET에서 생성된 코드를 위치시켰고, 가상 ECU configuration에 필요한 정보를 담는 EVE_Data 폴더에 ARXML 폴더를 생성해 ISOLAR-A에서 생성한 ARXML 파일을 위치시켰다(그림 8). 옮겨진 파일을 토대로 RTE generate 하기 전에 RTPC-EVE를 실행시킨 상태에서 그림 9와 같이 ISOLAR-EVE 프로젝트에 RTPC를 타깃 매핑해야 한다.
타깃 매핑이 완료되면 Generator Tools를 사용해 가상 ECU에 필요한 RTE 파일을 생성 한다. RTE가 생성되면 생성된 파일을 토대로 Generator Tools를 사용해 AUTOSAR OS를 생성한다. AUTOSAR OS까지 생성된 프로젝트를 빌드하고 RTPC-EVE로 업로드한 뒤 실행시킨다. 실행이 완료되면 ISOLAREVE에서 제공하는 vrtaMonitor를 통해 연결된 것을 확인할 수 있다(그림 10).
가상 ECU와 연동할 프로그램으로 Java를 사용했다. 시뮬레이션은 그림 11과 같이 사용자에게 GUI 조작을 통해 어떠한 값을 주고 받는지 알아볼 수 있도록 구성돼 있다. Java프로그램과 가상 ECU 프로그램을 연동하기 위해서는 VRTA의 JAR 파일이 필요하다. JAR파일의 라이브러리를 이용해서 RTPC-EVE포트를 받아와 Java 프로그램과 소켓 통신을 통해 데이터를 주고받을 수 있다.
처음 해보는 AUTOSAR용 가상 ECU 개발 프로젝트였다. AUTOSAR Specification을 숙지하지 못해 문서를 참고하면서 툴을 이용해 프로젝트를 진행했다. 프로젝트를 진행하다 보니 세부 element들은 이타스 툴에서 미리 다 지정을 해주기 때문에 프로젝트 후반부로 갈수록 AUTOSAR Specification 문서를 참고하지 않고도 작업을 할 수 있어 쉽게 마무리할 수 있었다. 두 달이라는 짧은 프로젝트 기간이어 완성도를 더 높이지 못한 것이 아쉽다. 현재 프로젝트는 Basic Software 부분은 거의 없지만 추후 시간이 된다면 CAN 드라이버를 추가해서 두 개의 가상 ECU 간 CAN 통신을 구현하는 방법을 소개하고 싶다.
------------------------------------------------------------
이타스, 제2회 INCA User Conference 개최
이타스가 오는 6월 17일 양재동 더케이 서울 호텔에서 ‘제2회 INCA User Conference’를 개최한다. 차량 전장화에 따른 캘리브레이션의 복잡성에 대응하고 이에 따른 과제를 성공적으로 수행할 수 있도록 도움을 주고자 “이타스와 함께하는 어드밴스드 캘리브레이션”을 주제로 측정/캘리브레이션/진단 분야의 도전과제, 개발 효율을 높여주는 다양한 솔루션과 이를 활용한 고객사 사례를 소개할 예정이다. 참석은 무료다.
날짜: 2015년 6월 17일
시간: 오전 9시부터 오후 5시까지
장소: 양재동 더케이 서울 호텔 별관 1층 한강홀
참석 신청: mkc.kr@etas.com
문의 전화: 02-574-7016
제한사항
ASCET에서는 application SWC 부분만 지원하고 Basic Software 부분을 지원하지 않기 때문에 ECUAbstraction SWC에 대한 코드는 RTE 생성을 통해 만들어진 헤더파일을 토대로 핸드 코딩해야 한다.
ARXML 파일에서 <ECU-ABSTRACTIONSW-COMPONENT-TYPE>에 대한 부분을 <APPLICATION-SW-COMPONENT-TYPE>으로 변경한다면 ASCET으로 convert가 가능하지만 본 프로젝트에서는 핸드코딩 했다.
사용 프로그램 버전
ISOLAR-A V 5.0, ISOLAR-EVE V2.0.1, ASCETV6.2, RTPC-EVEV6.0.0, AUTOSAR Release 4.0.3
<저작권자 © AEM. 무단전재 및 재배포, AI학습 이용 금지>