WO2017188109A1 - 車両制御装置、及び車両システム - Google Patents

車両制御装置、及び車両システム Download PDF

Info

Publication number
WO2017188109A1
WO2017188109A1 PCT/JP2017/015849 JP2017015849W WO2017188109A1 WO 2017188109 A1 WO2017188109 A1 WO 2017188109A1 JP 2017015849 W JP2017015849 W JP 2017015849W WO 2017188109 A1 WO2017188109 A1 WO 2017188109A1
Authority
WO
WIPO (PCT)
Prior art keywords
processing
slot
executed
time
arithmetic processing
Prior art date
Application number
PCT/JP2017/015849
Other languages
English (en)
French (fr)
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 EP17789392.2A priority Critical patent/EP3451168A4/en
Priority to CN201780011469.7A priority patent/CN108701055B/zh
Priority to US16/090,434 priority patent/US10994675B2/en
Publication of WO2017188109A1 publication Critical patent/WO2017188109A1/ja

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • B60R16/023Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements for transmission of signals between vehicle parts or subsystems
    • B60R16/0231Circuits relating to the driving or the functioning of the vehicle
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C5/00Registering or indicating the working of vehicles
    • G07C5/08Registering or indicating performance data other than driving, working, idle, or waiting time, with or without registering driving, working, idle or waiting time
    • G07C5/0808Diagnosing performance data

Definitions

  • the present disclosure relates to a vehicle control device and a vehicle system.
  • Many vehicle systems are composed of an ECU that operates an electronic vehicle control device, that is, an electronic control unit (Electronic Control Unit) and an in-vehicle network (Local Area Network) that enables communication between multiple ECUs. .
  • an electronic control unit Electronic Control Unit
  • an in-vehicle network Local Area Network
  • the OSS is widely disclosed and may not be generally high quality. For this reason, it is difficult to install in a system such as an automobile control system that requires high safety as it is. Therefore, as a precaution, a method that does not affect other software when the OSS occupies the CPU is desired.
  • Non-Patent Document 1 discloses that a time division design is performed in which a system execution cycle is determined and a time zone of processing to be executed within the cycle is determined. This time zone is called a time window or slot.
  • a specific process is executed within a specific time window as designed.
  • the processing unit is a task or an interrupt process. If the specific process does not end until the end time of the time window, it is basically determined as an error and the process is terminated.
  • Non-Patent Document 1 interrupt processing must also be assigned to a time window. For this reason, if there is an interrupt request immediately after the end of the time window for interrupt processing, the interrupt processing must wait until the processing assigned to the other time window ends. Responsiveness will be reduced. In the first place, there are many cases where interrupt processing is to be processed immediately, and it is not preferable that the waiting time becomes long.
  • the present disclosure has been made in view of such a situation, and provides a technique for achieving both high response to interrupt processing and non-interference between control software.
  • a vehicle control device of the present disclosure includes a storage device that stores various programs for vehicle control, a first arithmetic device, and a second arithmetic device, and reads the program from the storage device. And a plurality of arithmetic units to be executed.
  • the storage device includes a first type arithmetic processing program that is executed in a manner other than time division and a second type arithmetic processing program that is executed in a time division manner.
  • the first arithmetic device is configured to execute a program of the first type arithmetic processing
  • the second arithmetic device is configured to execute a program of the second type arithmetic processing.
  • the vehicle control device According to the vehicle control device according to the present disclosure, tasks that are moved in the time division based on the time division are not affected by other time division processing executed in the same core, and thus can ensure non-interference.
  • the inter-core communication updates the shared data at a timing when the shared data is not referred to, the incoherence can be secured even between the cores.
  • the interrupt processing is executed other than time division, high responsiveness can be realized. Therefore, it is possible to achieve both high response to interrupt processing and non-interference between control software.
  • FIG. 10 It is a figure showing a schematic structure of vehicle control device 1 by an embodiment of this indication. It is a figure which shows the structural example of the slot setting information 131 by this embodiment. It is a figure which shows the structural example of the alarm setting information 132 by this embodiment. It is a figure which shows the structural example of the task information 133 by this embodiment. It is operation
  • 12 is a flowchart for explaining details of processing (step 1112) by the alarm processing unit 112; 10 is a flowchart for explaining details of processing by a slot synchronization read processing unit 113; 10 is a flowchart for explaining details of processing by a slot synchronization write processing unit 114; 5 is a flowchart for explaining details of processing by a priority scheduling unit 115; 5 is a flowchart for explaining details of processing by a transmission processing unit.
  • FIG. 10 is a flowchart for explaining details of processing by a reception interrupt processing unit 117; 5 is a flowchart for explaining details of processing by a core 2 initialization unit 120; 10 is a flowchart for explaining details of processing by a slot setting unit 121; 5 is a flowchart for explaining details of processing by a sensor fusion unit 122; It is a flowchart for demonstrating the detail of the process by the dynamic map production
  • FIG. 4 is a flowchart for explaining details of processing by a trajectory generation unit 124; 5 is a flowchart for explaining details of processing by a time-driven scheduling unit 125. It is a timing chart for demonstrating the timing of each process performed with the vehicle control apparatus 1 by this embodiment.
  • the present disclosure relates to a control software that performs high response to an interrupt request by executing time-driven scheduling and other scheduling algorithms in a multi-core environment and performing inter-core communication without interference between the scheduling algorithms in a vehicle control device. It is compatible with non-interference.
  • the vehicle control device executes a control application that is desired to be non-interfering with a core that is executed in a time-sharing manner, and executes basic software that is desired to be highly responsive with a core that is executed based on task priority. Thereby, both incoherence and high responsiveness are achieved.
  • the time window is called a slot.
  • the embodiment of the present disclosure may be implemented by software running on a general-purpose computer, or may be implemented by dedicated hardware or a combination of software and hardware.
  • each information of the present disclosure will be described in a “table” format.
  • the information does not necessarily have to be expressed in a data structure by a table. It may be expressed as Therefore, “table”, “list”, “DB”, “queue”, etc. may be simply referred to as “information” to indicate that they do not depend on the data structure.
  • program as the subject (operation subject).
  • the program is executed by the processor, and the processing determined by the memory and the communication port (communication control device) is performed. Since it is performed while being used, the description may be made with the processor as the subject. Part or all of the program may be realized by dedicated hardware, or may be modularized.
  • one core for example, core 1 is assigned a task to be executed in a time-sharing manner, and another core It is disclosed that (for example, core 2) is in charge of a task to be executed other than time division.
  • a task other than time division for example, interrupt processing such as communication corresponds.
  • the core 2 executes a task to be executed periodically in the set slot.
  • the core 1 executes a task (interrupt processing) that is not periodically executed in an empty slot.
  • FIG. 1 is a diagram illustrating a schematic configuration of a vehicle control device 1 according to an embodiment of the present disclosure.
  • the vehicle control device 1 includes an arithmetic device (core 1) 11, an arithmetic device (core 2) 12, a memory 13, an input / output circuit 14, a hardware timer 15, and an in-vehicle network 16.
  • a CAN Controller Area Network
  • CANFD Controller Area Network
  • FlexRay FlexRay
  • serial communication or Ethernet
  • the number of arithmetic devices is not limited to two, but may be two or more.
  • the memory 13 includes a program area 100 and a data storage area (sometimes referred to as “shared data buffer” in this specification) 130.
  • the program area 100 of the memory 13 includes a core 1 initialization unit 110, a slot synchronization processing timing setting unit 111, an alarm processing unit 112, a slot synchronization read processing unit 113, and a slot synchronization write processing unit 114 as various programs.
  • a priority scheduling unit 115, a transmission processing unit 116, a reception interrupt processing unit 117, a core 2 initialization unit 120, a slot setting unit 121, a sensor fusion unit 122, a dynamic map generation unit 123, A trajectory generation unit 124 and a time drive scheduling unit 125 are included.
  • the unit 117 is executed by the core 1_11.
  • the slot setting unit 121, sensor fusion unit 122, dynamic map generation unit 123, trajectory generation unit 124, and time drive scheduling unit 125 are executed by the core 2_12.
  • each of the arithmetic device (core 1) 11 and the arithmetic device (core 2) 12 reads each program corresponding to the assigned process into a temporary buffer, and executes each program by a processor such as a CPU (not shown).
  • the data storage area 130 includes slot setting information 131, alarm setting information 132, task information 133, external world recognition information 134, trajectory information 135, state data (for example, error information) 136, map information 137, Is stored.
  • the input / output circuit 14 communicates with the outside (for example, various devices and various sensors connected to the vehicle control device 1) via the in-vehicle network 16 to set the hardware timer 15, or from the hardware timer 15. Receive interrupt requests.
  • the core 1 initialization unit 110 executes an initialization process on the arithmetic device (core 1) 11.
  • the slot synchronization processing timing setting unit 111 measures the timing of the communication processing executed by the core 1_11 and the processing executed by the core 2_12 (for example, sensor fusion processing, dynamic map generation processing, and trajectory generation processing are applicable). Execute the process.
  • the alarm processing unit 112 executes processing for setting a timer so that interrupt processing is executed at the timing set by the slot synchronization processing timing setting unit 111.
  • the slot synchronization read processing unit 113 executes processing for reading predetermined data stored in the shared data buffer (data storage area) 130 at the time set by the alarm processing unit 112.
  • the slot synchronization write processing unit 114 executes processing for writing predetermined data in the shared data buffer (data storage area) 130 at the time set by the alarm processing unit 112.
  • the priority scheduling unit 115 executes processing for scheduling processing (including interrupt processing and time division processing) executed in the interrupt slot (empty slot) based on the priority.
  • the transmission processing unit 116 executes processing for transmitting each data stored in the shared data buffer 130 to the core 2_12.
  • the reception interrupt processing unit 117 executes processing for storing the external environment recognition information 134 in the temporary buffer of the core 1_11 via the in-vehicle network 16.
  • the temporary buffer may be a temporary buffer of the core 2_12, or may be a temporary buffer in the memory 13 as long as it is provided in the memory 13.
  • the core 2 initialization unit 120 executes an initialization process on the arithmetic device (core 2) 12.
  • the slot setting unit 121 reads the slot setting information 131 during the initialization process and executes a process for recognizing the slot configuration.
  • the sensor fusion unit 122 acquires external world information from various sensors (for example, a camera and a radar), and executes a process for recognizing a front state based on each external world information.
  • the dynamic map generation unit 123 performs a process of reflecting the front state recognized by the sensor fusion unit 122 in the map information.
  • the trajectory generation unit 124 executes processing for determining a trajectory that can be taken based on the information on the front state by the sensor fusion unit 122.
  • the time drive scheduling unit 125 executes a process of switching slots.
  • FIG. 2 is a diagram illustrating a configuration example of the slot setting information 131 according to the present embodiment.
  • the slot setting information 131 includes an SID 1311, a slot start time 1312, a slot end time 1313, and a TID 1314 as configuration items.
  • SID 1311 is identification information (ID) that can uniquely identify and specify a slot.
  • the slot start time 1312 is information indicating the start time of each slot in ms units.
  • the slot end time 1313 is information indicating the end time of each slot in ms units. In the present embodiment, the time is expressed in units of ms, but the present invention is not limited to this.
  • the TID 1314 is identification information (ID) that can uniquely identify and identify a task to be executed. In this embodiment, only one task is assigned to one slot, but the present invention is not limited to this. For example, two or more tasks may be assigned to one slot.
  • ID identification information
  • a system cycle of 10 ms is assumed. That is, when the time advances to the 10 ms, it returns to the 0 ms.
  • the system cycle is 10 ms, but the present invention is not limited to this. For example, it may be 50 ms or 100 ms.
  • the value of TID 1314 being “ ⁇ ” means that the slot is an empty slot.
  • the information on the empty slot is described in the slot setting information 131, but it may not be described. In that case, it is possible to search for an empty slot by checking a time in which no slot is allocated within the system period or a slot to which no task is allocated.
  • FIG. 3 is a diagram illustrating a configuration example of the alarm setting information 132 according to the present embodiment.
  • the alarm setting information 132 includes an AID 1321, an offset 1322, a period 1323, and a TID 1324 as configuration items.
  • the AID 1321 is identification information (ID) that can uniquely identify and identify an alarm.
  • ID identification information
  • the alarm is a service provided by the operating system, and assumes a process of executing a specific task by inputting a hardware timer interrupt at a specified time.
  • the offset 1322 is information indicating a deviation from the reference time of the alarm time.
  • an offset value of 9 represents a time advanced by 9 ms from the 0 ms.
  • Cycle 1323 represents a cycle for resetting the alarm. For example, when the offset is 9 and the period is 10, it means that the hardware timer interrupt is generated at the 9 ms of the 10 ms period, and the alarm is set so that this is performed at the 10 ms period.
  • TID 1324 indicates a task ID executed by the alarm.
  • task 3 (slot synchronous read processing) is interrupted at 9 ms (when SID 1311 is 4: see FIG. 2), and task 4 (slot synchronous write processing) is interrupted at 9.5 ms. It is processed.
  • FIG. 4 is a diagram illustrating a configuration example of the task information 133 according to the present embodiment.
  • the task information 133 includes a TID 1331, a core 1332, a period 1333, a priority 1334, and a task name 1335 as configuration information.
  • TID 1331 is task identification information (ID) that can uniquely identify and identify a task.
  • the core 1332 is identification information (ID) of a core that executes the target TID 1331.
  • ID identification information
  • the value of the core 1332 being 1 means that a task or interrupt process corresponding to the target TID 1331 is executed in the arithmetic unit (core 1) 11.
  • the cycle 1333 is information indicating the execution cycle of the target task.
  • a task with a number in the column is a periodic task, and a task without a period number is a task that is executed only at initialization, an interrupt process that is activated by an interrupt request, or a task or interrupt that is activated by a specific timer interrupt Indicates processing.
  • the processes handled by the core 2_12 are all periodic tasks (processes executed in a time division manner), and the processes handled by the core 1_11 are interrupt processes except for the transmission process.
  • the priority 1334 is information indicating the priority of tasks and interrupt processing. In the present embodiment, the smaller the number, the higher the priority. When a plurality of tasks and interrupt processes are being executed at the same time, the priority scheduling unit 115 executes the one having a high priority 1334. For example, in the case of processing that is executed in a time-sharing manner, information on the priority 1334 may not be set.
  • Task name 1335 indicates the name of the task.
  • core 1 initialization is performed by the core 1 initialization unit 110
  • transmission processing is performed by the transmission processing unit 116
  • reception interrupt processing is performed by the reception interrupt processing unit 117
  • slot synchronous read processing is performed by slot synchronous read processing.
  • the unit 113, the slot synchronization write processing is the slot synchronization write processing unit 114
  • the core 2 initialization is the core 2 initialization unit 120
  • the sensor fusion is the sensor fusion unit 122
  • the dynamic map generation is the dynamic map generation unit 123.
  • the trajectory generation means the trajectory generation unit 124, respectively.
  • FIG. 5 is an operation explanatory diagram showing an overview of the entire processing according to the present embodiment.
  • a solid line indicates a data flow
  • a dotted line indicates a process execution flow.
  • the core 1 initialization unit 110 of the core 1_11 is first executed, and then the core 2 initialization unit 120 and the slot synchronization processing timing setting unit 111 of the core 2_12 are executed.
  • the slot synchronization processing timing setting unit 111 refers to the slot setting information 131 and detects an empty slot. Then, the slot synchronization processing timing setting unit 111 saves the task contents in the alarm setting information 132 so that the processing (task) desired to be executed at the detected empty slot time can be executed, and calls the alarm processing unit 112.
  • the alarm processing unit 112 sets the time in the hardware timer 15 so that a specific process is executed at the time described in the alarm setting information 132.
  • the priority scheduling unit 115 executes a task executed by the core 1_11 or interrupt processing based on the priority.
  • the processing executed by the core 1_11 is a transmission processing unit 116, a reception interrupt processing unit 117, a slot synchronization read processing unit 113, and a slot synchronization write processing unit 114. Since not all interrupt processing requests are always requested, the interrupt request issued at that time and the processing to be performed periodically (time division processing) are scheduled based on the priority. If there is no interrupt request, only the transmission processing that is periodically performed is scheduled.
  • the slot synchronization read processing unit 113 and the slot synchronization write processing unit 114 are activated by the hardware timer 15 set by the alarm processing unit 112, and the priority scheduling unit 115 is based on the priority 1334 described in the task information 133. Execute the process.
  • the core 2 initialization unit 120 of the core 2_12 calls the slot setting unit 121.
  • the slot setting unit 121 sets the hardware timer 15 so that the time-driven scheduling unit 125 is executed based on the slot setting information 131.
  • the time drive scheduling unit 125 is activated by the hardware timer 15 and executes processing corresponding to the slot.
  • the sensor fusion unit 122, the dynamic map generation unit 123, and the trajectory generation unit 124 are executed by the time-driven scheduling unit 125.
  • FIG. 6 is a flowchart for explaining the processing contents of the core 1 initialization unit 110 according to the present embodiment.
  • the processing contents will be described with the core 1 initialization unit 110 as an operation subject.
  • the core 1 initialization unit 110 is a program executed by the core 1_11, the core 1_11 or a processor in the core 1_11 may be the operation subject.
  • Step 1101 The core 1 initialization unit 110 activates the core 2_12.
  • Step 1102 The core 1 initialization unit 110 initializes software executed by the core 1_11 and related microcomputer registers.
  • Step 1103 The core 1 initialization unit 110 calls the slot synchronization processing timing setting unit 111 in order to perform activation setting of processing executed in synchronization with the slot. Further details of step 1103 are described in FIG.
  • FIG. 7 is a flowchart for explaining details of the processing (step 1103) by the slot synchronization processing timing setting unit 111. Since this process is a process included in the initialization process, it is executed only once at the time of initialization.
  • Step 1111 The slot synchronization processing timing setting unit 111 detects an empty slot from the slot setting information 131.
  • the slot with the SID 1311 of 4 is an empty slot because no task is registered in the TID 1314.
  • a clear empty slot is clearly indicated in the slot setting information 131, but the present invention is not limited to this.
  • the time of the slot in which the task is not executed may be calculated from the system cycle and the information from 1 to 3 of the SID 1311 and may be used as an empty slot.
  • Step 1112 Since the slot synchronization processing timing setting unit 111 activates the task corresponding to the slot at the time of the empty slot, the alarm processing unit 112 is called with the task ID corresponding to the start time of the empty slot as an argument, and the time is sent to the alarm processing unit 112. Execute the setting process.
  • FIG. 8 is a flowchart for explaining details of the processing (step 1112) by the alarm processing unit 112.
  • Step 1121 The alarm processing unit 112 sets the time in the hardware timer 15 so that the corresponding task ID starts at the argument time.
  • FIG. 9 is a flowchart for explaining details of processing by the slot synchronization read processing unit 113.
  • Step 1131 The slot synchronization read processing unit 113 is activated by the hardware timer 15 and copies the trajectory information 135 stored in the shared data buffer (data storage area) 130 to the temporary buffer of the core 1_11.
  • the trajectory information 135 is generated by the core 2_12 (trajectory generation unit 124) and stored in the shared data buffer 130.
  • the core 1_11 outputs the trajectory information 135 captured in the temporary buffer to the in-vehicle network 16 by transmission processing.
  • the temporary buffer may be a temporary buffer of the core 2_12, or may be a temporary buffer in the memory 13 as long as it is provided in the memory 13.
  • FIG. 10 is a flowchart for explaining details of processing by the slot synchronization write processing unit 114.
  • Step 1141 The slot synchronization write processing unit 114 is activated by the hardware timer 15 and stores the external world recognition information 134 stored in the temporary buffer of the core 1_11 in the shared data buffer (data storage area) 130. That is, the external world recognition information (sensing data) 134 is acquired by various sensors (camera and radar: not shown), but the information is acquired via the in-vehicle network 16 and written in the temporary buffer of the core 1_11. Stored in the shared data buffer 130.
  • FIG. 11 is a flowchart for explaining details of processing by the priority scheduling unit 115.
  • Step 1151 The priority scheduling unit 115 determines a schedule of a task to be executed based on the priority 1334 of the task information 133, and executes the corresponding processing unit (for example, transmission processing) so that each process is executed based on the schedule. If there is, the transmission processing unit 116 is instructed, and if it is a reception interrupt processing, the reception interrupt processing unit 117 is instructed to execute.
  • the transmission processing unit 116 is instructed, and if it is a reception interrupt processing, the reception interrupt processing unit 117 is instructed to execute.
  • FIG. 12 is a flowchart for explaining details of processing by the transmission processing unit 116.
  • Step 1161 The transmission processing unit 116 transmits the trajectory information 135 currently stored in the temporary buffer of the core 1_11 to the outside of the vehicle control device 1 (for example, another ECU or inspection device) via the in-vehicle network 16.
  • Step 1162 The transmission processing unit 116 transmits the state data 136 currently stored in the temporary buffer of the core 1_11 to the outside of the vehicle control device 1 (for example, another ECU or inspection device) via the in-vehicle network 16.
  • FIG. 13 is a flowchart for explaining details of processing by the reception interrupt processing unit 117.
  • Step 1171 The reception interrupt processing unit 117 copies the external world recognition information 134 from the mailbox of the in-vehicle network 16 (for example, CAN) to the temporary buffer of the core 1_11. At this time, the reception interrupt processing unit 117 appends the copied time information (time stamp) to the external world recognition information 134 and stores it in the temporary buffer. The time information is used by the sensor fusion unit 122.
  • the temporary buffer may be a temporary buffer of the core 2_12, or may be a temporary buffer in the memory 13 as long as it is provided in the memory 13.
  • the acquisition time axis of the external world recognition information 134 acquired by a camera or a radar and the processing time axis of the sensor fusion unit 122 are different.
  • the external time axis and the internal time axis must be matched. Therefore, a time stamp is given when the external world recognition information 134 is received so that it can be handled as data on the same time axis.
  • FIG. 14 is a flowchart for explaining details of processing by the core 2 initialization unit 120.
  • the processing contents will be described with the core 2 initialization unit 120 as the operation subject.
  • the core 2 initialization unit 120 is a program executed by the core 2_12
  • the core 2_12 or a processor in the core 2_12 may be the operation subject.
  • Step 1201 The core 2 initialization unit 120 initializes software used in the core 2 and related microcomputer registers.
  • Step 1202 The core 2 initialization unit 120 calls the slot setting unit 121 to instruct the execution of the slot setting process in order to set the slot.
  • FIG. 15 is a flowchart for explaining details of processing by the slot setting unit 121. Since this process is a process included in the initialization process, it is executed only once at the time of initialization.
  • Step 1211 The slot setting unit 121 sets the time to execute the first slot in the hardware timer 15 based on the slot setting information 131.
  • FIG. 16 is a flowchart for explaining details of processing by the sensor fusion unit 122.
  • Step 1221 The sensor fusion unit 122 is activated in synchronization with the corresponding slot, reads out the outside world recognition information 134 stored in the shared data buffer 130, and increases the accuracy of the outside world recognition information based on the fusion algorithm. That is, the detection accuracy is improved by using a plurality of types of information acquired by a plurality of sensors such as a camera (suitable for recognizing the size of an object) and a radar (suitable for recognizing a distance from the object).
  • a camera suitable for recognizing the size of an object
  • a radar suitable for recognizing a distance from the object.
  • FIG. 17 is a flowchart for explaining details of processing by the dynamic map generation unit 123.
  • Step 1231 The dynamic map generation unit 123 is activated in synchronization with the corresponding slot, maps the position information of the object indicated by the external world recognition information 134 to the map information 137, and knows the characteristics, distance, prediction operation, etc. of the object. .
  • FIG. 18 is a flowchart for explaining details of processing by the trajectory generation unit 124.
  • Step 1241 The track generation unit 124 is activated in synchronization with the corresponding slot, generates a traveling track of the own vehicle based on the dynamic map information generated by the dynamic map generation unit 123, and tracks information of the shared data buffer 130 Save to 135.
  • FIG. 19 is a flowchart for explaining details of processing by the time-driven scheduling unit 125.
  • Step 1251 The time-driven scheduling unit 125 determines whether or not the current task that has been executed in the slot at the end of the check target slot is still being executed. If the task has been completed (Yes in step 1251), the process proceeds to step 1252. If the task is still being executed (No in step 1251), the process proceeds to step 1253.
  • Step 1252 The time-driven scheduling unit 125 instructs a corresponding processing unit (for example, the trajectory generation unit 124) to execute a task to be started at the current time.
  • Step 1253 The time-driven scheduling unit 125 stores the error information in the state data 136 of the shared data buffer 130 and restarts (recovers) the target task.
  • the restart timing can be, for example, the start time of the corresponding slot in the next cycle.
  • error information is saved when a task is still being executed at the end of the slot, and the running task is restarted.
  • the present invention is not limited to this.
  • the task may be forcibly terminated.
  • error information may be stored and the task may be continuously executed in the next slot. Further, the task may be continuously executed in the next slot without storing the error information. This is used when one task is executed across a plurality of slots.
  • Step 1254 The time drive scheduling unit 125 sets the time to execute the next slot in the hardware timer 15.
  • FIG. 20 is a timing chart for explaining the timing of each process executed by the vehicle control apparatus 1 according to the present embodiment.
  • arrows indicate the flow of data, and are shown only partially for convenience of explanation.
  • the external environment recognition information 134 received via the in-vehicle network 16 is received by the reception interrupt processing unit 117 of TID: 2 (T2: interrupt processing), and temporarily buffered (temporary buffer in the core 1_11, temporary in the core 2_12). Buffer or a temporary buffer in the memory 13).
  • the slot synchronization write processing unit 114 with TID: 4 is activated in an empty slot, and copies the external environment recognition information 134 from the temporary buffer to the shared data buffer 130.
  • the outside world recognition information 134 is processed by the sensor fusion unit 122 having TID: 6, and the calculation result is referred to by the dynamic map generating unit 123 having TID: 7. Further, the trajectory generation unit 124 with TID: 8 saves the trajectory information 135 in the shared data buffer 130 based on the dynamic map information.
  • the slot synchronous read processing unit 113 with TID 3 copies the trajectory information 135 stored in the shared data buffer 130 to the temporary buffer of the core 1_11.
  • the transmission processing unit 116 transmits the trajectory information 135 to other ECUs and inspection devices via the in-vehicle network 16.
  • the trajectory information 135 is directly stored in the shared data buffer 130 from the core 2_12, but the present invention is not limited to this.
  • the data may be stored once in the temporary storage buffer of the core 2_12 and then stored in the shared data buffer 130.
  • time division is realized by time-driven scheduling, but the present invention is not limited to this.
  • time division even with priority scheduling, it is possible to realize time division by executing processing so as not to overlap, increasing the priority of slot processing, and ensuring that it is executed without fail.
  • a task execution monitoring function that defines the slot start time as the task offset and the slot size as a deadline and monitors it can detect a task that has not been completed at the time of the slot.
  • FIG. 21 is a diagram illustrating a configuration example (modification) of the task information 233 when time division is performed by priority scheduling even in the core 2_12.
  • FIG. 22 is a diagram illustrating a configuration example (modification) of the alarm setting information 232 based on the task setting information 233.
  • a higher priority (priority 1) is set as compared with TIDs 6 to 8 of the task information 133 (see FIG. 4).
  • the slot start time is set in the offset 2336, and the slot size is set in the deadline 2337. Information on the deadline 2337 is used when setting a slot as described above.
  • AIDs 3 to 5 are added as compared with the alarm setting information 132 (see FIG. 3) according to the first embodiment.
  • time division processing can be realized by priority scheduling processing.
  • FIG. 23 is a diagram showing task information 333 including information on the worst execution time of a task (WCET: the longest time taken to execute a specific task) according to a modification.
  • the slot setting information can be automatically generated by determining the slot size so as not to exceed this and shifting the slots so that the slots do not overlap each other.
  • the core 1_11 or the core 2_12 determines the slot size to be the worst execution time + margin (for example, 500 ms), and fixes it to continue the processing.
  • the worst execution time is changed by changing the algorithm, the slot size may be reset by restarting the system.
  • the core 1_11 is in charge of the duplication processing from the shared data buffer (data storage area) 130 to the temporary buffer of the core 1_11.
  • the present invention is not limited to this.
  • the core 2_12 may perform the duplication process in an empty slot.
  • the core 1_11 stores the data stored in the temporary buffer of the core 1_11 in the shared data buffer.
  • the present invention is not limited to this.
  • the data storage processing may be performed when the core 2_12 is an empty slot.
  • one task is assigned to one slot in the core that executes time-sharing processing, but the present invention is not limited to this.
  • one task may be assigned to a plurality of slots in the system period. At this time, the task needs to be allocated within the system period so that the task to be executed does not exceed the last slot. If the task exceeds the last slot, an error (processing time error) occurs. The error is transmitted (notified) to another control device (ECU) connected to the vehicle control device 1, an output device (for example, a monitor or a meter), an inspection device, or the like via the in-vehicle network 16. .
  • ECU another control device
  • a task is not executed in an empty slot, but the present invention is not limited to this. Since there is no need to perform a write / read process between cores in an empty slot, for example, a microcomputer diagnosis process or control software that outputs a calculation result by referring to data in the same core may be executed.
  • An empty slot is a slot to which no time-sharing process is assigned, but even if it is assigned, the shared data buffer 130 is not assigned a process for executing read processing and write processing. It may be positioned as an empty slot.
  • (X) Modification 10 In the first embodiment, write and read of data shared between cores are performed in empty slots, but the present invention is not limited to this.
  • the free time may be found in a data access unit smaller than the slot, or may be spread over a plurality of slots.
  • the timing at which the write process or the read process is executed on the data shared between the cores is managed by the hardware timer 15, but the present invention is not limited to this.
  • the timing of data shared between cores may be instructed from a time division core.
  • time can be synchronized between multi-cores. However, it is not limited to this method. For example, two hardware timers may be provided and synchronized between the hardware timers when the system is started.
  • the core 1 (first arithmetic device) of the multi-core is caused to execute the first type arithmetic processing that is executed other than time division, and the core 2 (second The second type arithmetic processing executed in a time-sharing manner is caused to be executed.
  • the interrupt process can be processed by the core (core 1) that does not perform the time-sharing process, so that a highly responsive and highly reliable system can be constructed.
  • the core 2 generates data (for example, trajectory information) by a predetermined calculation.
  • the core 1 stores the generated data as shared data in the shared data buffer and updates the shared data (the update operating entity may be the core 2).
  • the core 1 duplicates the shared data and stores the duplicated shared data in the temporary buffer area at a time when the core 1 is not referring to the shared data (the core 2 may be the operating subject of the duplication). In this way, interrupt processing is executed at a time when shared data is not referenced in time-sharing processing (processing that should be executed periodically (for example, sensor fusion processing, dynamic map generation processing, orbit generation processing)). Therefore, the shared data is not rewritten during the time division process.
  • the period in which the core 2 does not refer to the shared data includes a period in which the time-sharing process to be executed is not assigned (empty slot), and a period in which the control process in which the shared data is not referred to is executed (time-sharing process is The free time in the assigned slot), or the period during which the microcomputer diagnosis process is executed.
  • the core 1 schedules the execution of each task based on the priority assigned to each task for a plurality of tasks executed by interrupt processing. In this way, important interrupt processing can be reliably executed.
  • the core 2 shifts the task that has not ended to a standby state Let Then, the core 2 resumes the task that has not ended in the slot in the next cycle. At this time, an error may be notified. Further, it may be simply terminated without restarting. By doing this, even if a situation occurs in which processing executed in time division takes more time than expected at the time of design and does not end within the slot time, the abnormality is detected and only the target processing is detected Can be restarted or terminated. Moreover, since this does not affect the processing executed in other time divisions, it is suitable for an automatic operation system that requires high reliability.
  • the present disclosure can also be realized by a program code of software that realizes the functions of the embodiments.
  • a storage medium in which the program code is recorded is provided to the system or apparatus, and the computer (or CPU or MPU) of the system or apparatus reads the program code stored in the storage medium.
  • the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the program code itself and the storage medium storing the program code constitute the present disclosure.
  • a storage medium for supplying such program code for example, a flexible disk, CD-ROM, DVD-ROM, hard disk, optical disk, magneto-optical disk, CD-R, magnetic tape, nonvolatile memory card, ROM Etc. are used.
  • an OS operating system
  • the computer CPU or the like performs part or all of the actual processing based on the instruction of the program code.
  • the program code is stored in a storage means such as a hard disk or a memory of a system or apparatus, or a storage medium such as a CD-RW or CD-R
  • the computer (or CPU or MPU) of the system or apparatus may read and execute the program code stored in the storage means or the storage medium when used.
  • control lines and information lines are those that are considered necessary for the explanation, and not all control lines and information lines on the product are necessarily shown. All the components may be connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Automation & Control Theory (AREA)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)
  • Traffic Control Systems (AREA)

Abstract

本発明は、割り込み処理に対する高応答性と制御ソフトウェア間の非干渉とを両立させるための技術を提供する。本開示の車両制御装置は、車両制御のための各種プログラムを格納する記憶デバイスと、第1の演算装置と第2の演算装置を含み、前記記憶デバイスからプログラムを読み込んで実行する複数の演算装置と、を備えている。また、記憶デバイスは、時分割以外で実行される第1種演算処理のプログラムと、時分割で実行される第2種演算処理のプログラムと、を含む。そして、第1の演算装置は、第1種演算処理のプログラムを実行するように構成され、第2の演算装置は、第2種演算処理のプログラムを実行するように構成される。

Description

車両制御装置、及び車両システム
 本開示は、車両制御装置、及び車両システムに関する。
 多くの車両システムは、電子化された車両制御機器を操作するECU、すなわち電子制御装置(Electronic Control Unit)と、複数のECU間の通信を可能にする車載ネットワーク(Local Area Network)から構成される。
 近年、ドライバの操作なしに自動で目的地まで運ぶ自動運転システムの実現に対する要求が高まっている。自動運転システムの実現には、高精度な外界認識機能や、高演算負荷が求められる、周囲の数秒先の環境変化を予測した上で走行軌道を決定する機能が必要となるため、最先端のアルゴリズムを搭載したオープンソースソフトウェア(OSS)の活用が望まれる。
 しかしながら、OSSは広く公開されるもので一般的に高品質でない場合もある。このため、自動車制御システムのような高安全が求められるシステムにはそのまま搭載することが難しい。そこで、万が一の場合に備えて、OSSがCPUを占有した場合に他のソフトウェアに影響を与えない方法が望まれる。
 例えば、非特許文献1は、システムの実行周期を定め、周期内で実行する処理の時間帯を決定する時分割設計を行うことを開示している。この時間帯はタイムウィンドウやスロットと呼ばれる。システム実行時には設計通りに特定のタイムウィンドウの時間内で特定の処理を実行する。処理単位はタスクや割り込み処理である。特定の処理がタイムウィンドウの終了時間まで終わらないと、基本的にはエラーと判定され、処理が終了される。このように、非特許文献1によれば、各タイムウィンドウで実行するソフトウェア同士は互いに影響を与えない非干渉性を実現することが可能である。
AVIONICS APPLICATION SOFTWARE STANDARD INTERFACE, PART 1 - REQUIRED SERVICES,ARINC SPECIFICATION 653P1-3, 2010
 しかしながら、非特許文献1では、割り込み処理もタイムウィンドウに割り当てる必要がある。このため、割り込み処理用のタイムウィンドウが終了した直後に割り込み要求があったような場合には、他のタイムウィンドウに割り当てられた処理が終了するまで割り込み処理を待機させなければならないため、割り込みへの応答性が低下してしまう。そもそも割り込み処理には直ぐに処理すべきものである場合が多く、待ち時間が長くなるのは好ましくない。
 本開示はこのような状況に鑑みてなされたものであり、割り込み処理に対する高応答性と制御ソフトウェア間の非干渉とを両立させるための技術を提供するものである。
 上記課題を解決するため、本開示の車両制御装置は、車両制御のための各種プログラムを格納する記憶デバイスと、第1の演算装置と第2の演算装置を含み、前記記憶デバイスからプログラムを読み込んで実行する複数の演算装置と、を備えている。また、記憶デバイスは、時分割以外で実行される第1種演算処理のプログラムと、時分割で実行される第2種演算処理のプログラムと、を含む。そして、第1の演算装置は、第1種演算処理のプログラムを実行するように構成され、第2の演算装置は、第2種演算処理のプログラムを実行するように構成される。
 本開示に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、本開示の態様は、要素及び多様な要素の組み合わせ及び以降の詳細な記述と添付される特許請求の範囲の様態により達成され実現される。なお、本明細書の記述は典型的な例示に過ぎず、本開示の特許請求の範囲又は適用例を如何なる意味に於いても限定するものではない。
 本開示に係る車両制御装置によれば、時分割に基づいて時分割内で動かされるタスクは、同じコアで実行される他の時分割の処理から影響を受けないので非干渉性を担保できる。また、コア間通信は、共有データを参照していないタイミングで共有データを更新するので、コア間でも非干渉性を担保できる。また割り込み処理は時分割以外で実行されるため、高応答性を実現可能となる。よって、割り込み処理に対する高応答性と制御ソフトウェア間の非干渉とを両立させることが可能となる。
本開示の実施形態による車両制御装置1の概略構成を示す図である。 本実施形態によるスロット設定情報131の構成例を示す図である。 本実施形態によるアラーム設定情報132の構成例を示す図である。 本実施形態によるタスク情報133の構成例を示す図である。 本実施形態による全体の処理の概要を示す動作説明図である。 本実施形態によるコア1初期化部110の処理内容を説明するためのフローチャートである。 スロット同期処理タイミング設定部111による処理(ステップ1103)の詳細を説明するためのフローチャートである。 アラーム処理部112による処理(ステップ1112)の詳細を説明するためのフローチャートである。 スロット同期read処理部113による処理の詳細を説明するためのフローチャートである。 スロット同期write処理部114による処理の詳細を説明するためのフローチャートである。 優先度スケジューリング部115による処理の詳細を説明するためのフローチャートである。 送信処理部116による処理の詳細を説明するためのフローチャートである。 受信割込処理部117による処理の詳細を説明するためのフローチャートである。 コア2初期化部120による処理の詳細を説明するためのフローチャートである。 スロット設定部121による処理の詳細を説明するためのフローチャートである。 センサフュージョン部122による処理の詳細を説明するためのフローチャートである。 動的地図生成部123による処理の詳細を説明するためのフローチャートである。 軌道生成部124による処理の詳細を説明するためのフローチャートである。 時間駆動スケジューリング部125による処理の詳細を説明するためのフローチャートである。 本実施形態による車両制御装置1で実行される各処理のタイミングを説明するためのタイミングチャートである。 コア2_12でも優先度スケジューリングで時分割を実行する際のタスク情報233の構成例(変形例)を示す図である。 タスク設定情報233に基づいたアラーム設定情報232の構成例(変形例)を示す図である。 変形例による、タスクの最悪実行時間(WCET:特定のタスクを実行するのにかかる最長の時間)の情報を含むタスク情報333を示す図である。
 本開示は、車両制御装置において、マルチコア環境で時間駆動スケジューリングとそれ以外のスケジューリングアルゴリズムを実行し、そのスケジューリングアルゴリズム間で非干渉にコア間通信を行うことにより、割り込み要求に対する高応答性と制御ソフトウェア間の非干渉を両立するものである。
 本開示に係る車両制御装置は、非干渉にしたい制御用アプリケーションを時分割実行されるコアで実行し、高応答にしたい基本ソフトウェアをタスクの優先度に基づいて実行されるコアで実行する。これにより、非干渉性と高応答性を両立させる。なお、本明細書ではタイムウィンドウをスロットと呼ぶ。
 以下、添付図面を参照して本開示の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本開示の原理に則った具体的な実施形態と実装例を示しているが、これらは本開示の理解のためのものであり、決して本開示を限定的に解釈するために用いられるものではない。
 本実施形態では、当業者が本開示を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本開示の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
 更に、本開示の実施形態は、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
 なお、以後の説明では「テーブル」形式によって本開示の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
 また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
 以下では「プログラム」を主語(動作主体)として本開示の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。
(1)第1の実施形態
 第1の実施形態は、マルチコアを搭載した車両制御装置において、例えば、1つのコア(例えば、コア1)に時分割で実行すべきタスクを担当させ、別のコア(例えば、コア2)に時分割以外で実行すべきタスクを担当させることを開示する。ここで、時分割以外のタスクとしては、例えば、通信などの割り込み処理が該当する。より具体的には、コア2は、設定されるスロットにおいて周期的に実行すべきタスクを実行する。コア1は空きスロットにおいて周期的に実行されないタスク(割り込み処理)を実行する。以下、第1の実施形態について詳細に説明する。
 <車両制御装置の構成>
 図1は、本開示の実施形態による車両制御装置1の概略構成を示す図である。
(i)車両制御装置1は、演算装置(コア1)11と、演算装置(コア2)12と、メモリ13と、入出力回路14と、ハードウェアタイマ15と、車載ネットワーク16と、を備える。本実施形態では、車載ネットワーク16としてCAN(Controller Area Network)を想定しているが、これに限らない。例えば、CANFD、FlexRayでも良いし、シリアル通信やEthernetでも良い。また、演算装置の個数も2個に限らず、2個以上であれば良い。メモリ13は、プログラム領域100と、データ記憶領域(本明細書では「共有データバッファ」と称する場合もある)130と、を有している。
 メモリ13のプログラム領域100は、各種プログラムとして、コア1初期化部110と、スロット同期処理タイミング設定部111と、アラーム処理部112と、スロット同期read処理部113と、スロット同期write処理部114と、優先度スケジューリング部115と、送信処理部116と、受信割込処理部117と、コア2初期化部120と、スロット設定部121と、センサフュージョン部122と、動的地図生成部123と、軌道生成部124と、時間駆動スケジューリング部125と、を有する。
 コア1初期化部110、スロット同期処理タイミング設定部111、アラーム処理部112、スロット同期read処理部113、スロット同期write処理部114、優先度スケジューリング部115、送信処理部116、及び受信割込処理部117は、コア1_11によって実行される。スロット設定部121、センサフュージョン部122、動的地図生成部123、軌道生成部124、及び時間駆動スケジューリング部125は、コア2_12によって実行される。具体的には、演算装置(コア1)11及び演算装置(コア2)12のそれぞれは、担当処理に対応する各プログラムを一時バッファに読み込み、図示しないCPUなどのプロセッサにより各プログラムを実行する。
 データ記憶領域130は、スロット設定情報131と、アラーム設定情報132と、タスク情報133と、外界認識情報134と、軌道情報135と、状態データ(例えば、エラー情報)136と、地図情報137と、を格納する。
 入出力回路14は、車載ネットワーク16を介して外部(例えば、車両制御装置1に接続される各種機器や各種センサ等)と通信し、ハードウェアタイマ15を設定したり、ハードウェアタイマ15からの割込要求を受信したりする。
(ii)コア1初期化部110は、演算装置(コア1)11に対して初期化処理を実行する。スロット同期処理タイミング設定部111は、コア1_11で実行される通信処理とコア2_12で実行される処理(例えば、センサフュージョン処理、動的地図生成処理、軌道生成処理が該当する)とのタイミングを計る処理を実行する。アラーム処理部112は、スロット同期処理タイミング設定部111で設定されたタイミングで割り込み処理が実行されるようにタイマを設定する処理を実行する。スロット同期read処理部113は、アラーム処理部112で設定された時間に共有データバッファ(データ記憶領域)130に格納されている所定のデータを読み込む処理を実行する。スロット同期write処理部114は、アラーム処理部112で設定された時間に共有データバッファ(データ記憶領域)130に所定のデータを書き込む処理を実行する。優先度スケジューリング部115は、割り込み用スロット(空きスロット)で実行する処理(割り込み処理及び時分割処理を含む)を優先度に基づいてスケジューリングする処理を実行する。送信処理部116は、共有データバッファ130に保存されている各データをコア2_12に送信する処理を実行する。受信割込処理部117は、車載ネットワーク16を介して外界認識情報134をコア1_11の一時バッファに格納する処理を実行する。なお、一時バッファは、コア2_12の一時バッファであっても良いし、メモリ13に設けられていればその中の一時バッファであっても良い。
 コア2初期化部120は、演算装置(コア2)12に対して初期化処理を実行する。スロット設定部121は、初期化処理時にスロット設定情報131を読み込み、スロットの構成を認識する処理を実行する。センサフュージョン部122は、各種センサ(例えば、カメラ及びレーダ)による外界情報を取得し、各外界情報に基づいて前方の状態を認識するための処理を実行する。動的地図生成部123は、センサフュージョン部122によって認識された前方の状態を地図情報に反映する処理を実行する。軌道生成部124は、センサフュージョン部122による前方の状態の情報に基づいて、採れる軌道を判定する処理を実行する。時間駆動スケジューリング部125は、スロットを切り替える処理を実行する。
 <スロット設定情報の構成例>
 図2は、本実施形態によるスロット設定情報131の構成例を示す図である。スロット設定情報131は、SID1311と、スロット開始時刻1312と、スロット終了時刻1313と、TID1314と、を構成項目として備えている。
 SID1311は、スロットを一意に識別・特定可能な識別情報(ID)である。
 スロットの開始時刻1312は、各スロットの開始時刻をms単位で示す情報である。
スロット終了時刻1313は、各スロットの終了時刻をms単位で示す情報である。なお、本実施形態ではms単位で時刻を表しているが、これに限らない。
 TID1314は、実行すべきタスクを一意に識別・特定可能な識別情報(ID)である。なお、本実施形態では、1つのスロットに対して1つのタスクしか割り当てていないが、これに限らない。例えば、1つのスロットに2つ以上のタスクを割り当てても良い。
また、本実施形態においては、10msのシステム周期を想定している。つまり、時刻が10ms目まで進むと0ms目に戻る。ここでは、システム周期を10msとしているが、これに限らない。例えば、50msでも良いし、100msでも良い。さらに、TID1314の値が「-」であることは、空きスロットであることを意味する。
 本実施形態では、空きスロットの情報をスロット設定情報131に記載しているが、記載しなくても良い。その場合には、システム周期内でスロットが割り当てられていない時間やタスクが割り当たっていないスロットを調べることで、空きスロットを探すことが可能である。
 <アラーム設定情報の構成例>
 図3は、本実施形態によるアラーム設定情報132の構成例を示す図である。アラーム設定情報132は、AID1321と、オフセット1322と、周期1323と、TID1324と、を構成項目として備えている。
 AID1321は、アラームを一意に識別・特定可能な識別情報(ID)である。ここで、アラームとは、オペレーティングシステムが提供するサービスであり、指定の時刻でハードウェアタイマ割り込みを入れ、特定のタスクを実行する処理を想定している。
 オフセット1322は、アラーム時刻の基準時間からのズレを表す情報である。例えば、オフセットの値が9であることは、0ms目から9ms進んだ時間を表している。
 周期1323は、アラームを再セットする周期を表している。例えば、オフセットが9で周期が10の場合、10ms周期の9ms目でハードウェアタイマ割り込みが入り、これが10ms周期で行われるようにアラームがセットされることを意味する。
 TID1324はアラームによって実行されるタスクIDを示す。
 図3に示される例によれば、9ms(SID1311が4のとき:図2参照)にタスク3(スロット同期read処理)が割り込み処理され、9.5msにタスク4(スロット同期write処理)が割り込み処理される。
 <タスク情報の構成例>
 図4は、本実施形態によるタスク情報133の構成例を示す図である。タスク情報133は、TID1331と、コア1332と、周期1333と、優先度1334と、タスク名1335と、を構成情報として備えている。
 TID1331は、タスクを一意に識別・特定可能なタスク識別情報(ID)である。
 コア1332は、対象のTID1331を実行するコアの識別情報(ID)である。例えば、コア1332の値が1であることは、演算装置(コア1)11で対象のTID1331に対応するタスクまたは割り込み処理が実行されることを意味する。
 周期1333は、対象のタスクの実行周期を示す情報である。当該カラムに数字が入っているタスクは周期タスクであり、周期の数字がないタスクは初期化時のみ実行されるタスク、割り込み要求で起動する割り込み処理、或いは特定のタイマ割り込みで起動するタスクや割り込み処理を示す。なお、本実施形態では、コア2_12が担当する処理は全て周期タスク(時分割で実行される処理)であり、コア1_11が担当する処理は送信処理を除いて割り込み処理となっている。
 優先度1334は、タスクや割り込み処理の優先度を示す情報である。本実施形態では、数字が小さいほど優先度が高いことを意味する。同時刻に複数のタスクや割り込み処理が実行されている場合、優先度スケジューリング部115は、優先度1334が高いものを実行する。例えば、時分割で実行される処理の場合には、優先度1334の情報は設定されなくても良い。
 タスク名1335は、タスクの名前を示す。なお、タスク名として、コア1初期化はコア1初期化部110を、送信処理は送信処理部116を、受信割込処理は受信割込処理部117を、スロット同期read処理はスロット同期read処理部113を、スロット同期write処理はスロット同期write処理部114を、コア2初期化はコア2初期化部120を、センサフュージョンはセンサフュージョン部122を、動的地図生成は動的地図生成部123を、軌道生成は軌道生成部124を、それぞれ意味している。
 <全体の処理概要>
 図5は、本実施形態による全体の処理の概要を示す動作説明図である。図5において、実線はデータの流れを、点線は処理の実行の流れを示す。
 システム起動時にコア1_11のコア1初期化部110がまず実行され、次いでコア2_12のコア2初期化部120及びスロット同期処理タイミング設定部111が実行される。
 スロット同期処理タイミング設定部111は、スロット設定情報131を参照し、空きスロットを検出する。そして、スロット同期処理タイミング設定部111は、検出した空きスロットの時間に実行したい処理(タスク)を実行できるようにアラーム設定情報132にタスク内容を保存し、アラーム処理部112を呼び出す。
 アラーム処理部112は、アラーム設定情報132に記載された時間に特定の処理が実行されるようにハードウェアタイマ15に当該時間を設定する。
 優先度スケジューリング部115は、コア1_11で実行するタスク、または割り込み処理を優先度に基づいて実行する。コア1_11で実行する処理は、送信処理部116、受信割込処理部117、スロット同期read処理部113、スロット同期write処理部114である。なお、常に全ての割り込み処理の要求がされているわけではないので、そのときに発行されている割り込み要求、及び周期的に行うべき処理(時分割処理)が優先度に基づいてスケジューリングされる。割り込み要求がなければ周期的に行われる送信処理のみがスケジューリングされることとなる。
 スロット同期read処理部113、及びスロット同期write処理部114は、アラーム処理部112によってセットされたハードウェアタイマ15によって起動され、優先度スケジューリング部115がタスク情報133記載の優先度1334に基づいてこれらの処理を実行する。
 コア2_12のコア2初期化部120は、スロット設定部121を呼び出す。スロット設定部121は、スロット設定情報131に基づいて時間駆動スケジューリング部125が実行されるようにハードウェアタイマ15の設定を行う。
 時間駆動スケジューリング部125は、ハードウェアタイマ15によって起動され、スロットに対応する処理を実行する。本実施形態では、センサフュージョン部122、動的地図生成部123、及び軌道生成部124が時間駆動スケジューリング部125によって実行される。
 以下、図5に示した各処理部の動作について詳細に説明する。
 <コア1初期化処理の詳細>
 図6は、本実施形態によるコア1初期化部110の処理内容を説明するためのフローチャートである。ここではコア1初期化部110を動作主体として処理内容を説明するが、コア1初期化部110はコア1_11によって実行されるプログラムであるので、コア1_11或いはその内部のプロセッサを動作主体としても良い。後述するスロット同期read処理部113、スロット同期write処理部114、優先度スケジューリング部115、送信処理部116、及び受信割込処理部117についても同様である。
(i)ステップ1101
 コア1初期化部110は、コア2_12を起動する。
(ii)ステップ1102
 コア1初期化部110は、コア1_11で実行されるソフトウェア、及び関連するマイコンレジスタを初期化する。
(iii)ステップ1103
 コア1初期化部110は、スロットに同期して実行する処理の起動設定を行うために、スロット同期処理タイミング設定部111を呼び出す。ステップ1103の更なる詳細は、図7で説明する。
 <スロット同期処理タイミング設定処理:ステップ1103の詳細>
 図7は、スロット同期処理タイミング設定部111による処理(ステップ1103)の詳細を説明するためのフローチャートである。当該処理は初期化処理に含まれる処理であるため、初期化時に1回のみ実行される。
(i)ステップ1111
 スロット同期処理タイミング設定部111は、スロット設定情報131から空きスロットを検出する。例えば、本実施形態では、SID1311が4のスロットがTID1314にタスクが登録されていないため、空きスロットであることが判る。本実施形態ではスロット設定情報131に自明の空きスロットが明示されているが、これに限らない。例えば、システム周期とSID1311の1から3までの情報から、タスクが実行されていないスロットの時間を算出し、それを空きスロットして良い。
(ii)ステップ1112
 スロット同期処理タイミング設定部111は、空きスロットの時刻でスロットに対応するタスクを起動するため、空きスロットの開始時刻と対応するタスクIDを引数にアラーム処理部112を呼び出し、アラーム処理部112に時刻設定処理を実行させる。
 <アラーム処理:ステップ1112の詳細>
 図8は、アラーム処理部112による処理(ステップ1112)の詳細を説明するためのフローチャートである。
(i)ステップ1121
 アラーム処理部112は、引数の時刻で対応するタスクIDが起動するように、ハードウェアタイマ15に時刻をセットする。
 <スロット同期read処理の詳細>
 図9は、スロット同期read処理部113による処理の詳細を説明するためのフローチャートである。
(i)ステップ1131
 スロット同期read処理部113は、ハードウェアタイマ15によって起動され、共有データバッファ(データ記憶領域)130に格納されている軌道情報135をコア1_11の一時バッファに複製する。軌道情報135は、コア2_12(軌道生成部124)によって生成され、共有データバッファ130に格納される。そして、コア1_11は、一時バッファに取り込んだ軌道情報135を送信処理によって車載ネットワーク16に出力することになる。なお、一時バッファは、コア2_12の一時バッファであっても良いし、メモリ13に設けられていればその中の一時バッファであっても良い。
 <スロット同期write処理の詳細>
 図10は、スロット同期write処理部114による処理の詳細を説明するためのフローチャートである。
(i)ステップ1141
 スロット同期write処理部114は、ハードウェアタイマ15によって起動され、コア1_11の一時バッファに保存されている外界認識情報134を共有データバッファ(データ記憶領域)130に格納する。つまり、外界認識情報(センシングデータ)134は各種センサ(カメラやレーダ:図示せず)によって取得されるが、当該情報は車載ネットワーク16を介して取得され、コア1_11の一時バッファに書き込まれ、その後共有データバッファ130に格納される。
 <優先度スケジューリング処理の詳細>
 図11は、優先度スケジューリング部115による処理の詳細を説明するためのフローチャートである。
(i)ステップ1151
 優先度スケジューリング部115は、タスク情報133の優先度1334に基づいて実行するタスクのスケジュールを決定し、当該スケジュールに基づいて各処理が実行されるように、該当する処理部(例えば、送信処理であれば送信処理部116、受信割込処理であれば受信割込処理部117等)に実行を指示する。
 <送信処理の詳細>
 図12は、送信処理部116による処理の詳細を説明するためのフローチャートである。
(i)ステップ1161
 送信処理部116は、コア1_11の一時バッファに現在保存されている軌道情報135を、車載ネットワーク16を介して車両制御装置1の外部(例えば、他のECUや検査装置等)に送信する。
(ii)ステップ1162
 送信処理部116は、コア1_11の一時バッファに現在保存されている状態データ136を、車載ネットワーク16を介して車両制御装置1の外部(例えば、他のECUや検査装置等)に送信する。
 <受信割込処理の詳細>
 図13は、受信割込処理部117による処理の詳細を説明するためのフローチャートである。
(i)ステップ1171
 受信割込処理部117は、車載ネットワーク16(例えば、CAN)のメールボックスから外界認識情報134をコア1_11の一時バッファにコピーする。このとき、受信割込処理部117は、外界認識情報134にコピーした時刻の情報(タイムスタンプ)を付与して一時バッファに格納する。当該時刻の情報は、センサフュージョン部122によって用いられる。なお、一時バッファは、コア2_12の一時バッファであっても良いし、メモリ13に設けられていればその中の一時バッファであっても良い。
 センサフュージョン部122を例とすると、カメラやレーダで取得された外界認識情報134の取得時間軸とセンサフュージョン部122の処理時間軸とが異なる。しかし、異なる時間軸のままで演算してしまうと車両が2台存在することになってしまうため、外界の時間軸と内部の時間軸を合わせる必要がある。そこで、外界認識情報134を受信したときにタイムスタンプを付与して同一時間軸のデータとして取り扱えるようにしている。
 <コア2初期化処理の詳細>
 図14は、コア2初期化部120による処理の詳細を説明するためのフローチャートである。ここではコア2初期化部120を動作主体として処理内容を説明するが、コア2初期化部120はコア2_12によって実行されるプログラムであるので、コア2_12或いはその内部のプロセッサを動作主体としても良い。後述のセンサフュージョン部122、動的地図生成部123、軌道生成部124、及び時間駆動スケジューリング部125についても同様である。
(i)ステップ1201
 コア2初期化部120は、コア2で使用するソフトウェア、関連するマイコンレジスタを初期化する。
(ii)ステップ1202
 コア2初期化部120は、スロットの設定を行うため、スロット設定部121を呼び出し、スロット設定処理の実行を指示する。
 <スロット設定処理の詳細>
 図15は、スロット設定部121による処理の詳細を説明するためのフローチャートである。当該処理は初期化処理に含まれる処理のため、初期化時に1回のみ実行される。
(i)ステップ1211
 スロット設定部121は、スロット設定情報131に基づいて最初のスロットを実行する時刻をハードウェアタイマ15に設定する。
 <センサフュージョン処理の詳細>
 図16は、センサフュージョン部122による処理の詳細を説明するためのフローチャートである。
(i)ステップ1221
 センサフュージョン部122は、該当するスロットに同期して起動され、の共有データバッファ130に格納されている外界認識情報134を読み出し、フュージョンアルゴリズムに基づいて、外界認識情報の精度を上げる。つまり、カメラ(物体のサイズを認識することに適する)及びレーダ(物体との距離を認識することに適する)など複数のセンサによって取得された複数種類の情報を用いて検知精度を向上させる。
 <動的地図生成処理の詳細>
 図17は、動的地図生成部123による処理の詳細を説明するためのフローチャートである。
(i)ステップ1231
 動的地図生成部123は、該当するスロットに同期して起動され、外界認識情報134が示す物体の位置情報を地図情報137にマッピングし、物体の特性や距離、予測動作などを判るようにする。
 <軌道生成処理の詳細>
 図18は、軌道生成部124による処理の詳細を説明するためのフローチャートである。
(i)ステップ1241
 軌道生成部124は、該当するスロットに同期して起動され、動的地図生成部123によって生成された動的地図情報に基づいて、自車の走行軌道を生成し、共有データバッファ130の軌道情報135に保存する。
 <時間駆動スケジューリング処理の詳細>
 図19は、時間駆動スケジューリング部125による処理の詳細を説明するためのフローチャートである。
(i)ステップ1251
 時間駆動スケジューリング部125は、チェック対象のスロット終了時点において当該スロットで実行されていた現在のタスクがまだ実行されているか否か判定する。当該タスクが終了している場合(ステップ1251でYesの場合)、処理はステップ1252に進む。当該タスクがまだ実行されている場合(ステップ1251でNoの場合)、処理はステップ1253に進む。
(ii)ステップ1252
 時間駆動スケジューリング部125は、現在時刻で起動すべきタスクを実行するように該当する処理部(例えば、軌道生成部124など)に指示する。
(iii)ステップ1253
 時間駆動スケジューリング部125は、エラー情報を共有データバッファ130の状態データ136に格納し、対象のタスクを再起動(復旧)させる。再起動のタイミングは、例えば、次の周期における該当スロットの開始時間とすることができる。
 本実施形態では、スロット終了時にタスクがまだ実行されている際にエラー情報を保存し、実行中のタスクを再起動させているが、これに限らない。例えば、タスクを強制終了させるだけでも良い。あるいは、エラー情報を保存し、次のスロットでタスクを継続実行しても良い。さらには、エラー情報を保存せずに、次のスロットでタスクを継続実行しても良い。これは1つのタスクを複数のスロットをまたいで実行する際に用いる。
(iv)ステップ1254
 時間駆動スケジューリング部125は、次のスロットを実行する時刻をハードウェアタイマ15にセットする。
 <処理タイミング>
 図20は、本実施形態による車両制御装置1で実行される各処理のタイミングを説明するためのタイミングチャートである。図20において、矢印はデータの流れを示し、説明の都合上、一部にのみ記載している。
 車載ネットワーク16を介して受信した外界認識情報134は、TID:2(T2:割込処理)の受信割込処理部117で受信され、一時バッファ(コア1_11内の一時バッファ、コア2_12内の一時バッファ、或いはメモリ13内の一時バッファ)に保存される。
 TID:4のスロット同期write処理部114は、空きスロットで起動され、外界認識情報134を一時バッファから共有データバッファ130にコピーする。
 外界認識情報134は、TID:6のセンサフュージョン部122で処理され、演算結果がTID:7の動的地図生成部123で参照される。また、TID:8の軌道生成部124は、動的地図情報に基づいて、軌道情報135を共有データバッファ130に保存する。
 TID:3のスロット同期read処理部113は、共有データバッファ130に格納されている軌道情報135をコア1_11の一時バッファにコピーする。
 そして、TID:1の送信処理では、送信処理部116が、車載ネットワーク16を介して軌道情報135を他のECUや検査装置に送信する。なお、本実施形態では軌道情報135をコア2_12から共有データバッファ130に直接保存しているが、これに限らない。例えば、一度コア2_12の一時保存バッファに保存した後に共有データバッファ130に保存しても良い。
(2)変形例:他の実施形態
(i)変形例1
 第1の実施形態では、時間駆動スケジューリングによって時分割を実現しているが、これに限らない。例えば、優先度スケジューリングであっても、処理を重複しないように実行し、スロットの処理の優先度を上げ、必ず実行されることを担保することで時分割を実現することができる。スロットの開始時刻をタスクのオフセットとし、スロットのサイズをデッドラインとして定義し、それを監視するタスク実行監視機能によって、スロット時に終了されていないタスクを検知することができる。
 例えば、図21は、コア2_12でも優先度スケジューリングで時分割を実行する際のタスク情報233の構成例(変形例)を示す図である。また、図22は、タスク設定情報233に基づいたアラーム設定情報232の構成例(変形例)を示す図である。
 図21に示されるタスク情報233では、タスク情報133(図4参照)のTID:6~8と比べると、新たに高い優先度(優先度1)が設定されている。また、オフセット2336にスロットの開始時刻が設定され、デッドライン2337にスロットのサイズが設定されている。このデッドライン2337の情報は、上述のように、スロットを設定する際に用いられる。
 さらに、図22に示されるアラーム設定情報232では、第1の実施形態によるアラーム設定情報132(図3参照)と比べ、AID:3~5が追加となっている。
 以上により、優先度スケジューリング処理によって、時分割処理を実現することができるようになる。
(ii)変形例2
 第1の実施形態では、スロット設定情報131(図2参照)が与えられているが、システム起動時にタスク情報からスロット設定情報を算出するようにしても良い。図23は、変形例による、タスクの最悪実行時間(WCET:特定のタスクを実行するのにかかる最長の時間)の情報を含むタスク情報333を示す図である。図23では、TID:6~8のタスクのWCETが判るため、これを超えないようにスロットサイズを決め、スロット同士が重複しないようにスロットをずらすことでスロット設定情報を自動生成することができる。例えば、コア1_11或いはコア2_12は、スロットサイズを最悪実行時間+マージン(例えば500ms)となるように決定し、それに固定して処理を継続する。ただし、例えばアルゴリズムの変更等により最悪実行時間が変更されるような場合には、システムを再起動してスロットサイズを再設定するようにしても良い。
(iii)変形例3
 第1の実施形態では、共有データバッファ(データ記憶領域)130からコア1_11の一時バッファへの複製処理をコア1_11が担当しているが、これに限らない。例えば、コア2_12が空きスロットで当該複製処理を行っても良い。
(iv)変形例4
 第1の実施形態では、コア1_11がコア1_11の一時バッファに保存されたデータを共有データバッファに格納するが、これに限らない。例えば、コア2_12が空きスロットで当該データ格納処理を行っても良い。
(v)変形例5
 第1の実施形態において、時分割処理を実行するコアでは、1つのタスクが1つのスロットに割り当てられているが、これに限らない。例えば、1つのタスクがシステム周期内の複数のスロットに割り当てられても良い。このとき、実行されるタスクが最後のスロットを超えることはないようにシステム周期内でタスクが割り当てられる必要がある。最後のスロットをタスクが超える場合にはエラー(処理時間エラー)となる。また、当該エラーは、車載ネットワーク16を介して、車両制御装置1に接続される他の制御装置(ECU)、出力装置(例えば、モニターやメータ等)或いは検査装置等に送信(通知)される。
(vi)変形例6
 第1の実施形態において、時分割処理を実行するコアでは、1つのタスクが1つのスロットに割り当てられるが、これに限らない。例えば、時分割処理が割り当てられるスロット内に複数のタスクを割り当て、優先度スケジューリングによって実行するようにしても良い。
(vii)変形例7
 第1の実施形態では、同じハードウェアタイマ15を参照するのでマルチコア間で時間を同期できる。しかし、この方法に限らない。
(viii)変形例8
 第1の実施形態では、空きスロットにおいてタスクは実行されていないが、これに限らない。空きスロット内ではコア間でwrite、readする処理が発生しなければ良いため、例えば、マイコン診断処理や、同じコア内のデータを参照し、計算結果を出力する制御ソフトウェアを実行しても良い。
 1つのコアが共有データバッファ130からデータを読み込んでいるとき(read処理が行われているとき)に、他のコアがwrite処理によって共有データバッファ130に対してデータを書き込むと、共有データバッファ130内のデータが変更されてしまうため、適切にread処理が実行されない可能性がある(データにバグが生じたような状態となる)。このため、空きスロットとして定義する場合、共有データバッファ130にアクセスしていないことが重要となる。
 なお、空きスロットは何も時分割処理が割り当てられていないスロットではあるが、仮に割り当てられていたとしても共有データバッファ130に対してread処理及びwrite処理が実行される処理が割り当てられていなければ空きスロットと位置付けても良い。
(ix)変形例9
 第1の実施形態では、システム周期内に空きスロットを1つのみ設けているが、これに限らない。例えば、空きスロットを2つ以上設けても良い。
(x)変形例10
 第1の実施形態では、コア間で共有するデータのwrite、readを空きスロットで行っているが、これに限らない。スロットより細かいデータアクセス単位で空き時間を見つけて行っても良いし、複数のスロットにまたがっても良い。
(xi)変形例11
 第1の実施形態では、コア間で共有するデータに対してwrite処理、或いはread処理を実行するタイミングをハードウェアタイマ15で管理しているが、これに限らない。例えば、コア間で共有するデータのタイミング指示を時分割のコアから指示しても良い。
(xii)変形例12
 同じハードウェアタイマ15を参照するのでマルチコア間で時間を同期できる。しかし、この方法に限らない。例えば、ハードウェアタイマを2つ設け、システムが起動したときにハードウェアタイマ間で同期を取るようにしても良い。
(3)まとめ
(i)本実施形態による車両制御装置では、マルチコアのうちコア1(第1の演算装置)に時分割以外で実行される第1種演算処理を実行させ、コア2(第2の演算装置)に時分割で実行される第2種演算処理を実行させるようにする。このようにすることにより、時分割処理を行わないコア(コア1)で割込処理を処理することが可能にあるため、高応答で高信頼なシステムを構築できるようになる。
 コア2は、所定の演算によってデータ(例えば、軌跡情報)を生成する。コア2が当該生成されたデータを参照しない期間に、コア1は、生成されたデータを共有データとして、共有データバッファに格納し、共有データを更新する(更新の動作主体はコア2でも良い)。また、コア1は、コア1が共有データを参照していない時間に、共有データを複製し、当該複製された共有データを一時バッファ領域に格納する(複製の動作主体はコア2でも良い)。このようにすることにより、時分割処理(周期的に実行すべき処理(例えば、センサフュージョン処理、動的地図生成処理、軌道生成処理など))で共有データが参照されない時間に割り込み処理を実行することができるので、時分割処理中に共有データが書き換えられることがなくなる。よって、時分割処理の結果の信頼性を保証することが可能となる。なお、コア2が共有データを参照していない期間としては、実行すべき時分割処理が割り当てられていない期間(空きスロット)、共有データが参照されない制御処理が実行される期間(時分割処理が割り当てられたスロットにおける空き時間)、又はマイコン診断処理が実行される期間を挙げることができる。
 コア1は、割り込み処理によって実行される複数のタスクについて、各タスクに付与された優先度に基づいて各タスクの実行をスケジューリングする。このようにすることにより、重要な割り込み処理を確実に実行することが可能となる。
 時分割処理されるタスクが割り当てられたスロットの終了時間に達した際に、当該スロット内で終了すべきタスクが終了していない場合、コア2は、当該終了しなかったタスクを待機状態に移行させる。そして、コア2は、次の周期におけるスロットで終了しなかったタスクを再開させる。この際、エラーを通知するようにしても良い。また、再開させずに単に終了させても良い。このようにすることにより、時分割で実行される処理が設計時の想定以上に演算時間が掛かり、スロット時間内に終わらないという事態が発生しても、その異常を検知し、対象の処理のみを再起動、または終了することができる。また、これにより、他の時分割で実行される処理に影響がでないため、高信頼性が求められる自動運転システムに好適である。
(ii)本開示は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本開示を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
 また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
 さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
 最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本開示は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本開示を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
 さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
 加えて、本技術分野の通常の知識を有する者には、本開示のその他の実装がここに開示された本開示の明細書及び実施形態の考察から明らかになる。記述された実施形態の多様な態様及び/又はコンポーネントは、単独又は如何なる組み合わせでも使用することが出来る。明細書と具体例は典型的なものに過ぎず、本開示の範囲と精神は後続する請求範囲で示される。
1 車両制御装置11 演算装置(コア1)12 演算装置(コア2)13 メモリ14 入出力回路15 ハードウェアタイマ16 車載ネットワーク100 プログラム領域110 コア1初期化部111 スロット同期処理タイミング設定部112 アラーム処理部113 スロット同期read処理部114 スロット同期write処理部115 優先度スケジューリング部116 送信処理部117 受信割込処理部120 コア2初期化部121 スロット設定部122 センサフュージョン部123 動的地図生成部124 軌道生成部125 時間駆動スケジューリング部130 データ記憶領域(共有データバッファ)131 スロット設定情報132 アラーム設定情報133 タスク情報134 外界認識情報135 軌道情報136 状態データ137 地図情報

Claims (12)

  1.  車両制御のための各種プログラムを格納する記憶デバイスと、
     第1の演算装置と第2の演算装置を含み、前記記憶デバイスからプログラムを読み込んで実行する複数の演算装置と、を備え、
     前記記憶デバイスは、時分割以外で実行される第1種演算処理のプログラムと、時分割で実行される第2種演算処理のプログラムと、を含み、
     前記第1の演算装置は、前記第1種演算処理のプログラムを実行し、
     前記第2の演算装置は、前記第2種演算処理のプログラムを実行する、車両制御装置。
  2.  請求項1において、
     前記第2の演算装置が算出した共有データを格納する記憶デバイスを備え、
     前記第2の演算装置が前記共有データを参照していない期間に、前記第1の演算装置は前記共有データを更新する、車両制御装置。
  3.  請求項1において、
     前記第2の演算装置が算出した共有データを格納する記憶デバイスを備え、
     前記第1の演算装置が前記共有データを参照していない時間に、前記第1の演算装置は前記共有データを複製し、当該複製された共有データを一時バッファ領域に格納する、車両制御装置。
  4.  請求項2において、
     前記第2の演算装置が前記共有データを参照していない期間は、実行すべき第2種演算処理が割り当てられていない期間、前記共有データが参照されない制御処理が実行される期間、又はマイコン診断処理が実行される期間である、車両制御装置。
  5.  請求項1において、
     前記第1種演算処理に対応する複数のタスクには優先度が定義されており、
     前記第1の演算装置は、前記第1種演算処理に対応する複数のタスクの実行を前記優先度に基づいてスケジューリングする、車両制御装置。
  6.  請求項1において、
     前記第2種演算処理が実行される期間を規定するスロットが予め設定されており、
     前記スロットの終了時間に達した際に、当該スロット内で終了すべき前記第2種演算処理が終了していない場合、前記第2の演算装置は、当該終了しなかった第2種演算処理の実行を待機状態に移行させ、次の周期におけるスロットで前記終了しなかった第2種演算処理の実行を再開させる、車両制御装置。
  7.  請求項1において、
     前記第1種演算処理が実行される期間を規定するスロットと、前記第2種演算処理が実行される期間を規定するスロットとが予め決められている、車両制御装置。
  8.  請求項1において、
     前記第1種演算処理に対応するタスク及び前記第2種演算処理に対応するタスクには、実行する際に掛かる最長の時間である最悪実行時間が予め付与されており、
     前記第1の演算装置、或いは前記第2の演算装置は、前記最悪実行時間に基づいて、各タスクを実行するための期間であるスロットのサイズを決定する、車両制御装置。
  9.  請求項1において、
     前記第2種演算処理が実行される期間を規定するスロットが予め設定されており、
     前記第1の演算装置は、前記第1種演算処理に対応するタスクを、前記スロットにおいて前記第2種演算処理が実行されていない空き時間で処理する、車両制御装置。
  10.  外界の状況を認識するための外界認識情報を取得する外界認識装置と、
     請求項1に記載の車両制御装置と、
     車載ネットワークと、を備え、
     前記車両制御装置は、前記車載ネットワークを介して、前記外界認識装置から前記外界認識情報を取得し、当該外界認識情報に対して前記第2種演算処理を実行し、前記車載ネットワークを介して前記第2種演算処理の処理結果を他の車両装置或いは出力装置に送信する、車両システム。
  11.  請求項10において、
     前記車両制御装置は、前記第2種演算処理が実行される期間を規定するスロットで処理時間エラーを検知した場合、前記車載ネットワークを介して特定の機能エラーを通知する、車両システム。
  12.  請求項10において、
     前記車両制御装置は、前記第2種演算処理が実行される期間を規定するスロットで処理時間エラーを検知した場合、当該処理時間エラーに関連する機能を復旧させる、車両システム。
PCT/JP2017/015849 2016-04-28 2017-04-20 車両制御装置、及び車両システム WO2017188109A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP17789392.2A EP3451168A4 (en) 2016-04-28 2017-04-20 VEHICLE CONTROL DEVICE AND VEHICLE SYSTEM
CN201780011469.7A CN108701055B (zh) 2016-04-28 2017-04-20 车辆控制装置和车辆系统
US16/090,434 US10994675B2 (en) 2016-04-28 2017-04-20 Vehicle control device and vehicle system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-091013 2016-04-28
JP2016091013A JP6838222B2 (ja) 2016-04-28 2016-04-28 車両制御装置、及び車両システム

Publications (1)

Publication Number Publication Date
WO2017188109A1 true WO2017188109A1 (ja) 2017-11-02

Family

ID=60161355

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/015849 WO2017188109A1 (ja) 2016-04-28 2017-04-20 車両制御装置、及び車両システム

Country Status (5)

Country Link
US (1) US10994675B2 (ja)
EP (1) EP3451168A4 (ja)
JP (1) JP6838222B2 (ja)
CN (1) CN108701055B (ja)
WO (1) WO2017188109A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296393B2 (en) * 2016-09-19 2019-05-21 Texas Instruments Incorporated Method for scheduling a processing device
WO2020026315A1 (ja) 2018-07-30 2020-02-06 三菱電機株式会社 割り込み制御装置、割り込み制御方法および割り込み制御プログラム
CN112124087B (zh) * 2019-06-24 2022-05-13 中车时代电动汽车股份有限公司 一种双向行驶车辆的分布式控制装置及方法
CN111045799B (zh) * 2019-11-11 2023-03-14 西北工业大学 基于回收再分配的低安全关键任务调度方法
CN112959926B (zh) * 2021-03-05 2022-11-29 广西双英集团股份有限公司 一种面向动态多任务汽车座舱平台的时分控制方法
CN114285693B (zh) * 2021-12-23 2023-04-21 延锋伟世通电子科技(上海)有限公司 Autosar网络flexray硬件buffer复用的实现方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002069174A1 (fr) * 2001-02-28 2002-09-06 Fujitsu Limited Procede d'execution en parallele de processus et ordinateur a processeurs multiples
JP2006126977A (ja) * 2004-10-27 2006-05-18 Matsushita Electric Ind Co Ltd プログラム変換装置及び方法
JP2009086733A (ja) * 2007-09-27 2009-04-23 Toshiba Corp 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2013171547A (ja) * 2012-02-23 2013-09-02 Hitachi Automotive Systems Ltd 車両用制御装置
JP2014182606A (ja) * 2013-03-19 2014-09-29 Denso Corp 演算装置およびプログラム
WO2014170569A1 (fr) * 2013-04-19 2014-10-23 Krono-Safe Procédé d'allocation temporelle de tâches permettant une récupération d'erreur deterministe en temps réel
JP2015199439A (ja) * 2014-04-09 2015-11-12 日立オートモティブシステムズ株式会社 走行制御装置、車載用表示装置、及び走行制御システム
JP2016001417A (ja) * 2014-06-12 2016-01-07 株式会社日立製作所 計算機システム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0433130A (ja) * 1990-05-29 1992-02-04 Matsushita Electric Ind Co Ltd マルチチップ構成方法
US20050102098A1 (en) * 2003-11-07 2005-05-12 Montealegre Steve E. Adaptive navigation system with artificial intelligence
CN100576175C (zh) * 2004-07-06 2009-12-30 茵姆拜迪欧有限公司 用于多个内核的并行执行的方法和系统
JP2008186175A (ja) * 2007-01-29 2008-08-14 Toyota Motor Corp オペレーティングシステムの起動制御方法及び情報処理装置
CN102156414A (zh) * 2010-12-31 2011-08-17 中国第一汽车集团公司 利用协处理器开发abs轮速处理方法
CN102887123B (zh) * 2012-10-11 2015-05-13 吉林大学 一种全线控电动汽车中央控制器及其控制方法
JP6313646B2 (ja) * 2014-04-24 2018-04-18 日立オートモティブシステムズ株式会社 外界認識装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002069174A1 (fr) * 2001-02-28 2002-09-06 Fujitsu Limited Procede d'execution en parallele de processus et ordinateur a processeurs multiples
JP2006126977A (ja) * 2004-10-27 2006-05-18 Matsushita Electric Ind Co Ltd プログラム変換装置及び方法
JP2009086733A (ja) * 2007-09-27 2009-04-23 Toshiba Corp 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2013171547A (ja) * 2012-02-23 2013-09-02 Hitachi Automotive Systems Ltd 車両用制御装置
JP2014182606A (ja) * 2013-03-19 2014-09-29 Denso Corp 演算装置およびプログラム
WO2014170569A1 (fr) * 2013-04-19 2014-10-23 Krono-Safe Procédé d'allocation temporelle de tâches permettant une récupération d'erreur deterministe en temps réel
JP2015199439A (ja) * 2014-04-09 2015-11-12 日立オートモティブシステムズ株式会社 走行制御装置、車載用表示装置、及び走行制御システム
JP2016001417A (ja) * 2014-06-12 2016-01-07 株式会社日立製作所 計算機システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3451168A4 *

Also Published As

Publication number Publication date
JP6838222B2 (ja) 2021-03-03
US20190118745A1 (en) 2019-04-25
CN108701055B (zh) 2021-12-28
CN108701055A (zh) 2018-10-23
EP3451168A1 (en) 2019-03-06
JP2017199266A (ja) 2017-11-02
US10994675B2 (en) 2021-05-04
EP3451168A4 (en) 2019-12-11

Similar Documents

Publication Publication Date Title
WO2017188109A1 (ja) 車両制御装置、及び車両システム
CN109204324B (zh) 用于操作自动驾驶车辆的集中调度系统
US10732634B2 (en) Centralized scheduling system using event loop for operating autonomous driving vehicles
US9547492B2 (en) Arithmetic units accessing redundantly stored data in shared memory as part of a control device for a vehicle
US10635108B2 (en) Centralized scheduling system using global store for operating autonomous driving vehicles
CN105094084B (zh) 支持多核控制器上的相干数据访问的服务和系统
WO2012005637A1 (en) Method for configuring a distributed avionics control system
US11768721B2 (en) Processing device
JP2011022934A (ja) 電子制御ユニット、異常検出方法
JP7135903B2 (ja) 車両用装置、車両用装置の時刻同期方法
US20160313715A1 (en) Method, Device and Computer Program Product for Programming a Plurality of Control Units
JP2003529819A (ja) 自動化装置および更新方法
JPH0895814A (ja) ソフトウエアの更新のための装置及び方法
US20180068501A1 (en) Multiprocessor system and vehicle control system
CN110959152B (zh) 访问控制装置
US20230376293A1 (en) Application deployment
US20230376541A1 (en) Playback engine
JP4773715B2 (ja) チェックポイント取得方法
WO2023225276A1 (en) Application deployment
JPH0375836A (ja) 資源情報引き継ぎ処理方法
CN112199076B (zh) 一种飞行控制软件架构及其设计方法
WO2023225275A2 (en) Playback engine
JP2019020870A (ja) 車両制御装置
Mitzlaff et al. Enabling mode changes in a distributed automotive system
CN112817717A (zh) 一种定时任务的调度方法及装置

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17789392

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2017789392

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2017789392

Country of ref document: EP

Effective date: 20181128