KR102349107B1 - Method for managing execution of runnables on autosar platform - Google Patents
Method for managing execution of runnables on autosar platform Download PDFInfo
- Publication number
- KR102349107B1 KR102349107B1 KR1020200089346A KR20200089346A KR102349107B1 KR 102349107 B1 KR102349107 B1 KR 102349107B1 KR 1020200089346 A KR1020200089346 A KR 1020200089346A KR 20200089346 A KR20200089346 A KR 20200089346A KR 102349107 B1 KR102349107 B1 KR 102349107B1
- Authority
- KR
- South Korea
- Prior art keywords
- execution
- runnable
- platform
- ottosa
- control unit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
오토사 플랫폼에서 러너블 실행을 관리하는 방법이 제공된다. 본 발명의 실시예들은, 복수의 러너블(runnable)들의 실행의 선후 관계를 사전에 정의하고, 복수의 러너블들 중 제1 러너블이 호출되면, 이벤트 체인 기록에 기초하여 제1 러너블보다 먼저 실행되어야 할 러너블들이 정상적으로 실행되었는지 확인하고, 정상적으로 실행되었다면 제1 러너블을 실행한 후, 제1 러너블 실행 완료를 이벤트 체인에 기록한다. 복수의 프로세서 및/또는 코어들 사이에 이벤트 체인을 공유함으로써, 서로 다른 프로세서 및/또는 코어에서 실행되는 러너블 및 애플리케이션들의 사이의 실행의 선후 관계를 관리할 수 있다.A method is provided for managing runnable execution on the Ottosa platform. Embodiments of the present invention define a precedence relationship of execution of a plurality of runnables in advance, and when a first runnable among a plurality of runnables is called, based on an event chain record, the first runnable is higher than the first runnable. First, it is checked whether the runables to be executed are normally executed, and if they are normally executed, the first runable is executed, and the completion of the first runable execution is recorded in the event chain. By sharing an event chain among a plurality of processors and/or cores, it is possible to manage the execution precedence relationship between runners and applications running on different processors and/or cores.
Description
본 발명은 오토사 플랫폼에서 애플리케이션 러너블(runnable) 실행을 관리하는 방법에 관한 것이다. 보다 자세하게는, 오토사 플랫폼에서 애플리케이션 러너블들이 정해진 실행 순서에 따라 실행되도록 관리하고, 비정상적인 순서로 실행될 경우 적절한 에러 처리를 수행하기 위한 방법에 관한 것이다.The present invention relates to a method for managing application runnable execution on the Ottosa platform. More specifically, it relates to a method for managing application runners to be executed according to a predetermined execution order on the Otosa platform, and performing appropriate error handling when they are executed in an abnormal order.
종래의 자동차는 기계 장치의 집합이었으나, 최근의 자동차에는 점점 더 많은 전자 장치들이 장착되고 있으며, 이제 자동차는 다양한 전자 장치들의 집합이라 해도 과언이 아니다. 차량 자세 제어, 자동 주차, 지능형 운전 보조 및 자율 운전 등의 기능들이 보다 보편화 되면서 더욱 많은 전자 장치들이 자동차 내에서 서로 연동되고 있다. A conventional automobile is a set of mechanical devices, but more and more electronic devices are being installed in recent automobiles, and it is no exaggeration to say that the automobile is a collection of various electronic devices. As functions such as vehicle posture control, automatic parking, intelligent driving assistance and autonomous driving become more common, more and more electronic devices are interlocking with each other in automobiles.
자동차에 사용되는 전자 장치가 많아질수록 그에 사용되는 소프트웨어의 표준화에 대한 요구 또한 커져갔다. 이에 모듈의 재사용성을 높이고 차량 별 부품의 호환성을 높이고자 개발된 오토사(AUTOSAR)라고 불리는 임베디드 소프트웨어 오픈 플랫폼(Embedded Software Open Platform)이 널리 사용되고 있다.As the number of electronic devices used in automobiles increases, the demand for standardization of software used therein also increases. Accordingly, an Embedded Software Open Platform called AUTOSAR, which was developed to increase module reusability and improve compatibility of parts for each vehicle, is widely used.
오토사(AUTOSAR; AUTomotive Open System ARchitecture)란 개방형 자동차 표준 소프트웨어 구조이다. 오토사는 자동차에 사용되는 전자 장치의 표준화를 위해서 완성차 제조업체, 부품공급회사 및 IT 기술 업체 등이 주축이 되어 출범한 단체이자 표준 규격의 이름이다. 이에 대한 보다 자세한 내용은 오토사의 홈페이지(http://www.autosar.org/)에서 확인할 수 있다.AUTOSAR (AUTomotive Open System ARchitecture) is an open automotive standard software architecture. Auto Corporation is the name of an organization and standardization standard launched by automobile manufacturers, parts suppliers, and IT technology companies to standardize electronic devices used in automobiles. For more information on this, visit Autosar's website (http://www.autosar.org/).
오토사 OS는 선점형 멀티 태스킹(multi-tasking)을 지원하는 운영체제로, 애플리케이션에 표준화된 인터페이스를 제공한다. 표준화된 인터페이스를 통해 하드웨어(hardware)에 독립적인 애플리케이션 개발을 가능케 하며, 확장성과 안정성을 높일 수 있다. 또한 스케줄링을 통하여 여러 작업을 하나의 ECU에서 분산 수행할 수 있어 하드웨어 자원의 활용을 극대화할 수 있다.Otosa OS is an operating system that supports preemptive multi-tasking and provides a standardized interface to applications. Through a standardized interface, hardware-independent application development is possible, and scalability and stability can be improved. In addition, through scheduling, multiple tasks can be distributed and performed in one ECU, maximizing the utilization of hardware resources.
오토사 플랫폼에서의 애플리케이션 소프트웨어는 소프트웨어 컴포넌트(software component) 단위로 모듈화되어 설계되며, 소프트웨어 컴포넌트의 기능은 러너블(runnable)이라고 지칭되는 코드 단위들을 통해 구현된다. 오토사 플랫폼에서 태스크는 OS가 자원을 할당하여 소프트웨어를 실행하기 위한 작업 스케줄링의 단위이다. 애플리케이션 소프트웨어는 태스크(task)에 매핑된 러너블 단위로 실행된다. The application software in the Ottosa platform is modularized and designed in units of software components, and the functions of the software components are implemented through code units called runnables. In the Otosa platform, a task is a unit of job scheduling for the OS to allocate resources to execute software. Application software is executed as a runnable unit mapped to a task.
하나의 ECU에는 서로 다른 러너블들을 실행시키는 여러 태스크들이 존재하게 되고, 상황에 따라 태스크의 상태가 변이하며, 태스크가 호출되어 작업이 수행된다.In one ECU, several tasks that execute different runables exist, the state of the task changes depending on the situation, and the task is called and the work is performed.
오토사는 태스크들이 적절한 순서로 실행되도록 하기 위해 워치독 매니저(Watchdog Manager)를 구비한다. 워치독 매니저는 애플리케이션의 태스크를 감시 대상으로 하여 감시 조건에 맞게 동작하는지 모니터링을 수행한다. 워치독 매니저의 감시 조건은 Alive Supervision, Deadline Supervision, Logical Supervision 등인데, Logical Supervision은 감시대상의 감시 지점간 순서를 정의하고 해당 실행 순서를 감시하는 기능을 한다. 워치독 매니저는 실행 중인 태스크의 함수와 실행 시간 및 순서를 대상으로 에러를 검출하게 되면 하드웨어 워치독에게 트리거링 조건을 전달하여 하드웨어를 리셋함으로서 시스템을 초기화 한다. Otto has a Watchdog Manager to ensure that tasks are executed in the proper order. The watchdog manager monitors the operation of the application task in accordance with the monitoring conditions by monitoring it. The monitoring conditions of the watchdog manager are Alive Supervision, Deadline Supervision, Logical Supervision, etc. Logical Supervision defines the order between the monitoring points of the monitoring target and monitors the execution order. When the watchdog manager detects an error in the function, execution time, and sequence of the task being executed, it transmits a triggering condition to the hardware watchdog and resets the hardware to initialize the system.
그런데 오토사에서 제공되는 워치독 기반의 태스크 실행 순서 관리 기능은, 멀티 프로세서 및 멀티 코어를 지원하지 못하고, 동일 코어에서 실행되는 작업들 사이에서만 체크 포인트를 구성할 수 있다는 한계가 있으며, 에러 검출 시 하드웨어를 리셋하는 동작만을 제공한다는 점에서 상당한 한계가 있다. 따라서, 서로 다른 프로세서나 코어에서 실행되는 작업들 사이의 실행 순서를 관리하고, 적절한 에러 처리 옵션을 제공할 필요가 있다. However, the watchdog-based task execution order management function provided by Autosa does not support multi-processors and multi-cores, and there is a limitation in that checkpoints can be configured only between tasks executed in the same core. There is a significant limitation in that only an operation for resetting the hardware is provided. Therefore, it is necessary to manage the execution order between tasks executed in different processors or cores and provide an appropriate error handling option.
본 발명이 해결하고자 하는 기술적 과제는 오토사 플랫폼에서 애플리케이션 러너블들의 실행 순서를 관리하는 방법을 제공하는 것이다.The technical problem to be solved by the present invention is to provide a method for managing the execution order of application runners in the Ottosa platform.
본 발명이 해결하고자 하는 다른 기술적 과제는 멀티 프로세서 또는 멀티 코어 등 복수의 제어 유닛에 의해 실행되는 오토사 플랫폼에서, 서로 다른 제어 유닛들 사이에 러너블들의 실행 순서를 관리하는 방법을 제공하는 것이다. Another technical problem to be solved by the present invention is to provide a method of managing the execution order of runners between different control units in an Ottosa platform that is executed by a plurality of control units such as multi-processors or multi-cores.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 오토사 플랫폼에서 실행되는 애플리케이션 소프트웨어의 수정 없이도 애플리케이션 러너블들의 실행 순서를 관리할 수 있도록 하는 방법을 제공하는 것이다.Another technical problem to be solved by the present invention is to provide a method for managing the execution order of application runners without modification of application software running on the Ottosa platform.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 오토사 플랫폼에서 애플리케이션 러너블들의 실행 순서가 준수되지 않을 경우에 적절한 방식으로 에러를 처리할 수 있도록 하는 방법을 제공하는 것이다. Another technical problem to be solved by the present invention is to provide a method for handling an error in an appropriate manner when the execution order of application runners is not observed in the Otosa platform.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.
상술한 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 오토사 플랫폼에서 러너블 실행을 관리하는 방법은, 복수의 러너블(runnable)들의 실행의 선행 조건들을 획득하는 단계와, 상기 복수의 러너블들 중 제1 러너블 실행의 선행 조건의 충족 여부를 판정하는 전처리를 수행하는 단계와, 상기 제1 러너블을 실행하는 단계와, 및 상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 이벤트 체인에 추가하는 후처리를 수행하는 단계를 포함할 수 있다.In order to solve the above-described technical problem, a method for managing runnable execution in an Ottosa platform according to an embodiment of the present invention includes: acquiring prerequisites for execution of a plurality of runnables; Performing pre-processing for determining whether a prerequisite for execution of a first of the runners is satisfied; executing the first runner; may include performing post-processing of adding to the event chain.
일 실시예에서, 상기 복수의 러너블들의 실행의 선행 조건들은, 상기 복수의 러너블들의 실행의 선후 관계를 나타내는 것일 수 있다. In an embodiment, the prerequisites for the execution of the plurality of runners may indicate a precedence relationship of the execution of the plurality of runners.
일 실시예에서, 상기 복수의 러너블들의 실행의 선행 조건들은, 상기 제1 러너블보다 먼저 실행되어야 할 하나 이상의 다른 러너블들에 관한 정보를 포함할 수 있다.In an embodiment, the prerequisites for execution of the plurality of runners may include information about one or more other runners to be executed before the first runnerable.
일 실시예에서, 상기 복수의 러너블들의 실행의 선행 조건들은, 상기 이벤트 식별자를 이용하여 사전에 정의되며, 상기 이벤트 식별자는 상기 복수의 러너블들 고유의 식별자 및 실행 개시 또는 실행 완료를 나타내는 식별자를 포함할 수 있다.In an embodiment, the prerequisites for execution of the plurality of runners are defined in advance using the event identifier, wherein the event identifier is an identifier unique to the plurality of runners and an identifier indicating execution start or execution completion. may include.
일 실시예에서, 상기 전처리를 수행하는 단계는, 상기 제1 러너블 실행의 개시 사실을 나타내는 이벤트 식별자를 상기 이벤트 체인에 추가하는 단계를 더 포함할 수 있다. In an embodiment, the performing of the pre-processing may further include adding an event identifier indicating the fact that the first runnable execution is started to the event chain.
일 실시예에서, 상기 제1 러너블 실행의 선행 조건의 충족 여부를 판정하는 단계는, 상기 선행 조건들로부터, 상기 제1 러너블보다 먼저 완료되어야 할 선행 이벤트들의 식별자들을 식별하는 단계와, 및 상기 이벤트 체인에서 상기 선행 이벤트들의 식별자들을 탐색하는 단계를 포함하고, 상기 제1 러너블을 실행하는 단계는, 상기 제1 러너블 실행의 선행 조건이 충족되었다는 판정에 기초하여, 상기 제1 러너블을 실행하는 단계를 포함할 수 있다.In one embodiment, determining whether a prerequisite of execution of the first runnable is satisfied comprises: identifying, from the prerequisites, identifiers of antecedent events to be completed before the first runnable; and searching for identifiers of the preceding events in the event chain, wherein executing the first runnable comprises: based on a determination that a prerequisite of executing the first runnable is satisfied, the first runnable It may include the step of executing
일 실시예에서, 상기 이벤트 체인은 순서를 가지는 리스트(ordered list)에 기록되는 것일 수 있다. In one embodiment, the event chain may be recorded in an ordered list.
일 실시예에서, 상기 전처리를 수행하는 단계 및 상기 후처리를 수행하는 단계는 미들웨어에 의해 수행되고, 상기 전처리를 수행하는 단계는, 상기 미들웨어가 상기 제1 러너블 실행 호출을 감지하는 단계와, 및 상기 미들웨어가 상기 이벤트 체인을 판독하는 단계를 포함하고, 상기 후처리를 수행하는 단계는, 상기 미들웨어가 상기 제1 러너블의 실행 완료를 감지하는 단계와, 상기 미들웨어가 상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 상기 이벤트 체인에 추가하는 단계를 포함할 수 있다.In one embodiment, the performing the pre-processing and the performing the post-processing are performed by a middleware, and the performing the pre-processing includes: detecting, by the middleware, the first runnable execution call; and reading, by the middleware, the event chain, wherein the performing the post-processing includes: detecting, by the middleware, completion of execution of the first runnable; It may include adding an event identifier indicating the fact of completion of the to the event chain.
일 실시예에서, 상기 복수의 러너블들은, 제1 제어 유닛에서 실행되는 러너블 및 상기 제1 제어 유닛과 구별되는 제2 제어 유닛에서 실행되는 러너블을 포함할 수 있다.In an embodiment, the plurality of runners may include a runner that is executed in a first control unit and a runner that is executed in a second control unit that is distinct from the first control unit.
일 실시예에서, 상기 제1 러너블은 제1 제어 유닛에서 실행되고, 상기 후처리를 수행하는 단계는, 상기 제1 제어 유닛이 상기 이벤트 체인을 상기 제2 제어 유닛에게 전송하는 단계를 더 포함할 수 있다. In an embodiment, the first runnable is executed in a first control unit, and the performing the post-processing further comprises: the first control unit sending the event chain to the second control unit can do.
일 실시예에서, 상기 제1 러너블은 제1 제어 유닛에서 실행되고, 상기 제2 제어 유닛으로부터 수신된 이벤트 식별자를 상기 제1 제어 유닛이 상기 이벤트 체인에 병합하는 단계를 더 포함할 수 있다. In an embodiment, the first runable may be executed in a first control unit, and may further include the step of merging, by the first control unit, an event identifier received from the second control unit into the event chain.
일 실시예에서, 상기 이벤트 식별자는, 상기 제1 제어 유닛 및 상기 제2 제어 유닛을 포함하는 복수의 제어 유닛들을 서로 구별하는 식별자를 더 포함할 수 있다. In an embodiment, the event identifier may further include an identifier that distinguishes a plurality of control units including the first control unit and the second control unit from each other.
일 실시예에서, 상기 제1 러너블 실행의 선행 조건이 충족되지 않았다는 판정에 기초하여, 사전에 정의된 에러 처리 루틴을 실행하는 단계를 더 포함할 수 있다. In one embodiment, the method may further include executing a predefined error handling routine based on a determination that the prerequisite of the first runnable execution is not met.
일 실시예에서, 상기 사전에 정의된 에러 처리 루틴은, 서로 다른 러너블에 대하여 서로 다르게 정의된 것일 수 있다. In an embodiment, the predefined error handling routine may be defined differently for different runables.
일 실시예에서, 상기 사전에 정의된 에러 처리 루틴은, 서로 다른 선행 조건에 대하여 서로 다르게 정의된 것일 수 있다. In an embodiment, the predefined error handling routine may be defined differently for different prerequisites.
상술한 기술적 과제를 해결하기 위한 본 발명의 다른 일 실시예에 따른 프로그램이 기록된 저장 매체는 오토사 플랫폼에서의 러너블 실행 관리 프로그램이 기록된 저장 매체로서, 상기 프로그램은, 복수의 러너블들의 실행의 선행 조건들을 획득하는 인스트럭션과, 상기 복수의 러너블들 중 제1 러너블 실행의 선행 조건의 충족 여부를 판정하는 전처리를 수행하는 인스트럭션과, 상기 제1 러너블을 실행하는 인스트럭션과, 및 상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 상기 이벤트 체인에 추가하는 후처리를 수행하는 인스트럭션을 포함할 수 있다.A storage medium in which a program is recorded according to another embodiment of the present invention for solving the above-described technical problem is a storage medium in which a runable execution management program in an Ottosa platform is recorded, and the program is an instruction for obtaining prerequisites for execution, an instruction for performing preprocessing for determining whether a prerequisite for execution of a first runner from among the plurality of runables is satisfied; an instruction for executing the first runner; and an instruction for performing post-processing of adding an event identifier indicating the completion of the first runnable execution to the event chain.
상술한 본 발명의 실시예들에 따르면, 멀티 프로세서 또는 멀티 코어 등 복수의 제어 유닛에 의해 실행되는 오토사 플랫폼에서 서로 다른 제어 유닛들 사이에 러너블들의 실행 순서를 관리할 수 있다.According to the above-described embodiments of the present invention, it is possible to manage the execution order of runners among different control units in the Ottosa platform executed by a plurality of control units such as multi-processors or multi-cores.
또한, 상술한 본 발명의 실시예들에 따르면, 오토사 플랫폼에서 실행되는 애플리케이션 소프트웨어의 수정 없이도 애플리케이션 러너블들의 실행 순서를 관리할 수 있다.In addition, according to the above-described embodiments of the present invention, it is possible to manage the execution order of application runners without modification of application software executed on the Ottosa platform.
또한, 상술한 본 발명의 실시예들에 따르면, 오토사 플랫폼에서 애플리케이션 러너블들의 실행 순서가 준수되지 않을 경우에, 하드웨어 리셋 이외에, 에러 로그의 기록, 에러 발생 사실의 통보, 에러를 무시하고 러너블 실행 등 다양한 에러 발생 상황에 맞는 적절한 방식으로 에러를 처리할 수 있게 된다.In addition, according to the above-described embodiments of the present invention, when the execution order of the application runners is not observed in the Autosa platform, in addition to the hardware reset, the error log is recorded, the notification of the occurrence of an error, and the error is ignored and the runner It becomes possible to handle errors in an appropriate way according to various error occurrence situations such as execution of a block.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.Effects of the present invention are not limited to the above-mentioned effects, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.
도 1은 본 발명의 일 실시예에서 사용되는 오토사 플랫폼을 설명하기 위한 구성도이다.
도 2는 오토사 플랫폼에서 애플리케이션 러너블들이 가지는 예시적인 실행 순서 내지는 실행의 선후 관계를 나타내는 참조 도면이다.
도 3은 본 발명의 일 실시예에 따른, 오토사 플랫폼에서 애플리케이션 러너블 실행을 관리하는 방법의 순서도이다.
도 4는 본 발명의 몇몇 실시예에서 러너블 실행의 개시 및 완료를 포함하는 이벤트들을 기록하기 위한 식별자의 예시적인 비트 구조를 설명하기 위한 참조 도면이다.
도 5는 본 발명의 몇몇 실시예에서 각 러너블 실행의 개시의 선행 조건들을 표현하는 예시적인 데이터 구조를 설명하기 위한 참조 도면이다.
도 6은 본 발명의 몇몇 실시예에서 러너블 실행의 개시 및 완료를 포함하는 이벤트들이 기록되는 이벤트 체인의 예시적인 데이터 구조를 설명하기 위한 참조 도면이다.
도 7은 도 3을 참조하여 설명한 러너블 실행 관리 방법의 일부 단계를 보다 구체적으로 설명하기 위한 도면이다.
도 8은 도 3을 참조하여 설명한 러너블 실행 관리 방법의 일부 단계를 보다 구체적으로 설명하기 위한 도면이다.
도 9는 본 발명의 몇몇 실시예에서 둘 이상의 제어 유닛에서 실행되는 애플리케이션 러너블들 사이의 실행 순서가 관리되는 과정을 설명하기 위한 참조 도면이다.
도 10은 본 발명의 일 실시예에 따른 러너블 실행 관리 방법이 운전 보조 시스템에 적용되는 예를 설명하기 위한 참조 도면이다.1 is a configuration diagram for explaining the Ottosa platform used in an embodiment of the present invention.
FIG. 2 is a reference diagram illustrating an exemplary execution order or a precedence relationship of execution of application runners in the Ottosa platform.
3 is a flowchart of a method for managing application runner execution in the Ottosa platform, according to an embodiment of the present invention.
4 is a reference diagram for explaining an exemplary bit structure of an identifier for recording events including the initiation and completion of runnable execution in some embodiments of the present invention.
5 is a reference diagram for explaining an exemplary data structure expressing prerequisites for initiation of each runnable execution in some embodiments of the present invention.
6 is a reference diagram for explaining an exemplary data structure of an event chain in which events including the initiation and completion of a runnable execution are recorded in some embodiments of the present invention.
FIG. 7 is a diagram for describing in more detail some steps of the method for managing a runable execution described with reference to FIG. 3 .
FIG. 8 is a diagram for explaining in more detail some steps of the method for managing a runnable execution described with reference to FIG. 3 .
9 is a reference diagram for explaining a process in which an execution order among application runners executed in two or more control units is managed in some embodiments of the present invention.
10 is a reference diagram for explaining an example in which the method for managing runable execution according to an embodiment of the present invention is applied to a driving assistance system.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. Advantages and features of the present invention and methods of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the technical spirit of the present invention is not limited to the following embodiments, but may be implemented in various different forms, and only the following embodiments complete the technical spirit of the present invention, and in the technical field to which the present invention belongs It is provided to fully inform those of ordinary skill in the art of the scope of the present invention, and the technical spirit of the present invention is only defined by the scope of the claims.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.In adding reference numerals to the components of each drawing, it should be noted that the same components are given the same reference numerals as much as possible even though they are indicated on different drawings. In addition, in describing the present invention, if it is determined that a detailed description of a related known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.Unless otherwise defined, all terms (including technical and scientific terms) used herein may be used with the meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in a commonly used dictionary are not to be interpreted ideally or excessively unless clearly defined in particular. The terminology used herein is for the purpose of describing the embodiments and is not intended to limit the present invention. In this specification, the singular also includes the plural unless specifically stated otherwise in the phrase.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.In addition, in describing the components of the present invention, terms such as first, second, A, B, (a), (b), etc. may be used. These terms are only for distinguishing the elements from other elements, and the essence, order, or order of the elements are not limited by the terms. When it is described that a component is “connected”, “coupled” or “connected” to another component, the component may be directly connected or connected to the other component, but another component is formed between each component. It should be understood that elements may also be “connected,” “coupled,” or “connected.”
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.As used herein, "comprises" and/or "comprising" refers to the presence of one or more other components, steps, operations and/or elements mentioned. or addition is not excluded.
본 명세서에서, ECU(Electronic Control Unit), MCU(Micro Controller Unit), CPU(Central Processing Unit), 프로세서, 프로세서 내의 다수의 코어들은, 데이터의 처리 및/또는 연산을 수행하는 구성을 지칭한다는 점에서 공통되며, 본 명세서에서 '제어 유닛'으로 통칭될 수 있다. In this specification, an Electronic Control Unit (ECU), a Micro Controller Unit (MCU), a Central Processing Unit (CPU), a processor, and a plurality of cores in the processor refer to a configuration that processes and/or calculates data. common, and may be collectively referred to as a 'control unit' in this specification.
이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.Hereinafter, some embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일 실시예에서 사용되는 오토사 플랫폼을 설명하기 위한 구성도이다. 1 is a configuration diagram for explaining the Ottosa platform used in an embodiment of the present invention.
도 1을 참고하면, 오토사의 소프트웨어는 크게 SWC(Software Component; 107), RTE(Run Time Environment; 105), BSW(Basic Software; 103)의 3개 계층으로 구성된다. 오토사 표준 플랫폼은 기본적으로 컴포넌트 기반 소프트웨어개발(CBD: Component-Based Software Development)을 통해 여러 개의 구성품들이 입출력 포트를 가지며, 서로 가상의 통신을 한다.Referring to FIG. 1 , Otto's software is largely composed of three layers: SWC (Software Component; 107), RTE (Run Time Environment; 105), and BSW (Basic Software; 103). In Otto's standard platform, several components have input/output ports and communicate with each other virtually through Component-Based Software Development (CBD).
SWC(107)는 가장 상위에 위치하며 엔진, 자동 변속기, 브레이크제어 기능을 수행하고 VFB(Virtual Functional Bus)라는 가상 네트워크에 배치돼 ECU에 연동된다. RTE(105)는 SWC(107)와 BSW(103) 사이에 위치하며, 이 사이의 데이터 교환을 위한 인터페이스를 제공한다. RTE(105)는 SWC(107)가 하드웨어에 종속되지 않는 독립성을 제공하기 위한 것으로 모듈간의 통신 연결을 수행한다는 점에서, 일종의 미들웨어(middleware)로서 이해될 수 있다. BSW(103)는 최하층에 위치하며 OS(Operating System), 디바이스 드라이버, 커뮤니케이션 같은 SWC(107)가 필요한 작업을 수행하기 위한 서비스를 제공한다.
도 2는 본 발명의 일 실시예에 따른 오토사 플랫폼에서 애플리케이션 러너블 실행 관리 방법을 설명하기 위한 개념도이다. 구체적으로, 도 2는 단일 프로세서 내의 총 3개의 코어(CORE #0, CORE #1, CORE #2)에 분산되어 실행되는 복수의 러너블들의 예시적인 실행 순서를 도시한 것이다. FIG. 2 is a conceptual diagram illustrating a method for managing an application runnable execution in the Ottosa platform according to an embodiment of the present invention. Specifically, FIG. 2 shows an exemplary execution sequence of a plurality of runners that are distributed and executed on a total of three cores (
도 2에 도시된 예시적인 실행 순서에서, 러너블 #000(201) 및 러너블 #001(202)은 CORE #0에서 실행되고, 러너블 #010(203), 러너블 #011(204), 및 러너블 #012(205)는 CORE #1에서 실행되며, 러너블 #020(206) 및 러너블 #021(207)은 CORE #2에서 실행된다.In the exemplary execution sequence shown in FIG. 2 , runable #000 (201) and runable #001 (202) are executed in
도 2에서, 상대적으로 왼편에 도시된 러너블들은 더 먼저 실행되어야 할 러너블들이고, 상대적으로 오른편이 도시된 러너블들은 더 늦게 실행되어야 할 러너블들이다. 예컨대 러너블 #000(201)은 러너블 #001(202)보다 먼저 실행되도록 정의되었으며, 러너블 #021(207)은 러너블 #020(206)보다 늦게 실행되도록 정의된 것이다.In FIG. 2 , the runners shown on the relatively left are runners to be executed earlier, and the runners shown on the relatively right are runners that should be executed later. For example, runable #000 (201) is defined to be executed earlier than runable #001 (202), and runable #021 (207) is defined to be executed later than runable #020 (206).
도 2에 도시된 예시적인 실행 순서에서, 굵은 화살표들(211 내지 216)은 러너블들의 실행 사이의 선후 관계를 나타낸다. 즉, 각 러너블의 왼편으로 인입되는 굵은 화살표들(211 내지 216)은 해당 러너블보다 먼저 실행되어야 할 선행 러너블을 나타내는 것으로 이해될 수 있다. 예를 들어 화살표(211)는 러너블 #000(201)이 러너블 #010(203)보다 먼저 실행되어야 한다는 것을 나타내며, 러너블 #000(201)의 실행 완료는 러너블 #010(203) 실행 개시 전에 충족되어야 할 선행 조건이다.In the exemplary execution sequence shown in FIG. 2 ,
도 2에서, 러너블 #000(201), 러너블 #020(206), 및 러너블 #021(207)은 선행 조건이 없는 반면에, CORE #1에서 실행되는 러너블 #010(203)은, CORE #0에서 러너블 #000(201)의 실행이 완료되고, CORE #2에서 러너블 #020(206)의 실행이 완료된 후에야, 실행이 개시될 수 있다. 유사하게, CORE #1에서 실행되는 러너블 #011(204)은, CORE #1에서 러너블 #010(203)의 실행이 완료되고, CORE #2에서 러너블 #021(207)의 실행이 완료된 후에야, 실행이 개시될 수 있으며, CORE #0에서 실행되는 러너블 #001(202)은, CORE #1에서 러너블 #011(204)의 실행이 완료된 후에야, 실행이 개시될 수 있다. In Figure 2, runable #000 (201), runable #020 (206), and runable #021 (207) have no prerequisites, whereas runable #010 (203) running on
도 2에 예시적으로 도시된 바와 같이, 복수의 러너블들 사이에 실행 순서 내지는 실행의 선후 관계가 존재할 수 있다. 또한 상기 복수의 러너블들은 각기 다른 프로세서들에서 실행되거나 또는 동일한 프로세서의 서로 다른 코어들에서 분산 실행되는 것들일 수 있다. 따라서, 도 2에 예시적으로 도시된 바와 같은 러너블들 사이의 실행 순서를 관리하기 위한 방법이 제공될 필요가 있다. 이하에서는 도 3 내지 도 8을 참조하여, 본 발명의 일 실시예에 따른 러너블 실행 관리 방법에 대하여 설명한다.As exemplarily illustrated in FIG. 2 , an execution order or precedence relation of execution may exist between a plurality of runables. Also, the plurality of runners may be executed in different processors or distributedly executed in different cores of the same processor. Accordingly, there is a need to provide a method for managing the execution order between runables as exemplarily shown in FIG. 2 . Hereinafter, a runner execution management method according to an embodiment of the present invention will be described with reference to FIGS. 3 to 8 .
도 3은, 본 발명의 일 실시예에 따른, 오토사 플랫폼에서 애플리케이션 러너블 실행을 관리하는 방법의 순서도이다. 다만, 이는 본 발명의 목적을 달성하기 위한 바람직한 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있다. 3 is a flowchart of a method for managing the execution of application runners in the Ottosa platform, according to an embodiment of the present invention. However, this is only a preferred embodiment for achieving the object of the present invention, and some steps may be added or deleted as necessary.
도 3에 도시된 러너블 실행 관리 방법의 각 단계는, 단일 코어를 가지는 단일 프로세서, 복수의 코어를 가지는 단일 프로세서, 또는 단일 또는 복수의 코어를 가지는 복수의 프로세서가 구비되고, 오토사 플랫폼 상에 애플리케이션이 구현된 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 러너블 실행 관리 방법의 각 단계는 컴퓨팅 장치의 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있다. 상기 러너블 실행 관리 방법에 포함되는 모든 단계는 하나의 물리적인 컴퓨팅 장치에 의하여 실행될 수도 있을 것이나, 상기 방법의 제1 단계들은 제1 컴퓨팅 장치에 의하여 수행되고, 상기 방법의 제2 단계들은 제2 컴퓨팅 장치에 의하여 수행될 수도 있다. 이하에서는, 상기 러너블 실행 관리 방법의 각 단계가 하나의 컴퓨팅 장치 또는 하나의 컴퓨팅 장치 내의 하나의 제어 유닛에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 다만, 설명의 편의를 위해, 상기 러너블 실행 관리 방법에 포함되는 각 단계의 동작 주체는 그 기재가 생략될 수도 있다.Each step of the method for managing runner execution shown in FIG. 3 is provided with a single processor having a single core, a single processor having a plurality of cores, or a plurality of processors having a single or multiple cores, and is installed on the Ottosa platform. The application may be executed by the implemented computing device. In other words, each step of the method for managing runnable execution may be implemented with one or more instructions executed by a processor of a computing device. All of the steps included in the method for managing runnable execution may be executed by one physical computing device, but the first steps of the method are performed by a first computing device, and the second steps of the method are performed by a second It may be performed by a computing device. Hereinafter, it is assumed that each step of the method for managing runable execution is performed by one computing device or one control unit in one computing device. However, for convenience of description, the description of the operating subject of each step included in the runnerable execution management method may be omitted.
도 3을 참조하면, 본 실시예에 따른 러너블 실행 관리 방법은, 복수의 러너블들의 실행 선행 조건들을 획득하는 단계(S100), 제1 러너블 실행의 선행 조건 충족 여부를 판정하는 단계(S200), 선행 조건 충족시(S300), 제1 러너블을 실행하고(S400) 제1 러너블 실행 완료를 기록하는 단계(S500), 선행 조건 불충족시(S300), 에러 처리 루틴을 수행하는 단계(S600)를 포함할 수 있다. 이하 구체적으로 설명한다. 단계(S200), 단계(300), 단계(500), 및 단계(S600)는 BSW 계층과 SWC 계층 사이의 미들웨어 계층의 일부로 구현되어, 미들웨어에 의해 수행될 수 있다.Referring to FIG. 3 , the method for managing runner execution according to the present embodiment includes the steps of: obtaining execution prerequisites of a plurality of runners ( S100 ), and determining whether the prerequisites of the first runnerable execution are satisfied ( S200 ) ), when the preceding condition is satisfied (S300), executing the first runable (S400) and recording the completion of the first runnable execution (S500), when the preceding condition is not satisfied (S300), performing an error handling routine (S600) may be included. Hereinafter, it will be described in detail. Steps S200, 300, 500, and S600 may be implemented as a part of the middleware layer between the BSW layer and the SWC layer, and may be performed by the middleware.
단계(S100)에서는 복수의 러너블들 각각이 실행되기 전에 충족되어야 할 선행 조건들이 획득된다. In step S100 , prerequisite conditions to be satisfied before each of the plurality of runables are executed are obtained.
도 2를 참조하여 전술한 바와 같이, 복수의 러너블들 사이에 실행 순서 내지는 실행의 선후 관계가 존재할 수 있다. 러너블들 사이의 실행 순서는 애플리케이션을 설계하거나 또는 여러 애플리케이션들을 이용하여 시스템을 구성하는 자에 의해 사전에 정의 및 기록되어, 런타임에 참조될 수 있다. 이하에서는, 도 4 및 도 5를 참조하여, 본 발명의 몇몇 실시예에서 러너블들의 실행 순서가 정의되는 구체적인 방식에 대하여 보다 자세히 설명한다.As described above with reference to FIG. 2 , an execution order or an execution precedence relationship may exist between a plurality of runables. The execution order between runnables may be defined and recorded in advance by a person who designs an application or configures a system using various applications, and may be referenced at runtime. Hereinafter, with reference to FIGS. 4 and 5 , in some embodiments of the present invention, a detailed manner in which an execution order of runnables is defined will be described in more detail.
본 발명의 몇몇 실시예에서, 러너블들 사이의 실행 순서는, 각각의 러너블의 실행 개시 및 실행 완료 이벤트들의 선후 관계를 기술함으로써 정의될 수 있다. 각 러너블의 실행 개시 및 실행 완료는 각각 별개의 이벤트로 간주되며, 각각의 이벤트를 나타내는 식별자가 부여되어, 이벤트 식별자를 통해 이벤트들 사이의 선후 관계가 규정되고, 일련의 이벤트들의 발생이 기록된다.In some embodiments of the present invention, the order of execution between the runnables may be defined by describing the precedence relationship between the execution start and execution completion events of each runnable. Execution initiation and execution completion of each runnable are considered as separate events, respectively, an identifier indicating each event is given, a precedence relationship between the events is defined through the event identifier, and the occurrence of a series of events is recorded .
도 4는 본 발명의 몇몇 실시예에서 러너블 실행의 개시 및 완료를 포함하는 이벤트들을 기록하기 위한 식별자의 예시적인 비트 구조를 나타낸다. 이벤트 식별자는 총 16개의 비트로 구성되어 표현될 수 있으며, 첫 번째 4개 비트는 러너블 실행의 개시(1000)와 완료(0000)를 나타낸다. 두 번째 4개 비트는 복수의 프로세서들 중에 해당 러너블이 실행되는 프로세서를 특정하는 비트들이고, 세 번째 4개 비트는 복수의 코어들 중에 해당 러너블이 실행되는 코어를 특정하는 비트들이다. 마지막 4개 비트는 동일한 프로세서의 동일한 코어에서 실행될 수 있는 여러 개의 러너블들을 서로 구별하기 위한 식별자를 위한 비트들이다. 이하에서는 총 16비트의 이벤트 식별자를 4자리(digit)의 16진수로 표기한다. 예컨대, 이벤트 식별자 0012은 0번 CPU의 1번 코어에서 실행되는 2번 러너블의 실행 개시를 나타내는 식별자이고, 8012는 0번 CPU의 1번 코어에서 실행되는 2번 러너블의 실행 완료를 나타내는 식별자이다. 유사하게, 이벤트 식별자 0001은 0번 CPU의 0번 코어에서 실행되는 1번 러너블의 실행 개시를 나타내는 식별자이고, 8021는 0번 CPU의 2번 코어에서 실행되는 1번 러너블의 실행 완료를 나타내는 식별자이다.4 illustrates an exemplary bit structure of an identifier for recording events including the initiation and completion of runnable execution in some embodiments of the present invention. The event identifier can be expressed with a total of 16 bits, and the first 4 bits indicate the start (1000) and completion (0000) of the runnable execution. The second 4 bits are bits for specifying a processor on which the corresponding runable is executed among the plurality of processors, and the third 4 bits are bits for specifying a core on which the corresponding runner is executed among the plurality of cores. The last 4 bits are bits for an identifier for distinguishing from each other several runables that can be executed on the same core of the same processor. Hereinafter, a total of 16-bit event identifier is expressed as a 4-digit hexadecimal number. For example, the
도 5는 본 발명의 몇몇 실시예에서 각 러너블 실행 개시의 선행 조건들을 표현하는 예시적인 데이터 구조를 설명하기 위한 참조 도면으로서, 도 2에 도시된 러너블들의 실행 선후 관계가 도 5에 반영되어 있다.FIG. 5 is a reference diagram for explaining an exemplary data structure for expressing prerequisites for initiating execution of each runnable in some embodiments of the present invention. have.
도 5를 참조하면, 선행 조건(501)은 이벤트 식별자 '0000'가 나타내는 0번 CPU의 0번 코어에서 실행되는 0번 러너블의 실행 개시 이벤트의 선행 이벤트가 없음을 나타낸다. 선행 조건(506) 및 선행 조건(507)은 각각 이벤트 식별자 '0020' 및 '0021'의 선행 이벤트가 없음을 나타낸다.Referring to FIG. 5 , the
한편, 선행 조건(502)은 이벤트 식별자 '0001'가 나타내는 0번 CPU의 0번 코어에서 실행되는 1번 러너블의 실행 개시 이벤트의 선행 이벤트는, 이벤트 식별자 '8011', 즉 0번 CPU의 1번 코어에서 실행되는 1번 러너블의 실행 완료임을 나타낸다. 다시 말해, 선행 조건(502)에 따르면, 0번 CPU의 0번 코어에서 실행되는 1번 러너블의 실행이 개시되기에 앞서서, 0번 CPU의 1번 코어에서 실행되는 1번 러너블의 실행이 완료되어야 한다.On the other hand, the
또한, 선행 조건(503)은 이벤트 식별자 '0010'가 나타내는 0번 CPU의 1번 코어에서 실행되는 0번 러너블의 실행 개시 이벤트의 선행 이벤트는, 이벤트 식별자 '8000' 그리고('CondLogic: AND') '8020'임을 나타낸다. 즉, 0번 CPU의 0번 코어에서 실행되는 0번 러너블과 0번 CPU의 2번 코어에서 실행되는 0번 러너블이 모두('CondLogic: AND') 실행 완료된 후에, 0번 CPU의 1번 코어에서 실행되는 0번 러너블의 실행이 개시되어야 한다는 내용이 정의되어 있다. In addition, the
또한, 선행 조건(504)은 이벤트 식별자 '0011'가 나타내는 0번 CPU의 1번 코어에서 실행되는 1번 러너블의 실행 개시 이벤트의 선행 이벤트는, 이벤트 식별자 '8010' 그리고('CondLogic: AND') '8021'임을 나타낸다. In addition, the
상술한 바와 같이, 각각의 러너블의 실행의 선행 조건들, 구체적으로 각각의 러너블 실행 개시 이전에 완료되어야 할 다른 러너블들이 도 5에 도시된 방식에 따라 사전에 지정되고, 런타임에 참조될 수 있다.As described above, the prerequisites for the execution of each runnable, specifically other runnables to be completed before the start of the execution of each runnable, are specified in advance according to the scheme shown in FIG. 5 and are to be referenced at runtime. can
다시 도 3을 참조하여 단계(S100)에 대하여 계속 설명한다. 전술한 바와 같이, 단계(S100)에서는 복수의 러너블들 각각의 실행의 선행 조건들을 포함하는 정보가 획득된다. 상기 선행 조건은 도 5를 참조하여 설명된 데이터 구조와 방식에 따라 정의된 것일 수 있으며, 이때 도 4를 참조하여 설명한 비트 구조를 가지는 이벤트 식별자들이 상기 선행 조건의 정의에 이용될 수 있다.With reference to FIG. 3 again, the step S100 will be described continuously. As described above, in step S100 , information including prerequisites for execution of each of the plurality of runables is obtained. The preceding condition may be defined according to the data structure and method described with reference to FIG. 5, and in this case, event identifiers having the bit structure described with reference to FIG. 4 may be used to define the preceding condition.
단계(S200)에서는, 복수의 러너블들 중에 제1 러너블의 실행이 요청된 것이 미들웨어에 의해 감지되고, 제1 러너블의 실행에 앞서서, 제1 러너블 실행의 선행 조건이 충족되었는지 여부가 판정된다. 제1 러너블 실행의 선행 조건이 무엇인지는 단계(S100)에서 획득된 정보로부터 식별될 수 있다. 상기 식별된 제1 러너블 실행의 선행 조건들이 충족되었는지 여부, 예컨대 제1 러너블보다 먼저 실행 완료되어야 할 러너블들이 실제로 실행 완료되었는지 여부는, 후술할 이벤트 체인을 참조하여 판정될 수 있다. 이하에서는 도 6을 참조하여 이벤트 체인에 대하여 설명한다.In step S200 , it is detected by the middleware that the execution of the first runnable is requested among the plurality of runables, and prior to the execution of the first runnable, it is determined whether the prerequisite for the execution of the first runnable is satisfied. is judged What are the prerequisites for the first runnable execution may be identified from the information obtained in step S100. Whether the prerequisites of the identified first runnable execution are satisfied, for example, whether the runnables that are to be completed before the first runnable are actually executed may be determined with reference to an event chain to be described later. Hereinafter, an event chain will be described with reference to FIG. 6 .
도 6은 본 발명의 몇몇 실시예에서, 각각의 러너블 실행의 개시 및 완료를 포함하는 이벤트들의 발생 이력이 기록되는 이벤트 체인의 예시적인 데이터 구조를 설명하기 위한 참조 도면이다. 도 6에 도시된 바와 같이, 각각의 러너블들의 실행 개시와 완료 이벤트를 나타내는 이벤트 식별자들이, 이벤트의 발생 순서에 따라 기록되며, 이를 본 명세서에서는 이벤트 체인이라고 지칭한다. 이벤트 체인은 예컨대 순서를 가지는 리스트(ordered list) 데이터 구조에 저장될 수 있다. 후술하겠지만, 각각의 러너블 실행의 개시 및 완료 시에, 러너블 실행의 개시 및 완료를 나타내는 이벤트 식별자가 이벤트 체인 데이터 구조에 기록되며, 필요시마다 참조될 수 있다. 6 is a reference diagram for explaining an exemplary data structure of an event chain in which a history of occurrences of events including the initiation and completion of each runnable execution is recorded, in some embodiments of the present invention. As shown in FIG. 6 , event identifiers indicating the execution start and completion events of each runnable are recorded according to the occurrence order of the events, which is referred to as an event chain in this specification. The event chain may be stored, for example, in an ordered list data structure. As will be described later, at the initiation and completion of each runnable execution, event identifiers indicating the initiation and completion of the runnable execution are recorded in the event chain data structure, and can be referenced whenever necessary.
다시 도 3을 참조하여 단계(S200)에 대하여 계속 설명한다. 단계(S100)에서 획득된 정보로부터 식별된, 제1 러너블에 선행하여야 하는 이벤트들의 식별자들을, 도 6을 참조하여 설명한 이벤트 체인에서 탐색하여, 해당 이벤트들이 제1 러너블에 선행하여 이미 발생하였는지 여부를 판정할 수 있다. 다시 말해, 제1 러너블 실행의 선행 조건이 충족되었는지 여부가 판정될 수 있다. 상기 탐색은, 이벤트 체인을 시간 순서로 탐색하거나, 역순으로 탐색하거나, 기타 다른 순서나 방식에 의해 탐색함으로써 수행될 수 있으며, 본 발명이 그 중 어느 하나로 한정되는 것은 아니다.With reference to FIG. 3 again, the step S200 will be described further. Identifiers of the events that should precede the first runnable, identified from the information obtained in step S100, are searched for in the event chain described with reference to FIG. It can be determined whether In other words, it may be determined whether a prerequisite for execution of the first runnable is satisfied. The search may be performed by searching the event chain in chronological order, in reverse order, or by searching in another order or method, but the present invention is not limited thereto.
일 실시예에서는, 단계(S200)에서, 제1 러너블 실행의 개시 사실이 이벤트 체인에 기록될 수 있다. 즉, 제1 러너블 실행의 개시를 나타내는 이벤트 식별자가 이벤트 체인에 기록될 수 있다. In one embodiment, in step S200 , the fact of starting the first runnable execution may be recorded in the event chain. That is, an event identifier indicating the start of the first runnable execution may be recorded in the event chain.
단계(S200)는 미들웨어 계층에서 수행될 수 있으며, 제1 러너블이 실행되기 전에 수행되는 전처리 단계로서 이해될 수 있다.Step S200 may be performed in the middleware layer, and may be understood as a pre-processing step performed before the first runable is executed.
한편 복수의 러너블들이 둘 이상의 프로세서 및/또는 둘 이상의 코어들에 분산되여 실행되는 실시예들에서는 단계(S200)에서 기록된 이벤트 체인이 다른 프로세서 또는 코어에 전송될 수 있다. 이에 대해서는 도 7을 참조하여 보다 자세히 후술하기로 한다.Meanwhile, in embodiments in which a plurality of runners are distributed and executed in two or more processors and/or two or more cores, the event chain recorded in step S200 may be transmitted to other processors or cores. This will be described later in more detail with reference to FIG. 7 .
도 3의 단계(S300)에서는, 제1 러너블 실행의 선행 조건이 충족되었다면 단계(S400)로 진행하고, 제1 러너블 실행의 선행 조건이 충족되지 않았다면 단계(S600)로 진행한다.In step S300 of FIG. 3 , if the prerequisite for the first runnerable execution is satisfied, the process proceeds to step S400 , and if the prerequisite for the first runnerable execution is not satisfied, the process proceeds to step S600 .
단계(S300)에서 제1 러너블 실행의 선행 조건이 충족된 것으로 판정된 경우, 단계(S400)에서는 미들웨어에 의해 SWC 계층에 제1 러버블의 실행이 요청되고, SWC 계층에서 제1 러너블이 실행된다.If it is determined in step S300 that the prerequisite for the execution of the first runnable is satisfied, in step S400, the middleware requests the SWC layer to execute the first loveable, and in the SWC layer, the first runnable is is executed
제1 러너블의 실행이 완료되면, 단계(S500)에서는 미들웨어가 제1 러너블 실행의 완료를 감지하고, 제1 러너블 실행의 완료 사실이 이벤트 체인에 기록된다. 즉, 제1 러너블 실행의 완료를 나타내는 이벤트 식별자가 이벤트 체인에 기록된다. 이로써, 제1 러너블의 실행 완료를 선행 조건으로 가지는 다른 러너블이 실행되기 전에, 상기 이벤트 체인으로부터 제1 러너블의 실행 완료 여부가 판정될 수 있게 된다. When the execution of the first runnable is completed, in step S500 , the middleware detects the completion of the execution of the first runnable, and the completion of the first runnable execution is recorded in the event chain. That is, an event identifier indicating the completion of the first runnable execution is recorded in the event chain. Accordingly, it is possible to determine whether the execution of the first runnable has been completed from the event chain before another runnable having the execution completion of the first runnable as a prerequisite is executed.
전술한 단계(S500)는 제1 러너블이 실행된 후에 수행된다는 점에서, 제1 러너블 실행의 후처리 단계로서 이해될 수 있다. The above-described step S500 may be understood as a post-processing step of the execution of the first runnable in that it is performed after the first runnable is executed.
한편 복수의 러너블들이 둘 이상의 프로세서 및/또는 둘 이상의 코어들에 분산되여 실행되는 실시예들에서는 단계(S500)에서 기록된 이벤트 체인이 다른 프로세서 또는 코어에 전송되어, 다른 프로세서 또는 코어에서 실행되는 러너블들의 선행 조건이 충족되었는지 여부를 판정하는 과정에 참조될 수 있다.On the other hand, in embodiments in which a plurality of runables are distributed and executed in two or more processors and/or two or more cores, the event chain recorded in step S500 is transmitted to another processor or core, and is executed in another processor or core. It may be referred to in the process of determining whether the prerequisites of the runnables are satisfied.
전술한 단계(S300)에서 제1 러너블 실행의 선행 조건이 충족되지 않은 것으로 판정된 경우, 단계(S600)로 진행하여 에러 처리 루틴이 수행될 수 있다. 러너블들 사이의 실행 순서가 지켜지지 않은 것은, 비정상적인 상황이 발생하였다는 것을 암시할 수 있다. 단계(S600)에서는 사전에 정의된 적절한 에러 처리 루틴이 수행될 수 있으며, 이에 대해서는 도 8을 참조하여 후술한다.If it is determined in the above-described step S300 that the prerequisite for the first runnable execution is not satisfied, the process may proceed to step S600 and an error handling routine may be performed. If the execution order between runnables is not respected, it may be implied that an abnormal situation has occurred. In step S600 , an appropriate predefined error handling routine may be performed, which will be described later with reference to FIG. 8 .
도 7은 도 3을 참조하여 설명한 러너블 실행 관리 방법의 단계(S200)를 보다 자세히 설명하기 위한 도면이다. 구체적으로, 도 7은, 복수의 러너블들이 둘 이상의 프로세서 및/또는 둘 이상의 코어들에 분산되어 실행되는 몇몇 실시예를 설명하기 위한 도면이다. 이하의 설명에서, 제1 러너블이 실행되는 프로세서의 해당 코어는 "제1 제어 유닛"으로 지칭하고, 제1 제어 유닛과 다른 프로세서 또는 다른 코어는 "제2 제어 유닛"으로 지칭한다.FIG. 7 is a diagram for explaining in more detail step S200 of the method for managing the runable execution described with reference to FIG. 3 . Specifically, FIG. 7 is a diagram for explaining some embodiments in which a plurality of runners are distributed and executed in two or more processors and/or two or more cores. In the following description, a corresponding core of the processor on which the first runner is executed is referred to as a “first control unit”, and a processor or other core different from the first control unit is referred to as a “second control unit”.
먼저 단계(S210)에서는, 제1 러너블의 실행 개시 사실이 이벤트 체인에 기록될 수 있다. 즉, 제1 러너블 실행의 개시를 나타내는 이벤트 식별자가 이벤트 체인에 기록될 수 있다. First, in step S210, the fact that the first runnable is started to be executed may be recorded in the event chain. That is, an event identifier indicating the start of the first runnable execution may be recorded in the event chain.
단계(S220)에서는, 복수의 러너블들이 둘 이상의 프로세서 또는 둘 이상의 코어에 분산되어 실행되는 멀티프로세서/코어 환경인지 여부가 판정된다. In step S220 , it is determined whether the plurality of runables is a multiprocessor/core environment in which two or more processors or two or more cores are distributed and executed.
만약 멀티프로세서/코어 환경이라면, 단계(S230)에서 제1 제어 유닛의 이벤트 체인이 제2 제어 유닛으로 송신된다. 이어서 단계(S240)에서 제1 제어 유닛은, 제2 제어 유닛에서 발생한 이벤트들에 관한 정보, 즉 제2 제어 유닛의 이벤트 체인을 수신하고, 제1 제어 유닛은 제2 제어 유닛의 이벤트 체인을 제1 제어 유닛의 이벤트 체인에 병합한다. 즉 제1 제어 유닛 및 제2 제어 유닛에서 발생한 모든 이벤트들에 관한 정보가 하나의 이벤트 체인에 통합된다.If it is a multiprocessor/core environment, the event chain of the first control unit is transmitted to the second control unit in step S230 . Subsequently, in step S240 , the first control unit receives information about events occurring in the second control unit, that is, an event chain of the second control unit, and the first control unit controls the event chain of the second control unit. 1 Merge into the event chain of the control unit. That is, information about all events occurring in the first control unit and the second control unit is integrated into one event chain.
단계(S250)에서는, 제1 러너블에 선행하여야 하는 이벤트들의 식별자들을, 상기 단계(S240)에서 병합된 이벤트 체인에서 탐색하여, 해당 이벤트들이 제1 러너블에 선행하여 이미 발생하였는지 여부를 판정할 수 있다. 이때, 상기 병합된 이벤트 체인에는, 상기 제1 러너블이 실행되는 제1 제어 유닛뿐만 아니라, 제2 제어 유닛에서 발생한 모든 이벤트들에 관한 정보도 기록되어 있으므로, 다른 제어 유닛(예컨대 다른 프로세서 또는 다른 코어)에서 분산 실행되는 다른 러너블이 앞서 실행되었는지 여부를 판정할 있게 된다.In step S250, identifiers of events that should precede the first runnable are searched for in the event chain merged in step S240, and it is determined whether the corresponding events have already occurred prior to the first runnable. can At this time, in the merged event chain, information about all events occurring in the second control unit as well as the first control unit in which the first runable is executed is recorded, so that other control units (eg, other processors or other It becomes possible to determine whether other runables that are distributed and executed in the core) have been previously executed.
도 7을 참조하여 설명한 단계(S220) 내지 단계(S240)은, 도 3의 단계(S500)에서도 유사하게 수행될 수 있다. 단계(S500)에서 제1 러너블 실행의 완료 사실이 제1 제어 유닛의 이벤트 체인에 기록된 후에, 도 7의 단계(S220) 내지 단계S(240)이 수행될 수 있다. 복수의 러너블들이 둘 이상의 프로세서 또는 둘 이상의 코어에 분산되어 실행되는 멀티프로세서/코어 환경인지 여부가 판정되고(단계 S220), 멀티프로세서/코어 환경이라면 상기 제1 러너블이 실행되는 제1 제어 유닛의 이벤트 체인이 제2 제어 유닛으로 송신될 수 있다(단계 S230). 또한 제2 제어 유닛의 이벤트 체인을 수신하여 제1 제어 유닛의 이벤트 체인에 병합함으로써, 제1 제어 유닛 및 제2 제어 유닛에서 발생한 모든 이벤트들에 관한 정보를 제1 제어 유닛의 이벤트 체인에 갱신하여 관리할 수 있다.Steps S220 to S240 described with reference to FIG. 7 may be similarly performed in step S500 of FIG. 3 . After the fact of completion of the first runnable execution is recorded in the event chain of the first control unit in step S500, steps S220 to S240 of FIG. 7 may be performed. It is determined whether the plurality of runners is a multiprocessor/core environment in which two or more processors or two or more cores are distributed and executed (step S220), and if it is a multiprocessor/core environment, the first control unit in which the first runner is executed may be transmitted to the second control unit (step S230). In addition, by receiving the event chain of the second control unit and merging it into the event chain of the first control unit, information about all events occurring in the first control unit and the second control unit is updated in the event chain of the first control unit, can manage
도 8은 러너블 실행 관리 방법의 단계(S600)를 보다 자세히 설명하기 위한 도면이다. 구체적으로, 도 8은, 도 3의 전술한 단계(S300)에서 제1 러너블 실행의 선행 조건이 충족되지 않은 것으로 판정된 경우, 에러 처리 루틴이 실행되는 과정을 보다 구체적으로 설명하기 위한 도면이다.8 is a diagram for explaining in more detail the step S600 of the method for managing the runable execution. Specifically, FIG. 8 is a diagram for explaining in more detail a process in which an error handling routine is executed when it is determined that the prerequisite for the first runnable execution is not satisfied in the above-described step S300 of FIG. 3 . .
도 8을 참조하면, 단계(S610)에서는 발생된 에러가 기록될 수 있다. 구체적으로, 선행 조건이 충족되지 못하여 실행이 개시되지 못한 상기 제1 러너블에 관한 정보, 충족되지 못한 선행 조건이 무엇인지(예컨대 선행하여 실행 완료되지 못한 러너블이 무엇인지), 현재의 실행 환경 및 파라미터 등에 관한 정보가, 에러 정보의 일부로서 기록될 수 있다.Referring to FIG. 8 , the generated error may be recorded in step S610 . Specifically, information about the first runnable for which execution is not started because a prerequisite is not met, what an unfulfilled prerequisite is (eg, what is a previously uncompleted runnable), and a current execution environment and information about parameters and the like may be recorded as part of the error information.
단계(S620)에서는 사전에 정의된 다양한 에러 처리 방식들 중에 적어도 하나가 결정된다. 에러 처리 방식들은, 에러의 유형에 따라 사전에 정의될 수 있다. 예를 들어, 실행의 개시에 실패한 러너블이 무엇인지에 따라 에러 처리 방식이 서로 다르게 사전에 정의될 수 있다. 또한 충족되지 못한 선행 조건이 무엇인지에 따라 에러 처리 방식이 서로 다르게 사전에 정의될 수 있다. 즉, 선행 조건의 불충족이라는 원인과 그에 따른 러너블의 실행 실패라는 결과에 적합한 에러 처리 루틴이 사전에 정의되고, 해당 상황이 발생될 때 적절히 이용될 수 있다.In step S620, at least one of various predefined error handling methods is determined. Error handling methods may be predefined according to the type of error. For example, an error handling method may be defined differently in advance depending on which runnable has failed to start execution. Also, different error handling methods may be defined in advance depending on what prerequisites are not met. That is, an error handling routine suitable for the cause of non-fulfillment of the preceding condition and the result of failure to execute the runnable is defined in advance, and can be appropriately used when a corresponding situation occurs.
단계(S630) 내지 단계(S650)에서는 다양한 에러 처리 방식들 중 적어도 하나가 수행될 수 있다. 예를 들어 몇몇 에러 상황의 경우, 에러 발생(선행 조건의 불충족)을 무시하고, 러너블 실행을 그대로 진행할 수도 있다(단계 S630). 다른 에러 처리 방식에 따르면, 심각하게 비정상적인 상황이 발생하였다고 판단하여 하드웨어를 리셋할 수 있다(단계 S640). 또 다른 에러 처리 방식에 따르면, 에러 기록을 통지하거나 외부에 보고함으로써, 차량의 사용자 또는 관리자로 하여금 특정 조치를 취하도록 유도할 수 있다(단계 S650).At least one of various error handling methods may be performed in steps S630 to S650. For example, in some error situations, the occurrence of an error (non-satisfaction of a precondition) may be ignored, and the runnable execution may proceed as it is (step S630). According to another error handling method, it is determined that a seriously abnormal situation has occurred and the hardware may be reset (step S640). According to another error handling method, by notifying or externally reporting an error record, it is possible to induce a user or manager of the vehicle to take a specific action (step S650).
지금까지 도 3 내지 도 8을 참조하여, 본 발명의 일 실시예에 따른 오토사 플랫폼에서 애플리케이션 러너블의 실행 순서가 지켜지도록 관리하는 방법과, 상기 방법에서 사용될 수 있는 이벤트 체인의 예시적인 데이터 구조, 러너블 실행의 선행 조건들을 정의하는 예시적인 데이터 구조, 이벤트를 기록하기 위한 식별자의 데이터 구조 등을 설명하였다. Up to now, with reference to FIGS. 3 to 8 , a method for managing to keep the execution order of application runners in the Otosa platform according to an embodiment of the present invention, and an exemplary data structure of an event chain that can be used in the method , an exemplary data structure that defines the prerequisites for execution of a runnable, a data structure of an identifier for recording an event, and the like have been described.
본 실시예에 따르면, 멀티 프로세서 또는 멀티 코어 등 복수의 제어 유닛에 의해 실행되는 오토사 플랫폼에서 서로 다른 제어 유닛들 사이에 러너블들의 실행 순서가 지켜지도록 관리할 수 있다. 오토사 플랫폼의 BSW 계층 및 SWC 계층 사이의 미들웨어 계층에 상기 기능들을 구현함으로써, 오토사 플랫폼에서 실행되는 애플리케이션 소프트웨어의 수정 없이도 애플리케이션 러너블들의 실행 순서를 관리할 수 있게 된다. 또한 오토사 플랫폼의 미들웨어 계층에 상기 기능들을 구현함으로써, 애플리케이션 러너블들의 실행 순서가 준수되지 않을 경우에, 하드웨어 리셋 이외에도, 에러 로그의 기록, 에러 발생 사실의 통보, 에러를 무시하고 러너블 실행 등 다양한 에러 발생 상황에 맞는 적절한 방식으로 에러를 처리할 수 있게 된다.According to the present embodiment, in the Otosa platform executed by a plurality of control units such as multi-processors or multi-cores, it is possible to manage so that the execution order of runners is maintained among different control units. By implementing the above functions in the middleware layer between the BSW layer and the SWC layer of the Autosa platform, it is possible to manage the execution order of the application runners without modifying the application software running on the Autosa platform. In addition, by implementing the above functions in the middleware layer of the Otosa platform, when the execution order of application runners is not observed, in addition to hardware reset, error log recording, error notification, ignoring errors and running the runners, etc. It becomes possible to handle errors in an appropriate way according to various error occurrence situations.
이하에서는, 도 9를 참조하여, 본 발명의 몇몇 실시예에서 둘 이상의 제어 유닛에서 실행되는 애플리케이션 러너블들 사이의 실행 순서가 관리되는 과정을 간단히 설명한다.Hereinafter, with reference to FIG. 9 , a process in which an execution order among application runners executed in two or more control units is managed in some embodiments of the present invention will be briefly described.
도 9를 참조하면, 오토사 클래식 플랫폼에서 구현된 기능들을 실행하는 제어 유닛 #1(MCU; 900)과 오토사 어댑티브 플랫폼에서 구현된 기능들을 실행하는 제어 유닛 #2(CPU; 950)가 구비된 시스템이 도시되었다. 본 발명의 몇몇 실시예들에 따르면, 제어 유닛 #1(900)과 제어 유닛 #2(950) 사이를 연결하는 네트워크를 통해, 각각의 이벤트 체인을 송수신하고 동기화함으로써, 제어 유닛 #1(900)과 제어 유닛 #2(950)에서 각각 실행되는 애플리케이션 또는 러너블들(941, 991) 사이의 실행 순서를 정의하고 관리할 수 있게 된다.Referring to FIG. 9 , a control unit #1 (MCU; 900) that executes functions implemented in the Otosa Classic platform and a control unit #2 (CPU; 950) that executes functions implemented in the Ottosa adaptive platform are provided. The system is shown. According to some embodiments of the present invention, control unit #1 (900) by transmitting and receiving and synchronizing respective event chains via a network connecting between control unit #1 (900) and control unit #2 (950) It is possible to define and manage the execution order among the applications or runables 941 and 991 respectively executed in the
예를 들어, 제어 유닛 #1(900)에서 실행되는 OS(911)에서 러너블 #1(941)을 실행시키는 태스크가 활성화되고 러너블 #1(941)이 호출되면, 미들웨어(930)에서 상기 러너블 #1(941) 실행의 전처리 과정(931)을 실행한다. 전처리 과정(931)에서는 제어 유닛 #1(900)의 이벤트 체인 #1(935)에 러너블 #1(941)의 실행 개시 사실이 기록되고, 러너블 #1(941) 실행의 선행 조건들이 충족되었는지 여부가 판정된다. 판정 결과에 따라, SWC(940)에서 러너블 #1(941)이 실행되고, 실행이 완료되면 다시 미들웨어(930)에서 후처리 과정(933)이 실행된다. 후처리 과정(933)에서는, 제어 유닛 #1(900)의 이벤트 체인 #1(935)에 러너블 #1(941)의 실행 완료 사실이 기록된다. 또한 이벤트 체인 #1(935)이 네트워크를 통해 제어 유닛 #2(950)으로 전송되어, 제어 유닛 #2(950)의 이벤트 체인 #2(985)이 갱신된다.For example, when a task that executes the
한편, 제어 유닛 #2(950)에서 실행되는 OS(961)에서 러너블 #2(991)를 실행시키는 태스크가 활성화되고 러너블 #2(991)가 호출되면, 미들웨어(980)에서 상기 러너블 #2(991) 실행의 전처리 과정(981)이 실행된다.On the other hand, when the task for executing the runnable #2 (991) is activated in the
전처리 과정(981)에서는 제어 유닛 #2(950)의 이벤트 체인 #2(985)에 러너블 #2(991)의 실행 개시 사실이 기록되고, 러너블 #2(991) 실행의 선행 조건들이 충족되었는지 여부가 판정된다. 이때, 이벤트 체인 #2(985)에는, 제어 유닛 #1(900)에서 실행된 러너블들에 관한 기록이 갱신되어 있으므로, 러너블 #2(991) 보다 앞서서 실행되어야 할 러너블이 다른 제어 유닛 #1(900)에 의해 실행되는 러너블 #1(941)이더라도, 러너블들 사이의 실행 순서의 적절한 관리가 가능하다.In the
판정 결과에 따라, SWC(990)에서 러너블 #2(991)가 실행되고, 실행이 완료되면 다시 미들웨어(980)에서 후처리 과정(983)이 실행된다. 후처리 과정(983)에서는, 제어 유닛 #2(950)의 이벤트 체인 #2(985)에 러너블 #2(991)의 실행 완료 사실이 기록된다. 또한 이벤트 체인 #2(985)이 네트워크를 통해 제어 유닛 #1(900)으로 전송되어, 제어 유닛 #1(900)의 이벤트 체인 #1(935)이 갱신된다.According to the determination result,
이하에서는, 도 10을 참조하여, 본 발명의 일 실시예에 따른 러너블 실행 관리 방법이 운전 보조 시스템에 적용되는 예를 설명한다.Hereinafter, with reference to FIG. 10 , an example in which the method for managing runable execution according to an embodiment of the present invention is applied to a driving assistance system will be described.
도 10은 운전 보조 시스템(ADAS: Advanced Driver Assistance System)에서 센서 퓨전 로직을 MCU가 아닌 CPU에 분산하여 처리하는 예를 나타낸 것이다. 센서 퓨전 로직과 같이 처리의 부하가 높은 작업을 CPU에 분산하여 처리함으로써, 시스템 응답 시간이 개선될 수 있다. 도 10에 도시된 적용예에서는, 물리적으로 서로 구별되는 제어 유닛들인 MCU와 CPU 사이에 이벤트 체인이 서로 공유됨으로써, 러너블들 사이의 실행 순서가 관리될 수 있다.10 illustrates an example of distributing and processing sensor fusion logic to a CPU instead of an MCU in an Advanced Driver Assistance System (ADAS). System response time can be improved by distributing and processing a task with a high processing load, such as sensor fusion logic, to the CPU. In the application example shown in FIG. 10 , an event chain is shared between the MCU and the CPU, which are control units that are physically distinct from each other, so that the execution order between the runners can be managed.
도 10을 참조하면, MCU의 CORE #0에서 차량동역학 신호를 처리하는 러너블(1003)의 실행이 완료되면, 완료 이벤트의 식별자가 MCU의 CORE #0의 이벤트 체인에 기록되고, MCU의 CORE #0의 이벤트 체인은 MCU의 CORE #1, MCU의 CORE #2, 및 CPU에 송신되어, CORE #1, CORE 2, 및 CPU 각각의 이벤트 체인에 병합된다. Referring to FIG. 10 , when the execution of the
CPU에서 센서 퓨전을 처리하는 함수 또는 러너블(1007)이 호출되면, 그 전처리 과정으로서 센서 퓨전보다 선행하여야 하는 차량동역학 신호 처리 러너블(1003)이 완료되었는지 여부가 판정된다. 차량동역학 신호 처리 러너블(1003)은 비록 상기 CPU와 물리적으로 구별되는 MCU의 CORE #0에서 실행되었지만, 상기 실행 이후에 상기 실행 완료 사실이 기록된 MCU CORE #0의 이벤트 체인이 CPU에 전송되고, CPU의 이벤트 체인이 병합되었으므로, 러너블(1003)의 완료 여부가 판정될 수 있으며, 그 판정 결과에 따라 적절한 에러 처리 루틴이 실행될 수 있다. CPU에서 센서 퓨전 함수 또는 러너블(1007)의 실행이 완료되면, 마찬가지로 실행 완료가 CPU의 이벤트 체인에 기록되고, CPU의 이벤트 체인이 다른 제어 유닛들(MCU의 CORE #0, CORE #1, CORE #2)에 송신되어, 각각의 이벤트 체인들에 병합된다.When a function or runable 1007 that processes sensor fusion is called in the CPU, it is determined whether or not the vehicle dynamics signal processing runnable 1003, which should precede sensor fusion, is completed as a pre-processing process. Although the vehicle dynamics signal processing runnable 1003 was executed in
다시 MCU의 CORE #0에서 출력 처리 러너블(1011)이 호출되면, 전술한 과정과 유사한 방법에 따라 이벤트 체인으로부터 선행 조건의 충족 여부가 판정된 후, 출력 처리 러너블(1011)이 실행될 수 있게 된다.When the
지금까지 도 1 내지 도 10을 참조하여 설명된 본 발명의 개념은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.The concepts of the present invention described with reference to FIGS. 1 to 10 may be implemented as computer-readable codes on a computer-readable medium. The computer-readable recording medium may be, for example, a removable recording medium (CD, DVD, Blu-ray disk, USB storage device, removable hard disk) or a fixed recording medium (ROM, RAM, computer-equipped hard disk). can The computer program recorded on the computer-readable recording medium may be transmitted to another computing device through a network such as the Internet and installed in the other computing device, thereby being used in the other computing device.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.Although acts are shown in a particular order in the drawings, it should not be understood that the acts must be performed in the specific order or sequential order shown, or that all illustrated acts must be performed to obtain a desired result. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of the various components in the embodiments described above should not be construed as necessarily requiring such separation, and the program components and systems described may generally be integrated together into a single software product or packaged into multiple software products. It should be understood that there is
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although embodiments of the present invention have been described with reference to the accompanying drawings, those of ordinary skill in the art to which the present invention pertains can realize that the present invention can be embodied in other specific forms without changing its technical spirit or essential features. you will be able to understand Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive.
Claims (16)
복수의 러너블(runnable)들의 실행의 선행 조건들을 획득하는 단계;
상기 복수의 러너블들 중 제1 러너블 실행의 선행 조건의 충족 여부를 판정하는 전처리를 수행하는 단계;
상기 제1 러너블을 실행하는 단계; 및
상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 이벤트 체인에 추가하는 후처리를 수행하는 단계
를 포함하되,
상기 전처리를 수행하는 단계는,
상기 선행 조건들로부터, 상기 제1 러너블보다 먼저 완료되어야 할 선행 이벤트들의 식별자들을 식별하는 단계; 및
상기 이벤트 체인에서 상기 선행 이벤트들의 식별자들을 탐색하는 단계
를 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.A method for managing runnable execution on an Ottosa platform, the method comprising:
obtaining prerequisites for execution of a plurality of runnables;
performing pre-processing for determining whether a prerequisite for execution of a first runner among the plurality of runners is satisfied;
executing the first runnable; and
performing post-processing of adding an event identifier indicating the completion of the first runnable execution to an event chain;
including,
Performing the pre-processing step,
identifying, from the prerequisites, identifiers of preceding events to be completed before the first runable; and
searching for identifiers of the preceding events in the event chain;
containing,
How to manage runnable execution on the Ottosa platform.
상기 복수의 러너블들의 실행의 선행 조건들은, 상기 복수의 러너블들의 실행의 선후 관계를 나타내는 것인,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
The prerequisites for the execution of the plurality of runners are indicative of a precedence relationship of the execution of the plurality of runners.
How to manage runnable execution on the Ottosa platform.
상기 복수의 러너블들의 실행의 선행 조건들은, 상기 제1 러너블보다 먼저 실행되어야 할 하나 이상의 다른 러너블들에 관한 정보를 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
The prerequisites for the execution of the plurality of runables include information about one or more other runables to be executed before the first runable,
How to manage runnable execution on the Ottosa platform.
상기 복수의 러너블들의 실행의 선행 조건들은, 상기 이벤트 식별자를 이용하여 사전에 정의되며,
상기 이벤트 식별자는 상기 복수의 러너블들 고유의 식별자 및 실행 개시 또는 실행 완료를 나타내는 식별자를 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
The prerequisites for the execution of the plurality of runables are predefined using the event identifier,
The event identifier includes an identifier unique to the plurality of runables and an identifier indicating execution start or execution completion,
How to manage runnable execution on the Ottosa platform.
상기 전처리를 수행하는 단계는,
상기 제1 러너블 실행의 개시 사실을 나타내는 이벤트 식별자를 상기 이벤트 체인에 추가하는 단계를 더 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
Performing the pre-processing step,
and adding to the event chain an event identifier indicating the fact that the first runnable execution has started.
How to manage runnable execution on the Ottosa platform.
상기 제1 러너블을 실행하는 단계는,
상기 이벤트 체인에서 상기 선행 이벤트들의 완료 사실을 나타내는 식별자들이 발견된 것에 기초하여, 상기 제1 러너블을 실행하는 단계를 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
The step of executing the first runnable comprises:
executing the first runnable based on the discovery of identifiers indicative of the fact of completion of the preceding events in the event chain;
How to manage runnable execution on the Ottosa platform.
상기 이벤트 체인은 순서를 가지는 리스트(ordered list)에 기록되는 것인,
오토사 플랫폼에서의 러너블 실행 관리 방법.7. The method of claim 6,
wherein the event chain is recorded in an ordered list,
How to manage runnable execution on the Ottosa platform.
상기 전처리를 수행하는 단계 및 상기 후처리를 수행하는 단계는 미들웨어에 의해 수행되고,
상기 전처리를 수행하는 단계는,
상기 미들웨어가 상기 제1 러너블 실행 호출을 감지하는 단계; 및
상기 미들웨어가 상기 이벤트 체인을 판독하는 단계
를 포함하고,
상기 후처리를 수행하는 단계는,
상기 미들웨어가 상기 제1 러너블의 실행 완료를 감지하는 단계;
상기 미들웨어가 상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 상기 이벤트 체인에 추가하는 단계
를 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
The performing the pre-processing and the performing the post-processing are performed by middleware,
Performing the pre-processing step,
detecting, by the middleware, the first runnable execution call; and
the middleware reading the event chain
including,
Performing the post-processing step,
detecting, by the middleware, completion of execution of the first runable;
adding, by the middleware, an event identifier indicating completion of the first runnable execution to the event chain;
containing,
How to manage runnable execution on the Ottosa platform.
상기 복수의 러너블들은, 제1 제어 유닛에서 실행되는 러너블 및 상기 제1 제어 유닛과 구별되는 제2 제어 유닛에서 실행되는 러너블을 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
wherein the plurality of runables include a runable executed in a first control unit and a runable executed in a second control unit distinct from the first control unit,
How to manage runnable execution on the Ottosa platform.
상기 제1 러너블은 제1 제어 유닛에서 실행되고,
상기 후처리를 수행하는 단계는,
상기 제1 제어 유닛이 상기 이벤트 체인을 상기 제2 제어 유닛에게 전송하는 단계
를 더 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.10. The method of claim 9,
the first runable is executed in a first control unit;
Performing the post-processing step,
sending, by the first control unit, the event chain to the second control unit;
further comprising,
How to manage runnable execution on the Ottosa platform.
상기 제1 러너블은 제1 제어 유닛에서 실행되고,
상기 제2 제어 유닛으로부터 수신된 이벤트 식별자를 상기 제1 제어 유닛이 상기 이벤트 체인에 병합하는 단계
를 더 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.10. The method of claim 9,
the first runable is executed in a first control unit;
merging, by the first control unit, the event identifier received from the second control unit into the event chain;
further comprising,
How to manage runnable execution on the Ottosa platform.
상기 이벤트 식별자는,
상기 제1 제어 유닛 및 상기 제2 제어 유닛을 포함하는 복수의 제어 유닛들을 서로 구별하는 식별자를 더 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.10. The method of claim 9,
The event identifier is
Further comprising an identifier for distinguishing from each other a plurality of control units comprising the first control unit and the second control unit,
How to manage runnable execution on the Ottosa platform.
상기 제1 러너블 실행의 선행 조건이 충족되지 않았다는 판정에 기초하여, 사전에 정의된 에러 처리 루틴을 실행하는 단계
를 더 포함하는,
오토사 플랫폼에서의 러너블 실행 관리 방법.According to claim 1,
executing a predefined error handling routine based on a determination that the prerequisite of the first runnable execution is not met;
further comprising,
How to manage runnable execution on the Ottosa platform.
상기 사전에 정의된 에러 처리 루틴은, 서로 다른 러너블에 대하여 서로 다르게 정의된 것인,
오토사 플랫폼에서의 러너블 실행 관리 방법.14. The method of claim 13,
The predefined error handling routine is defined differently for different runables,
How to manage runnable execution on the Ottosa platform.
상기 사전에 정의된 에러 처리 루틴은, 서로 다른 선행 조건에 대하여 서로 다르게 정의된 것인,
오토사 플랫폼에서의 러너블 실행 관리 방법.14. The method of claim 13,
The predefined error handling routine is defined differently for different prerequisites,
How to manage runnable execution on the Ottosa platform.
상기 프로그램은,
복수의 러너블들의 실행의 선행 조건들을 획득하는 인스트럭션;
상기 복수의 러너블들 중 제1 러너블 실행의 선행 조건의 충족 여부를 판정하는 전처리를 수행하는 인스트럭션;
상기 제1 러너블을 실행하는 인스트럭션; 및
상기 제1 러너블 실행의 완료 사실을 나타내는 이벤트 식별자를 이벤트 체인에 추가하는 후처리를 수행하는 인스트럭션
을 포함하되,
상기 전처리를 수행하는 인스트럭션은,
상기 선행 조건들로부터, 상기 제1 러너블보다 먼저 완료되어야 할 선행 이벤트들의 식별자들을 식별하는 인스트럭션; 및
상기 이벤트 체인에서 상기 선행 이벤트들의 식별자들을 탐색하는 인스트럭션
을 포함하는,
프로그램이 기록된 저장 매체.
As a storage medium on which a runable execution management program on the Ottosa platform is recorded,
The program is
an instruction for obtaining prerequisites for execution of a plurality of runables;
instructions for performing pre-processing to determine whether a prerequisite for execution of a first runner among the plurality of runners is satisfied;
instructions for executing the first runnable; and
Instructions for performing post-processing of adding an event identifier indicating the fact that the first runnable execution has been completed to an event chain
including,
The instruction for performing the pre-processing is,
an instruction for identifying, from the prerequisites, identifiers of preceding events to be completed before the first runnable; and
an instruction to search for identifiers of the preceding events in the event chain
comprising,
A storage medium on which a program is recorded.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020200089346A KR102349107B1 (en) | 2020-07-20 | 2020-07-20 | Method for managing execution of runnables on autosar platform |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020200089346A KR102349107B1 (en) | 2020-07-20 | 2020-07-20 | Method for managing execution of runnables on autosar platform |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR102349107B1 true KR102349107B1 (en) | 2022-01-07 |
Family
ID=79355091
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020200089346A Active KR102349107B1 (en) | 2020-07-20 | 2020-07-20 | Method for managing execution of runnables on autosar platform |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR102349107B1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114978880A (en) * | 2022-05-23 | 2022-08-30 | 南昌智能新能源汽车研究院 | Service call chain tracking method, system, computer and storage medium based on AUTOSAR Adaptive |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20050011689A (en) * | 2003-07-22 | 2005-01-29 | 가부시끼가이샤 도시바 | Method and system for performing real-time operation |
| US20070091068A1 (en) * | 2004-04-30 | 2007-04-26 | Hillcrest Laboratories, Inc. | 3D pointing devices with orientation compensation and improved usability |
| KR20170109169A (en) * | 2016-03-18 | 2017-09-28 | 국민대학교산학협력단 | Application Software Design of Chassis and Safety Integrated Control System Using AUTOSAR and Runnerble Assignment Method based on Multi-Core |
| KR101794568B1 (en) | 2016-03-29 | 2017-12-01 | 현대오트론 주식회사 | Method and apparatus for distributing task of AUTOSAR Operating System |
| US20190179727A1 (en) * | 2017-12-13 | 2019-06-13 | The Mathworks, Inc. | Automatic setting of multitasking configurations for a code-checking system |
| KR20210059454A (en) * | 2019-11-15 | 2021-05-25 | 현대자동차주식회사 | Apparatus for synchronizing runnable based on AUTOSAR, and method thereof |
-
2020
- 2020-07-20 KR KR1020200089346A patent/KR102349107B1/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20050011689A (en) * | 2003-07-22 | 2005-01-29 | 가부시끼가이샤 도시바 | Method and system for performing real-time operation |
| US20070091068A1 (en) * | 2004-04-30 | 2007-04-26 | Hillcrest Laboratories, Inc. | 3D pointing devices with orientation compensation and improved usability |
| KR20170109169A (en) * | 2016-03-18 | 2017-09-28 | 국민대학교산학협력단 | Application Software Design of Chassis and Safety Integrated Control System Using AUTOSAR and Runnerble Assignment Method based on Multi-Core |
| KR101794568B1 (en) | 2016-03-29 | 2017-12-01 | 현대오트론 주식회사 | Method and apparatus for distributing task of AUTOSAR Operating System |
| US20190179727A1 (en) * | 2017-12-13 | 2019-06-13 | The Mathworks, Inc. | Automatic setting of multitasking configurations for a code-checking system |
| KR20210059454A (en) * | 2019-11-15 | 2021-05-25 | 현대자동차주식회사 | Apparatus for synchronizing runnable based on AUTOSAR, and method thereof |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114978880A (en) * | 2022-05-23 | 2022-08-30 | 南昌智能新能源汽车研究院 | Service call chain tracking method, system, computer and storage medium based on AUTOSAR Adaptive |
| CN114978880B (en) * | 2022-05-23 | 2024-02-13 | 南昌智能新能源汽车研究院 | Service call chain tracking method, system, computer and storage medium |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11567751B2 (en) | Providing system updates in automotive contexts | |
| JP6189004B1 (en) | Shared backup unit and control system | |
| US9319281B2 (en) | Resource management method, resource management device, and program product | |
| Bhat et al. | Practical task allocation for software fault-tolerance and its implementation in embedded automotive systems | |
| US11951999B2 (en) | Control unit for vehicle and error management method thereof | |
| JP5705871B2 (en) | Resolving locks on distributed persistent instances | |
| WO2022004324A1 (en) | Vehicle control device | |
| JP2011511377A (en) | A method for preloading settings of a heterogeneous information processing system that can be reconfigured into a memory hierarchy | |
| KR102349107B1 (en) | Method for managing execution of runnables on autosar platform | |
| CN114756299A (en) | Vehicle failure processing method and device, electronic device and storage medium | |
| CN115248724A (en) | Real-time scheduling for heterogeneous multi-core systems | |
| CN111124821A (en) | Driving software detection method and device and storage medium | |
| CN110959152B (en) | access control device | |
| CN117493079A (en) | Method, device, equipment and storage medium for restarting vehicle-mounted system | |
| CN114281574B (en) | Distributed task scheduling method, device and computer-readable storage medium | |
| Jahnich et al. | Towards a middleware approach for a self-configurable automotive embedded system | |
| KR102519132B1 (en) | System and method for operating self-growing software based on microservice | |
| JP7344109B2 (en) | Resource allocation system, server, computing device | |
| JP2013061783A (en) | Multi-core processor | |
| CN117957531A (en) | Method and apparatus for sequence monitoring of multiple threads | |
| US6173249B1 (en) | Method of determining termination of a process under a simulated operating system | |
| Di Natale | Design and development of component-based embedded systems for automotive applications | |
| US20250068432A1 (en) | Flash driver control method for multi-core mcu, and device for implementing the same | |
| CN111158705A (en) | Installation method, device and storage medium of driving software | |
| CN120469827B (en) | Embedded system reliability enhancement method, device, medium and product |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| R17-X000 | Change to representative recorded |
St.27 status event code: A-3-3-R10-R17-oth-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE) Year of fee payment: 4 |