KR20240009757A - 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법 - Google Patents

오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법 Download PDF

Info

Publication number
KR20240009757A
KR20240009757A KR1020220087066A KR20220087066A KR20240009757A KR 20240009757 A KR20240009757 A KR 20240009757A KR 1020220087066 A KR1020220087066 A KR 1020220087066A KR 20220087066 A KR20220087066 A KR 20220087066A KR 20240009757 A KR20240009757 A KR 20240009757A
Authority
KR
South Korea
Prior art keywords
software
virtualization
vehicle software
autosa
platform
Prior art date
Application number
KR1020220087066A
Other languages
English (en)
Inventor
정구민
양수빈
강경하
이태양
배승주
Original Assignee
국민대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 국민대학교산학협력단 filed Critical 국민대학교산학협력단
Priority to KR1020220087066A priority Critical patent/KR20240009757A/ko
Publication of KR20240009757A publication Critical patent/KR20240009757A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법에 관한 것으로, 상기 장치는 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 상기 구성 파일로부터 상기 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)하는 코드 파싱부; 상기 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 상기 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성하는 코드 생성부; 상기 소프트웨어 플랫폼의 가상화를 구현하고 상기 실행 코드들의 실행에 따라 상기 차량용 소프트웨어의 동작을 시뮬레이션하는 오토사 플랫폼 가상화부; 및 상기 시뮬레이션에 따른 상기 차량용 소프트웨어의 출력을 수신하고 상기 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화하는 ECU 가상화 처리부;를 포함한다.

Description

오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법{WINDOWS-BASED AUTOMOTIVE SOFTWARE SIMULATION DEVICE AND METHOD THROUGH AUTOSAR STACK VIRTUALIZATION}
본 발명은 소프트웨어 시뮬레이션 기술에 관한 것으로, 보다 상세하게는 차량용 소프트웨어 플랫폼 기반의 애플리케이션을 시뮬레이션하여 타겟 보드 등 하드웨어 장비 없이 SILS(Software-In-the-Loop Simulation) 검증이 가능하도록 하는 기술에 관한 것이다.
차량용 인포테인먼트(infotainment)의 발전, 차량의 전장화 등으로 인해 차량 내부 ECU의 개수가 증가하고 구조가 복잡해지며, ECU에서 동작하는 소스 코드 또한 길어지고 있다. 이러한 복잡성으로 인해 완성차 업체들은 차량용 소프트웨어 표준을 제정하고 기능 안전을 위한 표준과 개발 방법론 등을 적용하게 되었다.
대표적으로 차량용 소프트웨어의 개발과 테스트에는 V-모델을 이용한 개발 방법론이 사용될 수 있다. V-모델은 설계, 구현 및 검증 단계로 구성되며 설계 단계는 요구사항 명세, 시스템 설계 및 모델 설계로 구분될 수 있다. 설계가 완료된 이후에는 시스템을 개발 및 구현하고 검증 단계를 거치게 되는데 이때 검증은 작은 범위의 모듈 테스트부터 시작하여 점차적으로 통합 테스트 및 시스템 테스트로 확장되어 진행될 수 있다.
또한, V-모델을 이용한 개발 시에는 각 단계에서 나온 결과물을 검증하기 위해 가상으로 시스템의 동작을 예측하는 시뮬레이션이 진행될 수 있다. 기능 안전성을 만족시키기 위한 MILS, SILS, EILS, HILS 등 시뮬레이션 검증 단계가 있으며 각 단계별로 시뮬레이션을 통한 오류 검증으로 개발 비용 및 기간을 단축할 수 있다.
MILS(Model-In-the-Loop Simulation)는 먼저 요구사항 명세서를 기반으로 시스템 모델링을 진행하고 모델을 수학적으로 검증하는 단계이며, 이후 설계한 시스템 모델을 소프트웨어로 구현하고 구현한 소스 코드 동작을 검증하는 단계인 SILS(Software-In-the-Loop Simulation) 단계가 진행될 수 있다. SILS 단계를 거친 후 구현한 소프트웨어 프로그램을 ECU를 이용하여 올바르게 동작하는지 확인하는 단계인 EILS(ECU-In-the-Loop Simulation)를 통해 오류 검증을 수행할 수 있다.
EILS 단계가 완료되면 전체 시스템이 완성되기 전 실제로 하드웨어들을 결합하여 하드웨어 수준에서 구현한 동작을 시뮬레이션하는 HILS(Hardware-In-the-Loop Simulation) 과정이 수행될 수 있다. 이때, 실제 ECU나 하드웨어 디바이스 등이 필요한 EILS나 HILS 단계에서 별도의 디버깅 장비가 필요하며, 오류가 검출되었을 경우 관련 하드웨어나 타겟 ECU, 소스 코드 등의 소프트웨어 문제 등 많은 요소를 고려해야 하기 때문에 에러 수정으로 인해 소모되는 비용이 매우 클 수 있다.
이러한 비용을 줄이기 위해서는 실제 타겟 ECU가 아닌 타겟 ECU를 가상화한 가상 ECU에서의 시뮬레이션이 필요할 수 있다. 또한, 차량용 소프트웨어 플랫폼 AUTOSAR의 적용이 확대됨에 따라 AUTOSAR 플랫폼과 ECU를 연계한 가상 시뮬레이터가 필요할 수 있다.
한국등록특허 제10-1134735호 (2012.04.02)
본 발명의 일 실시예는 AUTOSAR 소프트웨어 플랫폼을 가상화하여 PC 환경에서 시뮬레이션을 진행함으로써 차량용 소프트웨어의 개발 및 검증 테스트에 큰 활용도를 기대할 수 있는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치는 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 상기 구성 파일로부터 상기 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)하는 코드 파싱부; 상기 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 상기 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성하는 코드 생성부; 상기 소프트웨어 플랫폼의 가상화를 구현하고 상기 실행 코드들의 실행에 따라 상기 차량용 소프트웨어의 동작을 시뮬레이션하는 오토사 플랫폼 가상화부; 및 상기 시뮬레이션에 따른 상기 차량용 소프트웨어의 출력을 수신하고 상기 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화하는 ECU 가상화 처리부;를 포함한다.
상기 코드 파싱부는 상기 차량용 소프트웨어의 구성 파일로서 오토사(AUTOSAR) 기반 소프트웨어의 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신할 수 있다.
상기 코드 생성부는 상기 파싱된 정보들을 기초로 상기 차량용 소프트웨어의 실행에 필요한 RTE(RunTime Environment) API 및 정적 코드(static code)을 생성할 수 있다.
상기 오토사 플랫폼 가상화부는 상기 소프트웨어 플랫폼의 각 모듈들에 대한 가상화를 구현하는 가상 오토사 플랫폼 코드를 생성할 수 있다.
상기 오토사 플랫폼 가상화부는 상기 실행 코드들과 상기 가상화 오토사 플랫폼 코드를 이용하여 상기 시뮬레이션 동안 상기 차량용 소프트웨어의 동작 로직을 수행하고 윈도우(windows) 환경에서 동작 가능한 시뮬레이션 파일을 생성할 수 있다.
상기 ECU 가상화 처리부는 상기 가상화된 소프트웨어 플랫폼의 가상 포트(port)로부터 출력값을 수신하고 상기 출력값에 상응하는 동작을 상기 가상화된 ECU를 통해 출력할 수 있다.
실시예들 중에서, 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법은 코드 파싱부에서, 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 상기 구성 파일로부터 상기 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)하는 단계; 코드 생성부에서, 상기 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 상기 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성하는 단계; 오토사 플랫폼 가상화부에서, 상기 소프트웨어 플랫폼의 가상화를 구현하고 상기 실행 코드들의 실행에 따라 상기 차량용 소프트웨어의 동작을 시뮬레이션하는 단계; 및 ECU 가상화 처리부에서, 상기 시뮬레이션에 따른 상기 차량용 소프트웨어의 출력을 수신하고 상기 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화하는 단계;를 포함한다.
상기 파싱(parsing)하는 단계는 상기 차량용 소프트웨어의 구성 파일로서 오토사(AUTOSAR) 기반 소프트웨어의 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신하는 단계를 포함할 수 있다.
상기 실행 코드들을 생성하는 단계는 상기 파싱된 정보들을 기초로 상기 차량용 소프트웨어의 실행에 필요한 RTE(RunTime Environment) API 및 정적 코드(static code)을 생성하는 단계를 포함할 수 있다.
상기 시뮬레이션하는 단계는 상기 소프트웨어 플랫폼의 각 모듈들에 대한 가상화를 구현하는 가상 오토사 플랫폼 코드를 생성하는 단계를 포함할 수 있다.
상기 시뮬레이션하는 단계는 상기 실행 코드들과 상기 가상화 오토사 플랫폼 코드를 이용하여 상기 시뮬레이션 동안 상기 차량용 소프트웨어의 동작 로직을 수행하고 윈도우(windows) 환경에서 동작 가능한 시뮬레이션 파일을 생성하는 단계를 포함할 수 있다.
상기 시각화하는 단계는 상기 가상화된 소프트웨어 플랫폼의 가상 포트(port)로부터 출력값을 수신하고 상기 출력값에 상응하는 동작을 상기 가상화된 ECU를 통해 출력하는 단계를 포함할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법은 EILS나 HILS 검증 단계와 같이 테스트 장비나 디버깅 장비에 종속되지 않고 타겟 ECU를 가상화한 시뮬레이터를 통해 SILS 기반 검증이 가능할 수 있다. 또한, 소프트웨어 기반 시뮬레이션을 통해 ECU 등 하드웨어에서 발생할 수 있는 오류들을 예측할 수 있어 EILS와 HILS 단계 검증 이전에 발생하는 에러들을 수정함으로써 오류를 줄일 수 있다. 이를 통해, 하드웨어 테스트 장비구축에 필요한 시간이나 비용을 절감할 수 있어 결과적으로 차량용 소프트웨어 개발 단가의 절감과 개발 주기의 단축의 이점을 얻을 수 있다. 그리고, 디버깅과 오류 발생 시 수정의 용이성을 향상시킬 수 있다.
도 1은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템을 설명하는 도면이다.
도 2는 도 1의 시뮬레이션 장치의 시스템 구성을 설명하는 도면이다.
도 3은 도 1의 시뮬레이션 장치의 기능적 구성을 설명하는 도면이다.
도 4는 본 발명에 차량용 소프트웨어 시뮬레이션의 전체적인 개념을 설명하는 도면이다.
도 5는 본 발명에 따른 차량용 소프트웨어 시뮬레이션 과정의 일 실시예를 설명하는 도면이다.
도 6은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템의 일 실시예를 설명하는 도면이다.
도 7은 본 발명에 따른 OS 가상화 과정의 일 실시예를 설명하는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽힐 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템을 설명하는 도면이다.
도 1을 참조하면, 차량용 소프트웨어 시뮬레이션 시스템(100)은 사용자 단말(110), 시뮬레이션 장치(130) 및 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 사용자에 의해 운용되는 단말 장치에 해당할 수 있다. 본 발명의 실시예에서 사용자는 하나 이상의 사용자로 이해될 수 있으며, 하나 이상의 사용자들 각각은 하나 이상의 사용자 단말(110)에 대응될 수 있다. 즉, 도 1에서는 하나의 사용자 단말(110)로 표현되어 있으나, 제1 사용자는 제1 사용자 단말, 제2 사용자는 제2 사용자 단말, ..., 제n(상기 n은 자연수) 사용자는 제n 사용자 단말에 각각 대응될 수 있다.
또한, 사용자 단말(110)은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템(100)을 구성하는 하나의 장치로서 구현될 수 있으며, 차량용 소프트웨어 시뮬레이션 시스템(100)은 소프트웨어 개발 툴을 통해 개발된 차량용 소프트웨어를 윈도우 환경에서 동작시키는 목적에 따라 다양한 형태로 변형되어 운용될 수 있다.
또한, 사용자 단말(110)은 시뮬레이션 장치(130)와 연결되어 동작 가능한 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 포함하여 다양한 디바이스로도 구현될 수 있다.
한편, 사용자 단말(110)은 시뮬레이션 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들은 시뮬레이션 장치(130)와 동시에 연결될 수도 있다.
시뮬레이션 장치(130)는 본 발명에 따른 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법을 수행하는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 또한, 시뮬레이션 장치(130)는 사용자 단말(110)과 유선 네트워크 또는 블루투스, WiFi, LTE 등과 같은 무선 네트워크로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 송·수신할 수 있다.
또한, 시뮬레이션 장치(130)는 독립된 외부 시스템(도 1에 미도시함)과 연결되어 동작하도록 구현될 수 있다. 일 실시예에서, 시뮬레이션 장치(130)는 클라우드 서버로 구현될 수 있다.
데이터베이스(150)는 시뮬레이션 장치(130)의 동작 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 예를 들어, 데이터베이스(150)는 차량용 소프트웨어 플랫폼에 관한 정보를 저장하거나 또는 가상화 시뮬레이션에 관한 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, 시뮬레이션 장치(130)가 본 발명에 따른 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법을 수행하는 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.
또한, 도 1에서, 데이터베이스(150)는 시뮬레이션 장치(130)와 독립적인 장치로서 도시되어 있으나, 반드시 이에 한정되지 않고, 논리적인 저장장치로서 시뮬레이션 장치(130)에 포함되어 구현될 수 있음은 물론이다.
도 2는 도 1의 시뮬레이션 장치의 시스템 구성을 설명하는 도면이다.
도 2를 참조하면, 시뮬레이션 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함할 수 있다.
프로세서(210)는 본 발명의 실시예에 따른 차량용 소프트웨어 시뮬레이션 프로시저를 실행할 수 있고, 이러한 과정에서 읽히거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄 할 수 있다. 프로세서(210)는 시뮬레이션 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 시뮬레이션 장치(130)의 CPU(Central Processing Unit) 또는 GPU(Graphics Processing Unit)로 구현될 수 있다.
메모리(230)는 SSD(Solid State Disk) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 시뮬레이션 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다. 또한, 메모리(230)는 전기적으로 연결된 프로세서(210)에 의해 실행됨으로써 본 발명에 따른 차량용 소프트웨어 시뮬레이션 방법을 실행하는 명령들의 집합을 저장할 수 있다.
사용자 입출력부(250)는 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함하고, 예를 들어, 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치 스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)는 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, 시뮬레이션 장치(130)는 독립적인 서버로서 수행될 수 있다.
네트워크 입출력부(270)는 네트워크를 통해 사용자 단말(110)과 연결되기 위한 통신 환경을 제공하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다. 또한, 네트워크 입출력부(270)는 학습 데이터의 무선 전송을 위해 WiFi, 블루투스 등의 근거리 통신 기능이나 4G 이상의 무선 통신 기능을 제공하도록 구현될 수 있다.
도 3은 도 1의 시뮬레이션 장치의 기능적 구성을 설명하는 도면이다.
도 3을 참조하면, 시뮬레이션 장치(130)는 코드 파싱부(310), 코드 생성부(330), 오토사 플랫폼 가상화부(350), ECU 가상화 처리부(370) 및 제어부(390)를 포함할 수 있다.
이때, 시뮬레이션 장치(130)는 상기의 기능적 구성들을 동시에 모두 포함해야 하는 것은 아니며, 각각의 실시예에 따라 상기의 구성들 중 일부를 생략하거나, 상기의 구성들 중 일부 또는 전부를 선택적으로 포함하여 구현될 수도 있다. 또한, 시뮬레이션 장치(130)는 상기 구성들 중 일부를 선택적으로 포함하는 독립된 모듈로서 구현될 수 있으며, 각 모듈들 간의 연동을 통해 본 발명에 따른 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법을 수행할 수도 있다. 이하, 각 구성들의 동작을 구체적으로 설명한다.
코드 파싱부(310)는 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 구성 파일로부터 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)할 수 있다. 여기에서, 소프트웨어 개발 도구는 차량용 소프트웨어의 개발을 지원하는 다양한 기능을 제공하는 프로그램에 해당할 수 있다. 즉, 개발자는 소프트웨어 개발 도구를 이용하여 차량용 소프트웨어를 개발할 수 있고, 오류를 수정하거나 유지 보수하는 등의 다양한 동작들을 수행할 수 있다. 소프트웨어 개발 도구는 차량용 소프트웨어를 개발하는 동안 사용자에 의해 설정된 내용을 구성 파일로 생성하여 관리할 수 있다.
예를 들어, 개발자는 소프트웨어 개발 도구를 통해 시스템 및 ECU 설계를 수행할 수 있다. 시스템 설계의 경우 소프트웨어 컴포넌트(SWC) 및 타겟 ECU에 관한 설정을 결정할 수 있으며, ECU 설계의 경우 ECU 시스템 구성과 RTE 통신 및 BSW 모듈에 관한 설정을 결정할 수 있다. 따라서, 코드 파싱부(310)는 소프트웨어 개발 도구에 의해 생성된 구성 파일로부터 차량용 소프트웨어의 동작을 시뮬레이션하기 위해 필요한 정보들을 추출할 수 있다.
일 실시예에서, 코드 파싱부(310)는 차량용 소프트웨어의 구성 파일로서 오토사(AUTOSAR) 기반 소프트웨어의 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신할 수 있다. 차량용 소프트웨어는 개방형 자동차 표준 소프트웨어 구조에 해당하는 오토사(AUTOSAR) 플랫폼을 기반으로 생성될 수 있으며, 오토사 플랫폼은 소프트웨어 구성 파일을 ARXML 파일 형태로 관리할 수 있다.
예를 들어, 오토사 기반의 소프트웨어 개발 툴을 통해 차량용 소프트웨어의 소프트웨어 컴포넌트(component)를 생성하면 사용자가 설정한 AUTOSAR specification을 기반으로 표준화된 디지털 교환 포맷인 ARXML 파일에 해당 컴포넌트 구성요소들이 저장될 수 있다. 이때, 작성된 ARXML 파일에는 태스크(task), 알람(alarm), 이벤트(event), 인터럽트(interrupt), 우선권(priority), 기간(period), 포트(port), 데이터 엘리먼트(data element) 등의 내용이 포함될 수 있다.
즉, 코드 파싱부(310)는 오토사(AUTOSAR) 기반 차량용 소프트웨어의 구성 파일로서 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신할 수 있다. 코드 파싱부(310)는 ARXML 파일 수신을 위한 독립적인 사용자 인터페이스(UI)를 제공할 수 있고, 사용자 단말(110)을 통해 입력 받을 수도 있다.
일 실시예에서, 코드 파싱부(310)는 차량용 소프트웨어의 구성 파일로서 특정 형식의 파일만을 제한적으로 수신할 수 있다. 예를 들어, 코드 파싱부(310)는 ARXML 파일만을 구성 파일로서 수신하도록 제한 설정될 수 있고, ARXML 파일이 아닌 다른 파일이 입력된 경우 구성 파일을 재입력받거나 또는 파일 수신을 거부할 수 있다.
코드 생성부(330)는 차량용 소프트웨어의 구성 파일로부터 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성할 수 있다. 예를 들어, 기존의 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 개발 과정은 소프트웨어 개발 툴을 이용하여 프로젝트를 컴파일(compile)하면 작성된 ARXML을 기반으로 c 파일과 헤더(header) 파일이 생성되고, 이를 타겟 보드에 플래시(flash)하기 위한 이진화(binary) 파일을 생성하여 최종적으로 타겟 보드 상에서 동작시키는 과정으로 진행될 수 있다. 코드 생성부(330))는 차량용 소프트웨어가 가상화된 소프트웨어 플랫폼 상에서 동작하는데 필요한 실행 코드들을 생성하는 동작을 수행할 수 있다.
일 실시예에서, 코드 생성부(330)는 파싱된 정보들을 기초로 차량용 소프트웨어의 실행에 필요한 RTE(RunTime Environment) API 및 정적 코드(static code)을 생성할 수 있다. 여기에서, RTE API는 런타임 환경 API로서 컴포넌트들 간 또는 컴포넌트와 BSW(Basic Software) 간의 구체적인 인터페이스를 제공할 수 있다. 또한, 정적 코드는 컴포넌트의 기능을 구현하는 소스 코드에 해당할 수 있다. 코드 생성부(330)는 구성 파일에서 파싱된 정보들을 이용하여 차량용 소프트웨어의 상세 기능을 구현하는 정적 코드를 생성할 수 있고, 정적 코드에 대한 RTE API를 생성할 수 있다.
오토사 플랫폼 가상화부(350)는 소프트웨어 플랫폼의 가상화를 구현하고 실행 코드들의 실행에 따라 차량용 소프트웨어의 동작을 시뮬레이션할 수 있다. 예를 들어, 가상화된 소프트웨어 플랫폼은 가상화된 오토사 플랫폼에 해당할 수 있다. 여기에서, 가상화된 오토사 플랫폼은 RTE API 및 정적 코드가 실행될 수 있는 플랫폼 소프트웨어에 해당할 수 있으며, 기존의 오토사 플랫폼 구조를 모사하여 RTE API 및 정적 코드의 내용에 따라 로직을 수행할 수 있고, 가상 포트의 출력을 변경하여 가상의 타겟 보드로 전송하는 역할을 수행할 수 있다. 오토사 플랫폼 가상화부(350)는 소프트웨어 플랫폼의 가상화를 통해 윈도우(windows) 환경에서도 차량용 소프트웨어의 동작에 관한 시뮬레이션이 가능하도록 할 수 있다.
일 실시예에서, 오토사 플랫폼 가상화부(350)는 소프트웨어 플랫폼의 각 모듈들에 대한 가상화를 구현하는 가상 오토사 플랫폼 코드를 생성할 수 있다. 이때, 가상 오토사 플랫폼 코드는 c 파일로 구현될 수 있다. 즉, 오토사 플랫폼 가상화부(350)는 차량용 소프트웨어를 윈도우 환경에서 시뮬레이션하기 위하여 기존의 오토사 플랫폼을 윈도우 환경으로 가상화하여 제공할 수 있다. 구체적으로, 오토사 플랫폼 가상화부(350)는 오토사 플랫폼의 RTE, BSW 등의 하위 계층에 대한 가상화를 제공할 수 있다. 예를 들어, 오토사 플랫폼 가상화부(350)는 가상화된 모듈로서 vRTE, vOSEK OS, vService, vI/O, vMCAL, vPortpin 등을 제공할 수 있다.
일 실시예에서, 오토사 플랫폼 가상화부(350)는 실행 코드들과 가상화 오토사 플랫폼 코드를 이용하여 시뮬레이션 동안 차량용 소프트웨어의 동작 로직을 수행하고 윈도우(windows) 환경에서 동작 가능한 시뮬레이션 파일을 생성할 수 있다. 즉, 오토사 플랫폼 가상화부(350)는 실행코드들과 가상화 오토사 플랫폼 코드들을 통합한 후 빌드(build)하여 윈도우 환경에서 실행되는 '.exe' 형식의 오토사 시뮬레이션 파일을 생성할 수 있다. 이후, 오토사 시뮬레이션 파일은 사용자 단말(110)의 윈도우 환경에서 실행될 수 있으며, 필요에 따라 시뮬레이션 장치(130)에서도 실행될 수 있다. 시뮬레이션 파일이 실행되는 경우, 가상화된 오토사 플랫폼 상에서 RTE API와 정적 코드의 내용에 따라 차량용 소프트웨어의 동작 로직이 실행될 수 있으며, 동작 결과에 따라 가상화된 오토사 플랫폼의 가상 포트를 통해 출력이 생성될 수 있다.
ECU 가상화 처리부(370)는 시뮬레이션에 따른 차량용 소프트웨어의 출력을 수신하고 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화할 수 있다. 여기에서, 가상화된 ECU는 차량용 소프트웨어의 구성 파일에서 추출된 ECU 설계 정보를 기반으로 생성될 수 있으며, 그래픽 인터페이스는 가상의 ECU 그래픽 시뮬레이터(simulator)로 구현될 수 있다. 예를 들어, ECU 가상화 처리부(370)는 시뮬레이션의 출력을 기초로 가상화된 ECU 상에서 LED의 점멸 동작을 시각화하거나 또는 디스플레이 패널의 화면 출력을 시각화할 수 있다.
일 실시예에서, ECU 가상화 처리부(370)는 가상화된 소프트웨어 플랫폼의 가상 포트(port)로부터 출력값을 수신하고 출력값에 상응하는 동작을 가상화된 ECU를 통해 출력할 수 있다. ECU 가상화 처리부(370)는 가상화된 소프트웨어 플랫폼의 가상 포트로부터 수신된 출력값에 따라 가상화된 ECU의 동작을 시뮬레이션한 후 동작 결과에 따른 그래픽을 시각화된 인터페이스를 통해 표시할 수 있다.
제어부(390)는 시뮬레이션 장치(130)의 전체적인 동작을 제어하고, 코드 파싱부(310), 코드 생성부(330), 오토사 플랫폼 가상화부(350) 및 ECU 가상화 처리부(370) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.
도 4는 본 발명에 차량용 소프트웨어 시뮬레이션의 전체적인 개념을 설명하는 도면이다.
도 4를 참조하면, 본 발명에 따른 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform) 상에서 시뮬레이션이 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성하고, 가상화된 ECU에 관한 그래픽 시뮬레이터(Virtual ECU Graphic Simulator)를 통해 시뮬레이션 결과를 시각적으로 제공할 수 있다.
보다 구체적으로, 본 발명에 따른 시뮬레이션 방법은 오토사 개발 툴을 통해 작성된 차량용 소프트웨어의 구성 파일, 즉 arxml 파일을 기초로 arxml 파서(arxml Parser)를 통해 소프트웨어 실행에 필요한 필수 정보들을 파싱할 수 있다. 또한, 시뮬레이션 방법은 파싱된 정보들을 이용하여 코드 생성기(Code Generator)를 통해 오토사 기반 소프트웨어 실행에 필요한 RTE API 및 정적 코드들을 생성할 수 있다. 이후, 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform)이 제공하는 가상 오토사 플랫폼 코드(Virtual AUTOSAR Platform Code)와 코드 생성기를 통해 생성된 실행 코드들을 통합하여 빌드(Build)함으로써 윈도우 환경에서 실행 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성할 수 있다. 마지막으로, 시뮬레이션 방법은 윈도우 환경에서 생성된 실행 파일(.exe)을 실행할 수 있고, 가상 오토사 플랫폼 상에서 실행되는 시뮬레이션의 결과를 수신하여 가상화된 ECU 그래픽 시뮬레이터(Virtual ECU Graphic Simulation)를 통해 시각화하여 표시할 수 있다.
한편, 본 발명에 따른 시뮬레이션 방법은 시뮬레이션 장치(130)를 통해 실행될 수 있으며, 이 경우 도 3의 코드 파싱부(310)는 arxml 파서로 구현되고 코드 생성부(330)는 코드 생성기로 구현되며, 오토사 플랫폼 가상화부(350)는 가상화된 오토사 플랫폼으로 구현되고, ECU 가상화 처리부(370)는 가상 ECU 그래픽 시뮬레이터로 구현될 수 있다.
도 5는 본 발명에 따른 차량용 소프트웨어 시뮬레이션 과정의 일 실시예를 설명하는 도면이다.
도 5를 참조하면, 사용자는 오토사 개발 툴을 사용하여 차량용 소프트웨어를 디자인할 수 있고, 이에 따라 ARXML 파일이 생성될 수 있다. ARXML 디자인이 완료되면 RTE API가 생성될 수 있으며, ARXML 파일을 파싱하여 추출된 정보들을 이용하여 차량용 소프트웨어의 동작에 관한 코드(Code)들이 생성될 수 있다. 시뮬레이션 장치(130)는 RTE API와 정적 코드(Static Code), 그리고 가상화된 오토사 플랫폼의 코드(Virtual AUTOSAR Platform Code)를 통합하여 윈도우 환경에서 실행 가능한 시뮬레이션 파일(Virtual AUTOSAR Simulation File)을 생성할 수 있다.
결과적으로, 시뮬레이션 장치(130)는 차량용 소프트웨어의 시뮬레이션 결과를 그래픽 시뮬레이터를 통해 시각화 할 수 있으며, 이를 통해 테스트 장비나 디버깅 장비에 종속되지 않고 타겟 ECU를 가상화한 시뮬레이터를 통해 SILS 기반 검증이 가능하도록 할 수 있다.
도 6은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템의 일 실시예를 설명하는 도면이다.
도 6을 참조하면, 본 발명에 따른 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform) 상에서의 시뮬레이션 동작에 따른 결과를 가상화된 ECU 그래픽 시뮬레이터(Virtual ECU Graphic Simulator)를 통해 출력할 수 있다. 구체적으로, 가상화된 오토사 플랫폼은 윈도우 환경에서 차량용 소프트웨어의 시뮬레이션을 수행하기 위한 가상화를 제공할 수 있다. 가상화된 오토사 플랫폼은 가상화된 RTE 레이어(vRTE), 가상화된 BSW 레이어(vBSW)를 포함할 수 있다.
여기에서, 가상화된 BSW 레이어는 다양한 ECU들에서 공통으로 사용하는 기능들을 가상화하는 계층에 해당할 수 있으며, 가상화된 서비스 레이어(Service Layer), 가상화된 ECU 추상화 레이어(EAL, ECU Abstraction Layer) 및 가상화된 마이크로컨트롤러 추상화 레이어(MCAL, Microcontroller Abstraction Layer)를 포함할 수 있다.
한편, 도 6에서 도시된 내용은 본 발명에 따른 일 실시예로서 통신 관련 모듈의 이해를 보충하기 위한 것이며, 해당 내용이 본 발명의 권리범위를 제한하지 않음은 물론이다.
먼저, 가상화된 서비스 레이어는 시스템 구동 및 다른 BSW 내 모듈들의 전반적인 제어를 위한 시스템(System), 메모리(Memory) 및 통신(Communication) 등의 서비스를 가상화할 수 있다. 시스템 서비스의 경우 주로 태스크(task)와 인터럽트(interrupt)를 관리하는 기능을 포함할 수 있고 메모리 서비스의 경우 메모리에 읽고 쓰기 위한 기능을 포함할 수 있으며 통신 서비스는 CAN, LIN 등의 통신 프로토콜을 사용하는데 필요한 기능을 포함할 수 있다.
또한, 가상화된 ECU 추상화 레이어는 가상화된 MCAL 드라이버들의 상위 계층에 인터페이스를 제공하는 추상화 계층을 가상화할 수 있다. 가상화된 ECU 추상화 레이어는 마이크로컨트롤러 이외의 외부 장치들과의 인터페이스를 제공할 수도 있다. 예를 들어, 외부 장치들에는 EEPROM, Flash, Watchdog 드라이버 등이 포함될 수 있다.
또한, 가상화된 마이크로컨트롤러 추상화 레이어는 마이크로컨트롤러 내부 장치를 이용하기 위한 내부 드라이버들을 가상화할 수 있다. 이에 따라, 가상화된 오토사 플랫폼은 가상화된 마이크로컨트롤러 추상화 레이어의 가상화된 드라이버 모듈들을 통해 가상화된 ECU 그래픽 시뮬레이터와의 데이터(vPortpin data)를 주고받을 수 있다. 한편, 가상화된 드라이버 모듈들에는 vCAN 드라이버, vFlexRay 드라이버, vEthernet 드라이버 및 vLIN 드라이버 등이 포함될 수 있다.
도 7은 본 발명에 따른 OS 가상화 과정의 일 실시예를 설명하는 도면이다.
도 7을 참조하면, 시뮬레이션 장치(130)는 가상화된 오토사 플랫폼의 OS 기능을 가상화할 수 있다. 구체적으로, 시뮬레이션 장치(130)는 스케줄러(OsScheduler), 알람(OsAlarm), 태스크(OsTask) 및 리소스(Resource)를 가상화하는 독립된 모듈들을 포함하여 구현될 수 있다.
스케줄러(OsScheduler) 모듈은 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정할 수 있다. 알람(OsAlarm) 모듈은 알람(Alarm) 기능을 가상화하여 설정 주기마다 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성할 수 있다. 일 실시예에서, 알람 모듈은 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 생성 요청 신호를 생성할 수 있다.
태스크(OsTask) 모듈은 생성 요청 신호에 따라 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 태스크의 상태에 따른 실행을 처리할 수 있다. 태스크 모듈은 태스크 쓰레드를 구조체(structure) 형태로 생성하여 태스크의 우선순위, 주기/비주기 여부 및 함수 포인터를 관리할 수 있다.
리소스(Resource) 모듈은 리소스(Resource)를 가상화하여 태스크의 실행에 따른 리소스 사용을 관리할 수 있다. 일 실시예에서, 리소스 모듈은 특정 태스크에서 리소스를 사용하는 경우 뮤텍스(Mutex)를 통해 해당 리소스 획득에 대한 상호배제를 수행하고 스케줄러에 의해 해당 리소스를 소유 중인 태스크의 우선순위를 변경하도록 할 수 있다.
보다 구체적으로, 스케줄러 모듈은 태스크 정보를 관리하는 태스크 인포 어레이(Task info array)와 태스크의 우선순위를 관리하는 우선순위 큐(Priority queue)를 참조하여 태스크들의 실행 순서를 관리할 수 있다. 구체적으로, 스케줄러 모듈은 태스크들의 우선순위에 따라 태스크의 상태를 RUNNING, READY, WAITING, SUSPENDED로 변경할 수 있다. 스케줄러 모듈은 READY 및 RUNNING 상태의 모든 태스크의 상태 및 우선순위를 검사하고 우선순위 큐(FIFO Queue)에 존재하는 Ready 상태의 태스크를 검사하여 다음에 실행할 태스크를 결정할 수 있다. 일 실시예에서, 스케줄러 모듈은 WinAPI인 ResumeThread, SuspendThread를 사용하여 태스크의 실행과 중단을 관리할 수 있다.
결과적으로, 스케줄러 모듈에 의해 실행 대상이 되는 태스크가 결정될 수 있으며, 해당 태스크 정보는 스케줄러 모듈을 통해 태스크 쓰레드(OsTask Thread) 모듈에 전달될 수 있다.
태스크 모듈(예를 들어, 도 7의 OsTask Thread)은 스케줄러 모듈의 실행 제어에 따라 대응되는 태스크 쓰레드의 동작을 실행할 수 있다. 태스크 쓰레드는 대응되는 태스크 유형에 따라 주기적인 동작과 비주기적인 동작을 수행할 수 있다. 주기적인 동작을 수행하는 태스크 쓰레드는 알람 모듈의 생성 요청 신호에 의해 생성될 수 있으며, 매핑된 이벤트를 1회 실행한 후 종료될 수 있다. 이와 달리, 비주기적인 동작을 수행하는 태스크 쓰레드는 알람 모듈의 활성화 요청 신호에 의해 활성화된 상태에서 매핑된 이벤트를 실행할 수 있으며, 이벤트 실행이 완료되더라도 종료되지 않고 동작 상태가 중지(suspend) 상태로 변경되어 다음 활성화 신호를 대기할 수 있다.
본 발명에 따른 시뮬레이션 방법은 차량용 소프트웨어 플랫폼의 가상화를 지원하여 윈도우 PC 환경에서 차량용 소프트웨어의 시뮬레이션을 통해 차량용 소프트웨어의 개발 및 검증 테스트에 높은 편이성을 제공할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 차량용 소프트웨어 시뮬레이션 시스템
110: 사용자 단말 130: 시뮬레이션 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 코드 파싱부 330: 코드 생성부
350: 오토사 플랫폼 가상화부 370: ECU 가상화 처리부
390: 제어부

Claims (12)

  1. 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 상기 구성 파일로부터 상기 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)하는 코드 파싱부;
    상기 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 상기 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성하는 코드 생성부;
    상기 소프트웨어 플랫폼의 가상화를 구현하고 상기 실행 코드들의 실행에 따라 상기 차량용 소프트웨어의 동작을 시뮬레이션하는 오토사 플랫폼 가상화부; 및
    상기 시뮬레이션에 따른 상기 차량용 소프트웨어의 출력을 수신하고 상기 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화하는 ECU 가상화 처리부;를 포함하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  2. 제1항에 있어서, 상기 코드 파싱부는
    상기 차량용 소프트웨어의 구성 파일로서 오토사(AUTOSAR) 기반 소프트웨어의 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  3. 제1항에 있어서, 상기 코드 생성부는
    상기 파싱된 정보들을 기초로 상기 차량용 소프트웨어의 실행에 필요한 RTE(RunTime Environment) API 및 정적 코드(static code)을 생성하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  4. 제1항에 있어서, 상기 오토사 플랫폼 가상화부는
    상기 소프트웨어 플랫폼의 각 모듈들에 대한 가상화를 구현하는 가상 오토사 플랫폼 코드를 생성하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  5. 제4항에 있어서, 상기 오토사 플랫폼 가상화부는
    상기 실행 코드들과 상기 가상화 오토사 플랫폼 코드를 이용하여 상기 시뮬레이션 동안 상기 차량용 소프트웨어의 동작 로직을 수행하고 윈도우(windows) 환경에서 동작 가능한 시뮬레이션 파일을 생성하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  6. 제1항에 있어서, 상기 ECU 가상화 처리부는
    상기 가상화된 소프트웨어 플랫폼의 가상 포트(port)로부터 출력값을 수신하고 상기 출력값에 상응하는 동작을 상기 가상화된 ECU를 통해 출력하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치.
  7. 코드 파싱부에서, 소프트웨어 개발 도구를 통해 작성된 차량용 소프트웨어의 구성 파일(configuration file)을 수신하고 상기 구성 파일로부터 상기 차량용 소프트웨어의 실행을 위한 정보들을 파싱(parsing)하는 단계;
    코드 생성부에서, 상기 파싱된 정보들을 기반으로 가상화된 소프트웨어 플랫폼 상에서 동작하는 상기 차량용 소프트웨어의 실행을 위한 실행 코드들을 생성하는 단계;
    오토사 플랫폼 가상화부에서, 상기 소프트웨어 플랫폼의 가상화를 구현하고 상기 실행 코드들의 실행에 따라 상기 차량용 소프트웨어의 동작을 시뮬레이션하는 단계; 및
    ECU 가상화 처리부에서, 상기 시뮬레이션에 따른 상기 차량용 소프트웨어의 출력을 수신하고 상기 출력을 기초로 가상화된 ECU의 동작을 그래픽 인터페이스를 통해 시각화하는 단계;를 포함하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
  8. 제7항에 있어서, 상기 파싱(parsing)하는 단계는
    상기 차량용 소프트웨어의 구성 파일로서 오토사(AUTOSAR) 기반 소프트웨어의 ARXML(AUTOSAR eXtensible Markup Language) 파일을 수신하는 단계를 포함하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
  9. 제7항에 있어서, 상기 실행 코드들을 생성하는 단계는
    상기 파싱된 정보들을 기초로 상기 차량용 소프트웨어의 실행에 필요한 RTE(RunTime Environment) API 및 정적 코드(static code)을 생성하는 단계를 포함하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
  10. 제7항에 있어서, 상기 시뮬레이션하는 단계는
    상기 소프트웨어 플랫폼의 각 모듈들에 대한 가상화를 구현하는 가상 오토사 플랫폼 코드를 생성하는 단계를 포함하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
  11. 제10항에 있어서, 상기 시뮬레이션하는 단계는
    상기 실행 코드들과 상기 가상화 오토사 플랫폼 코드를 이용하여 상기 시뮬레이션 동안 상기 차량용 소프트웨어의 동작 로직을 수행하고 윈도우(windows) 환경에서 동작 가능한 시뮬레이션 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
  12. 제7항에 있어서, 상기 시각화하는 단계는
    상기 가상화된 소프트웨어 플랫폼의 가상 포트(port)로부터 출력값을 수신하고 상기 출력값에 상응하는 동작을 상기 가상화된 ECU를 통해 출력하는 단계를 포함하는 것을 특징으로 하는 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법.
KR1020220087066A 2022-07-14 2022-07-14 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법 KR20240009757A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220087066A KR20240009757A (ko) 2022-07-14 2022-07-14 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220087066A KR20240009757A (ko) 2022-07-14 2022-07-14 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20240009757A true KR20240009757A (ko) 2024-01-23

Family

ID=89713870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220087066A KR20240009757A (ko) 2022-07-14 2022-07-14 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20240009757A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134735B1 (ko) 2010-11-03 2012-04-13 재단법인대구경북과학기술원 소프트웨어 컴포넌트 설계정보를 이용한 소프트웨어 테스트 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134735B1 (ko) 2010-11-03 2012-04-13 재단법인대구경북과학기술원 소프트웨어 컴포넌트 설계정보를 이용한 소프트웨어 테스트 방법 및 시스템

Similar Documents

Publication Publication Date Title
US10387585B2 (en) System and method for performing model verification
Aarno et al. Software and system development using virtual platforms: full-system simulation with wind river simics
US9952837B1 (en) Reusable component in a modeling environment
WO2014035463A1 (en) System and methods for generating and managing a virtual device
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
JP7321839B2 (ja) ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム
US8515727B2 (en) Automatic logic model build process with autonomous quality checking
US20130024178A1 (en) Playback methodology for verification components
JP2011221803A (ja) テストツール、テスト方法
Pohl et al. vMAGIC—automatic code generation for VHDL
Schoofs et al. An integrated modular avionics development environment
Merz et al. Bridging the gap between test cases and requirements by abstract testing
Bucher et al. RTAI-Lab tutorial: Scilab, Comedi, and real-time control
CN116306392A (zh) 芯片仿真装置、方法、电子设备和存储介质
KR20240009757A (ko) 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법
Ziemke et al. An integrated development framework for rapid development of platform-independent and reusable satellite on-board software
KR20240009783A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 코드 파싱 장치 및 방법
KR20240009773A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 포트 가상화 장치 및 방법
KR20240009779A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법
KR20240009786A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 os 가상화 장치 및 방법
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
Chen et al. Device driver generation targeting multiple operating systems using a model-driven methodology
JP2828590B2 (ja) マイクロプログラム検証方法
KR20240009766A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법
Liu et al. A real-time UEFI functional validation tool with behavior Colored Petri Net model