KR20240009766A - 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법 - Google Patents

차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법 Download PDF

Info

Publication number
KR20240009766A
KR20240009766A KR1020220087077A KR20220087077A KR20240009766A KR 20240009766 A KR20240009766 A KR 20240009766A KR 1020220087077 A KR1020220087077 A KR 1020220087077A KR 20220087077 A KR20220087077 A KR 20220087077A KR 20240009766 A KR20240009766 A KR 20240009766A
Authority
KR
South Korea
Prior art keywords
pdu
virtualized
communication
virtualization
simulation
Prior art date
Application number
KR1020220087077A
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 KR1020220087077A priority Critical patent/KR20240009766A/ko
Publication of KR20240009766A publication Critical patent/KR20240009766A/ko

Links

Classifications

    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40267Bus for use in transportation systems
    • H04L2012/40273Bus for use in transportation systems the transportation system being a vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법에 관한 것으로, 상기 장치는 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공하는 PDU 가상화부; 소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 통신 드라이버를 가상화하는 통신 드라이버 가상화부; 통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달하는 인터페이스 가상화부; 상기 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달하는 PDU 라우터 가상화부; 및 상기 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리하는 서비스 가상화부;를 포함한다.

Description

차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법{NETWORK VIRTUALIZATION APPARATUS AND METHOD FOR SIMULATION OF AUTOMOTIVE SOFTWARE PLATFORM}
본 발명은 소프트웨어 시뮬레이션 기술에 관한 것으로, 보다 상세하게는 차량용 소프트웨어 플랫폼 기반의 애플리케이션을 시뮬레이션하여 타겟 보드 등 하드웨어 장비 없이 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)
본 발명의 일 실시예는 오토사 플랫폼 기반 ECU 시뮬레이션을 위해 소프트웨어의 동작이 실행되는 플랫폼의 네트워크에 대한 가상화를 제공하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치는 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공하는 PDU 가상화부; 소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 통신 드라이버를 가상화하는 통신 드라이버 가상화부; 통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달하는 인터페이스 가상화부; 상기 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달하는 PDU 라우터 가상화부; 및 상기 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리하는 서비스 가상화부;를 포함한다.
상기 PDU 가상화부는 상기 메시지 전송을 위한 PDU(Protocol Data Unit)의 식별자(Identifier), 데이터(Data), 길이(Length), 레퍼런스(Reference)를 구조체(structure)로 구현할 수 있다.
상기 통신 드라이버 가상화부는 상기 소켓 통신을 통해 수신된 데이터의 통신 방식에 따라 구조체로 구현된 L-PDU 또는 이더넷 프레임(Eth-Frame)에 해당 데이터를 저장하고 메시지 큐(Message Queue)를 통해 상기 가상화된 인터페이스에게 전달할 수 있다.
상기 인터페이스 가상화부는 상기 L-PDU 또는 상기 이더넷 프레임을 가상화된 I-PDU로 변환하고 메시지 큐를 통해 가상화된 PDU 라우터에게 전달할 수 있다.
상기 인터페이스 가상화부는 상기 통신 방식에 따라 CAN(Controller Area Network), FlexRay, Ethernet 및 LIN(Local Interconnect Network) 각각에 대응되는 독립적인 인터페이스를 쓰레드(thread)로 구현할 수 있다.
상기 인터페이스 가상화부는 각 인터페이스 내부의 제어 함수, 상태 확인 함수, 메시지 송수신 함수를 해당 쓰레드의 내부 함수로 구현할 수 있다.
상기 PDU 라우터 가상화부는 라우팅 테이블을 통해 상기 경로 정보를 조회하여 상기 라우팅 테이블에 등록된 복수의 목적지 모듈들 중 어느 하나를 결정할 수 있다.
상기 서비스 가상화부는 상기 통신 서비스와 상기 시스템 서비스의 각 서비스 기능들을 독립된 쓰레드로 구현하고 쓰레드 간의 PDU 송수신을 메시지 큐를 통해 구현할 수 있다.
차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법은 PDU 가상화부를 통해 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공하는 단계; 통신 드라이버 가상화부를 통해 통신 드라이버를 가상화하여 소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 단계; 인터페이스 가상화부를 통해 통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달하는 단계; PDU 라우터 가상화부를 통해 상기 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달하는 단계; 및 서비스 가상화부를 통해 상기 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리하는 단계;를 포함한다.
상기 데이터 통신을 처리하는 단계는 상기 소켓 통신을 통해 수신된 데이터의 통신 방식에 따라 구조체로 구현된 L-PDU 또는 이더넷 프레임(Eth-Frame)에 해당 데이터를 저장하고 메시지 큐(Message Queue)를 통해 상기 가상화된 인터페이스에게 전달하는 단계를 포함할 수 있다.
상기 PDU 라우터에게 전달하는 단계는 상기 L-PDU 또는 상기 이더넷 프레임을 가상화된 I-PDU로 변환하고 메시지 큐를 통해 가상화된 PDU 라우터에게 전달하는 단계를 포함할 수 있다.
상기 목적지 모듈에게 전달하는 단계는 라우팅 테이블을 통해 상기 경로 정보를 조회하여 상기 라우팅 테이블에 등록된 복수의 목적지 모듈들 중 어느 하나를 결정하는 단계를 포함할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법은 소프트웨어의 동작이 실행되는 플랫폼 OS의 네트워크에 대한 가상화를 제공하여 PC 환경에서 시뮬레이션을 진행함으로써 차량용 소프트웨어의 개발 및 검증 테스트에 큰 활용도를 기대할 수 있으며, 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)는 윈도우 기반의 차량용 소프트웨어 시뮬레이션이 가능한 장치에 포함되어 구현될 수 있으며, 이에 따라 윈도우 기반의 차량용 소프트웨어 시뮬레이션 과정에서 차량용 소프트웨어가 실행되는 소프트웨어 플랫폼 OS의 네트워크를 가상화하는 동작을 독립적으로 처리할 수 있다.
또한, 네트워크 가상화 장치(130)는 사용자 단말(110)과 유선 네트워크 또는 블루투스, WiFi, LTE 등과 같은 무선 네트워크로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 송·수신할 수 있다.
또한, 네트워크 가상화 장치(130)는 독립된 외부 시스템(도 1에 미도시함)과 연결되어 동작하도록 구현될 수 있다. 일 실시예에서, 네트워크 가상화 장치(130)는 차량용 소프트웨어의 시뮬레이션을 수행하는 클라우드 서버에 포함되어 구현될 수 있다.
데이터베이스(150)는 네트워크 가상화 장치(130)의 동작 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 예를 들어, 데이터베이스(150)는 차량용 소프트웨어 플랫폼에 관한 정보를 저장하거나 또는 가상화 시뮬레이션에 관한 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, 네트워크 가상화 장치(130)가 본 발명에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법을 수행하는 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.
또한, 도 1에서, 데이터베이스(150)는 네트워크 가상화 장치(130)와 독립적인 장치로서 도시되어 있으나, 반드시 이에 한정되지 않고, 논리적인 저장장치로서 네트워크 가상화 장치(130)에 포함되어 구현될 수 있음은 물론이다.
도 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)는 PDU 가상화부(310), 통신 드라이버 가상화부(330), 인터페이스 가상화부(350), PDU 라우터 가상화부(370), 서비스 가상화부(390) 및 제어부(도 3에 미도시함)를 포함할 수 있다.
PDU 가상화부(310)는 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공할 수 있다. 여기에서, PDU(Protocol Data Unit)는 가상화된 소프트웨어 플랫폼의 각 계층들 사이에 교환되는 통신 데이터에 해당할 수 있으며, 계층 내 모듈들 간의 전달되는 메시지(message), 시그널(signal) 등을 포함할 수 있다. PDU 가상화부(310)는 가상화된 소프트웨어 플랫폼 상에서 사용되는 각 PDU와 변수들을 정의할 수 있으며, 사용 목적이나 통신 방식에 따라 PDU에 관한 다양한 변형들을 생성할 수 있다. 즉, PDU 가상화부(310)는 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 통신 프로토콜에 따라 모듈 또는 계층 간에 교환되는 데이터를 다양한 방법으로 가상화할 수 있다.
일 실시예에서, PDU 가상화부(310)는 메시지 전송을 위한 PDU(Protocol Data Unit)의 식별자(Identifier), 데이터(Data), 길이(Length), 레퍼런스(Reference)를 구조체(structure)로 구현할 수 있다. 예를 들어, PDU 가상화부(310)는 가상화된 오토사(AUTOSAR) 플랫폼의 내부(BSW)에서 사용되는 통신 데이터 형식인 PDU의 식별자, 데이터, 길이 및 레퍼런스를 C의 구조체 형태로 구현하여 가상화할 수 있다.
통신 드라이버 가상화부(330)는 소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 통신 드라이버(Communication Driver)를 가상화할 수 있다. 즉, 통신 드라이버 가상화부(330)는 가상화된 소프트웨어 플랫폼 상에서 동작하는 차량용 소프트웨어와 가상화된 ECU 간의 데이터 교환을 위한 통신 드라이버를 가상화화여 제공할 수 있다. 통신 드라이버 가상화부(330)는 가상화된 ECU와의 통신 방식에 따라 적합한 통신 드라이버를 선택할 수 있고, 선택된 통신 드라이버의 가상화된 동작을 구현할 수 있다.
일 실시예에서, 통신 드라이버 가상화부(330)는 소켓 통신을 통해 수신된 데이터의 통신 방식에 따라 구조체로 구현된 L-PDU 또는 이더넷 프레임(Eth-Frame)에 해당 데이터를 저장하고 메시지 큐(Message Queue)를 통해 가상화된 인터페이스에게 전달할 수 있다. 가상화된 소프트웨어 플랫폼 상에서 적용되는 데이터 통신 방식에는 CAN, FlexRay, Ethernet, LIN 등이 포함될 수 있다. 통신 드라이버 가상화부(330)는 CAN, FlexRay 및 LIN에 대해 L-PDU 형태의 구조체에 데이터를 저장하고 Ethernet에 대해 Eth-Frame 형태의 구조체에 데이터를 저장할 수 있다. 이때, 가상화된 통신 드라이버는 메시지 큐를 통해 가상화된 인터페이스와의 통신을 처리할 수 있다.
한편, CAN(Controller Area Network)은 자동차 안전시스템, ECU간의 데이터 전송, 정보통신 시스템의 제어 등에 사용될 수 있으며, 멀티-마스터 원리에 따라 각 ECU는 버스 배선에 데이터를 전송하도록 구현될 수 있다. LIN(Local Interconnect Network)은 ECU와 능동센서 및 액츄에이터 간의 데이터 전송에 사용될 수 있으며, 중심이 되는 마스터 컴퓨터와 종속이 되는 다수의 슬레이브 컴퓨터들이 각각의 데이터 처리 내용에 따라 작업을 분담하여 처리할 수 있다. FlexRay는 자동차 네트워크 통신 프로토콜로, 주행 시스템 또는 운전자 보조 시스템, 안전 시스템 등 ECU들 간의 데이터를 전송하는데 사용될 수 있으며, 데이터의 전송속도가 높고 신뢰성이 뛰어나다는 특징을 가질 수 있다.
인터페이스 가상화부(350)는 통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달할 수 있다. 이를 위하여, 인터페이스 가상화부(350)는 통신 방식 별로 독립된 인터페이스를 구현할 수 있다. 예를 들어, 인터페이스 가상화부(350)는 데이터 통신 방식에 따라 각각 CAN Interface, FlexRay Interface, Ethernet Interface, LIN Interface 등을 가상화하여 제공할 수 있다. 가상화된 인터페이스는 통신 드라이버와 PDU 라우터 간의 데이터를 중계할 수 있으며, 대응되는 통신 방식에 따라 데이터 변환 동작을 추가적으로 수행할 수 있다.
일 실시예에서, 인터페이스 가상화부(350)는 L-PDU 또는 이더넷 프레임을 가상화된 I-PDU(Interaction layer Protocol Data Unit)로 변환하고 메시지 큐를 통해 가상화된 PDU 라우터에게 전달할 수 있다. 여기에서, L-PDU(Data Link Layer Protocol Data Unit)는 가상화된 소프트웨어 플랫폼의 하드웨어 추상화 계층(Hardware Abstraction layer)에서 사용되는 데이터 형태에 해당할 수 있다. 이더넷 프레임(Ethernet Frame)은 이터넷 통신(Ethernet Communication)을 위한 데이터 형태에 해당할 수 있으며, 프레임(frame)에 대한 이더넷의 특정 속성에 관한 정보를 포함할 수 있다.
또한, I-PDU는 가상화된 소프트웨어 플랫폼의 COM, DCM, IPduM 모듈 등에서 사용하는 데이터 형태에 해당할 수 있으며, PDU 라우터에 의해 각 모듈로 라우팅(routing)될 수 있다. I-PDU는 길이(length)와 패턴(Pattern)에 관한 속성(attribute) 정보를 추가적으로 포함할 수 있다.
일 실시예에서, 인터페이스 가상화부(350)는 통신 방식에 따라 CAN(Controller Area Network), FlexRay, Ethernet 및 LIN(Local Interconnect Network) 각각에 대응되는 독립적인 인터페이스를 쓰레드(thread)로 구현할 수 있다. 즉, 인터페이스 가상화부(350)는 인터페이스를 쓰레드로 구현하여 인터페이스에 관한 가상화를 제공할 수 있다.
일 실시예에서, 인터페이스 가상화부(350)는 각 인터페이스 내부의 초기화, 시작, 종료에 관한 제어 함수, 에러 및 상태 체크를 위한 상태 확인 함수, 네트워크 동작을 위한 메시지 송수신 함수를 해당 쓰레드의 내부 함수로 각각 구현할 수 있다. 이에 따라, 인터페이스가 제공하는 각 기능들은 쓰레드의 내부함수들로 구현될 수 있다. 예를 들어, CAN TP(Transfer Protocol), FlexRay TP, Socket Adaptor, COTS TCP/IP Stack 등은 인터페이스 쓰레드(Interface Thread) 내에서 함수 형태로 수행될 수 있다.
PDU 라우터 가상화부(370)는 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달할 수 있다. PDU 라우터 가상화부(370)는 서로 다른 버스(Bus) 간 또는 서로 다른 컨트롤러(Controller) 간의 PDU 송수신을 수행하여 게이트웨이(Gateway) 기능을 제공할 수 있다. 구체적으로, PDU 라우터 가상화부(370)는 가상화된 인터페이스로부터 메시지 큐를 통해 I-PDU를 수신한 경우 I-PDU가 전송될 목적지 모듈을 결정한 다음 해당 모듈로 메시지 큐를 통해 전송할 수 있다. 이때, 목적지 모듈은 COM, DCM 등의 서비스 모듈에 해당할 수 있다.
일 실시예에서, PDU 라우터 가상화부(370)는 라우팅 테이블을 통해 경로 정보를 조회하여 라우팅 테이블에 등록된 복수의 목적지 모듈들 중 어느 하나를 결정할 수 있다. 여기에서, 라우팅 테이블은 각 PDU의 경로 정보를 저장하는 테이블에 해당할 수 있다. 만약 라우팅 테이블에 기록되지 않은 I-PDU를 수신하면, PDU 라우터 가상화부(370)는 해당 I-PDU에 대한 데이터 전송을 중단할 수 있다.
서비스 가상화부(390)는 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리할 수 있다. 여기에서, 통신 서비스(Communication Service)에는 COM, DCM, CANSM, ComM, Nm 등이 포함될 수 있고, 시스템 서비스(System Service)에는 Dem, BswM 등이 포함될 수 있다.
일 실시예에서, 서비스 가상화부(390)는 통신 서비스와 시스템 서비스의 각 서비스 기능들을 독립된 쓰레드로 구현하고 쓰레드 간의 PDU 송수신을 메시지 큐를 통해 구현할 수 있다. 즉, 서비스 간의 데이터 교환은 쓰레드 간의 메시지 교환을 통해 가상화될 수 있다.
제어부(도 3에 미도시함)는 네트워크 가상화 장치(130)의 전체적인 동작을 제어하고, PDU 가상화부(310), 통신 드라이버 가상화부(330), 인터페이스 가상화부(350), PDU 라우터 가상화부(370) 및 서비스 가상화부(390) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.
도 4는 본 발명에 차량용 소프트웨어 시뮬레이션의 전체적인 개념을 설명하는 도면이다.
도 4를 참조하면, 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform) 상에서 시뮬레이션이 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성하고, 가상화된 ECU에 관한 그래픽 시뮬레이터(Virtual ECU Graphic Simulator)를 통해 시뮬레이션 결과를 시각적으로 제공할 수 있다.
보다 구체적으로, 차량용 소프트웨어 시뮬레이션 방법은 오토사 개발 툴을 통해 작성된 차량용 소프트웨어의 구성 파일, 즉 arxml 파일을 기초로 arxml 파서(arxml Parser)를 통해 소프트웨어 실행에 필요한 필수 정보들을 파싱할 수 있다. 이후, 차량용 소프트웨어의 구성 파일은 시뮬레이션 장치에 전달될 수 있으며, 시뮬레이션 장치는 구성 파일로부터 소프트웨어 실행에 필요한 필수 정보들을 추출하여 제공할 수 있다.
예를 들어, 차량용 소프트웨어의 구성 파일에는 소프트웨어 컴포넌트의 설정 내용(데이터 타입, 인터페이스와의 연결 상태 등), ECU의 설정 내용(하드웨어 및 자원 구성 등), 시스템의 설정 내용(버스 시그널, 토폴로지, SWC와 ECU 간의 매핑, 네트워크 설정 등) 등이 포함될 수 있다. 또한, 소프트웨어 컴포넌트의 설정 내용에는 차량용 소프트웨어의 구현을 위한 태스크 동작 및 트리거 조건 등이 포함될 수 있다.
또한, 차량용 소프트웨어 시뮬레이션 방법은 파싱된 정보들을 이용하여 코드 생성기(Code Generator)를 통해 오토사 기반 소프트웨어 실행에 필요한 RTE API 및 정적 코드들을 생성할 수 있다.
이후, 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform)이 제공하는 가상 오토사 플랫폼 코드(Virtual AUTOSAR Platform Code)와 코드 생성기를 통해 생성된 실행 코드들을 통합하여 빌드(Build)함으로써 윈도우 환경에서 실행 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성할 수 있다.
마지막으로, 차량용 소프트웨어 시뮬레이션 방법은 윈도우 환경에서 생성된 실행 파일(.exe)을 실행할 수 있고, 가상 오토사 플랫폼 상에서 실행되는 시뮬레이션의 결과를 수신하여 가상화된 ECU 그래픽 시뮬레이터(Virtual ECU Graphic Simulation)를 통해 시각화하여 표시할 수 있다.
한편, 본 발명에 따른 네트워크 가상화 방법은 네트워크 가상화 장치(130)를 통해 실행될 수 있으며, 이 경우 가상화된 오토사 플랫폼은 네트워크 가상화 장치(130)에 포함되어 구현될 수 있다. 또한, 네트워크 가상화 장치(130)는 차량용 소프트웨어 시뮬레이션이 가능한 독립된 장치로 구현될 수 있으며, 이 경우 arxml 파서(Parser), 코드 생성기(Code Generator) 및 가상 ECU 그래픽 시뮬레이터를 더 포함하여 구현될 수 있다.
도 5는 본 발명에 따른 차량용 소프트웨어 시뮬레이션 과정의 일 실시예를 설명하는 도면이다.
도 5를 참조하면, 네트워크 가상화 장치(130)는 윈도우 기반의 차량용 소프트웨어 시뮬레이션을 수행하는 시뮬레이션 장치에 포함되어 구현될 수 있으며, 이에 따라 윈도우 기반의 차량용 소프트웨어 시뮬레이션 과정에서 소프트웨어의 동작이 실행되는 플랫폼 OS의 네트워크에 대한 가상화를 제공하여 PC 환경에서 시뮬레이션이 진행되도록 할 수 있다.
구체적으로, 사용자는 오토사 개발 툴을 사용하여 차량용 소프트웨어를 디자인할 수 있고, 이에 따라 ARXML 파일이 생성될 수 있다. ARXML 디자인이 완료되면 RTE API가 생성될 수 있으며, ARXML 파일을 파싱하여 추출된 정보들을 이용하여 차량용 소프트웨어의 동작에 관한 코드(Code)들이 생성될 수 있다. 시뮬레이션 장치에서는 RTE API와 정적 코드(Static Code), 그리고 가상화된 오토사 플랫폼의 코드(Virtual AUTOSAR Platform Code)가 통합된 결과 윈도우 환경에서 실행 가능한 시뮬레이션 파일(Virtual AUTOSAR Simulation FILE)이 생성될 수 있다.
또한, 시뮬레이션 장치는 차량용 소프트웨어의 시뮬레이션 결과를 그래픽 시뮬레이터를 통해 시각화할 수 있으며, 이를 통해 테스트 장비나 디버깅 장비에 종속되지 않고 타겟 ECU를 가상화한 시뮬레이터를 통해 SILS 기반 검증이 가능하도록 할 수 있다. 특히, 네트워크 가상화 장치(130)는 차량용 소프트웨어의 시뮬레이션 과정에서 소프트웨어의 가상화된 동작이 실행되는 플랫폼 OS의 네트워크에 대한 가상화를 제공할 수 있다.
도 6은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템의 일 실시예를 설명하는 도면이다.
도 6을 참조하면, 본 발명에 따른 네트워크 가상화 방법은 차량용 소프트웨어의 실행을 위한 오토사 플랫폼(Virtual AUTOSAR Platform)의 가상화 환경을 제공할 수 있다. 이때, 네트워크 가상화 방법을 기반으로 가상화된 오토사 플랫폼은 가상화된 RTE 레이어(vRTE), 가상화된 BSW 레이어(vBSW)를 포함할 수 있다.
여기에서, 가상화된 BSW 레이어는 다양한 ECU들에서 공통으로 사용하는 기능들을 가상화하는 계층에 해당할 수 있으며, 가상화된 서비스 레이어(Service Layer), 가상화된 ECU 추상화 레이어(EAL, ECU Abstraction Layer) 및 가상화된 마이크로컨트롤러 추상화 레이어(MCAL, Microcontroller Abstraction Layer)를 포함할 수 있다.
먼저, 가상화된 서비스 레이어는 시스템 구동 및 다른 BSW 내 모듈들의 전반적인 제어를 위한 시스템(System), 메모리(Memory) 및 통신(Communication) 등의 서비스를 가상화할 수 있다. 시스템 서비스의 경우 주로 태스크(task)와 인터럽트(interrupt)를 관리하는 기능을 포함할 수 있고 메모리 서비스의 경우 메모리에 읽고 쓰기 위한 기능을 포함할 수 있으며 통신 서비스는 CAN, LIN 등의 통신 프로토콜을 사용하는데 필요한 기능을 포함할 수 있다.
또한, 가상화된 ECU 추상화 레이어는 가상화된 MCAL 드라이버들의 상위 계층에 인터페이스를 제공하는 추상화 계층을 가상화할 수 있다. 가상화된 ECU 추상화 레이어는 마이크로컨트롤러 이외의 외부 장치들과의 인터페이스를 제공할 수도 있다. 예를 들어, 외부 장치들에는 EEPROM, Flash, Watchdog 드라이버 등이 포함될 수 있다.
또한, 가상화된 마이크로컨트롤러 추상화 레이어는 마이크로컨트롤러 내부 장치를 이용하기 위한 내부 드라이버들을 가상화할 수 있다. 이에 따라, 가상화된 오토사 플랫폼은 가상화된 마이크로컨트롤러 추상화 레이어의 가상화된 드라이버 모듈들을 통해 가상화된 ECU 그래픽 시뮬레이터와의 데이터(vPortpin data)를 주고받을 수 있다. 한편, 가상화된 드라이버 모듈들에는 vCAN 드라이버, vFlexRay 드라이버, vEthernet 드라이버 및 vLIN 드라이버 등이 포함될 수 있다.
본 발명에 따른 네트워크 가상화 방법은 가상화된 오토사 플랫폼에서 BSW 레이어의 데이터 통신에 관한 가상화를 구현할 수 있다. 도 6에서, 네트워크 가상화 방법은 vPDU Router와 vIPDU multiplexer, vComM, vDCM 간의 통신과, vPDU Router와 CAN TP, FlexRay TP, Socket Adaptor 간의 통신과, CAN, FlexRay, Etherent, LIN에 관한 Interface들과 Driver들 간의 통신 등을 가상화하여 제공할 수 있다.
도 7은 본 발명에 따른 OS 가상화 과정의 일 실시예를 설명하는 도면이다.
도 7을 참조하면, 차량용 소프트웨어 시뮬레이션 시스템(100)은 가상화된 오토사 플랫폼의 OS 기능을 가상화할 수 있다. 구체적으로, 차량용 소프트웨어 시뮬레이션 시스템(100)은 스케줄러(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) 상태로 변경되어 다음 활성화 신호를 대기할 수 있다.
차량용 소프트웨어 시뮬레이션 시스템(100)은 차량용 소프트웨어 플랫폼의 가상화를 지원하여 윈도우 PC 환경에서 차량용 소프트웨어의 시뮬레이션을 통해 차량용 소프트웨어의 개발 및 검증 테스트에 높은 편이성을 제공할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 차량용 소프트웨어 시뮬레이션 시스템
110: 사용자 단말 130: 네트워크 가상화 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: PDU 가상화부 330: 통신 드라이버 가상화부
350: 인터페이스 가상화부 370: PDU 라우터 가상화부
390: 서비스 가상화부

Claims (12)

  1. 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공하는 PDU 가상화부;
    소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 통신 드라이버를 가상화하는 통신 드라이버 가상화부;
    통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달하는 인터페이스 가상화부;
    상기 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달하는 PDU 라우터 가상화부; 및
    상기 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리하는 서비스 가상화부;를 포함하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  2. 제1항에 있어서, 상기 PDU 가상화부는
    상기 메시지 전송을 위한 PDU(Protocol Data Unit)의 식별자(Identifier), 데이터(Data), 길이(Length), 레퍼런스(Reference)를 구조체(structure)로 구현하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  3. 제1항에 있어서, 상기 통신 드라이버 가상화부는
    상기 소켓 통신을 통해 수신된 데이터의 통신 방식에 따라 구조체로 구현된 L-PDU 또는 이더넷 프레임(Eth-Frame)에 해당 데이터를 저장하고 메시지 큐(Message Queue)를 통해 상기 가상화된 인터페이스에게 전달하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  4. 제3항에 있어서, 상기 인터페이스 가상화부는
    상기 L-PDU 또는 상기 이더넷 프레임을 가상화된 I-PDU로 변환하고 메시지 큐를 통해 가상화된 PDU 라우터에게 전달하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  5. 제1항에 있어서, 상기 인터페이스 가상화부는
    상기 통신 방식에 따라 CAN(Controller Area Network), FlexRay, Ethernet 및 LIN(Local Interconnect Network) 각각에 대응되는 독립적인 인터페이스를 쓰레드(thread)로 구현하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  6. 제5항에 있어서, 상기 인터페이스 가상화부는
    각 인터페이스 내부의 제어 함수, 상태 확인 함수, 메시지 송수신 함수를 해당 쓰레드의 내부 함수로 구현하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  7. 제1항에 있어서, 상기 PDU 라우터 가상화부는
    라우팅 테이블을 통해 상기 경로 정보를 조회하여 상기 라우팅 테이블에 등록된 복수의 목적지 모듈들 중 어느 하나를 결정하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  8. 제1항에 있어서, 상기 서비스 가상화부는
    상기 통신 서비스와 상기 시스템 서비스의 각 서비스 기능들을 독립된 쓰레드로 구현하고 쓰레드 간의 PDU 송수신을 메시지 큐를 통해 구현하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치.
  9. PDU 가상화부를 통해 가상화된 소프트웨어 플랫폼 상에서 차량용 소프트웨어의 시뮬레이션이 수행되는 동안 계층 간의 메시지 전송을 위한 프로토콜을 가상화하여 제공하는 단계;
    통신 드라이버 가상화부를 통해 통신 드라이버를 가상화하여 소켓(socket) 통신을 기반으로 가상화된 ECU와의 데이터 통신을 처리하는 단계;
    인터페이스 가상화부를 통해 통신 방식에 따른 인터페이스를 가상화하고 가상화된 통신 드라이버로부터 수신된 데이터를 PDU 라우터에게 전달하는 단계;
    PDU 라우터 가상화부를 통해 상기 PDU 라우터(Router)를 가상화하고 가상화된 인터페이스로부터 수신된 데이터를 경로 정보를 참조하여 목적지 모듈에게 전달하는 단계; 및
    서비스 가상화부를 통해 상기 가상화된 소프트웨어 플랫폼의 통신 서비스와 시스템 서비스를 가상화하고 서비스의 동작 과정에서 서비스 간의 메시지 교환을 가상화하여 처리하는 단계;를 포함하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법.
  10. 제9항에 있어서, 상기 데이터 통신을 처리하는 단계는
    상기 소켓 통신을 통해 수신된 데이터의 통신 방식에 따라 구조체로 구현된 L-PDU 또는 이더넷 프레임(Eth-Frame)에 해당 데이터를 저장하고 메시지 큐(Message Queue)를 통해 상기 가상화된 인터페이스에게 전달하는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법.
  11. 제10항에 있어서, 상기 PDU 라우터에게 전달하는 단계는
    상기 L-PDU 또는 상기 이더넷 프레임을 가상화된 I-PDU로 변환하고 메시지 큐를 통해 가상화된 PDU 라우터에게 전달하는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법.
  12. 제9항에 있어서, 상기 목적지 모듈에게 전달하는 단계는
    라우팅 테이블을 통해 상기 경로 정보를 조회하여 상기 라우팅 테이블에 등록된 복수의 목적지 모듈들 중 어느 하나를 결정하는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 방법.
KR1020220087077A 2022-07-14 2022-07-14 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법 KR20240009766A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220087077A KR20240009766A (ko) 2022-07-14 2022-07-14 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220087077A KR20240009766A (ko) 2022-07-14 2022-07-14 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법

Publications (1)

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

Family

ID=89713945

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220087077A KR20240009766A (ko) 2022-07-14 2022-07-14 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20240009766A (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
US11314907B2 (en) Simulation including multiple simulators
EP3382536B1 (en) Emulation of hardware components
US9418181B2 (en) Simulated input/output devices
JP7321839B2 (ja) ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム
US20210165748A1 (en) Computer-implemented method for integrating at least one signal value into a virtual control unit
Feth et al. Virtual validation of cyber physical systems
JP2011221803A (ja) テストツール、テスト方法
CN112764981A (zh) 一种协同测试系统及方法
US7447618B2 (en) Method and system for ASIC simulation
KR20240009766A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법
Muli et al. Virtual validation-a new paradigm in controls engineering
WO2022123803A1 (ja) 制御システムおよび制御方法
US20210141710A1 (en) Development support device
KR20240009786A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 os 가상화 장치 및 방법
KR20240009773A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 포트 가상화 장치 및 방법
WO2011100785A1 (en) Co-design of a testbench and driver of a device
KR20240009779A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법
KR20240009757A (ko) 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법
Balashov et al. A hardware-in-the-loop simulation environment for real-time systems development and architecture evaluation
KR20240009783A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 코드 파싱 장치 및 방법
US20240176632A1 (en) Method for generating and verifying automotive embedded software based on autosar
Serra Multi-criticality Hypervisor for Automotive Domain
KR20240077722A (ko) 오토사 기반의 차량용 임베디드 소프트웨어 생성 및 검증 방법
KR20240077723A (ko) 오토사 기반의 차량용 임베디드 소프트웨어 생성 및 검증 방법
Mohan et al. Connecting AUTOSAR VFB to Simulink Environment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal