The subject disclosure relates to methods for reusing binary software code across multiple hardware platforms in a vehicle.
The electronic features in automotive environments are generally controlled by software operating on a processor of the vehicle. Over a lifetime of the vehicle, the processor may be upgraded to another processor, requiring either that the software application from the replaced processor be recompiled to operate on the new processor or that a new piece of software be written to take the place of the original software application. Recompilation may be impractical when the source code is unavailable or if the source code is poorly documented. Also, software modification is time-consuming and may not be cost-effective.
In one exemplary embodiment, a method of operating a vehicle is disclosed. A source code for a software application is compiled to obtain a binary executable program for controlling an operation of the vehicle, the binary executable program being operable on a first processor. An instruction set simulator (ISS) and the binary executable program are loaded onto a second processor, wherein the ISS runs on the second processor and emulates operation of the first processor. The binary executable program is executed on the second processor via the ISS to operate the vehicle.
In addition to one or more of the features described herein, the second processor is an embedded processor of the vehicle. The ISS is configured to stub execution of a legacy operation of the binary executable program. The method further includes loading a software bridge onto the second processor and communicating between the binary executable program and the vehicle through the software bridge. The method further includes compiling at least one of an operating system and input/output software for operation on the first processor and running the at least one of the operating system and the input/output software on the second processor via the ISS and the software bridge. The software bridge is configured to receive to a first gateway command for a first interface from the binary executable program and implement a second gateway command for a second interface in place of the first interface to communicate to a component of the vehicle. The method further includes communicating between the binary executable program on the second processor with a software application running on a third processor.
In another exemplary embodiment, a control system for a vehicle is disclosed. The control system includes a target processor, a binary executable program and an instruction set simulator (ISS). The binary executable program is compiled to run on a legacy processor in order to operate the vehicle. The ISS is configured to run on the target processor and emulate operation of the legacy processor, wherein the binary executable program runs on the target processor via the ISS in order to operate the vehicle.
In addition to one or more of the features described herein, the target processor is an embedded processor of the vehicle. The ISS is configured to perform host execution of a legacy operation of the binary executable program. The control system further includes a software bridge configured to run on the target processor, wherein the binary executable program interfaces with the vehicle through the software bridge. The ISS and the software bridge are compiled to operate on the target processor. The software bridge is configured to receive a first gateway command for a first interface from the binary executable program and implement a second gateway command for a second interface in place of the first interface to communicate to a component of the vehicle. The control system further includes another processor in communication with the target processor, wherein the binary executable program running on the target processor communicates with a new software application running on the other processor.
In yet another exemplary embodiment, a vehicle is disclosed. The vehicle includes a target processor, a binary executable program, and an instruction set simulator (ISS). The binary executable program is compiled to operate on a legacy processor in order to control and operation of the vehicle. The ISS is configured to run on the target processor and emulate operation of the legacy processor, wherein the binary executable program runs on the target processor via the ISS in order to operate the vehicle.
In addition to one or more of the features described herein, the target processor is an embedded processor of the vehicle. The ISS is configured to perform host execution of a legacy operation of the binary executable program. The vehicle further includes a software bridge configured to run on the target processor, wherein the binary executable program interfaces with the vehicle through the software bridge. The ISS and the software bridge are compiled to operate on the target processor. The software bridge is configured to receive a first gateway command for a first interface from the binary executable program and implement a second gateway command for a second interface in place of the first interface to communicate to a component of the vehicle.
The above features and advantages, and other features and advantages of the disclosure are readily apparent from the following detailed description when taken in connection with the accompanying drawings.
Other features, advantages and details appear, by way of example only, in the following detailed description, the detailed description referring to the drawings in which:
The following description is merely exemplary in nature and is not intended to limit the present disclosure, its application or uses. It should be understood that throughout the drawings, corresponding reference numerals indicate like or corresponding parts and features.
In accordance with an exemplary embodiment,
With the ISS 312 and the software bridge 314 emulating the operation of the first processor 210,
In various embodiments, the software bridge 314 receives a command from an I/O driver of the input/output software 214 and stubs the I/O driver. The software bridge 314 replaces the command with a new I/O command in order to communicate with components of the vehicle. In particular, the software bridge 314 can receive an I/O or gateway command for communication to the electronic equipment via a network of the vehicle 100 that uses a legacy protocol. In an embodiment, where the network of the vehicle 100 has been upgraded, the software bridge 314 wraps the legacy protocol command within the protocol for the upgraded network, in order to send the I/O or gateway commend over the upgraded network. In various embodiments, the upgraded network is Ethernet network using an Ethernet communication protocol. Therefore, the operating system 212, input/output software 214, and applications can be operated on the second processor 310 without the need to be recompiled or redesigned.
As shown in
Returning to box 406, when a software bridge is to be added, the method proceeds to box 408. At box 408, the software bridge is implemented on the target processor in order to be able to execute I/O gateway functionality from the legacy I/O interface to a new communication interface, such as Ethernet for example. In box 410, the software bridge is compiled to the target processor. Then in box 412, the control unit is operated by running the binary executable file on the target processor via the ISS and the software bridge.
While the above disclosure has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from its scope. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the disclosure without departing from the essential scope thereof. Therefore, it is intended that the present disclosure not be limited to the particular embodiments disclosed, but will include all embodiments falling within the scope thereof.