WO2017075623A1 - Method and system for boot time optimization of embedded multiprocessor systems - Google Patents

Method and system for boot time optimization of embedded multiprocessor systems Download PDF

Info

Publication number
WO2017075623A1
WO2017075623A1 PCT/US2016/059797 US2016059797W WO2017075623A1 WO 2017075623 A1 WO2017075623 A1 WO 2017075623A1 US 2016059797 W US2016059797 W US 2016059797W WO 2017075623 A1 WO2017075623 A1 WO 2017075623A1
Authority
WO
WIPO (PCT)
Prior art keywords
boot
boot stage
stage
processor
application software
Prior art date
Application number
PCT/US2016/059797
Other languages
French (fr)
Inventor
Yogesh Vikram MARATHE
Kedar Satish CHITNIS
Rishabh GARG
Original Assignee
Texas Instruments Incorporated
Texas Instruments Japan Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/087,856 external-priority patent/US10956169B2/en
Application filed by Texas Instruments Incorporated, Texas Instruments Japan Limited filed Critical Texas Instruments Incorporated
Priority to CN201680063080.2A priority Critical patent/CN108351775B/en
Publication of WO2017075623A1 publication Critical patent/WO2017075623A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Definitions

  • This relates generally to embedded multiprocessor systems, and more particularly to boot time optimization for applications executing on such systems.
  • a class of safety systems referred to as advanced driver assistance systems (ADAS) has been introduced into automobiles to reduce human operation error.
  • ADAS advanced driver assistance systems
  • Such systems may provide various functionality, such as rear-view facing cameras, electronic stability control, and vision-based pedestrian detection systems.
  • the boot time of an automotive safety system may be crucial for safety and important to the overall user experience.
  • an automotive safety system such as a rear view camera system (RVCS) may be provided to show the rear view of the vehicle when the reverse gear of the vehicle is engaged.
  • the RVCS may simply display the rear view or may include more intelligence to detect obstacles and provide visual and/or audible warnings to the driver.
  • the boot time of the RVCS is critical for safety and, if overly long, affects the overall user experience.
  • an embedded multiprocessor system includes: a multiprocessor system on a chip (SOC); a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an initial boot stage and at least one additional boot stage; and a secondary boot loader configured to boot load the initial boot stage on at least one processor of the multiprocessor SOC.
  • the initial boot stage begins executing, and flow of data from the initial boot stage to the at least one additional boot stage is disabled.
  • the application software is configured to boot load a second boot stage of the at least one additional boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the initial boot stage and the second boot stage.
  • a method for booting an embedded multiprocessor system includes boot loading an initial boot stage of application software of the embedded multiprocessor system on at least one processor of a multiprocessor system on a chip (SOC) in the embedded multiprocessor system, wherein the initial boot stage begins executing and flow of data from the initial boot stage to a subsequent boot stage of the application software is disabled, boot loading, under control of the application software, the subsequent boot stage of the application software on at least one other processor of the multiprocessor SOC, and enabling flow of data between the early boot stage and the subsequent boot stage by the application software.
  • SOC multiprocessor system on a chip
  • an automotive safety system includes: a multiprocessor system on a chip (SOC); a camera coupled to the multiprocessor SOC; a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an early boot stage and a late boot stage, wherein the early boot stage is configured to capture video frames from the camera and to display the video frames on a display device, and the late boot stage is configured to detect objects in the video frames; and a secondary boot loader configured to boot load the early boot stage on a master processor of the multiprocessor SOC.
  • the early boot stage begins executing, and flow of data from the early boot stage to the late boot stage is disabled.
  • the application software is configured to boot load the late boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the early boot stage and the late boot stage.
  • FIG. 1 is a block diagram of an example rear view camera system (RVCS).
  • RVCS rear view camera system
  • FIG. 2 illustrates the simplified data flow of an example conventional RVCS application.
  • FIG. 3 is an example of a Vision Software Development Kit (SDK) software stack implemented on an example system on a chip (SOC).
  • SDK Vision Software Development Kit
  • FIG. 4 is illustrates the simplified data flow of FIG. 2 divided into an early boot stage and a late boot stage.
  • FIG. 5 is a sequence diagram illustrating an optimized boot process for the RVCS of FIG. 1.
  • FIG. 6 is a flow diagram of a method for booting an automotive safety system. DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS
  • Embodiments of the disclosure provide for boot time optimization for embedded multiprocessor systems such as advanced driver assistance systems (ADAS) that enable rapid boot loading of high priority portions of application software and delayed booting of lower priority portions.
  • ADAS advanced driver assistance systems
  • boot priority may be given to display of the first frame of the rear view video while booting of other parts of the RVCS application such as object detection is given lower priority.
  • the application software manages the boot order and boot loading of the lower priority portions of the application.
  • FIG. 1 is a block diagram of an example RVCS 100.
  • the RVCS 100 includes a multi-processor system-on-a-chip (SOC) 108, memory devices including read only memory 112, flash memory 114, and random access memory (RAM) 116, a microcontroller (MCU) 106, and a power management integrated circuit (PMIC) 110.
  • SOC system-on-a-chip
  • RAM random access memory
  • MCU microcontroller
  • PMIC power management integrated circuit
  • the RVCS is coupled to a camera sensor 102 configured to capture a video sequence of the rear field of view of a vehicle.
  • the RVCS 100 is also coupled to a display 104 configured to display the video sequence along with any overlays and warnings that may be generated as a result of processing the video sequence in the RVCS 100.
  • the ROM 112 may be used to store the power on reset (POR) boot code.
  • the flash memory 114 may be used to store secondary boot code (i.e., as a secondary boot loader) and application code.
  • the MCU 106 serves as the communication interface between the SOC 108 and the vehicular network. Accordingly, the MCU 106 hosts the network protocol stack, which is usually a controller area network (CAN) stack.
  • the multiprocessor SOC 108 hosts the RVCS application.
  • the RVCS of FIG. 1 is booted as follows. Upon POR, one of the processors of the multiprocessor SOC 108 is boot loaded by code stored in the ROM 1 12. After execution of the initial built in self tests (BIST), control is passed to a secondary boot loader read from the flash memory 114 into RAM 116. The secondary boot loader prepares the SOC 108 for executing the RVCS application, performing functions such as initializing essential phased lock loops and clocks, enabling peripherals, loading the multiprocessor application images into RAM 116, and booting the other processors in the SOC 108. After the other processors are booted, the secondary boot loader passes control to the processor which will execute the RVCS application.
  • BIST initial built in self tests
  • All processors of the multiprocessor SOC 108 are booted before the RVCS application begins execution. Thus, the display of the video stream from the camera sensor 102 cannot begin until all the processors are booted. The display delay incurred due to this boot time may be annoying to the driver of the vehicle and may also impact safety.
  • FIG. 2 illustrates the simplified data flow of an example conventional RVCS application.
  • the simplified data flow of the RVCS application is illustrated using the Vision Software Development Kit (SDK) available from Texas Instruments Incorporated (TI).
  • SDK Vision Software Development Kit
  • TI Texas Instruments Incorporated
  • the TI Vision SDK is a multiprocessor software development platform for TI's family of ADAS SOCs.
  • the software framework allows users to create different ADAS application data flows involving video capture, video pre-processing, video analytics algorithms and video display.
  • the Vision SDK is based on a framework referred to as the "Links and Chains" framework and the user API to this framework is called "Link API.”
  • links are software modules implementing a processing step in a video processing data flow.
  • Each link executes as a separate thread and includes a message box that allows other links to communicate with that link.
  • Each link also implements an interface which allows other links to directly exchange video frames and/or bits streams with the link.
  • the unit of exchange between links is a system buffer.
  • a system buffer includes at least a buffer type field, a channel number identifying a video/processing channel in the system, a time stamp, a sequence number, a payload size, and a payload pointer.
  • the Link API enables creation, control, and connection of links.
  • the control code is written on a single processor.
  • the Link API uses inter-processor communication (IPC) to control links on different processors.
  • IPC inter-processor communication
  • Each link has a link identifier that indicates which processor executes the link.
  • a connection of links is referred to as a chain.
  • the chain represents the data flow of the application. After a chain is initiated, video frames "flow" through the chain without need for user application intervention.
  • Table 1 includes brief descriptions of some of the links provided by the Vision SDK.
  • FIG. 3 is an example of the Vision SDK software stack implemented on a configuration of the TDA3x SOC 300, one of the ADAS SOCs available from Texas Instruments.
  • the SOC 300 of this example includes two image processor units (IPU), two digital signal processor (DSP) from the TMS320C66x family of signal processors available from Texas Instruments, and an embedded vision engine (EVE), also referred to as a vision processor or vision hardware accelerator.
  • IPU image processor units
  • DSP digital signal processor
  • EVE embedded vision engine
  • FIG. 3 is an example of the Vision SDK software stack implemented on a configuration of the TDA3x SOC 300, one of the ADAS SOCs available from Texas Instruments.
  • IPU image processor units
  • DSP digital signal processor
  • EVE embedded vision engine
  • FIG. 3 is an example of the Vision SDK software stack implemented on a configuration of the TDA3x SOC 300, one of the ADAS SOCs available from Texas Instruments.
  • IPU image processor units
  • DSP
  • the depicted simplified data flow assumes the RVCS 100 of FIG. 1, in which the SOC 100 is the SOC 300 of FIG. 3.
  • the Capture link 200, the Dup link 202, the IPC OUT link 204 the IPC IN link 212, the Merge link 214, the Sync link 216, the Alg link 218, and the Display link 220 execute on IPU1 of the SOC 300.
  • the IPC IN link 206, the Alg link 208, and the IPC OUT link 210 may execute on the C66x or the EVE of the SOC 300.
  • the Capture link 200 captures frames from the camera sensor 102.
  • the Dup link 202 provides duplicate frame information to both the merge link 214 and the IPC OUT link 204.
  • the IPC OUT link 204 in conjunction with the IPC IN link 206 communicate the frame information from IPU1 to the Alg link 208 executing on the other processor.
  • the Alg link 208 implements an algorithm plugin for object detection.
  • object detection may include traffic sign recognition, lane detection and/or pedestrian detection.
  • the output of the Alg link 208 may be a list of detected objects, including the coordinates of each object and the type of each object.
  • the Merge link 214 merges the output of the Dup link 202 and the output of the Alg link 208 for consumption by the Alg link 218. In this instance, the Alg link 218 consumes both video frames from the Dup link 202 and algorithm output from the Alg link 208.
  • the Sync link 216 time synchronizes buffers from different channels.
  • the Sync link 216 matches the sources time stamps of video frames to metadata output by the Alg link 208 and forwards composite frames to the Alg link 218.
  • a composite frame includes a video frame and the Alg link 208 output for that frame in a single buffer.
  • the Alg link 218 implements a drawing algorithm. More specifically, the Alg link 218 receives composite frames and draws boundaries around detected objects in a video frame to visually indicate the detected objects.
  • the Display link 220 displays the output of the Alg link 218 on the display 104.
  • the data flow of the RVCS application is divided into two boot stages, referred to herein as an early boot stage and a late boot stage.
  • the early boot stage includes the application data flow needed for capture and display of the video stream from the camera sensor 102 while the late boot stage includes the remaining data flow of the RVCS application.
  • the early boot stage can booted and begin execution before the late boot stage is initiated.
  • FIG. 4 illustrates the simplified data flow of FIG. 2 divided into an early boot stage 400 and a late boot stage 402.
  • the early boot stage 400 includes the Capture link 200, the Dup link 202, and the Display link 220. The remainder of the links is assigned to the late boot stage 402.
  • Gate links 406, 408, 410 are added to the early boot stage 400 to control the flow of data between links in the early boot stage 400 and links in the late boot stage 402.
  • a Gate link operates as a "gate" to control of the flow of data from a previous link to the next link. For example, Gate link 406 controls the data flow from the Dup link 202 to the IPC OUT link 204.
  • a Gate link has two states: an on state in which data is allowed to flow through the link, and an off state in which data is not allowed to flow through the link. Further, when a Gate link is instantiated, the link is in the off state by default.
  • the RVCS application can issue a command to change the state of a Gate link to the on state.
  • a Merge link 404 is added to the early boot stage 400 to merge the output of the Alg link 218 and the Dup link 202 when the Gate link 410 is in the on state.
  • the link 410 forwards the channel received from the Dup link 202 to the Display link 220.
  • the application provides information regarding any input links, including any links that will not be instantiated until the application boot loads the late boot stage 402, to the Gate link 410.
  • the Merge link 404 receives all the information needed to start receiving data from the Gate link 410 at any time the Gate link 410 is changed to the on state by the application.
  • the RVCS application includes functionality to boot load the late boot stage. Accordingly, after the early boot stage of the application is executing, the application initiates the boot loading of the late boot stage.
  • the secondary boot loader (SBL) is modified to boot only those processors needed by the early boot stage of the application and to include interfaces, i.e., application program interfaces (APIs), to allow the application to boot other processors and enable peripherals as needed for the late boot stage. More specifically, the SBL may be split into three layers: an SBL library layer, an SBL Utility layer, and an SBL application.
  • the SBL library layer contains APIs that may be used by an application for booting processors and for parsing and loading images. This library layer may be used by both the application and the boot loader application.
  • the SBL utility layer contains APIs for communicating between boot media and the master processor (i.e., the processor executing the application, APIs for data transfer, and APIs for interacting with various peripherals). This layer is used only by the boot loader application.
  • the SBL application contains the secondary boot loader application that loads and boots the application image, e.g., the early boot stage of the application. An example of such an SBL is described in R. Garg and S. R., "TDA3xx Secondary Bootloader (SBL)", Texas Instruments, January, 2016, pp. 1-30, which is incorporated by reference herein.
  • FIG. 5 is a sequence diagram illustrating the boot process of the RVCS 100 using the modified SBL.
  • the processor that will execute the RVCS application is boot loaded by the ROM boot loader.
  • control is passed to the SBL application read from the flash memory 114 into RAM 116.
  • the SBL application boots the processors needed for the initial boot stage of the RVCS application, e.g., IPU1 of SOC 300 (the master processor) and the processor hosting the CAN stack.
  • the SBL application also enables any peripherals needed for the initially boot stage, loads the image for the early boot stage of the RVCS application into RAM 116, and initiates execution of the early boot stage code.
  • display of video frames begins.
  • all of the Gate links (FIG. 4) are in the off state.
  • the RVCS application then boots loads and synchronizes the other processors required for the late boot stage using the APIs of the SBL library. Finally, the RVCS application starts execution of the late boot stage. As part of starting the late boot stage, the RVCS application sends commands to each of the Gate links (FIG. 4) to change the state of these links to on, allowing data to flow between the early boot stage links and the late boot stage links.
  • the Gate links FIG. 4
  • the RVCS examples above illustrate optimized booting in which an automotive safety application is divided into two boot stages.
  • the data flow of an automotive safety application is divided into more than two boot stages such that the initial boot stage has the highest boot priority, i.e., will be boot loaded first, and the remaining boot stages have lower boot priorities.
  • the processors needed for executing the functionality of the application assigned to the boot stage are booted, if not already booted during an earlier boot stage. Also, booting of the remaining stages is managed by the safely application.
  • FIG. 6 is a flow diagram of a method for booting an automotive safety system in which the application software is partitioned into multiple boot stages.
  • the application software is partitioned such that functionality of the application that needs to come on line as soon as possible, e.g., capturing and displaying video frames, is included in the boot stage that will be boot loaded first.
  • the remaining functionality of the application software is partitioned into boot stages that are boot loaded under control of the application software.
  • the flow of data between boot stages is controlled by software gate modules, such as the above described Gate link, which enable and disable data flow through the modules according to commands from the application software.
  • software gate modules such as the above described Gate link, which enable and disable data flow through the modules according to commands from the application software.
  • any gate modules in the boot stage may be disabled by default.
  • the application may then enable gate modules as needed to allow the flow of data between boot stages.
  • the initial boot stage of the safety system application is boot loaded 600 onto one or more processors of a multiprocessor SOC. Any peripherals needed for execution of the initial boot stage are also enabled.
  • the initial boot stage begins execution. At this point, data flow between the initial boot stage and any subsequent boot stages is disabled. Accordingly, any gate modules in the initial boot stage are configured to not allow the flow of data through the modules.
  • the safety system application then boot loads 602 another boot stage of the application on one or more other processors of the multiprocessor SOC. Any peripherals needed for execution of the initial boot stage that are not already enabled are also enabled. Accordingly, the boot loading of the next boot stage is controlled by the safety system application.
  • the safety system application may manage the boot loading of the next boot stage using an API of a secondary boot loader, such as the secondary boot loader described hereinabove.
  • the next boot stage begins execution. At this point, data flow between the newly booted boot stage and the initial boot stage and between the newly booted boot stage and any boot stages yet to be boot loaded is disabled. Accordingly, the gate modules in the newly booted boot stage are configured to not allow the flow of data through the modules.
  • the safety system application then enables 604 the flow of data between the initial boot stage and the newly booted boot stage. Accordingly, the safety system application sends a command to any gate modules controlling the flow of data between the two boot stages that enables the flow of data through those modules. Any gate modules in the two boot stages that control the data flow to boot stages not yet boot loaded are not enabled. The safety system application 604 then repeats the boot loading of another boot stage and enabling of data flow for any remaining boot stages 606. For any boot stage boot loaded after the second boot stage, the flow of data is enabled as needed between that boot stage and any of the previously boot loaded boot stages.
  • the automotive safety system is a RVCS.
  • Example embodiments are possible for other automotive safety systems, such as back over prevention, parking assistance, front collision warning, and automatic braking.
  • the early boot stage may be similar to that of the RVCS example in order to start displaying the video stream(s) quickly and the late boot stage may include the remainder of the safety system application software.
  • embodiments have been described herein in relation to embedded multiprocessor systems used for automotive safety.
  • Example embodiments are possible for other embedded multiprocessor systems, such as automotive infotainment, heads up displays, and consumer electronics (e.g., wearable sports cameras).
  • Couple and derivatives thereof are intended to mean an indirect, direct, optical, and/or wireless electrical connection. For example, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, and/or through a wireless electrical connection.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

In described examples, an embedded multiprocessor system (100) includes: a multiprocessor system on a chip (SOC) (108); a memory (114) coupled to the multiprocessor SOC (108), the memory (114) storing application software partitioned into an initial boot stage and at least one additional boot stage; and a secondary boot loader configured to boot load the initial boot stage on at least one processor of the multiprocessor SOC (108). The initial boot stage begins executing, and flow of data from the initial boot stage to the at least one additional boot stage is disabled. The application software is configured to boot load a second boot stage of the at least one additional boot stage on at least one other processor of the multiprocessor SOC (108) and to enable flow of data between the initial boot stage and the second boot stage.

Description

METHOD AND SYSTEM FOR BOOT TIME OPTIMIZATION OF
EMBEDDED MULTIPROCESSOR SYSTEMS
[0001] This relates generally to embedded multiprocessor systems, and more particularly to boot time optimization for applications executing on such systems.
BACKGROUND
[0002] A class of safety systems, referred to as advanced driver assistance systems (ADAS), has been introduced into automobiles to reduce human operation error. Such systems may provide various functionality, such as rear-view facing cameras, electronic stability control, and vision-based pedestrian detection systems. The boot time of an automotive safety system may be crucial for safety and important to the overall user experience.
[0003] For example, an automotive safety system, such as a rear view camera system (RVCS) may be provided to show the rear view of the vehicle when the reverse gear of the vehicle is engaged. The RVCS may simply display the rear view or may include more intelligence to detect obstacles and provide visual and/or audible warnings to the driver. In either instance, the boot time of the RVCS is critical for safety and, if overly long, affects the overall user experience.
SUMMARY
[0004] In described examples for boot time optimization in embedded multiprocessor systems, an embedded multiprocessor system includes: a multiprocessor system on a chip (SOC); a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an initial boot stage and at least one additional boot stage; and a secondary boot loader configured to boot load the initial boot stage on at least one processor of the multiprocessor SOC. The initial boot stage begins executing, and flow of data from the initial boot stage to the at least one additional boot stage is disabled. The application software is configured to boot load a second boot stage of the at least one additional boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the initial boot stage and the second boot stage.
[0005] In at least one example, a method for booting an embedded multiprocessor system includes boot loading an initial boot stage of application software of the embedded multiprocessor system on at least one processor of a multiprocessor system on a chip (SOC) in the embedded multiprocessor system, wherein the initial boot stage begins executing and flow of data from the initial boot stage to a subsequent boot stage of the application software is disabled, boot loading, under control of the application software, the subsequent boot stage of the application software on at least one other processor of the multiprocessor SOC, and enabling flow of data between the early boot stage and the subsequent boot stage by the application software.
[0006] In at least one example, an automotive safety system includes: a multiprocessor system on a chip (SOC); a camera coupled to the multiprocessor SOC; a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an early boot stage and a late boot stage, wherein the early boot stage is configured to capture video frames from the camera and to display the video frames on a display device, and the late boot stage is configured to detect objects in the video frames; and a secondary boot loader configured to boot load the early boot stage on a master processor of the multiprocessor SOC. The early boot stage begins executing, and flow of data from the early boot stage to the late boot stage is disabled. The application software is configured to boot load the late boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the early boot stage and the late boot stage.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] FIG. 1 is a block diagram of an example rear view camera system (RVCS).
[0008] FIG. 2 illustrates the simplified data flow of an example conventional RVCS application.
[0009] FIG. 3 is an example of a Vision Software Development Kit (SDK) software stack implemented on an example system on a chip (SOC).
[0010] FIG. 4 is illustrates the simplified data flow of FIG. 2 divided into an early boot stage and a late boot stage.
[0011] FIG. 5 is a sequence diagram illustrating an optimized boot process for the RVCS of FIG. 1.
[0012] FIG. 6 is a flow diagram of a method for booting an automotive safety system. DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS
[0013] Like elements in the various figures are denoted by like reference numerals for consistency.
[0014] Embodiments of the disclosure provide for boot time optimization for embedded multiprocessor systems such as advanced driver assistance systems (ADAS) that enable rapid boot loading of high priority portions of application software and delayed booting of lower priority portions. For example, in a rear view camera system (RVCS), boot priority may be given to display of the first frame of the rear view video while booting of other parts of the RVCS application such as object detection is given lower priority. In some embodiments, the application software manages the boot order and boot loading of the lower priority portions of the application.
[0015] Embodiments are explained herein in reference to an example RVCS. Example embodiments are possible for other automotive safety systems and other embedded multiprocessor systems. Generally, an automotive RVCS is a real time embedded system implemented as a hardware unit with external analog and digital interfaces. FIG. 1 is a block diagram of an example RVCS 100. The RVCS 100 includes a multi-processor system-on-a-chip (SOC) 108, memory devices including read only memory 112, flash memory 114, and random access memory (RAM) 116, a microcontroller (MCU) 106, and a power management integrated circuit (PMIC) 110. The RVCS is coupled to a camera sensor 102 configured to capture a video sequence of the rear field of view of a vehicle. The RVCS 100 is also coupled to a display 104 configured to display the video sequence along with any overlays and warnings that may be generated as a result of processing the video sequence in the RVCS 100.
[0016] The ROM 112 may be used to store the power on reset (POR) boot code. The flash memory 114 may be used to store secondary boot code (i.e., as a secondary boot loader) and application code. The MCU 106 serves as the communication interface between the SOC 108 and the vehicular network. Accordingly, the MCU 106 hosts the network protocol stack, which is usually a controller area network (CAN) stack. The multiprocessor SOC 108 hosts the RVCS application.
[0017] Conventionally, the RVCS of FIG. 1 is booted as follows. Upon POR, one of the processors of the multiprocessor SOC 108 is boot loaded by code stored in the ROM 1 12. After execution of the initial built in self tests (BIST), control is passed to a secondary boot loader read from the flash memory 114 into RAM 116. The secondary boot loader prepares the SOC 108 for executing the RVCS application, performing functions such as initializing essential phased lock loops and clocks, enabling peripherals, loading the multiprocessor application images into RAM 116, and booting the other processors in the SOC 108. After the other processors are booted, the secondary boot loader passes control to the processor which will execute the RVCS application. All processors of the multiprocessor SOC 108 are booted before the RVCS application begins execution. Thus, the display of the video stream from the camera sensor 102 cannot begin until all the processors are booted. The display delay incurred due to this boot time may be annoying to the driver of the vehicle and may also impact safety.
[0018] FIG. 2 illustrates the simplified data flow of an example conventional RVCS application. In this example, the simplified data flow of the RVCS application is illustrated using the Vision Software Development Kit (SDK) available from Texas Instruments Incorporated (TI). A brief overview of the Vision SDK is provided herein. Additional information may be found in K. Chitnis, et al., "TI Vision SDK, Optimized Vision Libraries for ADAS Systems," Texas Instruments, April, 2014, which is incorporated by reference herein.
[0019] The TI Vision SDK is a multiprocessor software development platform for TI's family of ADAS SOCs. The software framework allows users to create different ADAS application data flows involving video capture, video pre-processing, video analytics algorithms and video display. The Vision SDK is based on a framework referred to as the "Links and Chains" framework and the user API to this framework is called "Link API."
[0020] Generally, links are software modules implementing a processing step in a video processing data flow. Each link executes as a separate thread and includes a message box that allows other links to communicate with that link. Each link also implements an interface which allows other links to directly exchange video frames and/or bits streams with the link. The unit of exchange between links is a system buffer. Multiple types of system buffers exist, such as video frame, video bit stream, and meta data types. A system buffer includes at least a buffer type field, a channel number identifying a video/processing channel in the system, a time stamp, a sequence number, a payload size, and a payload pointer.
[0021] The Link API enables creation, control, and connection of links. The control code is written on a single processor. Internally, the Link API uses inter-processor communication (IPC) to control links on different processors. Each link has a link identifier that indicates which processor executes the link. A connection of links is referred to as a chain. The chain represents the data flow of the application. After a chain is initiated, video frames "flow" through the chain without need for user application intervention. Table 1 includes brief descriptions of some of the links provided by the Vision SDK.
Table 1
Figure imgf000007_0001
[0022] FIG. 3 is an example of the Vision SDK software stack implemented on a configuration of the TDA3x SOC 300, one of the ADAS SOCs available from Texas Instruments. The SOC 300 of this example includes two image processor units (IPU), two digital signal processor (DSP) from the TMS320C66x family of signal processors available from Texas Instruments, and an embedded vision engine (EVE), also referred to as a vision processor or vision hardware accelerator. For example, additional information regarding the architecture of the TDA3x SOC is located in "TDA3x SoC Processors for Advanced Driver Assist Systems (ADAS) Technical Brief," Texas Instruments Incorporated, October 2014, which is incorporated by reference herein. Each of the software stacks 302, 304, 306, 308 illustrates the software executing on the respective processors of the SOC 300. Table 2 contains a brief description of the software layers.
Table 2
Figure imgf000008_0001
[0023] Referring again to FIG. 2, the depicted simplified data flow assumes the RVCS 100 of FIG. 1, in which the SOC 100 is the SOC 300 of FIG. 3. In this data flow, the Capture link 200, the Dup link 202, the IPC OUT link 204 the IPC IN link 212, the Merge link 214, the Sync link 216, the Alg link 218, and the Display link 220 execute on IPU1 of the SOC 300. The IPC IN link 206, the Alg link 208, and the IPC OUT link 210 may execute on the C66x or the EVE of the SOC 300. The Capture link 200 captures frames from the camera sensor 102. The Dup link 202 provides duplicate frame information to both the merge link 214 and the IPC OUT link 204. The IPC OUT link 204 in conjunction with the IPC IN link 206 communicate the frame information from IPU1 to the Alg link 208 executing on the other processor. In this example, the Alg link 208 implements an algorithm plugin for object detection. For example, object detection may include traffic sign recognition, lane detection and/or pedestrian detection.
[0024] The IPC OUT link 210 in conjunction with the IPC IN link 212 communicate the output of the Alg link 208 to the Merge link 214 on IPUl . For example, the output of the Alg link 208 may be a list of detected objects, including the coordinates of each object and the type of each object. The Merge link 214 merges the output of the Dup link 202 and the output of the Alg link 208 for consumption by the Alg link 218. In this instance, the Alg link 218 consumes both video frames from the Dup link 202 and algorithm output from the Alg link 208.
[0025] The Sync link 216 time synchronizes buffers from different channels. In this instance, the Sync link 216 matches the sources time stamps of video frames to metadata output by the Alg link 208 and forwards composite frames to the Alg link 218. A composite frame includes a video frame and the Alg link 208 output for that frame in a single buffer. In this example, the Alg link 218 implements a drawing algorithm. More specifically, the Alg link 218 receives composite frames and draws boundaries around detected objects in a video frame to visually indicate the detected objects. The Display link 220 displays the output of the Alg link 218 on the display 104.
[0026] As mentioned hereinabove, conventionally, all processors of the RVCS 100 are booted before the display of the video stream can begin. Further, as shown in the simplified data flow of FIG. 2, the initial frames are processed through all the links of the data flow before anything is shown on the display. In some embodiments, the data flow of the RVCS application is divided into two boot stages, referred to herein as an early boot stage and a late boot stage. The early boot stage includes the application data flow needed for capture and display of the video stream from the camera sensor 102 while the late boot stage includes the remaining data flow of the RVCS application. The early boot stage can booted and begin execution before the late boot stage is initiated.
[0027] FIG. 4 illustrates the simplified data flow of FIG. 2 divided into an early boot stage 400 and a late boot stage 402. The early boot stage 400 includes the Capture link 200, the Dup link 202, and the Display link 220. The remainder of the links is assigned to the late boot stage 402. To facilitate the division of the data flow into boot stages, Gate links 406, 408, 410 are added to the early boot stage 400 to control the flow of data between links in the early boot stage 400 and links in the late boot stage 402. A Gate link operates as a "gate" to control of the flow of data from a previous link to the next link. For example, Gate link 406 controls the data flow from the Dup link 202 to the IPC OUT link 204. A Gate link has two states: an on state in which data is allowed to flow through the link, and an off state in which data is not allowed to flow through the link. Further, when a Gate link is instantiated, the link is in the off state by default. The RVCS application can issue a command to change the state of a Gate link to the on state.
[0028] Also, a Merge link 404 is added to the early boot stage 400 to merge the output of the Alg link 218 and the Dup link 202 when the Gate link 410 is in the on state. When the Gate link 410 is in the off state, the link 410 forwards the channel received from the Dup link 202 to the Display link 220. When the Gate link 410 is instantiated in the early boot stage 400, the application provides information regarding any input links, including any links that will not be instantiated until the application boot loads the late boot stage 402, to the Gate link 410. During the boot loading of the early boot stage 400, the Merge link 404 receives all the information needed to start receiving data from the Gate link 410 at any time the Gate link 410 is changed to the on state by the application.
[0029] In addition to splitting the data flow of the RVCS application into an early boot stage and a late boot stage, the RVCS application includes functionality to boot load the late boot stage. Accordingly, after the early boot stage of the application is executing, the application initiates the boot loading of the late boot stage. In some embodiments, the secondary boot loader (SBL) is modified to boot only those processors needed by the early boot stage of the application and to include interfaces, i.e., application program interfaces (APIs), to allow the application to boot other processors and enable peripherals as needed for the late boot stage. More specifically, the SBL may be split into three layers: an SBL library layer, an SBL Utility layer, and an SBL application.
[0030] The SBL library layer contains APIs that may be used by an application for booting processors and for parsing and loading images. This library layer may be used by both the application and the boot loader application. For example, the SBL utility layer contains APIs for communicating between boot media and the master processor (i.e., the processor executing the application, APIs for data transfer, and APIs for interacting with various peripherals). This layer is used only by the boot loader application. The SBL application contains the secondary boot loader application that loads and boots the application image, e.g., the early boot stage of the application. An example of such an SBL is described in R. Garg and S. R., "TDA3xx Secondary Bootloader (SBL)", Texas Instruments, January, 2016, pp. 1-30, which is incorporated by reference herein.
[0031] FIG. 5 is a sequence diagram illustrating the boot process of the RVCS 100 using the modified SBL. Upon POR, the processor that will execute the RVCS application is boot loaded by the ROM boot loader. After execution of the initial built in self tests (BIST), control is passed to the SBL application read from the flash memory 114 into RAM 116. The SBL application boots the processors needed for the initial boot stage of the RVCS application, e.g., IPU1 of SOC 300 (the master processor) and the processor hosting the CAN stack. The SBL application also enables any peripherals needed for the initially boot stage, loads the image for the early boot stage of the RVCS application into RAM 116, and initiates execution of the early boot stage code. Upon execution of the early boot stage code, display of video frames begins. At this point, all of the Gate links (FIG. 4) are in the off state.
[0032] The RVCS application then boots loads and synchronizes the other processors required for the late boot stage using the APIs of the SBL library. Finally, the RVCS application starts execution of the late boot stage. As part of starting the late boot stage, the RVCS application sends commands to each of the Gate links (FIG. 4) to change the state of these links to on, allowing data to flow between the early boot stage links and the late boot stage links.
[0033] The RVCS examples above illustrate optimized booting in which an automotive safety application is divided into two boot stages. In some embodiments, the data flow of an automotive safety application is divided into more than two boot stages such that the initial boot stage has the highest boot priority, i.e., will be boot loaded first, and the remaining boot stages have lower boot priorities. For each boot stage, the processors needed for executing the functionality of the application assigned to the boot stage are booted, if not already booted during an earlier boot stage. Also, booting of the remaining stages is managed by the safely application.
[0034] FIG. 6 is a flow diagram of a method for booting an automotive safety system in which the application software is partitioned into multiple boot stages. The application software is partitioned such that functionality of the application that needs to come on line as soon as possible, e.g., capturing and displaying video frames, is included in the boot stage that will be boot loaded first. The remaining functionality of the application software is partitioned into boot stages that are boot loaded under control of the application software.
[0035] The flow of data between boot stages is controlled by software gate modules, such as the above described Gate link, which enable and disable data flow through the modules according to commands from the application software. When a boot stage is boot loaded, any gate modules in the boot stage may be disabled by default. The application may then enable gate modules as needed to allow the flow of data between boot stages.
[0036] As shown in FIG. 6, initially the initial boot stage of the safety system application is boot loaded 600 onto one or more processors of a multiprocessor SOC. Any peripherals needed for execution of the initial boot stage are also enabled. The initial boot stage begins execution. At this point, data flow between the initial boot stage and any subsequent boot stages is disabled. Accordingly, any gate modules in the initial boot stage are configured to not allow the flow of data through the modules.
[0037] The safety system application then boot loads 602 another boot stage of the application on one or more other processors of the multiprocessor SOC. Any peripherals needed for execution of the initial boot stage that are not already enabled are also enabled. Accordingly, the boot loading of the next boot stage is controlled by the safety system application. The safety system application may manage the boot loading of the next boot stage using an API of a secondary boot loader, such as the secondary boot loader described hereinabove. The next boot stage begins execution. At this point, data flow between the newly booted boot stage and the initial boot stage and between the newly booted boot stage and any boot stages yet to be boot loaded is disabled. Accordingly, the gate modules in the newly booted boot stage are configured to not allow the flow of data through the modules.
[0038] The safety system application then enables 604 the flow of data between the initial boot stage and the newly booted boot stage. Accordingly, the safety system application sends a command to any gate modules controlling the flow of data between the two boot stages that enables the flow of data through those modules. Any gate modules in the two boot stages that control the data flow to boot stages not yet boot loaded are not enabled. The safety system application 604 then repeats the boot loading of another boot stage and enabling of data flow for any remaining boot stages 606. For any boot stage boot loaded after the second boot stage, the flow of data is enabled as needed between that boot stage and any of the previously boot loaded boot stages.
Other Embodiments
[0039] For example, embodiments have been described herein in which the automotive safety system is a RVCS. Example embodiments are possible for other automotive safety systems, such as back over prevention, parking assistance, front collision warning, and automatic braking. For example, for other camera based safety systems, the early boot stage may be similar to that of the RVCS example in order to start displaying the video stream(s) quickly and the late boot stage may include the remainder of the safety system application software.
[0040] In another example, embodiments have been described herein in relation to embedded multiprocessor systems used for automotive safety. Example embodiments are possible for other embedded multiprocessor systems, such as automotive infotainment, heads up displays, and consumer electronics (e.g., wearable sports cameras).
[0041] In another example, embodiments have been described herein in relation to a TDA3x multiprocessor SOC and the Vision SDK. Example embodiments are possible for other multiprocessor SOCs and/or other software development frameworks for multiprocessor software development.
[0042] Although method steps may be presented and described herein in a sequential fashion, one or more of the steps shown in the figures and/or described herein may be performed concurrently, may be combined, and/or may be performed in a different order than the order shown in the figures and/or described herein.
[0043] Components in multiprocessor systems may be referred to by different names and/or may be combined in ways not shown herein. Also, the term "couple" and derivatives thereof are intended to mean an indirect, direct, optical, and/or wireless electrical connection. For example, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, and/or through a wireless electrical connection.
[0044] Modifications are possible in the described embodiments, and other embodiments are possible, within the scope of the claims.

Claims

CLAIMS What is claimed is:
1. An embedded multiprocessor system comprising:
a multiprocessor system on a chip (SOC);
a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an initial boot stage and at least one additional boot stage; and
a secondary boot loader configured to boot load the initial boot stage on at least one processor of the multiprocessor SOC, wherein the initial boot stage begins executing, and flow of data from the initial boot stage to the at least one additional boot stage is disabled;
wherein the application software is configured to boot load a second boot stage of the at least one additional boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the initial boot stage and the second boot stage.
2. The embedded multiprocessor system of claim 1, wherein flow of data between boot stages of the application software is controlled by one or more gate modules, each gate module configured to enable or disable flow of data through the module under command of the application software.
3. The embedded multiprocessor system of claim 1, wherein the application software is configured to use a program interface to the secondary boot loader to boot load the second boot stage.
4. The embedded multiprocessor system of claim 1, wherein the embedded multiprocessor system is coupled to a camera to receive video frames, and the initial boot stage is configured to capture video frames from the camera and display the video frames on a display device.
5. The embedded multiprocessor system of claim 4, wherein the embedded multiprocessor system is a rear view camera system.
6. The embedded multiprocessor system of claim 5, wherein the secondary boot loader is also configured to boot load a processor hosting a controller area network (CAN) stack.
7. The embedded multiprocessor system of claim 1, wherein the at least one processor comprises an image processor, and the at least one other processor comprises at least one of a digital signal processor and a vision processor.
8. The embedded multiprocessor system of claim 1, wherein the embedded multiprocessor system is an automotive safety system.
9. A method for booting an embedded multiprocessor system, the method comprising:
boot loading an initial boot stage of application software of the embedded multiprocessor system on at least one processor of a multiprocessor system on a chip (SOC) in the embedded multiprocessor system, wherein the initial boot stage begins executing, and flow of data from the initial boot stage to a subsequent boot stage of the application software is disabled;
boot loading, under control of the application software, the subsequent boot stage of the application software on at least one other processor of the multiprocessor SOC; and
enabling flow of data between the early boot stage and the subsequent boot stage by the application software.
10. The method of claim 9, wherein flow of data between boot stages of the application software is controlled by one or more gate modules, each gate module configured to enable or disable flow of data through the module under command of the application software.
11. The method of claim 9, wherein the boot loading an initial stage is performed by a secondary boot loader, and the application software uses a program interface to the secondary boot loader to boot load the subsequent boot stage.
12. The method of claim 9, wherein the initial boot stage includes functionality to capture and display video frames on a display device.
13. The method of claim 9, wherein the at least one processor comprises an image processor, and the at least one other processor comprises at least one of a digital signal processor and a vision processor.
14. The method of claim 9, wherein the embedded multiprocessor system is a rear view camera system.
15. The method of claim 14, further comprising boot loading a processor hosting a controller area network (CAN) stack.
16. An automotive safety system comprising:
a multiprocessor system on a chip (SOC);
a camera coupled to the multiprocessor SOC;
a memory coupled to the multiprocessor SOC, the memory storing application software partitioned into an early boot stage and a late boot stage, wherein the early boot stage is configured to capture video frames from the camera and to display the video frames on a display device, and the late boot stage is configured to detect objects in the video frames; and a secondary boot loader configured to boot load the early boot stage on a master processor of the multiprocessor SOC, wherein the early boot stage begins executing, and flow of data from the early boot stage to the late boot stage is disabled;
wherein the application software is configured to boot load the late boot stage on at least one other processor of the multiprocessor SOC and to enable flow of data between the early boot stage and the late boot stage.
17. The automotive safety system of claim 16, wherein flow of data between the early boot stage and the late boot stage is controlled by one or more gate modules, each gate module configured to enable or disable flow of data through the module under command of the application software.
18. The automotive safety system of claim 16, wherein the application software is configured to use a program interface to the secondary boot loader to boot load the late boot stage.
19. The automotive safety system of claim 16, wherein the master processor is an image processor, and the at least one other processor comprises at least one of a digital signal processor and a vision processor.
20. The automotive safety system of claim 16, wherein the automotive safety system is a rear view camera system.
PCT/US2016/059797 2015-10-30 2016-10-31 Method and system for boot time optimization of embedded multiprocessor systems WO2017075623A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201680063080.2A CN108351775B (en) 2015-10-30 2016-10-31 Method and system for optimizing starting time of embedded multiprocessor system

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN5868/CHE/2015 2015-10-30
IN5868CH2015 2015-10-30
US15/087,856 2016-03-31
US15/087,856 US10956169B2 (en) 2015-10-30 2016-03-31 Method and system for boot time optimization of embedded multiprocessor systems

Publications (1)

Publication Number Publication Date
WO2017075623A1 true WO2017075623A1 (en) 2017-05-04

Family

ID=58630851

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/059797 WO2017075623A1 (en) 2015-10-30 2016-10-31 Method and system for boot time optimization of embedded multiprocessor systems

Country Status (1)

Country Link
WO (1) WO2017075623A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019180209A1 (en) * 2018-03-22 2019-09-26 Continental Automotive Gmbh Prioritised control and/or operator unit for vehicle systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6179489B1 (en) * 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
RU2268829C2 (en) * 2004-03-12 2006-01-27 Михаил Викторович Ерещенко Automobile on-board information system
US7426437B2 (en) * 1997-10-22 2008-09-16 Intelligent Technologies International, Inc. Accident avoidance systems and methods
US20140160291A1 (en) * 2012-12-05 2014-06-12 Magna Electronics Inc. Vehicle vision system utilizing camera synchronization
US8903798B2 (en) * 2010-05-28 2014-12-02 Microsoft Corporation Real-time annotation and enrichment of captured video

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6179489B1 (en) * 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US7426437B2 (en) * 1997-10-22 2008-09-16 Intelligent Technologies International, Inc. Accident avoidance systems and methods
RU2268829C2 (en) * 2004-03-12 2006-01-27 Михаил Викторович Ерещенко Automobile on-board information system
US8903798B2 (en) * 2010-05-28 2014-12-02 Microsoft Corporation Real-time annotation and enrichment of captured video
US20140160291A1 (en) * 2012-12-05 2014-06-12 Magna Electronics Inc. Vehicle vision system utilizing camera synchronization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KURODA HIROSHI ET AL.: "Advanced Vehicle Safety Control System.", HITACHI REVIEW, vol. 63, no. 2, 2014, pages 61 - 66, XP055378660 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019180209A1 (en) * 2018-03-22 2019-09-26 Continental Automotive Gmbh Prioritised control and/or operator unit for vehicle systems

Similar Documents

Publication Publication Date Title
US11681534B2 (en) Method and system for boot time optimization of embedded multiprocessor systems
TWI827642B (en) Apparatus, method, and computer-readable medium of sharing a sensor in a multiple system on chip environment
US20080077786A1 (en) Rapid-boot computing device with dual operating systems
US20190095212A1 (en) Neural network system and operating method of neural network system
US20190132555A1 (en) Methods and systems to broadcast sensor outputs in an automotive environment
CN106462517B (en) Display is identified early stage in multiple processor structure
JP2020129386A (en) Low power computer imaging
EP3852342B1 (en) Automated and assisted parking based on in-vehicle operating systems
JP2023021911A (en) Performing multiple point table lookups in single cycle in system on chip
JP2023024945A (en) Setting of direct memory access system for characteristics trace action in system-on-chip using vector processor
US11605319B2 (en) Surround-view with seamless transition to 3D view system and method
JP2023021912A (en) Accelerating table lookups using decoupled lookup table accelerators in system on chip
WO2017075623A1 (en) Method and system for boot time optimization of embedded multiprocessor systems
US10162647B2 (en) Information apparatus
Yamada et al. A 20.5 TOPS multicore SoC with DNN accelerator and image signal processor for automotive applications
US11431872B2 (en) Buffer management for plug-in architectures in computation graph structures
CN114339071A (en) Image processing circuit, image processing method and electronic device
CN110622209B (en) System and method for seamless transition of a surround view to a 3D view
US10037169B2 (en) Image processing semiconductor device and image processing device
CN113610135B (en) Image processing method, device, computer equipment and storage medium
CN113038004B (en) Multi-window image previewing method and device, computer equipment and storage medium
CN115686748B (en) Service request response method, device, equipment and medium under virtualization management
KR20140081192A (en) Apparatus and method for processing image from separate camera
CN117296082A (en) Image processing method and device
CN117591348A (en) System on chip, data processing system with system on chip and operation method thereof

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: 16861068

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: 16861068

Country of ref document: EP

Kind code of ref document: A1