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

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

Info

Publication number
KR20240009786A
KR20240009786A KR1020220087110A KR20220087110A KR20240009786A KR 20240009786 A KR20240009786 A KR 20240009786A KR 1020220087110 A KR1020220087110 A KR 1020220087110A KR 20220087110 A KR20220087110 A KR 20220087110A KR 20240009786 A KR20240009786 A KR 20240009786A
Authority
KR
South Korea
Prior art keywords
task
virtualization
simulation
virtualization unit
scheduler
Prior art date
Application number
KR1020220087110A
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 KR1020220087110A priority Critical patent/KR20240009786A/ko
Publication of KR20240009786A publication Critical patent/KR20240009786A/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/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • 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/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45591Monitoring or debugging support

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 Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치 및 방법에 관한 것으로, 상기 장치는 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정하는 스케줄러 가상화부; 알람(Alarm) 기능을 가상화하여 설정 주기마다 상기 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성하는 알람 가상화부; 상기 생성 요청 신호에 따라 상기 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 상기 태스크의 상태에 따른 실행을 처리하는 태스크 가상화부; 및 리소스(Resource)를 가상화하여 상기 태스크의 실행에 따른 리소스 사용을 관리하는 리소스 가상화부;를 포함한다.

Description

차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치 및 방법{OPERATING SYSTEM VIRTUALIZATION DEVICE AND METHOD FOR SIMULATION OF AUTOMOTIVE SOFTWARE PLATFORM}
본 발명은 소프트웨어 시뮬레이션 기술에 관한 것으로, 보다 상세하게는 차량용 소프트웨어 플랫폼 기반의 애플리케이션을 시뮬레이션하여 타겟 보드 등 하드웨어 장비 없이 SILS(Software-In-the-Loop Simulation) 검증이 가능하도록 하기 위해 소프트웨어 플랫폼 OS를 가상화하는 기술에 관한 것이다.
차량용 인포테인먼트(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 시뮬레이션을 위해 소프트웨어의 동작이 실행되는 플랫폼 OS의 가상화를 제공하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치는 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정하는 스케줄러 가상화부; 알람(Alarm) 기능을 가상화하여 설정 주기마다 상기 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성하는 알람 가상화부; 상기 생성 요청 신호에 따라 상기 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 상기 태스크의 상태에 따른 실행을 처리하는 태스크 가상화부; 및 리소스(Resource)를 가상화하여 상기 태스크의 실행에 따른 리소스 사용을 관리하는 리소스 가상화부;를 포함한다.
상기 스케줄러 가상화부는 태스크 인포 어레이(task info array)를 통해 상기 태스크 정보를 관리하고 상기 우선순위에 따라 상기 태스크를 저장하는 우선순위 큐(priority queue)를 통해 상기 실행 순서를 관리할 수 있다.
상기 스케줄러 가상화부는 상기 태스크의 우선순위에 따라 상기 태스크의 상태를 실행(RUNNING), 준비(READY), 대기(WAITING) 및 중지(SUSPENDED) 중 어느 하나로 변경할 수 있다.
상기 스케줄러 가상화부는 상기 태스크 인포 어레이에서 상기 태스크의 상태가 준비(READY) 및 실행(RUNNING)에 해당하는 모든 태스크의 상태 및 우선순위를 검사하고 상기 우선순위 큐에서 상기 태스크의 상태가 준비(READY)에 해당하는 모든 태스크를 검사하여 다음에 실행할 태스크를 결정할 수 있다.
상기 알람 가상화부는 상기 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 상기 생성 요청 신호를 생성할 수 있다.
상기 태스크 가상화부는 상기 태스크 쓰레드를 구조체(structure) 형태로 생성하여 태스크의 우선순위, 주기/비주기 여부 및 함수 포인터를 관리할 수 있다.
상기 태스크 가상화부는 주기 태스크의 경우 상기 매핑된 이벤트를 1회 실행한 다음 해당 태스크의 동작을 종료시키고, 비주기 태스크의 경우 상기 태스크 쓰레드 내에서 무한루프를 통해 매핑된 이벤트를 1회 실행한 후 다음 활성화 요청까지 해당 태스크의 동작을 중지시킬 수 있다.
상기 리소스 가상화부는 특정 태스크에서 리소스를 사용하는 경우 뮤텍스(Mutex)를 통해 해당 리소스 획득에 대한 상호배제를 수행하고 상기 스케줄러에 의해 상기 해당 리소스를 소유 중인 태스크의 우선순위를 변경하도록 할 수 있다.
실시예들 중에서, 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법은 스케줄러 가상화부를 통해 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정하는 단계; 알람 가상화부를 통해 알람(Alarm) 기능을 가상화하여 설정 주기마다 상기 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성하는 단계; 태스크 가상화부를 통해 상기 생성 요청 신호에 따라 상기 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 상기 태스크의 상태에 따른 실행을 처리하는 단계; 및 리소스 가상화부를 통해 리소스(Resource)를 가상화하여 상기 태스크의 실행에 따른 리소스 사용을 관리하는 단계;를 포함한다.
상기 실행 순서를 결정하는 단계는 상기 태스크의 우선순위에 따라 상기 태스크의 상태를 실행(RUNNING), 준비(READY), 대기(WAITING) 및 중지(SUSPENDED) 중 어느 하나로 변경하는 단계를 포함할 수 있다.
상기 생성 요청 신호를 생성하는 단계는 상기 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 상기 생성 요청 신호를 생성하는 단계를 포함할 수 있다.
상기 실행을 처리하는 단계는 주기 태스크의 경우 상기 매핑된 이벤트를 1회 실행한 다음 해당 태스크의 동작을 종료시키고, 비주기 태스크의 경우 상기 태스크 쓰레드 내에서 무한루프를 통해 매핑된 이벤트를 1회 실행한 후 다음 활성화 요청까지 해당 태스크의 동작을 중지시키는 단계를 포함할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치 및 방법은 소프트웨어의 동작이 실행되는 플랫폼 OS의 가상화를 제공하여 PC 환경에서 시뮬레이션을 진행함으로써 차량용 소프트웨어의 개발 및 검증 테스트에 큰 활용도를 기대할 수 있으며, EILS나 HILS 검증 단계와 같이 테스트 장비나 디버깅 장비에 종속되지 않고 타겟 ECU를 가상화한 시뮬레이터를 통해 SILS 기반 검증이 가능할 수 있다.
본 발명의 일 실시예에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치 및 방법은 소프트웨어 기반 시뮬레이션을 통해 ECU 등 하드웨어에서 발생할 수 있는 오류들을 예측할 수 있어 EILS와 HILS 단계 검증 이전에 발생하는 에러들을 수정함으로써 오류를 줄일 수 있다. 이를 통해, 하드웨어 테스트 장비구축에 필요한 시간이나 비용을 절감할 수 있어 결과적으로 차량용 소프트웨어 개발 단가의 절감과 개발 주기의 단축의 이점을 얻을 수 있다. 그리고, 디버깅과 오류 발생 시 수정의 용이성을 향상시킬 수 있다.
도 1은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템을 설명하는 도면이다.
도 2는 도 1의 OS 가상화 장치의 시스템 구성을 설명하는 도면이다.
도 3은 도 1의 OS 가상화 장치의 기능적 구성을 설명하는 도면이다.
도 4는 본 발명에 차량용 소프트웨어 시뮬레이션의 전체적인 개념을 설명하는 도면이다.
도 5는 본 발명에 따른 차량용 소프트웨어 시뮬레이션 과정의 일 실시예를 설명하는 도면이다.
도 6은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템의 일 실시예를 설명하는 도면이다.
도 7은 본 발명에 따른 OS 가상화 과정의 일 실시예를 설명하는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽힐 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템을 설명하는 도면이다.
도 1을 참조하면, 차량용 소프트웨어 시뮬레이션 시스템(100)은 사용자 단말(110), OS 가상화 장치(130) 및 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 사용자에 의해 운용되는 단말 장치에 해당할 수 있다. 본 발명의 실시예에서 사용자는 하나 이상의 사용자로 이해될 수 있으며, 하나 이상의 사용자들 각각은 하나 이상의 사용자 단말(110)에 대응될 수 있다. 즉, 도 1에서는 하나의 사용자 단말(110)로 표현되어 있으나, 제1 사용자는 제1 사용자 단말, 제2 사용자는 제2 사용자 단말, ..., 제n(상기 n은 자연수) 사용자는 제n 사용자 단말에 각각 대응될 수 있다.
또한, 사용자 단말(110)은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템(100)을 구성하는 하나의 장치로서 구현될 수 있으며, 차량용 소프트웨어 시뮬레이션 시스템(100)은 소프트웨어 개발 툴을 통해 개발된 차량용 소프트웨어의 동작을 윈도우 환경에서 시뮬레이션하기 위한 목적에 따라 다양한 형태로 변형되어 운용될 수 있다.
또한, 사용자 단말(110)은 OS 가상화 장치(130)와 연결되어 동작 가능한 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 포함하여 다양한 디바이스로도 구현될 수 있다.
한편, 사용자 단말(110)은 OS 가상화 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들은 OS 가상화 장치(130)와 동시에 연결될 수도 있다.
OS 가상화 장치(130)는 본 발명에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법을 수행하는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 특히, OS 가상화 장치(130)는 윈도우 기반의 차량용 소프트웨어 시뮬레이션이 가능한 장치에 포함되어 구현될 수 있으며, 이에 따라 윈도우 기반의 차량용 소프트웨어 시뮬레이션 과정에서 차량용 소프트웨어가 실행되는 소프트웨어 플랫폼 OS를 가상화하는 동작을 독립적으로 처리할 수 있다.
또한, OS 가상화 장치(130)는 사용자 단말(110)과 유선 네트워크 또는 블루투스, WiFi, LTE 등과 같은 무선 네트워크로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 송·수신할 수 있다.
또한, OS 가상화 장치(130)는 독립된 외부 시스템(도 1에 미도시함)과 연결되어 동작하도록 구현될 수 있다. 일 실시예에서, OS 가상화 장치(130)는 차량용 소프트웨어의 시뮬레이션을 수행하는 클라우드 서버에 포함되어 구현될 수 있다.
데이터베이스(150)는 OS 가상화 장치(130)의 동작 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 예를 들어, 데이터베이스(150)는 차량용 소프트웨어 플랫폼에 관한 정보를 저장하거나 또는 가상화 시뮬레이션에 관한 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, OS 가상화 장치(130)가 본 발명에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법을 수행하는 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.
또한, 도 1에서, 데이터베이스(150)는 OS 가상화 장치(130)와 독립적인 장치로서 도시되어 있으나, 반드시 이에 한정되지 않고, 논리적인 저장장치로서 OS 가상화 장치(130)에 포함되어 구현될 수 있음은 물론이다.
도 2는 도 1의 포트 가상화 장치의 시스템 구성을 설명하는 도면이다.
도 2를 참조하면, OS 가상화 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함할 수 있다.
프로세서(210)는 본 발명의 실시예에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션 과정에서 OS 가상화 프로시저를 실행할 수 있고, 이러한 과정에서 읽히거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄 할 수 있다. 프로세서(210)는 OS 가상화 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 OS 가상화 장치(130)의 CPU(Central Processing Unit) 또는 GPU(Graphics Processing Unit)로 구현될 수 있다.
메모리(230)는 SSD(Solid State Disk) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 OS 가상화 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다. 또한, 메모리(230)는 전기적으로 연결된 프로세서(210)에 의해 실행됨으로써 본 발명에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션 과정에서 OS 가상화 방법을 실행하는 명령들의 집합을 저장할 수 있다.
사용자 입출력부(250)는 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함하고, 예를 들어, 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치 스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)는 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, OS 가상화 장치(130)는 독립적인 서버로서 수행될 수 있다.
네트워크 입출력부(270)는 네트워크를 통해 사용자 단말(110)과 연결되기 위한 통신 환경을 제공하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다. 또한, 네트워크 입출력부(270)는 학습 데이터의 무선 전송을 위해 WiFi, 블루투스 등의 근거리 통신 기능이나 4G 이상의 무선 통신 기능을 제공하도록 구현될 수 있다.
도 3은 도 1의 OS 가상화 장치의 기능적 구성을 설명하는 도면이다.
도 3을 참조하면, OS 가상화 장치(130)는 가상화된 소프트웨어 플랫폼의 OS 가상화를 제공할 수 있다. 이를 위한 구성으로서, OS 가상화 장치(130)는 스케줄러 가상화부(310), 알람 가상화부(330), 태스크 가상화부(350), 리소스 가상화부(370) 및 제어부(390)를 포함하여 구현될 수 있다.
이때, OS 가상화 장치(130)는 상기의 기능적 구성들을 동시에 모두 포함해야 하는 것은 아니며, 각각의 실시예에 따라 상기의 구성들 중 일부를 생략하거나, 상기의 구성들 중 일부 또는 전부를 선택적으로 포함하여 구현될 수도 있다. 또한, OS 가상화 장치(130)는 상기 구성들 중 일부를 선택적으로 포함하는 독립된 모듈로서 구현될 수 있으며, 각 모듈들 간의 연동을 통해 본 발명에 따른 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 코드 파싱 방법을 수행할 수도 있다. 이하, 각 구성들의 동작을 구체적으로 설명한다.
스케줄러 가상화부(310)는 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정할 수 있다. 스케줄러 가상화부(310)는 태스크의 실행 순서에 따라 WinAPI를 사용하여 해당 태스크의 실행과 중단을 관리할 수 있다. 또한, 스케줄러 가상화부(310)는 태스크 실행에 관한 신호를 태스크 가상화부(350)에 전달하여 해당 태스크의 동작이 처리되도록 할 수 있다.
일 실시예에서, 스케줄러 가상화부(310)는 태스크 인포 어레이(task info array)를 통해 태스크 정보를 관리하고 우선순위에 따라 태스크를 저장하는 우선순위 큐(priority queue)를 통해 실행 순서를 관리할 수 있다. 즉, 스케줄러 가상화부(310)는 태스크 인포 어레이와 우선순위 큐를 통해 스케줄러의 가상화된 동작을 처리할 수 있다. 여기에서, 태스크 인포 어레이는 태스크의 이름, 상태 및 우선순위 등을 포함하는 태스크 정보를 저장할 수 있으며, 현재 실행 중인 태스크에 관한 정보나 태스크의 자원 정보 등을 추가적으로 저장할 수 있다. 우선순위 큐는 태스크의 실행 순서를 관리하는데 사용될 수 있으며, 스케줄러 가상화부(310)는 현재 실행이 필요한 태스크들의 정보를 우선순위 큐에 삽입(push)하여 우선순위 큐를 통해 태스크의 실행 순서가 관리되도록 할 수 있다.
일 실시예에서, 스케줄러 가상화부(310)는 태스크의 우선순위에 따라 태스크의 상태를 실행(RUNNING), 준비(READY), 대기(WAITING) 및 중지(SUSPENDED) 중 어느 하나로 변경할 수 있다. 즉, 태스크의 상태 정보는 태스크의 현재 동작 상태에 따라 표현될 수 있으며, 태스크 인포 어레이에 저장되어 관리될 수 있다. 스케줄러 가상화부(310)는 태스크의 호출에 따른 상태 변경이 발생하는 경우 태스크 인포 어레이의 관련 정보를 갱신할 수 있다. 예를 들어, 태스크의 상태는 실행에서 대기, 대기에서 준비, 준비에서 실행으로 변경될 수 있다. 또한, 태스크의 상태는 실행에서 중지, 중지에서 준비, 준비에서 실행으로 변경될 수도 있다.
일 실시예에서, 스케줄러 가상화부(310)는 태스크 인포 어레이에서 태스크의 상태가 준비(READY) 및 실행(RUNNING)에 해당하는 모든 태스크의 상태 및 우선순위를 검사하고 우선순위 큐에서 태스크의 상태가 준비(READY)에 해당하는 모든 태스크를 검사하여 다음에 실행할 태스크를 결정할 수 있다. 스케줄러 가상화부(310)는 태스크들 중에서 현재 실행 중인 태스크이거나 실행 준비 중이면서 우선순위가 높은 태스크, 그리고 실제 우선순위 큐에서 현재 실행을 준비 중인 태스크들을 상호 비교하여 태스크 실행에 관한 순서를 결정할 수 있다. 결과적으로, 스케줄러 가상화부(310)는 가상화된 스케줄러를 통해 태스크의 실행 순서를 관리하고 실행 순서에 따른 태스크의 실행과 중단을 제어할 수 있다.
알람 가상화부(330)는 알람(Alarm) 기능을 가상화하여 설정 주기마다 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성할 수 있다. 알람 가상화부(330)의 동작에 영향을 주는 설정 주기는 OS 가상화 장치(130)에 의해 설정될 수 있으며, 알람 가상화부(330)는 설정된 주기마다 태스크 쓰레드를 생성하도록 생성 요청 신호를 생성할 수 있다. 한편, 생성 요청 신호는 특정 함수의 호출을 통해 구현될 수 있다.
일 실시예에서, 알람 가상화부(330)는 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 생성 요청 신호를 생성할 수 있다. 여기에서, 타이머 함수는 설정된 주기마다 설정된 콜백함수를 호출하는 함수에 해당할 수 있으며, 콜백함수는 태스크 생성 동작에 관한 소정의 동작을 수행하도록 구현된 함수에 해당할 수 있다. 예를 들어, 타이머 함수는 timeSetEvent 함수로 구현될 수 있으며, 콜백함수는 TimeProc 함수로 구현될 수 있다. 즉, 알람 가상화부(330)는 timeSetEvent 함수를 통해 설정된 주기마다 설정된 콜백함수를 호출하는 동작을 수행할 수 있고, 사전 정의된 콜백함수를 통해 태스크 쓰레드의 생성 동작을 개시될 수 있다.
태스크 가상화부(350)는 생성 요청 신호에 따라 태스크(task)에 대응되는 태스크 쓰레드(task thread)를 생성하여 가상화하고 태스크의 상태에 따른 실행을 처리할 수 있다. 즉, 태스크는 태스크 쓰레드로 구현되어 가상화될 수 있으며, 태스크의 고유 동작은 태스크 쓰레드를 통해 실행되어 처리될 수 있다. 태스크 가상화부(350)는 태스크 쓰레드의 생성과 종료를 처리할 수 있으며, 태스크의 상태에 따라 태스크 쓰레드를 활성화 또는 비활성화시킬 수 있다. 태스크 가상화부(350)는 스케줄러 가상화부(310)와 연동하여 태스크의 상태 변화에 따른 태스크 정보를 갱신 및 관리할 수 있다. 예를 들어, 태스크 가상화부(350)를 통해 태스크가 종료된 경우 스케줄러 가상화부(310)는 해당 태스크의 태스크 정보를 갱신할 수 있다. 만약 태스크 가상화부(350)를 통해 태스크가 생성된 경우 스케줄러 가상화부(310)는 해당 태스크의 태스크 정보를 추가할 수 있다.
일 실시예에서, 태스크 가상화부(350)는 태스크 쓰레드를 구조체(structure) 형태로 생성하여 태스크의 우선순위(Priority), 주기/비주기 여부 및 함수 포인터(function pointer)를 관리할 수 있다. 태스크의 우선순위는 태스크들 간의 스케줄링에 사용될 수 있으며, 주기/비주기 여부는 태스크 유형에 따른 동작을 제어하기 위해 사용될 수 있다. 또한, 함수 포인터는 태스크의 동작 실행을 위한 함수를 가리키는 포인터에 해당할 수 있다.
일 실시예에서, 태스크 가상화부(350)는 주기 태스크의 경우 매핑된 이벤트를 1회 실행한 다음 해당 태스크의 동작을 종료시키고, 비주기 태스크의 경우 태스크 쓰레드 내에서 무한루프를 통해 매핑된 이벤트를 1회 실행한 후 다음 활성화 요청까지 해당 태스크의 동작을 중지시킬 수 있다. 보다 구체적으로, 주기 태스크는 특정 동작을 주기적으로 처리하도록 구현될 수 있으며, 알람 가상화부(330)의 신호에 따라 태스크 쓰레드가 생성되면 태스크 가상화부(350)에 의해 실행된 후 종료될 수 있다. 이때, 태스크 쓰레드가 종료된 이후에는 다시 실행될 수 없다. 이와 달리, 비주기 태스크는 태스크 가상화부(350)에 의해 실행된 후 종료되지 않고 태스크의 상태만 변경될 수 있다. 즉, 비주기 태스크는 비활성화되어 동작이 중지된 상태에서 활성화(activation) 요청이 수신될 때까지 대기할 수 있다.
리소스 가상화부(370)는 리소스(Resource)를 가상화하여 태스크의 실행에 따른 리소스 사용을 관리할 수 있다. 여기에서, 리소스는 CPU, 메모리, 디바이스 및 스케줄러 등과 같이 여러 태스크들 사이에서 공유되어 사용되는 제한된 자원에 해당할 수 있다. 즉, 리소스 가상화부(370)는 가상화된 태스크들 사이에서 제한된 리소스가 안전하게 공유될 수 있도록 사용 순서를 조정해주는 자원 관리 동작을 수행할 수 있다. 리소스 가상화부(370)를 통해 가상화된 리소스들은 태스크 쓰레드의 동작 과정에서 리소스 관련 API를 통해 획득되거나 반환될 수 있으며, 리소스 유형에 따라 태스크가 실행(running) 상태에 집입할 때 자동으로 획득되도록 관리될 수도 있다.
일 실시예에서, 리소스 가상화부(370)는 특정 태스크에서 리소스를 사용하는 경우 뮤텍스(Mutex)를 통해 해당 리소스 획득에 대한 상호배제를 수행하고 스케줄러에 의해 해당 리소스를 소유 중인 태스크의 우선순위를 변경하도록 할 수 있다. 리소스 가상화부(370)를 통해 관리되는 리소스는 유형에 따라 태스크들 간의 공유가 제한될 수 있다. 즉, 리소스 가상화부(370)는 리소스가 특정 태스크에 의해 점유 중인 경우 다른 태스크에서 해당 리소스를 획득하지 못하도록 관리할 수 있으며, 이를 위해 뮤텍스(Mutex)를 활용할 수 있다. 뮤텍스(Mutex)는 공유 불가능한 리소스의 동시 사용을 방지하기 위하여 사용되는 알고리즘에 해당할 수 있다. 뮤텍스(Mutex)는 동일 시점에 오직 하나의 태스크만이 특정 리소스를 사용하도록 하며, 해당 태스크의 리소스 사용이 완료되면 뮤텍스(Mutex)는 해제될 수 있다.
제어부(390)는 OS 가상화 장치(130)의 전체적인 동작을 제어하고, 스케줄러 가상화부(310), 알람 가상화부(330), 태스크 가상화부(350) 및 리소스 가상화부(370) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.
도 4는 본 발명에 차량용 소프트웨어 시뮬레이션의 전체적인 개념을 설명하는 도면이다.
도 4를 참조하면, 윈도우 기반의 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform) 상에서 시뮬레이션이 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성하고, 가상화된 ECU에 관한 그래픽 시뮬레이터(Virtual ECU Graphic Simulator)를 통해 시뮬레이션 결과를 시각적으로 제공할 수 있다.
보다 구체적으로, 차량용 소프트웨어 시뮬레이션 방법은 오토사 개발 툴을 통해 작성된 차량용 소프트웨어의 구성 파일, 즉 arxml 파일을 기초로 arxml 파서(arxml Parser)를 통해 소프트웨어 실행에 필요한 필수 정보들을 파싱할 수 있다. 이때, arxml 파서는 본 발명에 따른 OS 가상화 장치(130)를 통해 구현될 수 있다. 즉, 차량용 소프트웨어의 구성 파일은 OS 가상화 장치(130)에 전달될 수 있으며, OS 가상화 장치(130)는 구성 파일로부터 소프트웨어 실행에 필요한 필수 정보들을 추출하여 제공할 수 있다.
예를 들어, 차량용 소프트웨어의 구성 파일에는 소프트웨어 컴포넌트의 설정 내용(데이터 타입, 인터페이스와의 연결 상태 등), ECU의 설정 내용(하드웨어 및 자원 구성 등), 시스템의 설정 내용(버스 시그널, 토폴로지, SWC와 ECU 간의 매핑, 네트워크 설정 등) 등이 포함될 수 있다. 또한, 소프트웨어 컴포넌트의 설정 내용에는 차량용 소프트웨어의 구현을 위한 태스크 동작 및 트리거 조건 등이 포함될 수 있다.
또한, 차량용 소프트웨어 시뮬레이션 방법은 파싱된 정보들을 이용하여 코드 생성기(Code Generator)를 통해 오토사 기반 소프트웨어 실행에 필요한 RTE API 및 정적 코드들을 생성할 수 있다.
이후, 차량용 소프트웨어 시뮬레이션 방법은 가상화된 오토사 플랫폼(Virtual AUTOSAR Platform)이 제공하는 가상 오토사 플랫폼 코드(Virtual AUTOSAR Platform Code)와 코드 생성기를 통해 생성된 실행 코드들을 통합하여 빌드(Build)함으로써 윈도우 환경에서 실행 가능한 오토사 시뮬레이션 파일(AUTOSAR Simulation File)을 생성할 수 있다.
마지막으로, 차량용 소프트웨어 시뮬레이션 방법은 윈도우 환경에서 생성된 실행 파일(.exe)을 실행할 수 있고, 가상 오토사 플랫폼 상에서 실행되는 시뮬레이션의 결과를 수신하여 가상화된 ECU 그래픽 시뮬레이터(Virtual ECU Graphic Simulation)를 통해 시각화하여 표시할 수 있다.
한편, 본 발명에 따른 OS 가상화 방법은 OS 가상화 장치(130)를 통해 실행될 수 있으며, 이 경우 가상화된 오토사 플랫폼은 OS 가상화 장치(130)에 포함되어 구현될 수 있다. 또한, OS 가상화 장치(130)는 차량용 소프트웨어 시뮬레이션이 가능한 독립된 장치로 구현될 수 있으며, 이 경우 arxml 파서(Parser), 코드 생성기(Code Generator) 및 가상 ECU 그래픽 시뮬레이터를 더 포함하여 구현될 수 있다.
도 5는 본 발명에 따른 차량용 소프트웨어 시뮬레이션 과정의 일 실시예를 설명하는 도면이다.
도 5를 참조하면, OS 가상화 장치(130)는 윈도우 기반의 차량용 소프트웨어 시뮬레이션을 수행하는 시뮬레이션 장치에 포함되어 구현될 수 있으며, 이에 따라 윈도우 기반의 차량용 소프트웨어 시뮬레이션 과정에서 소프트웨어의 동작이 실행되는 플랫폼 OS의 가상화를 제공하여 PC 환경에서 시뮬레이션이 진행되도록 할 수 있다.
구체적으로, 사용자는 오토사 개발 툴을 사용하여 차량용 소프트웨어를 디자인할 수 있고, 이에 따라 ARXML 파일이 생성될 수 있다. ARXML 디자인이 완료되면 RTE API가 생성될 수 있으며, ARXML 파일을 파싱하여 추출된 정보들을 이용하여 차량용 소프트웨어의 동작에 관한 코드(Code)들이 생성될 수 있다. 시뮬레이션 장치에서는 RTE API와 정적 코드(Static Code), 그리고 가상화된 오토사 플랫폼의 코드(Virtual AUTOSAR Platform Code)가 통합된 결과 윈도우 환경에서 실행 가능한 시뮬레이션 파일(Virtual AUTOSAR Simulation FILE)이 생성될 수 있다.
또한, 시뮬레이션 장치는 차량용 소프트웨어의 시뮬레이션 결과를 그래픽 시뮬레이터를 통해 시각화할 수 있으며, 이를 통해 테스트 장비나 디버깅 장비에 종속되지 않고 타겟 ECU를 가상화한 시뮬레이터를 통해 SILS 기반 검증이 가능하도록 할 수 있다. 특히, OS 가상화 장치(130)는 차량용 소프트웨어의 시뮬레이션 과정에서 소프트웨어의 가상화된 동작이 실행되는 플랫폼 OS의 가상화를 제공할 수 있다.
도 6은 본 발명에 따른 차량용 소프트웨어 시뮬레이션 시스템의 일 실시예를 설명하는 도면이다.
도 6을 참조하면, 본 발명에 따른 OS 가상화 방법은 차량용 소프트웨어의 실행을 위한 오토사 플랫폼(Virtual AUTOSAR Platform)의 가상화 환경을 제공할 수 있다. 이때, OS 가상화 방법을 기반으로 가상화된 오토사 플랫폼은 가상화된 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 드라이버 등이 포함될 수 있다.
도 7은 본 발명에 따른 OS 가상화 과정의 일 실시예를 설명하는 도면이다.
도 7을 참조하면, OS 가상화 장치(130)는 가상화된 오토사 플랫폼의 OS 기능을 가상화할 수 있다. 구체적으로, OS 가상화 장치(130)는 스케줄러(OsScheduler), 알람(OsAlarm), 태스크(OsTask) 및 리소스(Resource)를 가상화하는 독립된 모듈들을 포함하여 구현될 수 있다.
보다 구체적으로, 스케줄러 모듈은 태스크 정보를 관리하는 태스크 인포 어레이(Task info array)와 태스크의 우선순위를 관리하는 우선순위 큐(Priority queue)를 참조하여 태스크들의 실행 순서를 관리할 수 있다. 구체적으로, 스케줄러 모듈은 태스크들의 우선순위에 따라 태스크의 상태를 RUNNING, READY, WAITING, SUSPENDED로 변경할 수 있다. 스케줄러 모듈은 READY 및 RUNNING 상태의 모든 태스크의 상태 및 우선순위를 검사하고 우선순위 큐(FIFO Queue)에 존재하는 Ready 상태의 태스크를 검사하여 다음에 실행할 태스크를 결정할 수 있다. 일 실시예에서, 스케줄러 모듈은 WinAPI인 ResumeThread, SuspendThread를 사용하여 태스크의 실행과 중단을 관리할 수 있다.
결과적으로, 스케줄러 모듈에 의해 실행 대상이 되는 태스크가 결정될 수 있으며, 해당 태스크 정보는 스케줄러 모듈을 통해 태스크 쓰레드(OsTask Thread) 모듈에 전달될 수 있다.
태스크 쓰레드 모듈은 스케줄러 모듈의 실행 제어에 따라 대응되는 태스크 쓰레드의 동작을 실행할 수 있다. 태스크 쓰레드는 대응되는 태스크 유형에 따라 주기적인 동작과 비주기적인 동작을 수행할 수 있다. 주기적인 동작을 수행하는 태스크 쓰레드는 알람 모듈의 생성 요청 신호에 의해 생성될 수 있으며, 매핑된 이벤트를 1회 실행한 후 종료될 수 있다. 이와 달리, 비주기적인 동작을 수행하는 태스크 쓰레드는 알람 모듈의 활성화 요청 신호에 의해 활성화된 상태에서 매핑된 이벤트를 실행할 수 있으며, 이벤트 실행이 완료되더라도 종료되지 않고 동작 상태가 중지(suspend) 상태로 변경되어 다음 활성화 신호를 대기할 수 있다.
본 발명에 따른 OS 가상화 방법은 차량용 소프트웨어 플랫폼의 가상화를 지원하여 윈도우 PC 환경에서 차량용 소프트웨어의 시뮬레이션을 통해 차량용 소프트웨어의 개발 및 검증 테스트에 높은 편이성을 제공할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 차량용 소프트웨어 시뮬레이션 시스템
110: 사용자 단말 130: OS 가상화 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 스케줄러 가상화부 330: 알람 가상화부
350: 태스크 가상화부 370: 리소스 가상화부
390: 제어부

Claims (12)

  1. 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정하는 스케줄러 가상화부;
    알람(Alarm) 기능을 가상화하여 설정 주기마다 상기 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성하는 알람 가상화부;
    상기 생성 요청 신호에 따라 상기 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 상기 태스크의 상태에 따른 실행을 처리하는 태스크 가상화부; 및
    리소스(Resource)를 가상화하여 상기 태스크의 실행에 따른 리소스 사용을 관리하는 리소스 가상화부;를 포함하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  2. 제1항에 있어서, 상기 스케줄러 가상화부는
    태스크 인포 어레이(task info array)를 통해 상기 태스크 정보를 관리하고 상기 우선순위에 따라 상기 태스크를 저장하는 우선순위 큐(priority queue)를 통해 상기 실행 순서를 관리하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  3. 제1항에 있어서, 상기 스케줄러 가상화부는
    상기 태스크의 우선순위에 따라 상기 태스크의 상태를 실행(RUNNING), 준비(READY), 대기(WAITING) 및 중지(SUSPENDED) 중 어느 하나로 변경하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  4. 제2항에 있어서, 상기 스케줄러 가상화부는
    상기 태스크 인포 어레이에서 상기 태스크의 상태가 준비(READY) 및 실행(RUNNING)에 해당하는 모든 태스크의 상태 및 우선순위를 검사하고 상기 우선순위 큐에서 상기 태스크의 상태가 준비(READY)에 해당하는 모든 태스크를 검사하여 다음에 실행할 태스크를 결정하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  5. 제1항에 있어서, 상기 알람 가상화부는
    상기 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 상기 생성 요청 신호를 생성하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  6. 제1항에 있어서, 상기 태스크 가상화부는
    상기 태스크 쓰레드를 구조체(structure) 형태로 생성하여 태스크의 우선순위, 주기/비주기 여부 및 함수 포인터를 관리하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  7. 제1항에 있어서, 상기 태스크 가상화부는
    주기 태스크의 경우 상기 매핑된 이벤트를 1회 실행한 다음 해당 태스크의 동작을 종료시키고, 비주기 태스크의 경우 상기 태스크 쓰레드 내에서 무한루프를 통해 매핑된 이벤트를 1회 실행한 후 다음 활성화 요청까지 해당 태스크의 동작을 중지시키는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  8. 제1항에 있어서, 상기 리소스 가상화부는
    특정 태스크에서 리소스를 사용하는 경우 뮤텍스(Mutex)를 통해 해당 리소스 획득에 대한 상호배제를 수행하고 상기 스케줄러에 의해 상기 해당 리소스를 소유 중인 태스크의 우선순위를 변경하도록 하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 장치.
  9. 스케줄러 가상화부를 통해 스케줄러를 가상화하여 태스크 정보를 기반으로 우선순위에 따라 태스크의 상태를 갱신하며 태스크들의 상태를 검사하여 실행 순서를 결정하는 단계;
    알람 가상화부를 통해 알람(Alarm) 기능을 가상화하여 설정 주기마다 상기 실행 순서에 따라 매핑된 태스크에 대한 생성 요청 신호를 생성하는 단계;
    태스크 가상화부를 통해 상기 생성 요청 신호에 따라 상기 태스크에 대응되는 태스크 쓰레드를 생성하여 가상화하고 상기 태스크의 상태에 따른 실행을 처리하는 단계; 및
    리소스 가상화부를 통해 리소스(Resource)를 가상화하여 상기 태스크의 실행에 따른 리소스 사용을 관리하는 단계;를 포함하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법.
  10. 제9항에 있어서, 상기 실행 순서를 결정하는 단계는
    상기 태스크의 우선순위에 따라 상기 태스크의 상태를 실행(RUNNING), 준비(READY), 대기(WAITING) 및 중지(SUSPENDED) 중 어느 하나로 변경하는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법.
  11. 제1항에 있어서, 상기 생성 요청 신호를 생성하는 단계는
    상기 설정 주기마다 타이머(Timer) 함수를 통해 콜백함수를 호출하도록 하여 상기 생성 요청 신호를 생성하는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법.
  12. 제1항에 있어서, 상기 실행을 처리하는 단계는
    주기 태스크의 경우 상기 매핑된 이벤트를 1회 실행한 다음 해당 태스크의 동작을 종료시키고, 비주기 태스크의 경우 상기 태스크 쓰레드 내에서 무한루프를 통해 매핑된 이벤트를 1회 실행한 후 다음 활성화 요청까지 해당 태스크의 동작을 중지시키는 단계를 포함하는 것을 특징으로 하는 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 OS 가상화 방법.
KR1020220087110A 2022-07-14 2022-07-14 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 os 가상화 장치 및 방법 KR20240009786A (ko)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=89714049

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR20240009786A (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
JP4975544B2 (ja) シミュレーション装置及びプログラム
EP3382536B1 (en) Emulation of hardware components
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
US9268536B2 (en) Behavior invariant optimization of maximum execution times for model simulation
US8762781B2 (en) Method and apparatus useful in manufacturing test case operations
US9703905B2 (en) Method and system for simulating multiple processors in parallel and scheduler
EP3839731A1 (en) Apparatus and method to assign threads to a plurality of processor cores for virtualization of a hardware configuration
KR101701800B1 (ko) 차량 전장용 제어 소프트웨어를 위한 타스크 작동순서 가시화 방법, 이를 수행하기 위한 기록 매체 및 장치
Schoofs et al. An integrated modular avionics development environment
CN116306392A (zh) 芯片仿真装置、方法、电子设备和存储介质
KR20240009786A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 os 가상화 장치 및 방법
KR20240009779A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법
KR20240009773A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 포트 가상화 장치 및 방법
KR20240009757A (ko) 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법
KR20240009783A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 코드 파싱 장치 및 방법
CN113391903A (zh) 可调度性模型的建立方法、装置、电子设备及存储介质
KR20240009766A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
KR101137034B1 (ko) 계층적 병렬 환경에서의 분산 런타임 진단을 위한 시스템 및 방법
KR20140036731A (ko) 응용 프로그램 개발 방법 및 시스템
KR102600294B1 (ko) 차량용 플랫폼을 위한 arinc 기반 운영체제 헬스 모니터링 설정 코드 자동 생성 장치 및 방법
KR20200022254A (ko) 자기 정의 명세서 기반 os 설정 장치 및 방법
JP2012027952A (ja) シミュレーション装置
US11151294B1 (en) Emulated register access in hybrid emulation