Detailed Description
Features and exemplary embodiments of various aspects of the present invention will be described in detail below. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. The following description of the embodiments is merely intended to provide a better understanding of the present invention by illustrating examples of the present invention. The present invention is in no way limited to any specific configuration and algorithm set forth below, but rather covers any modification, replacement or improvement of elements, components or algorithms without departing from the spirit of the invention. In the drawings and the following description, well-known structures and techniques are not shown in order to avoid unnecessarily obscuring the present invention.
The embodiment of the invention provides a program file downloading method of an automobile electronic control unit. In one example, an Electronic Control Unit (ECU) applicable to an automobile downloads an in-vehicle program file from a remote server through an in-vehicle terminal. Or, the method is applied to a scene that a vehicle-mounted terminal with a vehicle electronic control unit downloads a vehicle-mounted program file from a remote server. The vehicle-mounted terminal and the remote server can be in wireless communication connection. For example, the vehicle-mounted terminal and the remote server communicate with each other through Wireless communication technologies such as a data network, Wireless Fidelity (WiFi), bluetooth, or zigbee, so as to implement data transmission. The vehicle-mounted terminal and the automobile electronic control unit can realize data transmission through wired communication or wireless communication.
In another example, the method and the apparatus for downloading the vehicle-mounted program file provided in the embodiment of the present invention may also be applied to a wired connection between a hardware device carrying the vehicle-mounted program file and a vehicle-mounted terminal, where the vehicle-mounted program file is transmitted to the vehicle-mounted terminal, and the vehicle-mounted program file is downloaded from the vehicle-mounted terminal to an electronic control unit of a vehicle. The vehicle-mounted terminal and the automobile electronic control unit can realize data transmission through wired communication or wireless communication.
Fig. 1 is a method for downloading a program file of an automotive electronic control unit according to an embodiment of the present invention. As shown in FIG. 1, the program file downloading method of the electronic control unit of the automobile includes steps 101 to 105
In step 101, a mapping relationship between an in-vehicle program file and a unit memory block in a flash memory of an automotive electronic control unit is acquired.
The in-vehicle program file in the automotive electronic control unit is stored in the flash memory. Before downloading the vehicle-mounted program file, a unit storage block in a flash memory of the vehicle electronic control unit can be obtained, and the corresponding relation between the vehicle-mounted program file and the unit storage block can be obtained according to the size of the vehicle-mounted program file. The number of the unit memory blocks occupied by the in-vehicle program files of different sizes also differs. By the correspondence relationship between the in-vehicle program file and the unit memory block, it is possible to obtain which part of the in-vehicle program file is stored in each unit memory block.
In one example, the unit memory block may be a minimum unit of erase and write of a flash memory of the automotive electronic control unit. In another example, the unit memory block may be an integer multiple of the minimum unit of erasure of the flash memory of the automotive electronic control unit.
In one example, the in-vehicle program file may be a program file of a control application newly downloaded by the automobile, or may be an update program file of an existing control application of the automobile. Formally, the in-vehicle program file may be an s19 file or a hex file.
In step 102, the vehicle-mounted program file is downloaded to a unit memory block in a flash memory of the vehicle electronic control unit.
In one example, if the in-vehicle program file is small, the entire in-vehicle program file may be directly downloaded to a unit memory block in a flash memory of the automotive electronic control unit.
In another example, if the in-vehicle program file is large, the in-vehicle program file may be divided into a plurality of packets, and the plurality of packets may be sequentially downloaded to the unit storage blocks in the memory of the automotive electronic control unit.
In one example, the vehicle-mounted program file can be downloaded to a unit memory block in a flash memory of an automobile electronic control unit by using a wireless transmission technology, and a professional operator is not required to connect hardware equipment carrying the vehicle-mounted program file with an interface of an automobile, so that the efficiency of downloading the vehicle-mounted program file is improved. The downloading of the vehicle-mounted program file to the unit memory block in the flash memory of the automotive electronic control unit in the above embodiment may be specifically implemented by downloading the vehicle-mounted program from the remote server to the unit memory block in the flash memory of the automotive electronic control unit through the vehicle-mounted terminal. That is, the in-vehicle terminal may download the in-vehicle program file from the remote server, and the vehicle electronic control unit may download the in-vehicle program file from the in-vehicle terminal. For example, the vehicle ecu may communicate with the in-vehicle terminal through a download Protocol such as a Universal Diagnostic Service (UDS) or a Universal Measurement and Calibration Protocol (XCP).
In one example, the in-vehicle program file may also be an encrypted in-vehicle program file.
In step 103, an interrupt write unit block is acquired.
In the process of downloading the program file to the unit storage module in the flash memory of the automotive electronic control unit, an interruption situation may occur. For example, a power failure of the vehicle electronic control unit, or a loss of a message carrying the vehicle-mounted program file received by the vehicle electronic control unit may cause an interruption of the downloading process. When the downloading process is interrupted, the electronic control unit of the automobile may have downloaded part of the content of the vehicle-mounted program file, and the unit memory block written by interruption is the unit memory block which is being written when the downloading process of the vehicle-mounted program file is interrupted. And acquiring the unit storage block which is being written when the downloading process of the vehicle-mounted program file is interrupted, so as to be convenient for continuing downloading according to the interrupted unit storage block.
In step 104, a data portion that needs to be continuously downloaded in the in-vehicle program file is obtained based on the interrupted write unit storage block and the mapping relationship.
In step 101, the mapping relationship between the vehicle-mounted program file and the unit storage block in the flash memory of the electronic control unit of the automobile is obtained, so that the data portion of the vehicle-mounted program file corresponding to the unit storage block in the mapping relationship can be searched according to the mapping relationship. The data portion of the in-vehicle program file corresponding to the unit memory block for interruption of writing, and the unit memory block after the unit memory block for interruption of writing may be a data portion of the in-vehicle program file that needs to be continuously downloaded.
In step 105, the data part which needs to be downloaded continuously in the vehicle-mounted program file is downloaded to the unit memory block in the flash memory of the automobile electronic control unit.
For example, fig. 2 is a schematic diagram illustrating a division of a unit memory block in a flash memory of an automotive ecu according to an embodiment of the present invention. As shown in fig. 2, the flash memory of the automotive electronic control unit is divided into 5 unit memory blocks, which are a unit memory block 1, a unit memory block 2, a unit memory block 3, a unit memory block 4, and a unit memory block 5, respectively. Each unit block of memory may be considered a partition of the flash memory. The in-vehicle program file corresponds to a unit memory block and can be divided into a data part 1, a data part 2, a data part 3, a data part 4, and a data part 5. The data portions 1 to 5 may be combined into an entire in-vehicle program file. Wherein, data portion 1 corresponds to unit memory block 1, data portion 2 corresponds to unit memory block 2, data portion 3 corresponds to unit memory block 3, data portion 4 corresponds to unit memory block 4, and data portion 5 corresponds to unit memory block 5. If the downloading process is interrupted and the writing into the unit storage block is interrupted as the unit storage block 4, the data part 4 and the data part 5 need to be downloaded continuously.
In the embodiment of the invention, the data part of the vehicle-mounted program file which is not effectively downloaded to the vehicle electronic control unit in the downloading process of the vehicle-mounted program file can be downloaded to the vehicle electronic control unit again. Therefore, the interruption of downloading the vehicle-mounted program file is avoided, and the whole downloading and flashing process of the vehicle-mounted program file is carried out. Thereby reducing the time taken for downloading the vehicle-mounted program file in the case of interruption.
FIG. 3 is a flowchart illustrating a method for downloading a program file from an ECU of a vehicle according to another embodiment of the present invention. Fig. 3 is different from fig. 1 in that step 104 in fig. 1 can be specifically detailed as step 1041 and step 1042 in fig. 3, step 105 in fig. 1 can be specifically detailed as step 1051 and step 1052 in fig. 3, and the program file downloading method of the automotive electronic control unit in fig. 3 can further include step 106.
In step 1041, based on the interruption writing unit storage block, the data portion of the in-vehicle program file corresponding to the start address of the interruption writing unit storage block is searched in the mapping relationship.
In one example, the mapping relationship in the above-described embodiment may include a correspondence relationship of each data portion of the in-vehicle program file and the start address of each unit memory block in the flash memory of the automobile electronic control unit. If the writing interruption into the unit memory block is known, the data part needing to be continuously downloaded can be determined according to the mapping relation.
The unit memory block can be preset with an identifier, so that different unit memory blocks have different identifiers to facilitate recording and searching. The identifier of the unit memory block can be a number, and can also be the starting address of the unit memory block.
In step 1042, the data portion of the in-vehicle program file corresponding to the start address of the interrupt write unit block and the subsequent data portions are used as the data portions of the in-vehicle program file that need to be downloaded continuously.
The data portion of the in-vehicle program file corresponding to the start address of the interruption writing unit memory block may have been written to the interruption writing unit memory block, but has not been completely written. The data written into the memory block of the interruption writing unit also belongs to the data part needing to be continuously downloaded. And taking the data part of the vehicle-mounted program file corresponding to the initial address of the interrupt writing unit storage block and the subsequent data part as data parts needing to be continuously downloaded.
In step 1051, the interrupt write unit block is erased.
The unit memory block is not written completely, and the unit memory block may be the minimum erasing unit of the flash memory in the vehicle electronic control unit. The unit memory block is erased during the interruption of writing, so that data confusion is prevented when the data part needing to be continuously downloaded is written into the unit memory block.
In step 1052, the data portion that needs to be downloaded continuously in the in-vehicle program file is downloaded to the unit memory block for interruption writing and the unit memory block after the unit memory block for interruption writing.
The data portion of the in-vehicle program file which needs to be continuously downloaded includes a data portion of the in-vehicle program file corresponding to the start address of the interrupt writing unit memory block and the subsequent data portion. The data part of the vehicle-mounted program file corresponding to the start address of the unit memory block for interruption writing is written into the unit memory block for interruption writing, and the data part after the data part of the vehicle-mounted program file corresponding to the start address of the unit memory block for interruption writing also corresponds to the unit memory block after the unit memory block for interruption writing.
In step 106, the written unit block is recorded when the in-vehicle program file is downloaded to the unit block in the flash memory of the automobile electronic control unit.
In order to make it possible to acquire the interrupted write unit block more quickly, the written unit block may be recorded while the in-vehicle program file is downloaded to the unit block in the flash memory of the vehicle electronic control unit. When the interrupted write unit block is acquired, the written unit block that is recorded last may be used as the interrupted write unit block.
In one example, the unit memory blocks may be located in a program download area in a flash memory of the automotive electronic control unit. Due to the fact that the downloaded vehicle-mounted program file can be in error in the transmission process, the downloaded vehicle-mounted program file is incomplete or is in error. Therefore, after the vehicle-mounted program file is downloaded, the integrity and accuracy of the vehicle-mounted program file can be checked. The downloaded in-vehicle program file cannot be immediately written into the flash memory of the automotive electronic control unit. The program download area may be provided in the flash memory of the automotive electronic control unit such that the program download area is independent of the portion of the flash memory of the automotive electronic control unit in which the program file is run. The check for the in-vehicle program file may be performed in the program download area.
In one example, the unit memory block is also detected to be written in an interruption manner, and if the unit memory block is the first unit memory block in the flash memory of the automobile electronic control unit, the whole vehicle-mounted program file is downloaded to the unit memory block in the flash memory of the automobile electronic control unit.
And if the first storage block in the flash memory of the automobile electronic control unit is arranged in the unit storage block for interruption writing, correspondingly writing the data part of the vehicle-mounted program file corresponding to the unit storage block for interruption writing and the subsequent data part into the unit storage block after the unit storage block for interruption writing respectively.
FIG. 4 is a flowchart illustrating a method for downloading a program file from an ECU of a vehicle according to still another embodiment of the present invention. Fig. 4 is different from fig. 1 in that the program file downloading method of the electronic control unit of the automobile shown in fig. 4 may further include steps 107 to 110.
In step 107, in the process of downloading the in-vehicle program file into the automobile electronic control unit, the in-vehicle program file downloaded into the automobile electronic control unit is read back.
The vehicle-mounted program file comprises Cyclic Redundancy Check (CRC) codes. The cyclic redundancy check code included in the vehicle-mounted program file is the cyclic redundancy check code of the vehicle-mounted program file before transmission. For example, the cyclic redundancy check code may be placed in header information of the in-vehicle program file. In the process of downloading the vehicle-mounted program file, the cyclic redundancy check code can be downloaded to a first unit storage block in a flash memory of the automobile electronic control unit.
The crc is mainly used to detect or check errors that may occur after data transmission or storage. In order to avoid the incompleteness or inaccuracy of the downloaded vehicle-mounted program file, cyclic redundancy check can be performed on the downloaded vehicle-mounted program file.
In step 108, a cyclic redundancy check code for checking is generated according to the read-back vehicle-mounted program file downloaded to the vehicle electronic control unit.
And in the process of downloading the vehicle-mounted program file to a storage block of a flash memory of the automobile electronic control unit, continuously reading back the data of the downloaded vehicle-mounted program file, and calculating to obtain a cyclic redundancy check code of the read-back vehicle-mounted program file, namely a cyclic check code for checking according to the read-back vehicle-mounted program file.
In step 109, if the cyclic redundancy check code for verification does not match the cyclic redundancy check code included in the in-vehicle program file, the in-vehicle program file is downloaded again.
And if the cyclic redundancy check code for checking is inconsistent with the cyclic redundancy check code included in the vehicle-mounted program file, indicating that the downloaded vehicle-mounted program file is inconsistent with the vehicle-mounted program file before transmission. That is, the downloaded in-vehicle program file is incomplete and/or inaccurate.
If the downloaded vehicle-mounted program file is determined to be incomplete and/or inaccurate, the vehicle-mounted program file needs to be downloaded again to a unit storage block in a flash memory of the automobile electronic control unit. Furthermore, the downloaded in-vehicle program file is not written into the program operating area in the flash memory of the automotive electronic control unit. And incomplete and/or inaccurate downloaded vehicle-mounted program files can be directly deleted.
In step 110, if the cyclic redundancy check code for verification is identical to the cyclic redundancy check code included in the vehicle-mounted program file, the vehicle-mounted program file downloaded in the program download area is written in the program operation area in the flash memory of the vehicle electronic control unit.
And if the cyclic redundancy check code for checking is consistent with the cyclic redundancy check code included in the vehicle-mounted program file, the downloaded vehicle-mounted program file is consistent with the vehicle-mounted program file before transmission. That is, the downloaded in-vehicle program file is complete and accurate.
The flash memory of the vehicle electronic control unit may include a program download area and a program operation area, which are two areas independent of each other. Wherein the program operating area operates a program file currently used by the vehicle. And if the downloaded vehicle-mounted program file is determined to be complete and accurate, writing the downloaded vehicle-mounted program file into the program operation area.
In one example, if the in-vehicle program file is an update program file or the like, a portion of the program operating area in which the program file has been written needs to be occupied. The program file operated in the program operation area can be erased, and the downloaded vehicle-mounted program file is written into the program operation area. The downloaded vehicle-mounted program file can be operated in the program operation area when the vehicle needs to operate the downloaded vehicle-mounted program file.
In the embodiment of the invention, if the downloaded vehicle-mounted program file is complete and accurate, the downloaded vehicle-mounted program file is put into use, so that the downloaded vehicle-mounted program file runs in the automobile. The method and the device avoid running incomplete and/or inaccurate vehicle-mounted program files in the automobile, avoid the risk of the automobile caused by the running of wrong vehicle-mounted program files, and further improve the safety of automobile control.
FIG. 5 is a flowchart illustrating a method for downloading a program file from an ECU of a vehicle according to still another embodiment of the present invention. Fig. 5 is different from fig. 1 in that the program file downloading method of the electronic control unit of the automobile shown in fig. 5 may further include steps 111 to 114.
In step 111, a download status flag is set.
The download status flag may indicate the download status of the in-vehicle program file. The download status of the vehicle-mounted program file can be distinguished by different identifiers on the download status identifier bit. In one example, the download status of the in-vehicle program file may include a downloading status and a downloading done status. The mark on the vehicle-mounted state mark position can be characters such as numbers, letters, special characters and the like, or a character string composed of one character, or a character string composed of a plurality of characters, and is not limited herein. For example, if the flag on the download status flag bit is 0, it indicates that the terminal is in the download status; if the mark on the download state mark bit is 1, the mark is in a download completion state.
In step 112, if the download status flag is the first flag, the vehicle-mounted program file downloaded from the program download area is written into the program operation area in the flash memory of the vehicle electronic control unit.
And if the downloading state identification bit is the first identification, the vehicle-mounted program file is completely downloaded. The downloaded in-vehicle program file can be written into a program operating area in a flash memory of the automotive electronic control unit.
In one example, if the in-vehicle program file is an updated program file or the like that needs to occupy a portion of the program operation area in which the program file has been written, the program file in the program operation area may be erased and the in-vehicle program file may be written into the program operation area.
In step 113, if the download status flag is the second flag, a prompt message indicating that the downloading of the vehicle-mounted program file in the program download area is successful is sent.
And if the downloading state identification bit is the second identification, the successful downloading of the vehicle-mounted program file is indicated. But the in-vehicle program file in the program download area is not immediately written in the program execution area. But rather issues a prompt message prompting the user.
In one example, the second identifier in the embodiment of the present invention may be the same as or different from the first identifier in the above-described embodiment.
In one example, a third identifier, a fourth identifier, etc. may also be provided to indicate other download states, as well as to generate other control flows in conjunction.
The prompt message may be a display of an image or a text, or may be a voice content, and is not limited herein.
In step 114, a control instruction sent by the user is received, and it is determined whether to write the in-vehicle program file downloaded from the program download area into the program running area according to the control instruction.
After the user checks or hears the prompt message, a control instruction can be sent out, and the program file downloading device of the automobile electronic control unit receives the control instruction. The control instruction indicates whether to write the vehicle-mounted program file downloaded in the program download area into the program operation area. And if the control instruction indicates that the vehicle-mounted program file downloaded from the program downloading area is written into the program operating area, writing the vehicle-mounted program file downloaded from the program downloading area into the program operating area. And if the control instruction indicates that the vehicle-mounted program file downloaded from the program downloading area is not written into the program operating area, the vehicle-mounted program file downloaded from the program downloading area is not written into the program operating area.
For example, the in-vehicle program file is an update program file. When the updated program file is successfully downloaded to the program downloading area, a prompt message of 'the updated program file is successfully downloaded and whether the update is required to be carried out immediately' can be sent out. The user issues a control instruction indicating "update immediately" or "not update temporarily". The program file downloading device of the automobile electronic control unit receives the control instruction. And if the control instruction indicates 'update immediately', writing the vehicle-mounted program file downloaded from the program downloading area into the program operating area. And if the control command indicates 'temporarily not updating', the vehicle-mounted program file downloaded from the program downloading area is not written into the program operating area.
Fig. 6 is a schematic structural diagram of a program file downloading device 200 of an automotive ecu according to an embodiment of the present invention. As shown in fig. 6, the program file downloading apparatus 200 of the automotive electronic control unit includes a map acquisition module 201, a download module 202, an interrupt acquisition module 203, and a search module 204.
The mapping acquisition module 201 is configured to acquire a mapping relationship between the vehicle-mounted program file and a unit memory block in a flash memory of the automobile electronic control unit.
And the downloading module 202 is configured to download the vehicle-mounted program file to a unit memory block in a flash memory of the automobile electronic control unit.
And the interruption acquisition module 203 is configured to acquire an interruption writing unit storage block, wherein the interruption writing unit storage block is a unit storage block which is being written when the downloading process of the vehicle-mounted program file is interrupted.
And the searching module 204 is configured to obtain a data portion which needs to be continuously downloaded in the vehicle-mounted program file based on the interrupt writing unit storage block and the mapping relation.
And the downloading module 202 is also configured to download the data part needing to be continuously downloaded in the vehicle-mounted program file to a unit storage block in a flash memory of the automobile electronic control unit.
In the embodiment of the invention, the data part of the vehicle-mounted program file which is not effectively downloaded to the vehicle electronic control unit in the downloading process of the vehicle-mounted program file can be downloaded to the vehicle electronic control unit again. Therefore, the interruption of downloading the vehicle-mounted program file is avoided, and the whole downloading and flashing process of the vehicle-mounted program file is carried out. Thereby reducing the time taken for downloading the vehicle-mounted program file in the case of interruption.
Fig. 7 is a schematic structural diagram of a program file downloading device 200 of an automotive ecu according to another embodiment of the present invention. Fig. 7 is different from fig. 6 in that the download module 202 in fig. 6 may include the erase submodule 2021 and the write submodule 2022 in fig. 7. The program file downloading apparatus 200 of the electronic control unit for a vehicle shown in fig. 7 may further include a recording module 205.
The erase submodule 2021 is configured to erase the interrupt write unit memory block.
The writing submodule 2022 is configured to download the data portion that needs to be continuously downloaded in the in-vehicle program file to the unit storage block for interruption and the unit storage block after the unit storage block for interruption.
And a recording module 205 configured to record the written unit memory block when the in-vehicle program file is downloaded to the unit memory block in the flash memory of the automobile electronic control unit.
The download module 202 may be further configured to: when the interruption write unit memory block is the first unit memory block in the flash memory of the automobile electronic control unit, the whole vehicle-mounted program file is downloaded to the unit memory block in the flash memory of the automobile electronic control unit.
In one example, the mapping relationship includes a correspondence relationship of respective data portions of the in-vehicle program file and start addresses of respective unit memory blocks in a flash memory of the automotive electronic control unit.
In an example, the searching module 204 in the above embodiment may be specifically configured to search, based on the interruption writing unit storage block, for a data portion of the in-vehicle program file corresponding to the start address of the interruption writing unit storage block in the mapping relationship; and taking the data part of the vehicle-mounted program file corresponding to the initial address of the interrupt writing unit storage block and the subsequent data part as the data part needing to be continuously downloaded in the vehicle-mounted program file.
In one example, the unit memory block in the above embodiment is located in a program download area in a flash memory of an automotive electronic control unit.
Fig. 8 is a schematic structural diagram of a program file downloading device 200 of an automotive ecu according to another embodiment of the present invention. Fig. 8 is different from fig. 6 in that the program downloading device 200 of the electronic control unit of the automobile shown in fig. 8 may further include a read-back module 206, a check code generation module 207, and a first writing module 208.
A read-back module 206, configured to read back the vehicle-mounted program file downloaded into the vehicle electronic control unit during the process of downloading the vehicle-mounted program file into the vehicle electronic control unit, wherein the vehicle-mounted program file includes a cyclic redundancy check code;
a check code generation module 207 configured to generate a cyclic redundancy check code for checking according to the read-back vehicle-mounted program file downloaded to the unit memory block in the flash memory of the automotive electronic control unit;
the downloading module 202 is further configured to, if the cyclic redundancy check code for checking is inconsistent with the cyclic redundancy check code included in the vehicle-mounted program file, re-download the vehicle-mounted program file;
and a first writing module 208 configured to write the vehicle-mounted program file downloaded in the program downloading area into the program running area in the flash memory of the vehicle electronic control unit if the cyclic redundancy check code for verification is consistent with the cyclic redundancy check code included in the vehicle-mounted program file.
Fig. 9 is a schematic structural diagram of a program file downloading device 200 of an automotive ecu according to another embodiment of the present invention. Fig. 9 is different from fig. 6 in that the program downloading device 200 of the automotive ecu shown in fig. 9 may further include a setting module 209, a second writing module 210, an erasing module 211, a transmitting module 212, and a receiving module 213.
A setting module 209 configured to set the download status flag.
And a second writing module 210 configured to write the vehicle-mounted program file downloaded in the program downloading area into the program running area in the flash memory of the automotive electronic control unit if the download state identification bit is the first identification.
And an erasing module 211 configured to erase the program file in the program running area.
And the sending module 212 is configured to send a prompt message indicating that the vehicle-mounted program file in the program downloading area is successfully downloaded if the download state identification bit is the second identification.
And the receiving module 213 is configured to receive a control instruction sent by a user, and determine whether to write the vehicle-mounted program file downloaded from the program downloading area into the program running area according to the control instruction.
It should be clear that the embodiments in this specification are described in a progressive manner, and the same or similar parts in the embodiments are referred to each other, and each embodiment focuses on the differences from the other embodiments. For the device embodiments, reference may be made to the description of the method embodiments in the relevant part. The present invention is not limited to the specific steps and structures described above and shown in the drawings. Those skilled in the art may make various changes, modifications and additions or change the order between the steps after appreciating the spirit of the invention. Also, a detailed description of known process techniques is omitted herein for the sake of brevity.
The functional blocks and functional sub-blocks shown in the above structural block diagrams may be implemented as hardware, software, firmware, or a combination thereof. When implemented in hardware, it may be, for example, an electronic circuit, an Application Specific Integrated Circuit (ASIC), suitable firmware, plug-in, function card, or the like. When implemented in software, the elements of the invention are the programs or code segments used to perform the required tasks. The program or code segments may be stored in a machine-readable medium or transmitted by a data signal carried in a carrier wave over a transmission medium or a communication link. A "machine-readable medium" may include any medium that can store or transfer information.