WO2022102384A1 - 車載ecu、プログラム、及び情報処理方法 - Google Patents
車載ecu、プログラム、及び情報処理方法 Download PDFInfo
- Publication number
- WO2022102384A1 WO2022102384A1 PCT/JP2021/039215 JP2021039215W WO2022102384A1 WO 2022102384 A1 WO2022102384 A1 WO 2022102384A1 JP 2021039215 W JP2021039215 W JP 2021039215W WO 2022102384 A1 WO2022102384 A1 WO 2022102384A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- virtual
- verification
- verification result
- ecu
- program
- Prior art date
Links
- 230000010365 information processing Effects 0.000 title claims description 8
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000012795 verification Methods 0.000 claims abstract description 297
- 230000003213 activating effect Effects 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 26
- 230000004913 activation Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 33
- 230000006854 communication Effects 0.000 description 33
- 238000000034 method Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 28
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 8
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 4
- 230000007704 transition Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R16/00—Electric 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/02—Electric 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
Definitions
- the present disclosure relates to an in-vehicle ECU, a program, and an information processing method.
- This application claims priority based on Japanese Application No. 2020-189750 filed on November 13, 2020, and incorporates all the contents described in the Japanese application.
- Patent Document 1 There is known an electronic control device that is mounted on a vehicle and performs information processing related to control of the equipment mounted on the vehicle and driving control such as out-of-vehicle communication and automatic driving (for example, Patent Document 1).
- the electronic control device of Patent Document 1 includes a multi-core CPU having a plurality of cores, and a plurality of program systems operate on the multi-core CPU.
- the electronic control device of Patent Document 1 is equipped with a hypervisor as a component of a function realized by executing a program, and the hypervisor creates a plurality of virtual machines on a multi-core CPU. Operate in parallel, and run the OS on the created virtual machine.
- the in-vehicle ECU is an in-vehicle ECU mounted on a vehicle, and is a verification unit that executes a plurality of programs and verifies each of the plurality of programs when the own ECU is activated.
- a unit and a storage unit for storing a virtualized operating system activated by the control unit are provided, and by starting the virtualized operating system, a plurality of virtual environments serving as an operating environment for the program are generated.
- the plurality of virtual environments include virtual environments having different priorities according to the program, and the verification unit outputs the first verification result based on the verification of the program whose operating environment is the virtual environment having the higher priority.
- the management unit that outputs the second verification result based on the verification of the program whose operating environment is the low priority virtual environment and manages the virtualized operating system is the first. 1 If the time zone allocated to the control unit for the plurality of virtual environments is different between the time when the verification result is output and the time when the second verification result is output and after the second verification result is output. Let me.
- Patent Document 1 does not consider the point of verifying a plurality of virtual machines from the viewpoint of security.
- the present disclosure provides an in-vehicle ECU or the like that can efficiently perform verification for a plurality of virtual environments generated by a virtualized operating system.
- an in-vehicle ECU or the like capable of efficiently performing verification for a plurality of virtual environments generated by a virtualized operating system is provided.
- the in-vehicle ECU is an in-vehicle ECU mounted on a vehicle, and is a control unit that executes a plurality of programs, and verification of each of the plurality of programs when the own ECU is activated.
- a plurality of virtual environments that serve as an operating environment for the program by starting the virtualized operating system, including a verification unit for performing the above and a storage unit for storing the virtualized operating system activated by the control unit. Is generated, the plurality of virtual environments include virtual environments having different priorities according to the program, and the verification unit first verifies the program based on the verification of the program whose operating environment is the virtual environment having the higher priority.
- the management unit that outputs the result, outputs the second verification result based on the verification of the program whose operating environment is the low priority virtual environment, and manages the virtualized operating system after the output of the first verification result. Between the time when the first verification result is output and the time when the second verification result is output and after the second verification result is output, the allocation time of the control unit to the plurality of virtual environments Make the band different.
- a verification unit such as an HSM (Hardware Security Module) verifies a plurality of programs, that is, the in-vehicle ECU is the verification unit. Perform secure boot using. Multiple programs to be verified by the verification department are classified based on the priority of these programs. For example, a high priority program (high priority program) and a low priority program (low priority program) are classified. Program) and included. As a result, the priority of the virtual environment is also determined according to the program to be executed.
- HSM Hard Security Module
- the priority of the virtual environment (high priority virtual environment) that is the operating environment of the high priority program is higher than the priority of the virtual environment (low priority virtual environment) that is the operating environment of the low priority program.
- the verification unit performs verification in descending order of priority. Therefore, the verification unit verifies the low-priority program after verifying the high-priority program.
- the verification unit outputs the first verification result when the high priority program is verified, and after the output of the first verification result, the verification of the low priority program and the second verification result which is the result of the verification are output. do. Therefore, since the verification unit verifies these programs in the order according to the priority of the programs, efficient verification can be performed.
- the plurality of programs are executed (started) in any virtual environment (virtual ECU) generated by the virtualized operating system as an operating environment.
- virtual ECU virtual ECU
- the in-vehicle ECU uses the high-priority virtual environment as the operating environment from the output of the first verification result to the output of the second verification result. Execution of the program and verification of the program whose operating environment is the virtual environment having the lower priority are performed in parallel.
- the verification unit can verify the low-priority program in the low-priority virtual environment in parallel with the execution (starting) of the high-priority program in the high-priority virtual environment. Secure boot can be performed.
- the management unit that manages the virtualization operating system allocates time to the control unit to the high-priority virtual environment according to the first verification result. After the first allocation control for allocating the band is started and the second verification result is output, the allocation time zone of the control unit is allocated to the high priority virtual environment and the low priority virtual environment. The second allocation control is started.
- the management unit controls the virtual environment with high priority from the time when the first verification result is output to the time when the second verification result is output according to the first verification result.
- the first allocation control (scheduling based on the first schedule) for allocating the allocation time zone is performed. After that, after the second verification result is output, the management unit allocates the allocation time zone of the control unit to the virtual environment with high priority and the virtual environment with low priority. Second allocation control (second schedule). Scheduling based on) is started. Therefore, according to the first verification result, the allocation time zone of the control unit is assigned to the virtual environment with high priority, and the high priority program with the virtual environment with high priority as the operating environment is executed (started) at an early stage. can do.
- the storage unit stores the allocation time information that determines the allocation time zone of the control unit for the plurality of virtual environments, and the allocation time information is stored in the storage unit.
- the management unit includes the first allocation time information corresponding to the first allocation control and the second allocation time information corresponding to the second allocation control, and the management unit uses the first allocation time information as the reference allocation time information. By switching to the second allocation time information from the above, the first allocation control is changed to the second allocation control.
- the allocated time information stored in the storage unit includes the first allocated time information corresponding to the first schedule and the second allocated time information corresponding to the second schedule.
- the management unit that manages the virtualized operating system allocates the usage time of the control unit to each of the virtual environments with reference to the first allocation time information or the second allocation time information. After the second verification result is output, the management unit refers to the target (allocation time information) to be referred to when changing from the scheduling based on the first schedule to the scheduling based on the second schedule. To switch to the second allocation time information. As a result, the management unit can efficiently change the scheduling.
- the verification unit verifies the guest OS that is started in the high-priority virtual environment when outputting the first verification result, and the first is described. 2 In outputting the verification result, the guest OS started in the low priority virtual environment is verified.
- a guest OS such as Ubuntu (registered trademark) is started in the generated virtual environment.
- the verification unit verifies the guest OS that is started in the high-priority virtual environment (high-priority virtual environment) that is the operating environment of the high-priority program.
- the verification unit verifies the guest OS that is started in the low-priority virtual environment (low-priority virtual environment) that is the operating environment of the low-priority program.
- the verification unit When the storage area (storage area) of the in-vehicle ECU is divided for each of the plurality of virtual environments generated by the virtualization operating system, the verification unit is assigned to each storage area corresponding to each virtual environment. It may be verified. As a result, when the verification unit verifies the program, it also verifies the guest OS (Operating System) that is started in the virtual environment that is the operating environment of the program, so that the program is executed in the in-vehicle ECU. , A secure operating environment can be guaranteed.
- the guest OS Operating System
- the priority is determined based on the ASIL (Automotive Safety Integrity Level) of ISO 26262.
- the virtual environment that is the operating environment of the high-priority program is generated earlier than the virtual environment that is the operating environment of the low-priority program, that is, depending on the program to be executed.
- the priority of the virtual environment is also determined.
- the high-priority program can be executed before the verification of the verification unit for the low-priority program is completed.
- the priority is determined based on ASIL (Automotive Safety Integrity Level), that is, as the level of ASIL improves, the priority also increases.
- ASIL Automotive Safety Integrity Level
- the control unit is composed of a multi-core CPU including a plurality of cores, and each of the plurality of virtual environments is one of the plurality of cores.
- the verification unit outputs the first verification result based on the verification of all the programs assigned to each of the plurality of cores and whose operating environment is the high priority virtual environment.
- the second verification result is output based on the verification of a plurality of programs whose operating environment is a low priority virtual environment, and the management unit outputs the second verification result in each of the plurality of cores. Allocate the allocation time zone to the plurality of virtual environments.
- the verification unit outputs the first verification result based on the verification of the program in which the virtual environment with high priority is the operating environment in each of the cores, and then sets the virtual environment with low priority as the operating environment.
- the second verification result is output based on the verification of the program to be performed.
- the management unit schedules each core to allocate the allocation time zone to the plurality of virtual environments according to the first verification result and the second verification result. Therefore, even if the in-vehicle ECU includes a control unit composed of a multi-core CPU, it is possible to efficiently verify a plurality of virtual environments generated by the virtualized operating system and to execute a high priority program in each core. Can be done early.
- the program according to one aspect of the present disclosure is a program mounted on a vehicle and causing a computer that executes a plurality of programs to execute a process in a plurality of virtual environments generated by activating a virtualized operating system. Therefore, the plurality of virtual environments include virtual environments having different priorities according to the program using the virtual environment as the operating environment, and the first is based on the verification of the program using the high priority virtual environment as the operating environment. After outputting the verification result and outputting the first verification result, the second verification result is output based on the verification of the program whose operating environment is the virtual environment having the lower priority, and after the first verification result is output.
- the time zone allocated to the control unit of the computer for the plurality of virtual environments is different between the time until the second verification result is output and the time after the second verification result is output.
- the computer can function as an in-vehicle ECU that can efficiently perform verification against a plurality of virtual environments generated by the virtualized operating system.
- the information processing method causes a computer that executes a plurality of programs to execute a process in a plurality of virtual environments that are mounted on a vehicle and generated by activating a virtualized operating system. It is an information processing method, and the plurality of virtual environments include virtual environments having different priorities according to a program having the virtual environment as an operating environment, and verification of a program having the high priority virtual environment as an operating environment.
- the first verification result is output based on the above, and after the output of the first verification result, the second verification result is output based on the verification of the program whose operating environment is the virtual environment having a low priority, and the first verification result is The time zone assigned to the control unit of the computer for the plurality of virtual environments is different between the time when the second verification result is output and the time after the second verification result is output.
- FIG. 1 is a schematic diagram illustrating a configuration of an in-vehicle system S including an in-vehicle ECU 2 according to the first embodiment.
- FIG. 2 is a block diagram illustrating the physical configuration of the vehicle-mounted ECU 2.
- the in-vehicle system S includes a plurality of in-vehicle ECUs 2 mounted on the vehicle C and an in-vehicle device 3 connected to the in-vehicle ECU 2.
- the plurality of vehicle-mounted ECUs 2 are individually connected to the integrated vehicle-mounted ECU 2 (integrated ECU) that controls the entire vehicle C and the integrated vehicle-mounted ECU 2 in a communicable manner and directly connected to the vehicle-mounted device 3. It may include ECU 2 (individual ECU).
- the integrated in-vehicle ECU 2 may be communicably connected to an external server 100 connected to an external network such as the Internet via an external communication device 1.
- the integrated in-vehicle ECU 2 and the plurality of individual in-vehicle ECUs 2 are communicably connected by an in-vehicle network 4 forming a star-shaped network topology, and the integrated in-vehicle ECU 2 is , Is located at the center of the star-shaped network topology. Further, adjacent individual vehicle-mounted ECUs 2 may be connected to each other to form a loop-shaped network topology, enabling bidirectional communication and achieving redundancy.
- a plurality of individual in-vehicle ECUs 2 are arranged in each area of the vehicle C, and an actuator 30 such as an illumination lamp and an in-vehicle device 3 such as a sensor 31 are directly connected by a wire harness such as a serial cable (direct wire). It is connected.
- the individual vehicle-mounted ECU 2 acquires (receives) a signal (input signal) output from the sensor, and transmits a request signal generated based on the acquired input signal to the integrated vehicle-mounted ECU 2.
- the individual in-vehicle ECU 2 controls the drive of the actuator 30 such as the illumination lamp directly connected to the own ECU based on the control signal transmitted from the integrated in-vehicle ECU 2.
- the individual in-vehicle ECU 2 is an in-vehicle relay device such as a gateway or an ether switch that relays communication between a plurality of in-vehicle devices 3 connected to the individual in-vehicle ECU 2 or communication between the in-vehicle device 3 and another in-vehicle ECU 2. It may be a relay control ECU that functions as.
- the individual in-vehicle ECU 2 distributes and relays the electric power output from the power storage device in addition to the relay related to communication, and also functions as a power distribution device to supply the in-vehicle device 3 connected to the own ECU. ) May be.
- the integrated in-vehicle ECU 2 generates and outputs a control signal to each in-vehicle device 3 based on data from the in-vehicle device 3 relayed via another in-vehicle ECU 2 such as an individual in-vehicle ECU 2.
- a central control device such as a vehicle computer.
- the integrated in-vehicle ECU 2 controls to control the actuator 30 that is the target of the request signal based on information or data such as a request signal output (transmitted) from another in-vehicle ECU 2 such as an individual in-vehicle ECU 2.
- a signal is generated, and the generated control signal is output (transmitted) to another vehicle-mounted ECU 2.
- the in-vehicle system S is configured by the integrated in-vehicle ECU 2 (integrated ECU) and the individual in-vehicle ECU 2 (individual ECU), but the present invention is not limited thereto.
- the in-vehicle system S may be composed of a plurality of in-vehicle ECUs 2 connected peer-to-peer by a relay device such as a CAN (Controller Area Network) gateway or an ether switch.
- a relay device such as a CAN (Controller Area Network) gateway or an ether switch.
- the in-vehicle device 3 includes, for example, various sensors 31 such as LiDAR (Light Detection and Ringing), a light sensor, a CMOS camera, an infrared sensor, a switch such as a door SW (switch) and a lamp SW, a lamp, a door opening / closing device, a motor device, and the like. Includes the actuator 30 of.
- sensors 31 such as LiDAR (Light Detection and Ringing), a light sensor, a CMOS camera, an infrared sensor, a switch such as a door SW (switch) and a lamp SW, a lamp, a door opening / closing device, a motor device, and the like.
- sensors 31 such as LiDAR (Light Detection and Ringing), a light sensor, a CMOS camera, an infrared sensor, a switch such as a door SW (switch) and a lamp SW, a lamp, a door opening / closing device,
- the external server 100 is a computer such as a server connected to an external network such as the Internet or a public line network, and includes a storage unit such as a RAM (RandomAccessMemory), a ROM (ReadOnlyMemory), or a hard disk.
- the integrated in-vehicle ECU 2 integrated ECU is communicably connected to the external communication device 1 and communicates with the external server 100 connected via the external network via the external communication device 1, and communicates with the external server 100 and the vehicle. Communication with another vehicle-mounted ECU 2 or vehicle-mounted device 3 mounted on C may be relayed.
- the out-of-vehicle communication device 1 includes an out-of-vehicle communication unit (not shown) and an input / output I / O (not shown) for communicating with the integrated in-vehicle ECU 2 (integrated ECU).
- the out-of-vehicle communication unit is a communication device for wireless communication using mobile communication protocols such as 4G, LTE (Long Term Evolution / registered trademark), 5G, and WiFi, and is an antenna 11 connected to the out-of-vehicle communication unit.
- Data is sent and received to and from the external server 100 via the above. Communication between the external communication device 1 and the external server 100 is performed via, for example, a public line network or an external network N such as the Internet.
- the input / output I / F 22 is a communication interface for, for example, serial communication with the vehicle-mounted ECU 2.
- the vehicle-mounted communication device 1 and the vehicle-mounted ECU 2 communicate with each other via a wire harness such as an input / output I / F and a serial cable connected to the input / output I / F.
- the vehicle-mounted communication device 1 is a separate device from the vehicle-mounted ECU 2, and these devices are communicably connected by input / output I / F or the like, but the present invention is not limited to this.
- the vehicle-mounted communication device 1 may be built in the vehicle-mounted ECU 2 as a component of the vehicle-mounted ECU 2.
- the in-vehicle ECU 2 (integrated ECU, individual ECU) includes a control unit 20, a storage unit 21, an input / output I / F 22, an in-vehicle communication unit 23, and a verification unit 24.
- the control unit 20 is configured by a CPU (Central Processing Unit), an MPU (Micro Processing Unit), or the like, and various control processes and various control processes can be performed by reading and executing a control program and data stored in advance in the storage unit 21. It is designed to perform arithmetic processing and the like.
- the control unit 20 includes, for example, a single-core single CPU, a single-core multi-CPU, a multi-core single CPU, and a multi-core multi-CPU.
- the control unit 20 is not limited to a software processing unit that performs software processing such as a CPU, and includes a hardware processing unit that performs various control processing and arithmetic processing in hardware processing such as FPGA, ASIC, or SOC. It may be.
- the storage unit 21 is a volatile memory element such as a RAM (RandomAccessMemory), a non-volatile memory element such as a ROM (ReadOnlyMemory), an EEPROM (ElectricallyErasableProgrammableROM), or a flash memory, or a storage device thereof. It is configured by the combination of the above, and the control program and the data to be referred to at the time of processing are stored in advance.
- the control program includes, for example, a plurality of programs (applications) for controlling various in-vehicle devices 3, or a program (application) for performing target recognition for performing automated operation based on output data from a LiDAR or CMOS camera. Includes programs (applications). Further, a virtual operating system such as Hypervisor or VMware is stored in the storage unit 21 of the vehicle-mounted ECU 2.
- a virtual operating system such as Hypervisor or VMware is stored in the storage unit 21 of the vehicle-mounted ECU 2.
- the input / output I / F 22 is, for example, a communication interface for serial communication, like the input / output I / F 22 of the external communication device 1.
- the vehicle-mounted ECU 2 is communicably connected to the external communication device 1 via a wire harness such as an input / output I / F 22 and a serial cable.
- the in-vehicle communication unit 23 is an input / output interface using, for example, a CAN (Controller Area Network) or Ethernet (Ethernet / registered trademark) communication protocol, and the control unit 20 is connected to the in-vehicle network 4 via the in-vehicle communication unit 23. It communicates with another vehicle-mounted ECU 2 that has been installed.
- CAN Controller Area Network
- Ethernet Ethernet / registered trademark
- the verification unit 24 is, for example, an HSM (Hardware Security Module) or an SHE (Secure Hardware Extension), and is configured as a device or a separate module from the control unit 20 configured by a CPU or the like.
- the verification unit 24 composed of the HSM or the like plays a part in the secure boot process performed when the in-vehicle ECU 2 (own ECU) is started (booted), and is stored in the storage unit 21. It is a functional module that verifies the appropriateness (completeness) or soundness of software executed when the in-vehicle ECU 2 is started, such as a program.
- the verification unit 24 includes, for example, a processor for cryptographic processing, and uses a cryptographic algorithm such as CMAC (Cipher-based Message Authentication Code) to ensure the appropriateness (completeness) of the program to be verified and the software such as the guest OS. ) Is verified.
- the verification unit 24 verifies the appropriateness (integrity) of each of the plurality of programs to be verified in the secure boot process (secure boot sequence) performed when the in-vehicle ECU 2 is started, and outputs the verification result for each program. ..
- the verification result includes a positive verification result indicating that the program or the like is legitimate, or a negative verification result indicating that the program or the like has been tampered with and is fraudulent.
- the verification unit 24 is configured to perform verification in two stages for all virtual ECUs 200 (guest OS, program).
- the verification unit 24 verifies the high priority virtual ECU 200 among the virtual ECUs 200 assigned to each core as the first step, and becomes other than the high priority virtual ECU 200 as the second step. , Verify the low priority virtual ECU 200.
- the verification unit 24 outputs the first verification result (reset release signal) to the control unit 20 as the verification result for the high priority virtual ECU 200, and controls the second verification result as the verification result for the low priority virtual ECU 200.
- the verification unit 24 may output a reset release signal to the core constituting the control unit 20 when outputting the first verification result. Alternatively, the verification unit 24 may output a reset release signal to the core in addition to the output of the first verification result.
- FIG. 3 is a block diagram illustrating a logical configuration (virtual ECU 200) of the in-vehicle ECU 2.
- the illustration in this embodiment illustrates the logical configuration of the in-vehicle ECU 2, and is a program executed in a virtual environment and a virtual environment management program with the hardware layer (physical base) by the control unit 20 or the like as the lowest layer.
- It is a block diagram exemplifying the hierarchical structure with the software layer as the uppermost layer by the above.
- the storage unit 21 of the vehicle-mounted ECU 2 stores, for example, a virtual operating system such as Hypervisor or VMware, and the control unit 20 of the vehicle-mounted ECU 2 is activated by using the virtual operating system to perform virtual operating.
- a plurality of virtual environments can be constructed on the system.
- the program for controlling various in-vehicle devices 3 is executed using any one of these plurality of virtual environments as the operating environment. That is, these programs are executed on one of the virtual environments (virtual ECU 200).
- a single task or a plurality of tasks are generated according to the processing content of the program. The task results in the execution of more subdivided or segmented processing units.
- the virtualization method is a hypervisor method in which a hardware resource such as a control unit 20 is directly accessed by a virtual operating system as shown in the figure of the present embodiment, or a Linux (Linux) between the virtual operating system and the hardware resource. It may be a host OS system in which an operating system such as (registered trademark) intervenes. Alternatively, a container-type virtual operating system may be used.
- the in-vehicle ECU 2 activated by using the virtual operating system can construct a plurality of virtual environments by the function of the virtual operating system, and the plurality of virtual environments include hardware resources such as a control unit 20 included in the in-vehicle ECU 2. Assigned. Each of the virtual environments to which these hardware resources are assigned is provided with a virtual control unit 20 (virtual control unit), a storage unit 21 (virtual storage unit), and an in-vehicle communication unit 23 (virtual in-vehicle communication unit). It functions as an ECU 200.
- a virtual control unit 20 virtual control unit
- storage unit 21 virtual storage unit
- in-vehicle communication unit 23 virtual in-vehicle communication unit
- a guest OS such as Ubuntu (registered trademark) is stored in each virtual storage unit of each virtual ECU 200, and each virtual ECU 200 starts a guest OS and executes a program on the guest OS.
- the guest OS may be a different type of OS depending on the individual virtual ECU 200.
- the substance of the virtual storage unit is the storage area of the storage unit 21 assigned to each of the virtual ECUs 200, it goes without saying that the guest OS is also stored in the storage unit 21 in the same manner as the virtual operating system.
- a container-type virtual operating system even if a guest OS is not required, a container (virtual environment) is created on the virtual operating system, and a program is executed on the container (virtual environment). good.
- the control unit 20 of the in-vehicle ECU 2 activated by using the virtual operating system is a program (virtual environment management program) that manages all virtual environments in one of the constructed virtual environments (virtual ECU 200). ) Is executed. That is, the virtual ECU 200 that executes the virtual environment management program functions as a control panel of the virtual operating system, and corresponds to the management unit 210. Alternatively, the virtual operating system itself may include the function as the management unit 210.
- the verification unit 24, which is a device separate from the control unit 20, is not subject to virtualization by the virtual operating system, and the verification unit 24 constitutes the management unit 210 (control panel of the virtual operating system) or the control unit 20. It will communicate with the core.
- the storage unit 21 stores allocation time information (first allocation time table 21A, second allocation time table 21B), which will be described later.
- the management unit 210 selects the first allocation time table 21A or the second allocation time table 21B according to the output contents (first detection result, second detection result) from the verification unit 24, and based on the selected table.
- the usage time of the control unit 20 (each core) is allocated (scheduled) to each virtual environment (virtual ECU 200).
- FIG. 4 is a functional block diagram illustrating a functional unit in the virtual ECU 200.
- FIG. 5 is an explanatory diagram illustrating the first allocation time table 21A (first allocation time information).
- FIG. 6 is an explanatory diagram illustrating the second allocation time table 21B (second allocation time information).
- the virtual control unit (control unit 20) of the virtual ECU 200 functions as a task generation unit 201 by executing a program stored in the virtual storage unit (storage unit 21) of the virtual ECU 200.
- the control unit 20 that executes the virtual operating system or the virtual control unit (control unit 20) of the virtual ECU 200 for managing the virtual operating system is a virtual environment management program stored in the virtual storage unit (storage unit 21). By executing the above, it functions as a control panel of a virtual operating system and corresponds to the management unit 210 in the present embodiment.
- the management unit 210 includes a table selection unit 211 and an allocation execution unit 212.
- control unit 20 When the control unit 20 is composed of, for example, a multi-core, the core in which the usage time is allocated to the management unit 210 (control panel of the virtual operating system) and the operating environment of the program for controlling the in-vehicle device 3 and the like.
- the core may be different from the core to which the usage time is allocated to the virtual environment (virtual ECU 200).
- the management unit 210 continues the process (scheduling) of allocating the usage time of any of the cores constituting the control unit 20 to the virtual ECU 200 by referring to the allocation time information stored in the storage unit 21, for example. I am doing it.
- the allocation time information referred to by the management unit 210 is stored in the storage unit 21 in a table format (look-up table) as, for example, the first allocation time table 21A and the second allocation time table 21B. Has been done.
- the management items of the first allocation time table 21A and the second allocation time table 21B are the virtual ECU 200 item, the allocation core item, the allocation cycle item, the allocation time item, the program type item, the ASIL item, and the priority. Includes degree items. That is, the management items of the first allocation time table 21A and the second allocation time table 21B are the same.
- the name or identifier of the virtual ECU 200 shared by time-dividing the same control unit 20 is stored.
- the first allocation time table 21A in the present embodiment only the virtual ECU 200 (VM1, VM5) having a high priority is defined.
- the second allocation time table 21B all virtual ECUs 200 (VM1 to VM7) including the virtual ECU 200 having a high priority and the virtual ECU 200 having a low priority are defined. Therefore, by selecting the first allocation time table 21A, the management unit 210 allocates the usage time of the control unit 20 (core 1, core 2) targeting only the virtual ECU 200 (VM1, VM5) having a high priority. It can be performed. By selecting the second allocation time table 21B, the management unit 210 can allocate the usage time of the control unit 20 (core 1, core 2) for all the virtual ECUs 200 (VM1 to VM7). ..
- the number or identifier of the core assigned to the corresponding virtual ECU 200 (virtual ECU 200 stored in the same record) is stored.
- the virtual ECU 200 (VM1 to VM6) to which allocation is performed periodically (steadily), the number of any one of the cores is stored. Thereby, which core (core number) usage time is allocated to each virtual ECU 200 is determined.
- the virtual ECU 200 (VM1) is assigned to the core 1
- the virtual ECU 200 (VM5) is assigned to the core 2.
- the virtual ECU 200 (VM1, VM2, VM3, VM4) is assigned to the core 1
- the virtual ECU 200 (VM5, VM6, VM7) is assigned to the core 2.
- the allocation cycle in the virtual ECU 200 in which allocation is performed periodically (steadily) is stored.
- the allocated time allocated to each virtual ECU 200 is stored. The total value of these allocation times corresponds to the allocation cycle.
- the number of virtual ECUs 200 allocated to a single core is also one, so the allocation cycle and the allocation time are equal values.
- the second allocation time table 21B since the number of virtual ECUs 200 allocated to a single core is two or more, the total value of the allocation times allocated to each virtual ECU 200 in each core is the allocation cycle. Corresponds to.
- the program type item stores the type of the program executed in each corresponding virtual ECU 200 (virtual environment) (stored in the same record).
- the ASIL item stores the ASIL level, which indicates the safety index of the program to be executed.
- a value indicating the priority of the program (high / low in this embodiment) is stored.
- the order of verification of the verification unit 24 for the virtual ECU 200 corresponding to the program and the order of generation of the virtual ECU 200 by the management unit 210 are determined.
- the priority is determined based on the functions of the corresponding in-vehicle device 3 and the program to be executed, and may be determined based on, for example, the ASIL (Automotive Safety Integrity Level) of ISO 26262.
- the levels of ASIL are classified into the levels of QM, ASIL-A, ASIL-B, ASIL-C, and ASIL-D.
- the QM level is a normal quality control that does not require the application of functional safety according to ISO 26262.
- ASIL-A to D it is necessary to apply the functional safety according to ISO26262, and the functional safety requirement becomes stricter from ASIL-A to ASIL-D. That is, it can be considered that the priority of the QM level is the lowest and the priority of the ASIL-D level is the highest.
- ASIL is used as an index indicating the priority of the program, but the present invention is not limited to this.
- the priority of the program may be determined by a value (priority setting value) different from that of ASIL, and the priority setting value is, for example, a user, an administrator, or a manufacturer of the in-vehicle system S. It may be set to be individually changeable by a person.
- the priority of the ASIL-D program and the virtual ECU 200 (core 1: VM1, core 2: VM5) which is the operating environment of the program is set. , High priority.
- the priority of the virtual ECU 200 (VM2, VM3, VM4, VM6, VM7) is set to a low priority.
- the classification of priorities in the present embodiment is an example and is not limited to this.
- the verification unit 24 refers to the first allocation time table 21A stored in the storage unit 21 and verifies the virtual ECU 200 having a high priority in the virtual ECU 200 corresponding to each core constituting the control unit 20.
- the first verification result (reset release signal) is output to the table selection unit 211.
- the verification unit 24 may output a reset release signal to each corresponding core as the first verification result.
- the table selection unit 211 selects the allocation time information (first allocation time table 21A) that defines the first schedule corresponding to the virtual ECU 200 having a high priority.
- the allocation instruction according to the first allocation time table 21A is output to the allocation execution unit 212.
- the allocation execution unit 212 generates a virtual ECU 200 with a high priority based on the allocation instruction, and allocates the usage time of the allocated control unit 20 (core).
- the task generation unit 201 of the high-priority virtual ECU 200 executes a high-priority program applied to the self-virtual ECU 200 to generate a task, and a more subdivided or divided processing unit is executed by the task. Will be done.
- the verification unit 24 refers to, for example, the second allocation time table 21B stored in the storage unit 21, and verifies the low priority virtual ECU 200 in the virtual ECU 200 corresponding to each core constituting the control unit 20. , The second verification result is output to the table selection unit 211.
- the process related to the verification of the low priority virtual ECU 200 by the verification unit 24 and the process related to the high priority virtual ECU 200 by the management unit 210 are executed in parallel.
- the table selection unit 211 defines the second schedule corresponding to all the virtual ECUs 200 (high priority and low priority virtual ECUs 200). Allocation time information (second allocation time table 21B). ) Is selected, and the allocation instruction according to the second allocation time table 21B is output to the allocation execution unit 212.
- the allocation execution unit 212 generates a virtual ECU 200 with a low priority based on the allocation instruction. From this, all virtual ECUs 200 are generated. The allocation execution unit 212 allocates the usage time of the control unit 20 (core) assigned to the virtual ECU 200 to all the virtual ECUs 200. That is, the allocation execution unit 212 switches from the first schedule (first allocation time table 21A) to the second schedule (second allocation time table 21B) and reschedules based on the output content from the verification unit 24. Functions as a department.
- FIG. 7 is an explanatory diagram regarding the assigned time zone of the control unit 20 for the virtual environment.
- the control unit 20 is a dual-core CPU composed of two cores.
- the verification unit 24 verifies the virtual ECU 200 (VM1 or the like) having a high priority in the core 1 and the core 2 after starting the firmware (FW) in the own unit.
- the first detection result (reset release signal) is output to each core. After outputting the first detection result (reset release signal), the verification unit 24 verifies the low priority virtual ECU 200 and outputs the second detection result.
- Each core to which the first detection result (reset release signal) is input initializes BSW (BasicSoftWare) according to standards such as Hypervisor and AUTOSAR, and has a high priority to which the usage time of the core is allocated.
- BSW BasicSoftWare
- the virtual ECU 200 is generated.
- the high-priority program is executed (started) in the high-priority virtual ECU 200 (virtual environment).
- the management unit 210 which functions as a control panel of the virtual operating system, allocates (schedules) the usage time of the control unit 20 (core) to these high-priority virtual ECUs 200 based on the first allocation time table 21A.
- a low priority virtual ECU 200 to which the usage time of the core is allocated is generated.
- the low priority program is executed (started).
- all virtual ECUs 200 are generated, and each program is executed (started) in each virtual ECU 200 (virtual environment).
- the management unit 210 which functions as a control panel of the virtual operating system, allocates (schedules) the usage time of the control unit 20 (core) to all the virtual ECUs 200 based on the second allocation time table 21B.
- FIG. 8 is an explanatory diagram illustrating the sequence by the control unit 20 and the verification unit 24.
- the control unit 20 core 1, core 2 is configured to be composed of a dual-core CPU.
- the processing of the control unit 20 and the verification unit 24 in the present embodiment is performed as a part of the secure boot sequence performed when the vehicle-mounted ECU 2 is activated.
- the verification unit 24 verifies the high-priority virtual ECU 200 (guest OS, program) executed by the core 1 (S01).
- the verification unit 24 outputs (transmits) the first verification result in the core 1 to the control unit 20 (S02).
- the verification unit 24 may output a reset release signal to the core 1 as the first verification result.
- the verification unit 24 may output a reset release signal to the core 1 in addition to the output of the first verification result.
- the control unit 20 acquires the first verification result in the core 1 (S03).
- the control unit 20 generates a high-priority virtual environment (virtual ECU 200: VM1) executed by the core 1 based on the first verification result, and executes a high-priority program using the virtual environment as an operating environment ( (Start) (S04).
- the control unit 20 schedules the allocated time in the core 1 according to the first schedule (S05).
- the usage time of the core 1 (control unit 20) is allocated only to the virtual ECU 200 (VM1) having a high priority.
- the control regarding the generation of the virtual environment (virtual ECU 200) and the allocation of the usage time of the core 1 to the virtual environment (virtual ECU 200) functions as the control panel of the virtual operating system. It is performed by the management unit 210.
- the verification unit 24 verifies the high-priority virtual ECU 200 (guest OS, program) executed by the core 2 (S06).
- the verification unit 24 outputs (transmits) the first verification result in the core 2 to the control unit 20 (S07).
- the verification unit 24 may output a reset release signal to the core 2 as the first verification result.
- the verification unit 24 may output a reset release signal to the core 2 in addition to the output of the first verification result.
- the control unit 20 acquires the first verification result in the core 2 (S08).
- the control unit 20 generates a high-priority virtual environment (virtual ECU 200: VM5) executed in the core 2 based on the first verification result, and executes a high-priority program using the virtual environment as an operating environment ( (Start) (S09).
- the control unit 20 schedules the allocated time in the core 2 according to the first schedule (S10).
- the usage time of the core 2 (control unit 20) is allocated only to the virtual ECU 200 (VM5) having a high priority.
- the control regarding the generation of the virtual environment (virtual ECU 200) and the allocation of the usage time of the core 2 to the virtual environment (virtual ECU 200) functions as the control panel of the virtual operating system. It is performed by the management unit 210.
- the verification unit 24 verifies the low-priority virtual ECU 200 (guest OS, program) executed by the core 1 (S11).
- the verification unit 24 outputs (transmits) the second verification result in the core 1 to the control unit 20 (S12).
- the control unit 20 acquires the second verification result in the core 1 (S13).
- the control unit 20 creates a low-priority virtual environment (virtual ECU 200: VM2, VM3, VM4) executed in the core 1 based on the second verification result, and uses the virtual environment as an operating environment to generate a low-priority virtual environment.
- Execute start) the program (S14).
- the control unit 20 schedules the allocation time in the core 1 in the second schedule (second allocation time table 21B) (S15).
- the usage time of the core 1 (control unit 20) is used for all the virtual ECUs 200 (VM1, VM2, VM3, VM4) sharing the core 1. Is assigned.
- the verification unit 24 verifies the low-priority virtual ECU 200 (guest OS, program) executed by the core 2 (S16).
- the verification unit 24 outputs (transmits) the second verification result in the core 2 to the control unit 20 (S17).
- the control unit 20 acquires the second verification result in the core 2 (S18). Based on the second verification result, the control unit 20 generates a low-priority virtual environment (virtual ECU 200: VM6, VM7) executed in the core 2, and uses the virtual environment as an operating environment to create a low-priority program. Execute (start) (S19). The control unit 20 schedules the allocation time in the core 2 in the second schedule (second allocation time table 21B) (S20). In the second schedule (second allocation time table 21B) in the present embodiment, the usage time of the core 2 (control unit 20) is set for all the virtual ECUs 200 (VM5, VM6, VM7) sharing the core 2. Assigned.
- the in-vehicle ECU 2 generates a high-priority virtual environment by the control unit 20 (management unit 210), executes (starts) a high-priority program in the high-priority virtual environment, and is low by the verification unit 24. Verification of the priority virtual ECU 200 is performed in parallel. As a result, while the high-priority virtual ECU 200 (virtual environment) is generated at an early stage and the high-priority program is executed (started) at an early stage, the verification unit 24 delays the verification of all the virtual ECU 200 (virtual environment). The secure boot process can be efficiently performed without causing the problem.
- FIG. 9 is a flowchart illustrating the processing of the control unit 20 and the verification unit 24 of the in-vehicle ECU 2.
- the control unit 20 of the vehicle-mounted ECU 2 is, for example, when the vehicle-mounted ECU 2 (own ECU) is started (booted) when the vehicle C transitions from a stopped state (IG switch is off) to a started state (IG switch is on).
- the following processing is performed based on the secure boot processing (secure boot sequence) performed in.
- the verification unit 24 of the in-vehicle ECU 2 verifies the virtual ECU 200 having a high priority (S101).
- the verification unit 24 refers to, for example, the first allocation time table 21A stored in the memory, and identifies the high priority virtual ECU 200 associated with each core.
- the verification unit 24 may verify the program executed by the virtual ECU 200 and the guest OS to be activated.
- the storage area in the storage unit 21 is divided for each of the virtual ECUs 200
- the verification unit 24 verifies the program or guest OS stored in the storage area corresponding to the virtual ECU 200. May be.
- the verification unit 24 is a high-priority virtual ECU 200 (high-priority virtual ECU 200) executed in each core. Will be verified in sequence.
- the verification unit 24 of the in-vehicle ECU 2 determines whether or not the verification of the high priority virtual ECU 200 in all the cores has been completed (S102). When the verification of the high priority virtual ECU 200 in all the cores is not completed (S102: NO), the verification unit 24 of the vehicle-mounted ECU 2 performs a loop process in order to execute the process of S101 again.
- the verification unit 24 of the vehicle-mounted ECU 2 When the verification of the high priority virtual ECU 200 in all the cores is completed (S102: YES), the verification unit 24 of the vehicle-mounted ECU 2 outputs the first verification result (reset release signal) (S103).
- the verification unit 24 may output the first verification result for each core for which verification has been completed when outputting the first verification result for each core.
- the control unit 20 is composed of a dual core CPU including two cores (core 1 and core 2)
- the verification unit 24 checks the core 1 when the verification of the high priority virtual ECU 200 in the core 1 is completed.
- the first verification result may be output, and after the output of the first verification result, the first verification result for the core 2 may be output when the verification of the high priority virtual ECU 200 in the core 2 is completed.
- the verification unit 24 of the in-vehicle ECU 2 verifies the virtual ECU 200 having a low priority (S104).
- the verification unit 24 refers to, for example, the second allocation time table 21B stored in the storage unit 21 and identifies the low priority virtual ECU 200 associated with each core.
- the verification unit 24 of the in-vehicle ECU 2 determines whether or not the verification of the low priority virtual ECU 200 in all the cores has been completed (S105). When the verification of the low priority virtual ECU 200 in all the cores is not completed (S105: NO), the verification unit 24 of the vehicle-mounted ECU 2 performs a loop process in order to execute the process of S105 again.
- the verification unit 24 of the in-vehicle ECU 2 outputs the second verification result (S106).
- the verification unit 24 may output the second verification result for each core for which verification has been completed when outputting the second verification result for each core.
- the control unit 20 is composed of a dual core CPU including two cores (core 1 and core 2)
- the verification unit 24 checks the core 2 when the verification of the low priority virtual ECU 200 in the core 2 is completed.
- the second verification result may be output, and after the output of the second verification result, the second verification result for the core 2 may be output when the verification of the low priority virtual ECU 200 in the core 2 is completed.
- the substance of the management unit 210 is the control unit 20 of the in-vehicle ECU 2.
- the management unit 210 of the in-vehicle ECU 2 determines whether or not the first verification result (reset release signal) has been acquired (S111).
- the management unit 210 determines whether or not the first verification result (reset release signal) output from the verification unit 24 has been acquired.
- the control unit 20, which is the actual state of the management unit 210, is in a state of waiting for the first verification result (reset release signal) output from the verification unit 24 configured by the HSM or the like.
- the management unit 210 can recognize that the process at the time of activation in the in-vehicle ECU 2 is being performed.
- the core to which the reset release signal is input becomes an active state.
- BSW Basic SoftWare
- BSW may be initialized according to standards such as Hypervisor and AUTOSAR.
- the management unit 210 of the vehicle-mounted ECU 2 selects the first schedule (S112).
- the management unit 210 selects the first allocation time table 21A that defines the first schedule as the schedule table used for allocating the usage time of the control unit 20 (core) to the virtual ECU 200.
- the allocation time zone and the allocation cycle of the high priority virtual ECU 200 to which the usage time is allocated in each core are defined.
- the management unit 210 of the in-vehicle ECU 2 executes scheduling based on the selected schedule (first schedule) (S113).
- the management unit 210 allocates the usage time of the control unit 20 (core) to the virtual ECU 200 based on the contents defined in the first allocation time table 21A.
- the usage time of the control unit 20 (core) is set to the first schedule (the first schedule (core) with respect to the high priority virtual ECU 200 (high priority virtual ECU 200) that is the verification target in the first verification result (reset release signal). It is allocated based on the first allocation time table 21A), and the high priority program is executed (started) on the high priority virtual ECU 200 (virtual environment).
- the management unit 210 of the vehicle-mounted ECU 2 After the processing of S113 is executed, or when the management unit 210 of the vehicle-mounted ECU 2 has not acquired the first verification result (reset release signal) (S111: NO), the management unit 210 of the vehicle-mounted ECU 2 obtains the second verification result. It is determined whether or not it has been acquired (S1111). The management unit 210 determines whether or not the second verification result has been acquired based on whether or not the second verification result from the verification unit 24 has been input. When the second verification result has not been acquired (S1111: NO), the management unit 210 of the vehicle-mounted ECU 2 performs a loop process in order to execute the process of S1111 again.
- the management unit 210 of the vehicle-mounted ECU 2 selects the second schedule (S1112).
- the verification unit 24 has completed the verification for all the virtual ECUs 200 (program and guest OS), that is, the second verification result corresponds to the verification completion notification of all the virtual ECUs 200. ..
- the management unit 210 selects the second allocation time table 21B that defines the second schedule as the schedule table used for allocating the usage time of the control unit 20 (core) to the virtual ECU 200.
- the second allocation time table 21B when the control unit 20 is composed of a multi-core CPU, the allocation time zone and the allocation cycle of all the virtual ECUs 200 to which the usage time is allocated in each core are defined.
- the management unit 210 of the in-vehicle ECU 2 executes scheduling based on the selected schedule (second schedule) (S1113).
- the management unit 210 allocates the usage time of the control unit 20 (core) to the virtual ECU 200 based on the contents defined in the second allocation time table 21B.
- the usage time of the control unit 20 (core) is based on the second schedule (second allocation time table 21B). It is assigned and the program is executed (started) on each virtual ECU 200 (virtual environment).
- the in-vehicle ECU 2 executes all the programs applied to the own ECU in the virtual environment (operating environment) corresponding to each of the programs, and operates according to the functional specifications defined by the own ECU. To start.
- the process of the verification unit 24 that becomes the trigger is the output (S103) of the first verification result (reset release signal). Therefore, during the period from processing S112 to S1112 in the management unit 210, the high-priority program is executed (started) in the high-priority virtual ECU 200 (virtual environment), and in parallel with this, the verification unit 24 executes (starts) the program. , Processing related to verification of the virtual ECU 200 having a low priority (S104 to S106) is performed.
- the high-priority virtual ECU 200 (virtual environment) is generated at an early stage, and the high-priority program is executed (started) at an early stage while the verification unit is executed.
- the secure boot process can be efficiently performed without delaying the verification of all the virtual ECUs 200 (virtual environment) by 24.
- the management unit 210 of the in-vehicle ECU 2 performs a process of performing the series of processes according to the number of cores of the control unit 20 configured by the multi-core CPU. It may be generated and the series of processes may be performed for each core. That is, the management unit 210 of the in-vehicle ECU 2 generates, for example, the same number of subprocesses or threads as the number of cores of the control unit 20, and in each subprocess or the like, a series corresponding to each core (core 1, core 2). (S111 to S1113) may be performed, and processing related to generation and scheduling of the virtual ECU 200 in each core may be performed in parallel.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mechanical Engineering (AREA)
- Stored Programmes (AREA)
Abstract
車載ECUは、制御部、起動する際に複数のプログラムそれぞれの検証を行う検証部、仮想化オペレーティングシステムが記憶されている記憶部を備え、仮想化オペレーティングシステムを起動することにより、プログラムの動作環境となる複数の仮想環境が生成され、検証部は、優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、第1検証結果の出力後、優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、仮想化オペレーティングシステムを管理する管理部は、第1検証結果が出力されてから第2検証結果が出力されるまでの間と、第2検証結果が出力された以降とでは、複数の仮想環境に対する制御部の割当時間帯を異ならせる。
Description
本開示は、車載ECU、プログラム、及び情報処理方法に関する。
本出願は、2020年11月13日出願の日本出願第2020-189750号に基づく優先権を主張し、前記日本出願に記載された全ての記載内容を援用するものである。
本出願は、2020年11月13日出願の日本出願第2020-189750号に基づく優先権を主張し、前記日本出願に記載された全ての記載内容を援用するものである。
車両に搭載され、当該車両に搭載された機器の制御や、車外通信、自動運転等の走行制御に関する情報処理を行う電子制御装置が知られている(例えば特許文献1)。特許文献1の電子制御装置は、複数のコアを有するマルチコアCPUを備え、マルチコアCPU上で複数のプログラムシステムが、動作する。特許文献1の電子制御装置には、プログラムが実行されることによって実現される機能の構成要素として、ハイパーバイザが搭載されており、当該ハイパーバイザにより、マルチコアCPU上で複数の仮想マシンを作成して並列に動作させ、作成された仮想マシン上でOSを動作させる。
本開示の一態様に係る車載ECUは、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、前記検証部は、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる。
[本開示が解決しようとする課題]
特許文献1の電子制御装置は、複数の仮想マシンに対するセキュリティ的な観点から検証を行う点について、考慮されていない。
特許文献1の電子制御装置は、複数の仮想マシンに対するセキュリティ的な観点から検証を行う点について、考慮されていない。
本開示は、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECU等を提供する。
[本開示の効果]
本開示の一態様によれば、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECU等を提供する。
本開示の一態様によれば、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECU等を提供する。
[本開示の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
(1)本開示の一態様に係る車載ECUは、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、前記検証部は、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる。
本態様にあたっては、車載ECU(Electronic Control Unit)が起動する際、例えばHSM(Hardware Security Module)等の検証部により複数のプログラムに対する検証が行われるものであり、すなわち、車載ECUは、当該検証部を用いたセキュアブートを行う。検証部による検証の対象となる複数のプログラムは、これらプログラムの優先度に基づき区分化されており、例えば、高い優先度のプログラム(高優先度プログラム)と、低い優先度のプログラム(低優先度プログラム)とを含む。これにより、実行するプログラムに応じて、仮想環境の優先度も決定される。すなわち、高優先度プログラムの動作環境となる仮想環境(高優先度の仮想環境)の優先度は、低優先度プログラムの動作環境となる仮想環境(低優先度の仮想環境)の優先度よりも、高いものとなる。検証部は、当該複数のプログラムに対する検証を行うにあたり、優先度の高い順番に検証を行う。従って、検証部は、高優先度プログラムの検証を行った後、低優先度プログラムの検証を行う。検証部は、高優先度プログラムの検証を行った際に第1検証結果を出力し、当該第1検証結果の出力後に低優先度プログラムの検証及び当該検証の結果となる第2検証結果を出力する。従って、検証部はプログラムの優先度に応じた順番にて、これらプログラムの検証を行うため、効率的な検証を行うことができる。当該複数のプログラムは、仮想化オペレーティングシステムによって生成されるいずれかの仮想環境(仮想ECU)を動作環境として実行(起動)される。仮想化オペレーティングシステムを管理する管理部は、第1検証結果が出力されてから第2検証結果が出力されるまでの間と、第2検証結果が出力された以降とでは、異なるスケジューリングによって、複数の仮想環境に対する制御部の割当時間帯を割り当てるため、優先度に応じた検証結果に基づき適切なスケジューリングを行うことができる。
(2)本開示の一態様に係る車載ECUは、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間は、前記優先度の高い仮想環境を動作環境とするプログラムの実行と、前記優先度の低い仮想環境を動作環境とするプログラムの検証とが、並行して行われる。
本態様にあたっては、高優先度の仮想環境における高優先度プログラムの実行(起動)と並行して、低優先度の仮想環境における低優先度プログラムに対する検証部の検証を行うことができるため、効率的にセキュアブートを行うことができる。
(3)本開示の一態様に係る車載ECUは、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果に応じて、前記優先度の高い仮想環境に対し前記制御部の割当時間帯を割り当てる第1割当制御を開始し、前記第2検証結果が出力された以降は、前記優先度の高い仮想環境及び前記優先度の低い仮想環境に対し、前記制御部の割当時間帯を割り当てる第2割当制御を開始する。
本態様にあたっては、管理部は、第1検証結果に応じて当該第1検証結果が出力されてから第2検証結果が出力されるまでの間は、優先度の高い仮想環境に対し制御部の割当時間帯を割り当てる第1割当制御(第1スケジュールに基づくスケジューリング)を行う。その上で、管理部は、第2検証結果が出力された以降は、優先度の高い仮想環境及び優先度の低い仮想環境に対し制御部の割当時間帯を割り当てる第2割当制御(第2スケジュールに基づくスケジューリング)を開始する。従って、第1検証結果に応じて、優先度の高い仮想環境に対し制御部の割当時間帯を割り当て、当該優先度の高い仮想環境を動作環境とする高優先度プログラムを早期に実行(起動)することができる。すなわち、検証部による全領域の検証後に起動する方法を用いた場合、優先度の高い仮想環境を動作環境とする高優先度プログラムも含め、起動に時間がかかってしまうところ、本態様による方法を用いることにより、優先度の高い仮想環境を動作環境とする高優先度プログラムを早期に実行(起動)することができる。
(4)本開示の一態様に係る車載ECUは、前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、前記割当時間情報は、前記第1割当制御に対応した第1割当時間情報と、前記第2割当制御に対応した第2割当時間情報とを含み、前記管理部は、参照する割当時間情報として、前記第1割当時間情報から前記第2割当時間情報に切り替えることにより、前記第1割当制御から、前記第2割当制御に変更する。
本態様にあたっては、記憶部に記憶されている割当時間情報は、第1スケジュールに対応した第1割当時間情報と、第2スケジュールに対応した第2割当時間情報とを含む。仮想化オペレーティングシステムを管理する管理部は、当該第1割当時間情報、又は第2割当時間情報を参照して、仮想環境夫々に対し、制御部の利用時間を割り当てる。管理部は、第2検証結果が出力された以降、第1スケジュールに基づくスケジューリングから、第2スケジュールに基づくスケジューリングへの変更を行うにあたり、参照する対象(割当時間情報)を、第1割当時間情報から第2割当時間情報に切り替える。これにより、管理部は、効率的にスケジューリングの変更を行うことができる。
(5)本開示の一態様に係る車載ECUは、前記検証部は、前記第1検証結果を出力するにあたり、前記優先度の高い仮想環境にて起動されるゲストOSの検証を行い、前記第2検証結果を出力するにあたり、前記優先度の低い仮想環境にて起動されるゲストOSの検証を行う。
本態様にあたっては、仮想化オペレーティングシステムとして、例えばハイパーバイザー方式を用いる場合、生成された仮想環境においてUbuntu(登録商標)等のゲストOS(Operation System)が起動される。検証部は、高優先度プログラムの検証を行うにあたり当該高優先度プログラムの動作環境となる優先度の高い仮想環境(高優先度仮想環境)にて起動されるゲストOSの検証を行う。更に、検証部は、低優先度プログラムの検証を行うにあたり当該低優先度プログラムの動作環境となる優先度の低い仮想環境(低優先度仮想環境)にて起動されるゲストOSの検証を行う。仮想化オペレーティングシステムによって生成される複数の仮想環境それぞれに対し、車載ECUの記憶部の領域(記憶領域)が区分化されている場合、検証部は、個々の仮想環境に対応した記憶領域それぞれに対し検証を行うものであってもよい。これにより、検証部は、プログラムの検証を行う際、当該プログラムの動作環境となる仮想環境にて起動されるゲストOS(Operating System)についても検証を行うため、車載ECUにおいてプログラムが実行されるにあたり、セキュアな動作環境を担保することができる。
(6)本開示の一態様に係る車載ECUは、前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される。
本態様にあたっては、優先度の高いプログラムの動作環境となる仮想環境は、優先度の低いプログラムの動作環境となる仮想環境よりも、早期に生成されるものであり、すなわち実行するプログラムに応じて、仮想環境の優先度も決定される。これにより、優先度の低いプログラムに対する検証部の検証が完了するよりも前に、優先度の高いプログラムを実行することができる。当該優先度は、優先度はASIL(Automotive Safety Integrity Level)に基づき決定されるものであり、すなわちASILのレベルが向上するにつれ、優先度も高くなる。従って、車載ECUの起動時にHSM等の検証部による検証を行う場合であっても、ASILのレベルが高いプログラムの動作環境となる仮想環境を早期に起動し、当該プログラムを早期に実行することにより、個々のプログラムに要求される機能安全を鑑みた制御部の割り当て(スケジューリング)を効率的に行うことができる。
(7)本開示の一態様に係る車載ECUは、前記制御部は、複数のコアを備えるマルチコアCPUにて構成されており、前記複数の仮想環境それぞれは、前記複数のコアの内のいずれかのコアに割り当てられるものであり、前記検証部は、前記複数のコアそれぞれに割り当てられる、全ての前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき前記第1検証結果を出力し、前記第1検証結果の出力後、複数の前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき前記第2検証結果を出力し、前記管理部は、前記複数のコアそれぞれにおいて、前記複数の仮想環境に対する割当時間帯の割当を行う。
本態様にあたっては、検証部は、全てのコアそれぞれにおいて、優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力した後、優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力する。その上で、管理部は、コアそれぞれにおいて、第1検証結果及び第2検証結果に応じて、複数の仮想環境に対する割当時間帯を割り当てるスケジューリングを行う。従って、車載ECUがマルチコアCPUにて構成される制御部を含むものであっても、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行い、各コアにおける高優先度プログラムを早期に実行することができる。
(8)本開示の一態様に係るプログラムは、車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させるプログラムであって、前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる。
本態様にあたっては、コンピュータを、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECUとして機能させることができる。
(9)本開示の一態様に係る情報処理方法は、車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させる情報処理方法であって、前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる。
本態様にあたっては、コンピュータを、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECUとして機能させる情報処理方法を提供することができる。
[本開示の実施形態の詳細]
本開示をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載ECU2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
本開示をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載ECU2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
(実施形態1)
以下、実施の形態について図面に基づいて説明する。図1は、実施形態1に係る車載ECU2を含む車載システムSの構成を例示する模式図である。図2は、車載ECU2の物理構成を例示するブロック図である。車載システムSは、車両Cに搭載される複数の車載ECU2及び、当該車載ECU2に接続される車載装置3を含む。
以下、実施の形態について図面に基づいて説明する。図1は、実施形態1に係る車載ECU2を含む車載システムSの構成を例示する模式図である。図2は、車載ECU2の物理構成を例示するブロック図である。車載システムSは、車両Cに搭載される複数の車載ECU2及び、当該車載ECU2に接続される車載装置3を含む。
複数の車載ECU2は、車両Cの全体を制御する統合的な車載ECU2(統合ECU)、及び当該統合的な車載ECU2と通信可能に接続され、車載装置3と直接、接続される個別的な車載ECU2(個別ECU)を含むものであってもよい。統合的な車載ECU2は、車外通信装置1を介して、インターネット等の外部ネットワークに接続される外部サーバ100と、通信可能に接続されるものであってもよい。
本実施形態において図示においては、統合的な車載ECU2と、複数の個別的な車載ECU2とは、スター状のネットワークトポロジーを形成する車載ネットワーク4によって通信可能に接続され、当該統合的な車載ECU2は、スター状のネットワークトポロジーの中心(センター)に位置して設けられている。更に、隣接する個々の個別的な車載ECU2同士が接続され、ループ状のネットワークトポロジーを構成し、双方向通信を可能として冗長化を図るものであってもよい。
複数の個別的な車載ECU2は、車両Cにおける各エリアに配置され、イルミネーションランプ等のアクチュエータ30、及びセンサ31等の車載装置3が、シリアルケーブル(じか線)等のワイヤーハーネスにて、直接接続されている。個別的な車載ECU2は、例えば、センサから出力された信号(入力信号)を取得(受信)し、取得した入力信号に基づき生成した要求信号を統合的な車載ECU2に送信する。個別的な車載ECU2は、統合的な車載ECU2から送信された制御信号に基づき、自ECUに直接、接続されたイルミネーションランプ等のアクチュエータ30の駆動制御を行う。
個別的な車載ECU2は、当該個別的な車載ECU2に接続される複数の車載装置3間の通信、又は車載装置3と他の車載ECU2との通信を中継するゲートウェイ又はイーサスイッチ等の車載中継装置として機能する中継制御ECUであってもよい。個別的な車載ECU2は、通信に関する中継に加え、蓄電装置から出力された電力を分配及び中継し、自ECUに接続される車載装置3に供給する電力分配装置としても機能するPLB(Power Lan Box)であってもよい。
統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2を介して中継された車載装置3からのデータに基づき、個々の車載装置3への制御信号を生成及び出力するものであり、例えばヴィークルコンピュータ等の中央制御装置である。統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2から出力(送信)される要求信号等の情報又はデータに基づき、当該要求信号の対象となるアクチュエータ30を制御するための制御信号を生成し、生成した制御信号を他の車載ECU2に出力(送信)する。本実施形態においては、統合的な車載ECU2(統合ECU)及び個別的な車載ECU2(個別ECU)により車載システムSは構成されるとしたがこれに限定されない。車載システムSは、例えばCAN(Controller Area Network)ゲートウェイ又はイーサスイッチ等の中継装置によってピアツーピアに接続された複数の車載ECU2によって構成されるものであってもよい。
車載装置3は、例えばLiDAR(Light Detection and Ranging)、ライトセンサ、CMOSカメラ、赤外線センサ等の各種センサ31及び、ドアSW(スイッチ)、ランプSW等のスイッチ、ランプ、ドア開閉装置、モータ装置等のアクチュエータ30を含む。
外部サーバ100は、例えばインターネット又は公衆回線網等の車外ネットワークに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部を備える。統合的な車載ECU2(統合ECU)は、車外通信装置1と通信可能に接続され、車外通信装置1を介して車外ネットワークを介して接続された外部サーバ100と通信し、外部サーバ100と、車両Cに搭載される他の車載ECU2又は車載装置3との間の通信を中継するものであってもよい。
車外通信装置1は、車外通信部(図示せず)及び、統合的な車載ECU2(統合ECU)と通信するための入出力I/F(図示せず)を含む。車外通信部は、4G、LTE(Long Term Evolution/登録商標)、5G、WiFi等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、車外通信部に接続されたアンテナ11を介して外部サーバ100とデータの送受信を行う。車外通信装置1と外部サーバ100との通信は、例えば公衆回線網又はインターネット等の外部ネットワークNを介して行われる。入出力I/F22は、車載ECU2と、例えばシリアル通信するための通信インターフェイスである。車外通信装置1と車載ECU2とは、入出力I/F及び入出力I/Fに接続されたシリアルケーブル等のワイヤーハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載ECU2と別装置とし、入出力I/F等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載ECU2の一構成部位として、車載ECU2に内蔵されるものであってもよい。
車載ECU2(統合EUC、個別ECU)は、制御部20、記憶部21、入出力I/F22、車内通信部23及び検証部24を含む。制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部21に予め記憶された制御プログラム及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。制御部20は、例えば、シングルコアのシングルCPU、シングルコアのマルチCPU、マルチコアのシングルCPU、及びマルチコアのマルチCPUを含む。制御部20は、CPU等のソフトウェア処理を行うソフトウェア処理部のみに限定されず、FPGA、ASIC又はSOC等のハードウェア処理にて種々の制御処理及び演算処理等を行うハードウェア処理部を含むものであってもよい。
記憶部21は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子、又は、これら記憶デバイスの組み合わせにより構成してあり、制御プログラム及び処理時に参照するデータが予め記憶してある。当該制御プログラムは、例えば、各種の車載装置3を制御するためのプログラム(アプリケーション)、又はLiDAR又はCMOSカメラからの出力データ基づき自動化運転を行うための物標認識を行うプログラム(アプリケーション)等の複数のプログラム(アプリケーション)を含む。更に、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されている。
入出力I/F22は、車外通信装置1の入出力I/F22と同様に、例えばシリアル通信するための通信インターフェイスである。入出力I/F22及びシリアルケーブル等のワイヤーハーネスを介して、車載ECU2は、車外通信装置1と通信可能に接続される。
車内通信部23は、例えばCAN(Controller Area Network)又はイーサネット(Ethernet/登録商標)の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部23を介して車載ネットワーク4に接続されている他の車載ECU2と相互に通信する。
検証部24は、例えばHSM(Hardware Security Module)又はSHE(Secure Hardware Extension)であり、CPU等で構成される制御部20とは別デバイス又は別モジュールとして構成されている。HSM等にて構成される検証部24は、車載ECU2(自ECU)が起動(ブート)される際に行われるセキュアブート処理の一端を担うものであり、記憶部21に記憶されている複数のプログラム等、車載ECU2の起動において実行されるソフトウェアの適正性(完全性)又は健全性を検証する機能モジュールである。検証部24は、例えば、暗号処理用のプロセッサを含み、例えばCMAC(Cipher-based Message Authentication Code)等の暗号アルゴリズムを用いて、検証対象となるプログラム及びゲストOS等のソフトウェアの適正性(完全性)を検証する。検証部24は、車載ECU2の起動時に行われるセキュアブート処理(セキュアブートシーケンス)において、検証対象となる複数のプログラム等それぞれの適正性(完全性)を検証し、プログラムそれぞれに対する検証結果を出力する。当該検証結果は、プログラム等が正当である旨を示す肯定的検証結果、又はプログラム等が例えば改竄等され不正である旨を示す否定的検証結果を含む。
検証部24は、全ての仮想ECU200(ゲストOS、プログラム)に対し、2段階にて検証を行うように構成されている。検証部24は、第1段階として、それぞれのコアに対し割り当てられている仮想ECU200のうち、高い優先度の仮想ECU200の検証を行い、第2段階として、当該高い優先度の仮想ECU200以外となる、低い優先度の仮想ECU200の検証を行う。検証部24は、高い優先度の仮想ECU200に対する検証結果として、第1検証結果(リセット解除信号)を制御部20に出力し、低い優先度の仮想ECU200に対する検証結果として、第2検証結果を制御部20に出力する。検証部24は、当該第1検証結果を出力するにあたり、制御部20を構成するコアに対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、当該コアに対しリセット解除信号を出力するものであってもよい。
図3は、車載ECU2の論理構成(仮想ECU200)を例示するブロック図である。本実施形態における図示にて車載ECU2の論理構成を例示するものであり、制御部20等によるハードウェア層(物理基盤)を最下層とし、仮想環境にて実行されるプログラム、及び仮想環境管理プログラム等によるソフトウェア層を最上層とした階層構造を例示するブロック図である。
上述のとおり、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されており、車載ECU2の制御部20は、仮想オペレーティングシステムを用いて起動することにより、仮想オペレーティングシステム上にて複数の仮想環境(仮想ECU200)を構築することができる。各種の車載装置3を制御するためのプログラムは、これら複数の仮想環境のうちのいずれかの仮想環境を動作環境として、実行される。すなわち、これらプログラムは、いずれかの仮想環境(仮想ECU200)上にて、実行されるものとなる。仮想環境(仮想ECU200)にてプログラムが実行されることにより、当該プログラムの処理内容に応じて単一又は複数のタスクが生成される。当該タスクによって、より細分化又は区分化された処理単位が実行されるものとなる。
仮想化の方式は、本実施形態の図示のように仮想オペレーティングシステムによって直接的に制御部20等のハードウェアリソースにアクセスするハイパーバイザー方式、又は仮想オペレーティングシステムとハードウェアリソースとの間にLinux(登録商標)等のオペレーティングシステムが介在するホストOS方式であってもよい。又は、コンテナ方式の仮想オペレーティングシステムを用いるものであってもよい。
仮想オペレーティングシステムを用いて起動した車載ECU2は、仮想オペレーティングシステムの機能により、複数の仮想環境を構築することができ、複数の仮想環境には、車載ECU2が備える制御部20等のハードウェアリソースが割り当てられる。これらハードウェアリソースが割り当てられた仮想環境それぞれは、仮想的な制御部20(仮想制御部)、記憶部21(仮想記憶部)及び車内通信部23(仮想車内通信部)を備えるものとなり、仮想ECU200として機能する。
仮想ECU200それぞれの仮想記憶部それぞれには、例えばUbuntu(登録商標)等のゲストOS(Operation System)が記憶され、仮想ECU200それぞれはゲストOSを起動し、当該ゲストOSの上でプログラムを実行する。当該ゲストOSは、個々の仮想ECU200に応じて、異なる種類のOSであってもよい。上述のごとく仮想記憶部の実体は、仮想ECU200それぞれに割り当てられた記憶部21の記憶領域であるため、ゲストOSも仮想オペレーティングシステムと同様に記憶部21に記憶されていることは、言うまでもない。コンテナ方式の仮想オペレーティングシステムを用いる場合、ゲストOSを不要とし、当該仮想オペレーティングシステムの上でコンテナ(仮想環境)を生成し、当該コンテナ(仮想環境)上にてプログラムを実行するものであってもよい。
仮想オペレーティングシステムを用いて起動した車載ECU2の制御部20は、構築したいずれかの仮想環境(仮想ECU200)のうちの一つの仮想ECU200にて、全ての仮想環境を管理するプログラム(仮想環境管理プログラム)を実行する。すなわち、仮想環境管理プログラムを実行する仮想ECU200は、仮想オペレーティングシステムのコントロールパネルとして機能するものであり、管理部210に相当する。又は、仮想オペレーティングシステム自体が、管理部210としての機能を包含するものであってもよい。制御部20とは別個のデバイスである検証部24は、仮想オペレーティングシステムによる仮想化の対象外となり、当該検証部24は、管理部210(仮想オペレーティングシステムのコントロールパネル)又は制御部20を構成するコアと通信するものとなる。
記憶部21には、後述する割当時間情報(第1割当時間テーブル21A、第2割当時間テーブル21B)が記憶されている。管理部210は、検証部24からの出力内容(第1検出結果、第2検出結果)に応じて、第1割当時間テーブル21A又は第2割当時間テーブル21Bを選択し、選択したテーブルに基づき、個々の仮想環境(仮想ECU200)に対する制御部20(コアそれぞれ)の利用時間の割当(スケジューリング)を行う。
図4は、仮想ECU200における機能部を例示する機能ブロック図である。図5は、第1割当時間テーブル21A(第1割当時間情報)を例示する説明図である。図6は、第2割当時間テーブル21B(第2割当時間情報)を例示する説明図である。
仮想ECU200の仮想制御部(制御部20)は、当該仮想ECU200の仮想記憶部(記憶部21)に記憶されているプログラムを実行することにより、タスク生成部201として機能する。
仮想オペレーティングシステムを実行する制御部20又は、当該仮想オペレーティングシステムを管理するための仮想ECU200の仮想制御部(制御部20)は、仮想記憶部(記憶部21)に記憶されている仮想環境管理プログラムを実行することにより、仮想オペレーティングシステムのコントロールパネルとして機能し、本実施形態における管理部210に相当する。当該管理部210は、テーブル選択部211、及び割当実行部212を含む。
制御部20が、例えばマルチコアにて構成される場合、当該管理部210(仮想オペレーティングシステムのコントロールパネル)に対し利用時間が割り当てられるコアと、車載装置3等の制御を行うためのプログラムの動作環境となる仮想環境(仮想ECU200)に対し利用時間が割り当てられるコアとは、異なるコアであってもよい。
管理部210は、例えば記憶部21に記憶されている割当時間情報を参照することにより、仮想ECU200に対し、制御部20を構成するいずれかのコアの利用時間を、割り当てる処理(スケジューリング)を継続して行っている。本実施形態における図示のとおり、管理部210が参照する割当時間情報は、例えば第1割当時間テーブル21A、及び第2割当時間テーブル21Bとして、テーブル形式(ルックアップテーブル)にて記憶部21に記憶されている。
第1割当時間テーブル21A、及び第2割当時間テーブル21Bの管理項目は、仮想ECU200の項目、割当コアの項目、割当周期の項目、割当時間の項目、プログラム種別の項目、ASILの項目、及び優先度の項目を含む。すなわち、第1割当時間テーブル21A及び第2割当時間テーブル21Bの管理項目は、同一である。
仮想ECU200の項目には、同一の制御部20(コア)を時分割することにより共用する仮想ECU200の名称又は識別子が格納される。本実施形態における第1割当時間テーブル21Aにおいては、優先度の高い仮想ECU200(VM1、VM5)のみが、定義されている。第2割当時間テーブル21Bにおいては、優先度の高い仮想ECU200及び低い仮想ECU200からなる全ての仮想ECU200(VM1からVM7)が、定義されている。従って、管理部210は、第1割当時間テーブル21Aを選択することにより、優先度の高い仮想ECU200(VM1、VM5)のみを対象とした制御部20(コア1、コア2)の利用時間の割り当てを行うことができる。管理部210は、第2割当時間テーブル21Bを選択することにより、全ての仮想ECU200(VM1からVM7)を対象とした制御部20(コア1、コア2)の利用時間の割り当てを行うことができる。
割当コアの項目には、対応する仮想ECU200(同じレコードに格納される仮想ECU200)に割り当てられるコアの番号又は識別子が格納される。周期的(定常的)に割当が行われる仮想ECU200(VM1からVM6)に対しては、いずれか一つのコアの番号が、格納される。これにより、各仮想ECU200は、どのコア(コア番号)の利用時間が割り当てられるかが、定められている。本実施形態における第1割当時間テーブル21Aにおいては、仮想ECU200(VM1)は、コア1に割り当てられ、仮想ECU200(VM5)は、コア2に割り当てられている。第2割当時間テーブル21Bにおいては、仮想ECU200(VM1、VM2、VM3、VM4)は、コア1に割り当てられ、仮想ECU200(VM5、VM6、VM7)は、コア2に割り当てられている。
割当周期の項目には、周期的(定常的)に割当が行われる仮想ECU200における割当周期が、格納される。割当時間の項目には、周期的(定常的)に制御部20の利用時間が割り当てられる仮想ECU200において、それぞれの仮想ECU200に割り当てられる割当時間が格納される。これら割当時間の合算値が、割当周期に相当する。
本実施形態における第1割当時間テーブル21Aにおいては、単一のコアに対し割り当てられる仮想ECU200の個数も1つであるため、割当周期と割当時間とは、等しい値となる。第2割当時間テーブル21Bにおいては、単一のコアに対し割り当てられる仮想ECU200の個数は2つ以上であるため、それぞれのコアにおいて、それぞれの仮想ECU200に割り当てられる割当時間の合算値が、割当周期に相当する。
プログラム種別の項目には、対応する(同じレコードに格納される)各仮想ECU200(仮想環境)にて実行されるプログラムの種別が格納されている。ASILの項目には、実行されるプログラムの安全性指標を示すASILのレベルが格納される。優先度の項目は、プログラムの優先度を示す値(本実施形態では、高/低)が格納される。当該優先度に基づき、当該プログラムに対応する仮想ECU200に対する検証部24の検証の順番、及び管理部210による仮想ECU200の生成の順番が、決定される。当該優先度は、対応する車載装置3及び実行するプログラムの機能に基づいて決定されるものであり、例えばISO26262のASIL(Automotive Safety Integrity Level)に基づいて決定されるものであってもよい。ASILのレベルは、QM、ASIL-A,ASIL-B,ASIL-C,ASIL-Dのレベルに分類される。QMレベルは、ISO26262による機能安全を適用しなくてもよい通常の品質管理である。ASIL-AからDのレベルにおいては、ISO26262による機能安全の適用が必要となるレベルであり、ASIL-AからASIL-Dになるについて、機能安全要件が厳しくなる。すなわち、QMレベルの優先度が最も低く、ASIL-Dレベルの優先度が最も高いとみなすことができる。本実施形態において、プログラムの優先度を示す指標としてASILを用いるとしたが、これに限定されない。当該プログラムの優先度は、ASILとは別個の値(優先度設定値)により決定されるものであってもよく、当該優先度設定値は、例えば、車載システムSの利用者、管理者又は製造者によって、個々に変更可能に設定されるものであってもよい。
本実施形態においては、コア1及びコア2にて実行されるプログラムの内、ASIL-Dのプログラム及び当該プログラムの動作環境となる仮想ECU200(コア1:VM1、コア2:VM5)の優先度を、高い優先度としている。これ以外の仮想ECU200(VM2、VM3、VM4、VM6、VM7)の優先度を、低い優先度としている。本実施形態における優先度の区分けは、一例であり、これに限定されるものでないことは、言うまでもない。
検証部24は、例えば記憶部21に記憶されている第1割当時間テーブル21Aを参照し、制御部20を構成するそれぞれのコアに対応する仮想ECU200において、高い優先度の仮想ECU200に対する検証を行い、第1検証結果(リセット解除信号)をテーブル選択部211に出力する。検証部24は、当該第1検証結果としてリセット解除信号を、対応するそれぞれのコアに出力するものであってもよい。
テーブル選択部211は、第1検証結果(リセット解除信号)に基づき、高い優先度の仮想ECU200に対応した第1スケジュールを定義している割当時間情報(第1割当時間テーブル21A)を選択し、当該第1割当時間テーブル21Aに応じた割当指示を割当実行部212に出力する。
割当実行部212は、当該割当指示に基づき、高い優先度の仮想ECU200を生成し、割り当てられている制御部20(コア)の利用時間を割り当てる。
高い優先度の仮想ECU200のタスク生成部201は、自仮想ECU200に適用される高い優先度のプログラムを実行してタスクを生成し、当該タスクによって、より細分化又は区分化された処理単位が実行されるものとなる。
検証部24は、例えば記憶部21に記憶されている第2割当時間テーブル21Bを参照し、制御部20を構成するそれぞれのコアに対応する仮想ECU200において、低い優先度の仮想ECU200に対する検証を行い、第2検証結果をテーブル選択部211に出力する。検証部24による低い優先度の仮想ECU200に対する検証に関する処理と、管理部210による高い優先度の仮想ECU200に関する処理とは、並行して実行される。
テーブル選択部211は、第2検証結果に基づき、全ての仮想ECU200(高い優先度及び低い優先度の仮想ECU200)に対応した第2スケジュールを定義している割当時間情報(第2割当時間テーブル21B)を選択し、当該第2割当時間テーブル21Bに応じた割当指示を割当実行部212に出力する。
割当実行部212は、当該割当指示に基づき、低い優先度の仮想ECU200を生成する。これより、全ての仮想ECU200が生成されるものとなる。割当実行部212は、全ての仮想ECU200に対し、それぞれに仮想ECU200に対し割り当てられている制御部20(コア)の利用時間を割り当てる。すなわち、割当実行部212は、検証部24からの出力内容に基づき、第1スケジュール(第1割当時間テーブル21A)から第2スケジュール(第2割当時間テーブル21B)に切り替えて再スケジュールを行う再スケジュール部として機能する。
図7は、仮想環境に対する制御部20の割当時間帯に関する説明図である。本実施形態における例示として、制御部20は、2つのコアから構成されるデュアルコアCPUである。
検証部24は、セキュアブート処理(セキュアブートシーケンス)を開始するにあたり、自部におけるファームウェア(FW)の起動後、コア1及びコア2において高い優先度の仮想ECU200(VM1等)の検証を行い、それぞれのコアに対し第1検出結果(リセット解除信号)を出力する。検証部24は、当該第1検出結果(リセット解除信号)の出力後、低い優先度の仮想ECU200の検証を行い、第2検出結果を出力する。
第1検出結果(リセット解除信号)が入力されたそれぞれのコアは、例えばHypervisor及びAUTOSAR等の規格によるBSW(Basic Soft Ware)の初期化を行い、当該コアの利用時間が割り当てられる高い優先度の仮想ECU200が、生成される。当該高い優先度の仮想ECU200(仮想環境)において、高い優先度のプログラムが実行(起動)される。
仮想オペレーティングシステムのコントロールパネルとして機能する管理部210は、第1割当時間テーブル21Aに基づき、これら高い優先度の仮想ECU200に対する制御部20(コア)の利用時間の割り当て(スケジューリング)を行う。
第2検出結果が入力されたそれぞれのコアにおいては、当該コアの利用時間が割り当てられる低い優先度の仮想ECU200が生成される。当該低い優先度の仮想ECU200(仮想環境)において、低い優先度のプログラムが実行(起動)される。これにより、全ての仮想ECU200が生成され、それぞれの仮想ECU200(仮想環境)において、それぞれのプログラムが実行(起動)される。
仮想オペレーティングシステムのコントロールパネルとして機能する管理部210は、第2割当時間テーブル21Bに基づき、全ての仮想ECU200に対する制御部20(コア)の利用時間の割り当て(スケジューリング)を行う。
それぞれのコアにおける高優先度の仮想環境の生成及び当該高優先度の仮想環境にて高優先度のプログラムを実行(起動)する処理と、検証部24による低優先度の仮想ECU200に対する検証とは、並行して行われる。これにより、高優先度のプログラムを早期に実行(起動)しつつ、検証部24による検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
図8は、制御部20及び検証部24によるシーケンスを例示した説明図である。本実施形態における図示において、制御部20(コア1、コア2)はデュアルコアCPUにより構成されるものとしている。本実施形態における制御部20及び検証部24の処理は、車載ECU2の起動時に行われるセキュアブートシーケンスの一環として行われる。
検証部24は、コア1にて実行される高優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S01)。検証部24は、コア1における第1検証結果を制御部20に出力(送信)する(S02)。検証部24は、当該第1検証結果として、コア1に対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、コア1に対しリセット解除信号を出力するものであってもよい。当該リセット解除信号が入力されることにより、コア1のリセット解除が行われ、コア1は、非活性状態(ノンアクティブ)から活性状態(アクティブ)に遷移する。
制御部20は、コア1における第1検証結果を取得する(S03)。制御部20は、第1検証結果に基づき、コア1にて実行される高優先度の仮想環境(仮想ECU200:VM1)を生成し、当該仮想環境を動作環境として高優先度のプログラムを実行(起動)する(S04)。制御部20は、第1スケジュールにてコア1における割当時間のスケジューリングを行う(S05)。本実施形態における第1スケジュール(第1割当時間テーブル21A)においては、高優先度の仮想ECU200(VM1)に対してのみコア1(制御部20)の利用時間が、割り当てられる。HyperVisor等の仮想化オペレーティングシステムからの観点においては、仮想環境(仮想ECU200)の生成及び当該仮想環境(仮想ECU200)に対するコア1の利用時間の割り当てに関する制御は、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210によって行われる。
検証部24は、コア2にて実行される高優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S06)。検証部24は、コア2における第1検証結果を制御部20に出力(送信)する(S07)。検証部24は、当該第1検証結果として、コア2に対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、コア2に対しリセット解除信号を出力するものであってもよい。当該リセット解除信号が入力されることにより、コア2のリセット解除が行われ、コア2は、非活性状態(ノンアクティブ)から活性状態(アクティブ)に遷移する。
制御部20は、コア2における第1検証結果を取得する(S08)。制御部20は、第1検証結果に基づき、コア2にて実行される高優先度の仮想環境(仮想ECU200:VM5)を生成し、当該仮想環境を動作環境として高優先度のプログラムを実行(起動)する(S09)。制御部20は、第1スケジュールにてコア2における割当時間のスケジューリングを行う(S10)。本実施形態における第1スケジュール(第1割当時間テーブル21A)においては、高優先度の仮想ECU200(VM5)に対してのみコア2(制御部20)の利用時間が、割り当てられる。HyperVisor等の仮想化オペレーティングシステムからの観点においては、仮想環境(仮想ECU200)の生成及び当該仮想環境(仮想ECU200)に対するコア2の利用時間の割り当てに関する制御は、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210によって行われる。
検証部24は、コア1にて実行される低優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S11)。検証部24は、コア1における第2検証結果を制御部20に出力(送信)する(S12)。
制御部20は、コア1における第2検証結果を取得する(S13)。制御部20は、第2検証結果に基づき、コア1にて実行される低優先度の仮想環境(仮想ECU200:VM2、VM3、VM4)を生成し、当該仮想環境を動作環境として低優先度のプログラムを実行(起動)する(S14)。制御部20は、第2スケジュール(第2割当時間テーブル21B)にてコア1における割当時間のスケジューリングを行う(S15)。本実施形態における第2スケジュール(第2割当時間テーブル21B)においては、コア1を共用する全ての仮想ECU200(VM1、VM2、VM3、VM4)に対し、当該コア1(制御部20)の利用時間が、割り当てられる。
検証部24は、コア2にて実行される低優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S16)。検証部24は、コア2における第2検証結果を制御部20に出力(送信)する(S17)。
制御部20は、コア2における第2検証結果を取得する(S18)。制御部20は、第2検証結果に基づき、コア2にて実行される低優先度の仮想環境(仮想ECU200:VM6、VM7)を生成し、当該仮想環境を動作環境として低優先度のプログラムを実行(起動)する(S19)。制御部20は、第2スケジュール(第2割当時間テーブル21B)にてコア2における割当時間のスケジューリングを行う(S20)。本実施形態における第2スケジュール(第2割当時間テーブル21B)においては、コア2を共用する全ての仮想ECU200(VM5、VM6、VM7)に対し、当該コア2(制御部20)の利用時間が、割り当てられる。
車載ECU2は、制御部20(管理部210)による高優先度の仮想環境の生成及び当該高優先度の仮想環境にて高優先度のプログラムを実行(起動)する処理と、検証部24による低優先度の仮想ECU200に対する検証とを、並行して行う。これにより、高優先度の仮想ECU200(仮想環境)を早期に生成して高優先度のプログラムを早期に実行(起動)しつつ、検証部24による全ての仮想ECU200(仮想環境)に対する検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
図9は、車載ECU2の制御部20及び検証部24の処理を例示するフローチャートである。車載ECU2の制御部20は、例えば、車両Cが停止状態(IGスイッチがオフ)から起動状態(IGスイッチがオン)に状態遷移するにあたり、車載ECU2(自ECU)が起動(ブート)される際に行われるセキュアブート処理(セキュアブートシーケンス)に基づき、以下の処理を行う。
車載ECU2の検証部24は、高い優先度の仮想ECU200の検証を行う(S101)。検証部24は、例えば記憶に記憶されている第1割当時間テーブル21Aを参照し、それぞれのコアに関連付けられている高い優先度の仮想ECU200を特定する。仮想ECU200に対する検証を行うにあたり、検証部24は、当該仮想ECU200にて実行されるプログラム及び起動されるゲストOSに対する検証を行うものであってもよい。又は、仮想ECU200それぞれに対し、記憶部21における記憶領域が区分化されている場合、検証部24は、当該仮想ECU200に対応する記憶領域にて記憶されているプログラム又はゲストOSに対する検証を行うものであってもよい。車載ECU2の制御部20が、例えば複数のコアを含むマルチコアCPUによって構成されている場合、検証部24は、それぞれのコアにて実行される高い優先度の仮想ECU200(高優先度の仮想ECU200)に対する検証を順次に行う。
車載ECU2の検証部24は、全てのコアにおける高い優先度の仮想ECU200の検証が完了したか否かを判定する(S102)。全てのコアにおける高い優先度の仮想ECU200の検証が完了していない場合(S102:NO)、車載ECU2の検証部24は、再度S101の処理を実行すべく、ループ処理を行う。
全てのコアにおける高い優先度の仮想ECU200の検証が完了した場合(S102:YES)、車載ECU2の検証部24は、第1検証結果(リセット解除信号)を出力する(S103)。検証部24は、各コアそれぞれにおける第1検証結果を出力するにあたり、検証が完了したコア毎に当該第1検証結果を出力するものであってもよい。制御部20が、2つのコア(コア1、コア2)を含むデュアルコアCPUによって構成される場合、検証部24は、コア1における高い優先度の仮想ECU200の検証が完了した際にコア1に対する第1検証結果を出力し、当該第1検証結果の出力後、コア2における高い優先度の仮想ECU200の検証が完了した際にコア2に対する第1検証結果を出力するものであってもよい。
車載ECU2の検証部24は、低い優先度の仮想ECU200の検証を行う(S104)。検証部24は、例えば記憶部21に記憶されている第2割当時間テーブル21Bを参照し、それぞれのコアに関連付けられている低い優先度の仮想ECU200を特定する。
車載ECU2の検証部24は、全てのコアにおける低い優先度の仮想ECU200の検証が完了したか否かを判定する(S105)。全てのコアにおける低い優先度の仮想ECU200の検証が完了していない場合(S105:NO)、車載ECU2の検証部24は、再度S105の処理を実行すべく、ループ処理を行う。
車載ECU2の検証部24は、第2検証結果を出力する(S106)。検証部24は、各コアそれぞれにおける第2検証結果を出力するにあたり、検証が完了したコア毎に当該第2検証結果を出力するものであってもよい。制御部20が、2つのコア(コア1、コア2)を含むデュアルコアCPUによって構成される場合、検証部24は、コア2における低い優先度の仮想ECU200の検証が完了した際にコア2に対する第2検証結果を出力し、当該第2検証結果の出力後、コア2における低い優先度の仮想ECU200の検証が完了した際にコア2に対する第2検証結果を出力するものであってもよい。
以下の処理が、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210にて実行される場合、当該管理部210の実体は、車載ECU2の制御部20である。車載ECU2の管理部210は、第1検証結果(リセット解除信号)を取得したか否かを判定する(S111)。管理部210は、検証部24から出力される第1検証結果(リセット解除信号)を取得したか否かを判定する。管理部210の実態である制御部20は、HSM等により構成される検証部24から出力される第1検証結果(リセット解除信号)を待ち受ける状態にある。従って、管理部210は、第1検証結果が入力された場合、車載ECU2における起動時の処理が行われていることを認識することができる。当該第1検証結果がリセット解除信号を含む場合、又は第1検証結果がリセット解除信号に相当する場合、リセット解除信号が入力されたコアは、活性状態となる。リセット解除信号により活性状態に遷移したコアにおいて、例えばHypervisor及びAUTOSAR等の規格によるBSW(Basic Soft Ware)の初期化が行われるものであってもよい。
第1検証結果(リセット解除信号)を取得した場合(S111:YES)、車載ECU2の管理部210は、第1スケジュールを選択する(S112)。管理部210は、第1スケジュールを定義している第1割当時間テーブル21Aを、制御部20(コア)の利用時間を仮想ECU200に割り当てるための用いるスケジュールテーブルとして選択する。第1割当時間テーブル21Aには、制御部20がマルチコアCPUで構成されている場合、各コアにおいて利用時間が割り当てられる高優先度の仮想ECU200の割当時間帯及び割当周期が定義されている。
車載ECU2の管理部210は、選択したスケジュール(第1スケジュール)に基づき、スケジューリングを実行する(S113)。管理部210は、第1割当時間テーブル21Aにて定義されている内容に基づき、制御部20(コア)の利用時間を仮想ECU200に割り当てる。これにより、第1検証結果(リセット解除信号)において検証対象となった高い優先度の仮想ECU200(高優先度の仮想ECU200)に対し、制御部20(コア)の利用時間が、第1スケジュール(第1割当時間テーブル21A)に基づき割り当てられ、当該高優先度の仮想ECU200(仮想環境)上で、高優先度のプログラムが実行(起動)される。
車載ECU2の管理部210は、S113の処理の実行後、又は第1検証結果(リセット解除信号)を取得していない場合(S111:NO)、車載ECU2の管理部210は、第2検証結果を取得したか否かを判定する(S1111)。管理部210は、検証部24からの第2検証結果が入力されたか否かに基づき、当該第2検証結果を取得したか否かを判定する。第2検証結果を取得していない場合(S1111:NO)、車載ECU2の管理部210は、再度S1111の処理を実行すべく、ループ処理を行う。
第2検証結果を取得した場合(S1111:YES)、車載ECU2の管理部210は、第2スケジュールを選択する(S1112)。第2検証結果を取得した場合、検証部24により、全ての仮想ECU200(プログラム及びゲストOS)に対する検証が完了したものであり、すなわち第2検証結果は、全仮想ECU200の検証完了通知に相当する。管理部210は、第2スケジュールを定義している第2割当時間テーブル21Bを、制御部20(コア)の利用時間を仮想ECU200に割り当てるための用いるスケジュールテーブルとして選択する。第2割当時間テーブル21Bには、制御部20がマルチコアCPUで構成されている場合、各コアにおいて利用時間が割り当てられる全ての仮想ECU200の割当時間帯及び割当周期が定義されている。
車載ECU2の管理部210は、選択したスケジュール(第2スケジュール)に基づき、スケジューリングを実行する(S1113)。管理部210は、第2割当時間テーブル21Bにて定義されている内容に基づき、制御部20(コア)の利用時間を仮想ECU200に割り当てる。これにより、全ての仮想ECU200(高優先度の仮想ECU200、及び低優先度の仮想ECU200)に対し、制御部20(コア)の利用時間が、第2スケジュール(第2割当時間テーブル21B)に基づき割り当てられ、それぞれの仮想ECU200(仮想環境)上で、プログラムが実行(起動)される。これにより、車載ECU2は、自ECUに適用されている全てのプログラムを、当該プログラムそれぞれに対応する仮想環境(動作環境)にて実行し、自ECUにて定められている機能仕様に応じた動作を開始する。
管理部210による処理S111において、トリガーとなる検証部24の処理は、第1検証結果(リセット解除信号)の出力(S103)である。従って、管理部210における処理S112からS1112まで期間において、高優先度の仮想ECU200(仮想環境)にて高優先度のプログラムが実行(起動)されると共に、これに並行して、検証部24によって、低い優先度の仮想ECU200の検証に関する処理(S104からS106)が行われる。管理部210及び検証部24による処理を並行して行うことにより、高優先度の仮想ECU200(仮想環境)を早期に生成して高優先度のプログラムを早期に実行(起動)しつつ、検証部24による全ての仮想ECU200(仮想環境)に対する検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
車載ECU2の管理部210は、本フローチャートにおける一連の処理(S111からS1113)を行うにあたり、マルチコアCPUで構成されている制御部20が有するコアの個数に応じて、当該一連の処理を行うプロセスを生成し、各コア毎にて当該一連の処理を行うものであってもよい。すなわち、車載ECU2の管理部210は、例えば、制御部20のコア数と同数のサブプロセス又はスレッドを生成し、各サブプロセス等にて、それぞれのコア(コア1、コア2)に応じた一連の処理(S111からS1113)を行い、各コアにおける仮想ECU200の生成及びスケジューリングに関する処理を並行して行うものであってもよい。
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
C 車両
S 車載システム
100 外部サーバ
1 車外通信装置
11 アンテナ
2 車載ECU
20 制御部
21 記憶部
21A 第1割当時間テーブル
21B 第2割当時間テーブル
22 入出力I/F
23 車内通信部
24 検証部
200 仮想ECU(仮想環境)
201 タスク生成部
210 管理部
211 テーブル選択部
212 割当実行部
3 車載装置
30 アクチュエータ(ACT)
31 センサ
4 車載ネットワーク
S 車載システム
100 外部サーバ
1 車外通信装置
11 アンテナ
2 車載ECU
20 制御部
21 記憶部
21A 第1割当時間テーブル
21B 第2割当時間テーブル
22 入出力I/F
23 車内通信部
24 検証部
200 仮想ECU(仮想環境)
201 タスク生成部
210 管理部
211 テーブル選択部
212 割当実行部
3 車載装置
30 アクチュエータ(ACT)
31 センサ
4 車載ネットワーク
Claims (9)
- 車両に搭載される車載ECUであって、
複数のプログラムを実行する制御部と、
自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、
前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、
前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、
前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、
前記検証部は、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記仮想化オペレーティングシステムを管理する管理部は、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる
車載ECU。 - 前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間は、前記優先度の高い仮想環境を動作環境とするプログラムの実行と、前記優先度の低い仮想環境を動作環境とするプログラムの検証とが、並行して行われる
請求項1に記載の車載ECU。 - 前記仮想化オペレーティングシステムを管理する管理部は、
前記第1検証結果に応じて、前記優先度の高い仮想環境に対し前記制御部の割当時間帯を割り当てる第1割当制御を開始し、
前記第2検証結果が出力された以降は、前記優先度の高い仮想環境及び前記優先度の低い仮想環境に対し、前記制御部の割当時間帯を割り当てる第2割当制御を開始する
請求項1又は請求項2に記載の車載ECU。 - 前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、
前記割当時間情報は、前記第1割当制御に対応した第1割当時間情報と、前記第2割当制御に対応した第2割当時間情報とを含み、
前記管理部は、参照する割当時間情報として、前記第1割当時間情報から前記第2割当時間情報に切り替えることにより、前記第1割当制御から、前記第2割当制御に変更する
請求項3に記載の車載ECU。 - 前記検証部は、
前記第1検証結果を出力するにあたり、前記優先度の高い仮想環境にて起動されるゲストOSの検証を行い、
前記第2検証結果を出力するにあたり、前記優先度の低い仮想環境にて起動されるゲストOSの検証を行う
請求項1から請求項4のいずれか1項に記載の車載ECU。 - 前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される
請求項1から請求項5のいずれか1項に記載の車載ECU。 - 前記制御部は、複数のコアを備えるマルチコアCPUにて構成されており、
前記複数の仮想環境それぞれは、前記複数のコアの内のいずれかのコアに割り当てられるものであり、
前記検証部は、
前記複数のコアそれぞれに割り当てられる、全ての前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき前記第1検証結果を出力し、
前記第1検証結果の出力後、複数の前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき前記第2検証結果を出力し、
前記管理部は、前記複数のコアそれぞれにおいて、前記複数の仮想環境に対する割当時間帯の割当を行う
請求項1から請求項6のいずれか1項に記載の車載ECU。 - 車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させるプログラムであって、
前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる
処理を実行させるプログラム。 - 車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させる情報処理方法であって、
前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる
処理を実行させる情報処理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-189750 | 2020-11-13 | ||
JP2020189750A JP7463947B2 (ja) | 2020-11-13 | 2020-11-13 | 車載ecu、プログラム、及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022102384A1 true WO2022102384A1 (ja) | 2022-05-19 |
Family
ID=81601092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/039215 WO2022102384A1 (ja) | 2020-11-13 | 2021-10-25 | 車載ecu、プログラム、及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7463947B2 (ja) |
WO (1) | WO2022102384A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009107349A1 (ja) * | 2008-02-25 | 2009-09-03 | パナソニック株式会社 | 情報処理装置 |
JP2010237787A (ja) * | 2009-03-30 | 2010-10-21 | Fujitsu Ltd | プログラム、情報処理装置及び状態出力方法 |
JP2019179397A (ja) * | 2018-03-30 | 2019-10-17 | 株式会社デンソー | 電子制御装置及びマルチコアの割当て方法 |
-
2020
- 2020-11-13 JP JP2020189750A patent/JP7463947B2/ja active Active
-
2021
- 2021-10-25 WO PCT/JP2021/039215 patent/WO2022102384A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009107349A1 (ja) * | 2008-02-25 | 2009-09-03 | パナソニック株式会社 | 情報処理装置 |
JP2010237787A (ja) * | 2009-03-30 | 2010-10-21 | Fujitsu Ltd | プログラム、情報処理装置及び状態出力方法 |
JP2019179397A (ja) * | 2018-03-30 | 2019-10-17 | 株式会社デンソー | 電子制御装置及びマルチコアの割当て方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7463947B2 (ja) | 2024-04-09 |
JP2022078815A (ja) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6903784B2 (ja) | 車両システム、車両およびこの種の車両システムの動作方法 | |
JP7280412B2 (ja) | ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法 | |
CN111800506B (zh) | 一种边缘计算节点部署方法及相关装置 | |
US9218201B2 (en) | Multicore system and activating method | |
JP7392157B2 (ja) | コンピューティングデバイスの動作方法及び動作装置 | |
WO2022102384A1 (ja) | 車載ecu、プログラム、及び情報処理方法 | |
AU2021308570B2 (en) | Pool management for in-vehicle device application startup | |
JP7447782B2 (ja) | 車載コンピュータ、コンピュータ実行方法及びコンピュータプログラム | |
WO2022102383A1 (ja) | 車載ecu、プログラム、及び情報処理方法 | |
WO2022097448A1 (ja) | 車載ecu、プログラム及びフェールセーフ方法 | |
WO2023106073A1 (ja) | 車載装置、プログラム及び情報処理方法 | |
CN114625424B (zh) | 基于硬隔离的资源重分配方法、系统和设备 | |
US20240220308A1 (en) | In-vehicle apparatus, information processing method, and computer program | |
US20240303103A1 (en) | Vehicle-mounted computer, computer execution method, and computer program | |
CN114625427B (zh) | 基于硬隔离的分区启动方法、系统和设备 | |
US20240330073A1 (en) | Arithmetic processing apparatus and arithmetic processing method | |
US20240134679A1 (en) | On-board device, information processing method, and computer program | |
CN116367335A (zh) | 资源分配方法、装置和存储介质 | |
CN118672722A (zh) | 一种容器系统及其实现方法 | |
CN118827422A (zh) | 一种基于mcu微容器的应用网管平台及物联网平台系统 | |
CN113934509A (zh) | 支持混合虚拟机管理器的系统和运行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21891631 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21891631 Country of ref document: EP Kind code of ref document: A1 |