Update support device, update support method, update support program, and field device
By dividing the update software into multiple blocks and supplying it to the working memory in block units, the update failure problem caused by insufficient memory idle capacity in the field device is solved, and the local update processing of the object device is realized.
Patent Information
- Application Number
- CN202380073324.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-11-17
- Filing Date
- 2023-11-07
- Publication Date
- 2025-05-27
AI Technical Summary
In field devices, when the free capacity of non-volatile memory is insufficient or the free capacity of the operating memory is insufficient, the software for update cannot be successfully downloaded and executed, resulting in the software update processing failure.
By dividing the update software into multiple blocks and supplying it to the job memory in block units, the CPU of the update auxiliary device auxiliary object device performs local update processing, ensuring that the update process continues after each block is completed.
Local updates are implemented in the object device, and even if the free capacity of non-volatile memory or operating memory is insufficient, the object software can be successfully updated, avoiding the risk of failure due to insufficient capacity during the update process.
Smart Images

Figure CN120051764A_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to an update assistance device, an update assistance method, an update assistance program, and field devices. Background Art
[0002] "Setting a minimum unit revision number" is described in Patent Document 1. "When all of the field devices are not in preparation for memory update... start transmitting update data" is described in Patent Document 2. "When it is detected that all of the field devices are not in preparation for memory update... transmit update data" is described in Patent Document 3. "Perform configuration change of a program for each divided area not accessed by the CPU" is described in Patent Document 4. Prior Art Documents Patent Document 1: Japanese Patent Laid-Open Publication No. 2004-295299 Patent Document 2: Japanese Patent Laid-Open Publication No. 2005-135223 Patent Document 3: Japanese Patent Laid-Open Publication No. 2005-173747 Patent Document 4: Japanese Patent Laid-Open Publication No. 2005-182106 Summary of the Invention
[0003] In a first aspect of the present invention, there is provided an update assistance device. The update assistance device includes: an update software storage unit that stores update software for updating object software executed in an object device; a division unit that divides the update software into a plurality of blocks so that each block is equal to or less than the free capacity of a working memory used as a working area for updating the object software; and a supply unit that supplies the update software to the working memory in block units.
[0004] Alternatively, the update assistance device may further include a determination unit that determines whether a partial update of the object software using an update target block among the plurality of blocks is completed. When it is determined that the partial update of the object software using the update target block is completed, the supply unit supplies the next update target block among the plurality of blocks to the working memory.
[0005] Alternatively, any one of the update assistance devices may further include a capacity information acquisition unit that acquires capacity information indicating the free capacity of the working memory, and the division unit divides the update software into the plurality of blocks based on the capacity information.
[0006] Alternatively, the target device may include a non-volatile memory for storing the target software, the working memory, and a CPU for performing the update process of the target software. Any one of the update auxiliary devices may further include an instruction unit that instructs the CPU of the target device to locally update the target software.
[0007] Alternatively, in any one of the update auxiliary devices, the instruction unit instructs the CPU of the target device to write an update target block into the working memory.
[0008] Alternatively, in any one of the update auxiliary devices, the instruction unit instructs the CPU of the target device to update the target software using the update target block supplied to the working memory.
[0009] Alternatively, the update software is used to update a plurality of target softwares that are respectively updated with a plurality of different working memories as working areas. In any one of the update auxiliary devices, the splitting unit splits the update software into the plurality of blocks such that each block is equal to or less than the free capacity of the corresponding working memory among the plurality of working memories, and the supply unit supplies the update software to the corresponding working memory in units of blocks.
[0010] Alternatively, any one of the update auxiliary devices may further include: a pre-update software acquisition unit that acquires pre-update software representing the target software before the update from the target device; a pre-update software storage unit that stores the pre-update software; and a feedback unit that, when the update of the target software using the update software fails, feeds back the pre-update software to the target device.
[0011] Alternatively, any one of the update auxiliary devices may further include an update software acquisition unit that acquires the update software via a computer network.
[0012] Alternatively, in any one of the update auxiliary devices, the function of the update software storage unit is provided by a detachable storage device.
[0013] Alternatively, in any one of the update auxiliary devices, the supply unit supplies the update software to the working memory via a computer network.
[0014] In a second aspect of the present invention, a field device is provided. The field device includes any one of the update auxiliary devices.
[0015] Alternatively, the field device may further include: the target device; and a relay device, where the target device and the update assistance device are installed on the relay device, and the relay device relays communication between the target device and the update assistance device.
[0016] In a third aspect of the present invention, an update assistance method is provided. The update assistance method includes: a computer storing update software for updating target software executed in a target device; the computer dividing the update software into a plurality of blocks such that each block is equal to or less than the free capacity of a working memory used as a working area for updating the target software; and the computer supplying the update software to the working memory in units of blocks.
[0017] In a fourth aspect of the present invention, an update assistance program is provided. By executing the update assistance program, a computer functions as an update software storage unit, a division unit, and a supply unit. The update software storage unit stores update software for updating target software executed in a target device. The division unit divides the update software into a plurality of blocks such that each block is equal to or less than the free capacity of a working memory used as a working area for updating the target software. The supply unit supplies the update software to the working memory in units of blocks.
[0018] In addition, the above summary does not list all features of the present invention. Moreover, sub-combinations of these feature groups can also form inventions. BRIEF DESCRIPTION OF THE DRAWINGS
[0019] Figure 1 An example of a configuration diagram of a device 10 that can use the update assistance device 200 of the present embodiment. Figure 2 An example of a block diagram of the update assistance device 200 of the present embodiment. Figure 3 An example of a flowchart of an update assistance method that can be executed by the update assistance device 200 of the present embodiment. Figure 4 A modified example of a configuration diagram of a device 10 that can use the update assistance device 200 of the present embodiment. Figure 5 An example of update software of the modified example. Figure 6 An example of a block diagram of an update assistance device 200 of another embodiment. Figure 7 Another example of a configuration diagram of the update assistance device 200 of the present embodiment. Figure 8An example of an update support system to which the update support device 200 according to the present embodiment can be applied is shown. Figure 9 The computer 9900 is an example that can implement various aspects of the present invention in whole or in part. DETAILED DESCRIPTION
[0020] The present invention will be described below by way of the embodiments of the invention, but the following embodiments do not limit the invention according to the claims. In addition, not all combinations of features described in the embodiments are essential to the solution means of the invention.
[0021] Figure 1 An example of a configuration diagram of a device 10 that can use the update auxiliary device 200 of the present embodiment is shown. Device 10 is a variety of equipment used in various facilities. As an example, such a facility can be a factory. As a factory, in addition to chemical or biological industrial factories, there can also be listed factories that manage and control wellheads and their surroundings such as gas fields or oil fields, factories that manage and control power generation such as water power, thermal power, and atomic energy, factories that manage and control environmental power generation such as sunlight or wind power, and factories that manage and control water supply and drainage or dams, etc. Device 10 can be a field device such as a thermometer, differential pressure gauge / pressure gauge, flow meter, and valve positioner installed in such a factory. Hereinafter, as an example, the case where the device 10 is a field device is described, but it is not limited to this.
[0022] In the device 10, the program of the operation part for converting the signal from the sensor into the output signal, the configuration information constituting the network information, etc. are stored in a non-volatile memory such as EPROM (Erasable Programmable Read Only Memory), Flash ROM (Flash Read Only Memory) or EEPROM (Electrically EPROM).
[0023] In recent years, as the function distribution for the purpose of process improvement has been promoted, additional functions such as the expansion of self-diagnosis functions have been required for the device 10. In addition, as the functions become richer, the possibility of failure also increases. Therefore, the opportunity to update the software such as programs and configuration information stored in the device 10 increases. This tendency also occurs in various devices other than field devices.
[0024] Therefore, it is assumed that such a device 10 is made compatible with a communication standard such as PROFINET (Process Field Net) or Ethernet (registered trademark), and the software stored in the device 10 is updated using the communication function of the field bus.
[0025] In the past, in such a case, the update software was downloaded into the non-volatile memory, and the CPU used the working memory as a working area to update the software stored inside the device 10.
[0026] However, when the free capacity of the non-volatile memory is insufficient, the device 10 cannot download the update software. In addition, even if the update software can be downloaded, when the free capacity of the working memory is insufficient, the CPU cannot execute the software update process. Such problems are more likely to occur in devices such as field devices that are equipped with memories of relatively small capacities.
[0027] Therefore, in view of such problems, the update assist device 200 of the present embodiment divides the update software into a plurality of blocks, and supplies the update software to the working memory in block units, thereby assisting in the update of the software stored inside the device 10.
[0028] The device 10 includes a relay device 50, a target device 100, and an update assist device 200. In addition, in this figure, as an example, the case where the device 10 only includes the relay device 50, the target device 100, and the update assist device 200 is shown, but the device 10 may also include other devices (not shown).
[0029] The target device 100 and the update assist device 200 are installed on the relay device 50, and the relay device 50 relays the communication between the target device 100 and the update assist device 200. At this time, the target device 100 and the update assist device 200 may also be detachably installed on the relay device 50. In addition, the relay device 50 may be configured to be able to connect the device 10 and a computer network corresponding to communication standards such as PROFINET or Ethernet. As an example, the relay device 50 may be a circuit board, and may have a plurality of slots capable of detachably mounting a plurality of boards and a LAN port into which an Ethernet cable can be inserted. In addition, when the device 10 can be connected to a computer network via a wireless method, the device 10 may not have a LAN port.
[0030] The target device 100 is a device that executes the target software to be updated. As an example, the target device 100 may be a first board detachably installed in the first slot of the relay device 50 that is a circuit board. The target device 100 includes a first non-volatile memory 102, a first working memory 104, and a first CPU 106.
[0031] The first non-volatile memory 102 is a memory that can retain stored data even without power supply. As an example, the first non-volatile memory 102 can be a ROM that can only read information, such as an EPROM, Flash ROM, or EEPROM. The first non-volatile memory 102 can store at least object software to be updated (for example, a program for an arithmetic unit that converts a signal from a sensor into an output signal, configuration information constituting network information).
[0032] The first working memory 104 is a memory used as a working area when the first CPU 106 executes certain processes. As an example, the first working memory 104 can be a RAM (Random Access Memory) that can read and write information. The first working memory 104 can at least be used as a working area for the first CPU 106 to update object software.
[0033] The first CPU 106 is an arithmetic processing device that controls other components and circuits and performs data arithmetic operations. The first CPU 106 executes various processes using the first working memory 104 as a working area. The first CPU 106 can at least execute the update process of the object software stored in the first non-volatile memory 102 using the first working memory 104 as a working area.
[0034] In this way, the object device 100 can include: a non-volatile memory (the first non-volatile memory 102) that stores object software; a working memory (the first working memory 104) that serves as a working area for updating the object software; and a CPU (the first CPU 106) that executes the update process of the object software.
[0035] The update auxiliary device 200 assists in updating the object software in the object device 100. As an example, the update auxiliary device 200 can be a second board detachably installed in a second slot of a relay device 50 serving as a substrate. The update auxiliary device 200 includes a second non-volatile memory 202, a second working memory 204, and a second CPU 206.
[0036] The second non-volatile memory 202, the second working memory 204, and the second CPU 206 can be the same components as the first non-volatile memory 102, the first working memory 104, and the first CPU 106. Therefore, except for the differences, the description is omitted here. However, in view of the above problems, the capacity of the second non-volatile memory 202 is preferably larger than the capacity of the first non-volatile memory 102.
[0037] Thus, a device 10, particularly a field device, provided with the update assistance device 200 of the present embodiment can be provided. Further, the field device may further include: a target device 100; and a relay device 50. The target device 100 and the update assistance device 200 are installed in the relay device 50, and the relay device 50 relays communication between the target device 100 and the update assistance device 200. Accordingly, the function of the update assistance device 200 that assists in updating the target software in such a device 10 will be described in detail.
[0038] Figure 2 FIG. 1 is an example of a block diagram showing the update assistance device 200 of the present embodiment. Further, these blocks are each functionally separated functional blocks and do not necessarily correspond to the actual device structure. That is, in this figure, although shown as one block, its function may not necessarily be provided by one element. Further, in this figure, although shown as different blocks, these functions may not necessarily be provided by different elements. The same applies to the block diagrams hereinafter.
[0039] The update assistance device 200 may include an update software acquisition unit 210, an update software storage unit 220, a capacity information acquisition unit 230, a division unit 240, an instruction unit 250, a supply unit 260, and a determination unit 270.
[0040] The update software acquisition unit 210 acquires update software via a computer network. The update software acquisition unit 210 supplies the acquired update software to the update software storage unit 220. The function of such an update software acquisition unit 210 can be provided, for example, by a second CPU 206 and a communication unit (not shown).
[0041] The update software storage unit 220 stores update software for updating the target software executed in the target device 100. The function of such an update software storage unit 220 can be provided, for example, by a second non-volatile memory 202.
[0042] The capacity information acquisition unit 230 acquires capacity information indicating the free capacity of the working memory used as the working area of the target software to be updated. The capacity information acquisition unit 230 supplies the acquired capacity information to the division unit 240. The function of such a capacity information acquisition unit 230 can be provided, for example, by a second CPU 206 and a communication unit (not shown).
[0043] The dividing unit 240 divides the software for update into a plurality of blocks in such a manner that each block becomes an idle capacity of the working memory used as a working area of the software to be updated. At this time, the dividing unit 240 may divide the software for update into a plurality of blocks based on the capacity information. When the software for update is divided into a plurality of blocks, the dividing unit 240 notifies the indicating unit 250 of this situation. The function of such a dividing unit 240 can be provided by the second CPU 206, for example.
[0044] The indicating unit 250 instructs the CPU of the target device 100 to locally update the software to be updated. The function of such an indicating unit 250 can be provided by the second CPU 206 and a communication unit (not shown), for example.
[0045] The supplying unit 260 supplies the software for update to the working memory in units of blocks. The function of such a supplying unit 260 can be provided by the second CPU 206 and a communication unit (not shown), for example.
[0046] The judging unit 270 judges whether the local update of the software to be updated using the update target block among the plurality of blocks is completed. The function of such a judging unit 270 can be provided by the second CPU 206 and a communication unit (not shown), for example. Moreover, when it is judged that the local update of the software to be updated using the update target block is completed, the supplying unit 260 supplies the next update target block among the plurality of blocks to the working memory.
[0047] The method for the update assisting device 200 having such functional units to assist the update of the software to be updated in the target device 100 will be described in detail using a flowchart.
[0048] Figure 3 An example of a flowchart showing the update assisting method that the update assisting device 200 according to the present embodiment can execute.
[0049] In step S310, the update assisting device 200 acquires the software for update. For example, the software for update acquisition unit 210 may acquire the software for update via a computer network. More specifically, the software for update acquisition unit 210 may access the computer network via the relay device 50 and download the software for update for updating the software to be updated executed in the target device 100. The software for update acquisition unit 210 supplies the acquired software for update to the software for update storage unit 220.
[0050] In step S320, the update assisting device 200 stores the software for update. For example, the software for update storage unit 220 may store the software for update for updating the software to be updated executed in the target device 100 acquired in step S310.
[0051] In addition, in the above description, as an example, it is shown that the software acquisition unit 210 for update acquires the software for update via a computer network, and the software storage unit 220 for update stores the software for update, but it is not limited thereto. When the software for update is already stored in the software storage unit 220 for update, the update auxiliary device 200 may not perform the process of step S310. That is, the update auxiliary device 200 may not include the software acquisition unit 210 for update.
[0052] In step S330, the update auxiliary device 200 acquires capacity information. For example, the capacity information acquisition unit 230 may acquire capacity information indicating the free capacity of the working memory used as the working area of the software to be updated. More specifically, the capacity information acquisition unit 230 may communicate with the first CPU 106 via the relay device 50 to acquire capacity information indicating the free capacity of the first working memory 104. The capacity information acquisition unit 230 supplies the acquired capacity information to the segmentation unit 240.
[0053] In addition, in the above description, as an example, it is shown that the capacity information acquisition unit 230 communicates with the first CPU 106 and acquires capacity information, but it is not limited thereto. When the free capacity of the first working memory 104 is known, or when it can be inferred from known information, the update auxiliary device 200 may not perform the process of step S330. That is, the update auxiliary device 200 may not include the capacity information acquisition unit 230.
[0054] In step S340, the update auxiliary device 200 segments the software for update. For example, the segmentation unit 240 may segment the software for update into a plurality of blocks such that each block is equal to or less than the free capacity of the working memory used as the working area of the software to be updated. More specifically, the segmentation unit 240 may segment the software for update stored in step S320 into a plurality of blocks such that each block is equal to or less than the free capacity of the first working memory 104.
[0055] At this time, the segmentation unit 240 may also segment the software for update into a plurality of blocks based on the capacity information acquired in step S330. As an example, the size of the software for update stored in step S320 is 600 MB. In addition, the capacity information acquired in step S330 indicates that the free capacity of the first working memory 104 is 256 MB. In this case, the segmentation unit 240 may segment the software for update into three blocks: block 1 (200 MB), block 2 (200 MB), and block 3 (200 MB) such that each block is 256 MB or less.
[0056] In addition, in the above description, as an example, the case where the dividing unit 240 divides the update software into a plurality of blocks in such a manner that the sizes of the respective blocks are equal is shown, but it is not limited thereto. For example, the dividing unit 240 may also divide the update software into a plurality of blocks in such a manner that the update software is divided into three blocks such as block 1 (256 MB), block 2 (256 MB), and block 3 (88 MB), and at least one block has the maximum size equal to or less than the free capacity of the first working memory 104.
[0057] In step S345, the update auxiliary device 200 sets the maximum value of the index i of the block and initializes the index i. For example, the dividing unit 240 may set the maximum value of the index i to the number n of blocks into which the update software is divided in step S340, and set the index i = 1. As an example, in the case where the update software is divided into three blocks, the dividing unit 240 may also set the maximum value of the index i to 3 and set the index i = 1. The dividing unit 240 notifies the indicating unit 250 of the case where the update software is divided into a plurality of blocks. At this time, the dividing unit 240 may also notify the indicating unit 250 of the number n of blocks into which the update software is divided.
[0058] In step S350, the update auxiliary device 200 instructs local update. For example, the indicating unit 250 may instruct the CPU of the target device 100 to locally update the target software. At this time, the indicating unit 250 may instruct the CPU of the target device 100 to write the update target block into the working memory. In addition, the indicating unit 250 may instruct the CPU of the target device 100 to update the target software using the update target block supplied to the working memory. More specifically, the indicating unit 250 may communicate with the first CPU 106 via the relay device 50. Then, the indicating unit 250 may instruct the first CPU 106 to locally update the target software. At this time, the indicating unit 250 may also notify the first CPU 106 of the number n of blocks into which the update software is divided. Thereby, the update auxiliary device 200 can inform the target device 100 in advance of the number of blocks into which the update software is divided and supplied. In addition, the indicating unit 250 may instruct the first CPU 106 to write the update target block obtained by dividing the update software into the first working memory 104. In addition, the indicating unit 250 may instruct the first CPU 106 to update the target software using the update target block supplied to the first working memory 104.
[0059] In step S360, the update auxiliary device 200 determines whether the index i is greater than the maximum value. For example, the update auxiliary device 200 may determine whether the index i is greater than the number n of blocks set as the maximum value of the index i in step S345. When it is determined that the index i is not greater than the number n of blocks (No), the update auxiliary device 200 advances the process to step S365. As an example, when the index i = 1 and the number n of blocks = 3, i ≤ n, so the update auxiliary device 200 can advance the process to step S365.
[0060] In step S365, the update auxiliary device 200 supplies the update target block i. For example, the supply unit 260 may supply the update target block i to the working memory used as the working area of the update target software. More specifically, when i = 1, the supply unit 260 may supply block 1 to the first working memory 104 via the relay device 50. In this way, the supply unit 260 can supply the update software in block units to the working memory. Correspondingly, the first CPU 106 can write the block 1 supplied from the supply unit 260 into the first working memory 104. Then, the first CPU 106 can use the block 1 supplied to the first working memory 104 to perform the update process of the target software stored in the first non-volatile memory 102. Then, when the update process of the target software using block 1 is completed, the first CPU 106 can notify the second CPU 206 of this situation via the relay device 50.
[0061] In step S370, the update auxiliary device 200 determines whether the update is completed. For example, the determination unit 270 may determine whether the partial update of the target software using the update target block i among the multiple blocks is completed. More specifically, when i = 1, the determination unit 270 may determine whether it is notified from the first CPU 106 via the relay device 50 that the update process of the target software is completed. When the update process completion is not notified, the determination unit 270 may determine that the partial update of the target software using block 1 is not completed (No). In this case, the determination unit 270 may repeatedly perform the determination process of whether the partial update is completed. When the update process completion is notified, the determination unit 270 may determine that the partial update of the target software using block 1 is completed (Yes). In this case, the update auxiliary device 200 advances the process to step S375.
[0062] In step S375, the update auxiliary device 200 increments the index i. For example, the update auxiliary device 200 may be set such that the index i = i + 1. More specifically, when i = 1, the update auxiliary device 200 may be set to i = 2. Then, the update auxiliary device 200 returns the process to step S360 and continues the process.
[0063] In step S360, when the index i = 2 and the number of blocks n = 3, i ≤ n, so the update auxiliary device 200 can advance the process to step S365. In step S365, when i = 2, the supply unit 260 can supply block 2 to the first working memory 104 via the relay device 50. Then, in step S370, when the determination unit 270 determines that the partial update of the target software that has used block 2 is completed, in step S375, the update auxiliary device 200 can set i = 3. Then, the update auxiliary device 200 returns the process to step S360 and continues the process.
[0064] In step S360, when the index i = 3 and the number of blocks n = 3, i ≤ n, so the update auxiliary device 200 can advance the process to step S365. In step S365, when i = 3, the supply unit 260 can supply block 3 to the first working memory 104 via the relay device 50. Then, in step S370, when the determination unit 270 determines that the partial update of the target software that has used block 3 is completed, in step S375, the update auxiliary device 200 can set i = 4. Then, the update auxiliary device 200 returns the process to step S360 and continues the process.
[0065] In this way, when it is determined that the partial update of the target software that has used the update target block is completed, the supply unit 260 can supply the next update target block among the multiple blocks to the working memory.
[0066] In addition, in the above description, as an example, it shows the case where, according to the determination by the determination unit 270 in step S370 that the update process completion is notified from the first CPU 106, the supply unit 260 supplies the next update target block to the first working memory 104, but it is not limited to this. When the update processing time is known based on the size of the update target block, or when it can be estimated based on known information, the update auxiliary device 200 may not perform the process of step S370. In this case, the supply unit 260 may also supply the next update target block to the first working memory 104 according to the expiration of the known or estimated update processing time. That is, the update auxiliary device 200 may not have the determination unit 270.
[0067] In step S360, when the index i = 4 and the number of blocks n = 3, i > n, so the update auxiliary device 200 can determine that the index i is greater than the number of blocks n (yes). In this case, the update auxiliary device 200 advances the process to step S380.
[0068] In step S380, the update assistance device 200 deletes the update software. For example, the update software storage unit 220 may delete the update software stored in step S320. Then, the update assistance device 200 ends this process. Additionally, for example, when the update assistance device 200 is detachable from the relay device 50 and can also apply the update software to update the software stored inside other devices different from the device 10, the update assistance device 200 may also end this process without performing the process of step S380.
[0069] In this way, the update assistance device 200 of the present embodiment divides the update software into multiple blocks in such a manner that each block becomes less than or equal to the free capacity of the working memory used as the working area for the software to be updated, and supplies the update software to the working memory in block units. Thus, according to the update assistance device 200 of the present embodiment, even when the free capacities of the first non-volatile memory 102 and the first working memory 104 in the target device 100 are insufficient, it is possible to assist in the update so as to enable partial update of the target software.
[0070] Furthermore, the update assistance device 200 of the present embodiment determines whether the partial update of the target software using the updated target block is completed, and when it is determined that the update is completed, supplies the next updated target block to the working memory. Thus, according to the update assistance device 200 of the present embodiment, it is possible to prevent the next updated target block from being supplied to the working memory before the update of the target software is completed.
[0071] Moreover, the update assistance device 200 of the present embodiment acquires capacity information indicating the free capacity of the working memory, and divides the update software into multiple blocks based on this capacity information. Thus, according to the update assistance device 200 of the present embodiment, since the update software is divided into multiple blocks based on the actual free capacity of the working memory, it is possible to reliably prevent each block from being larger than the free capacity of the working memory.
[0072] In addition, the update assistance device 200 of the present embodiment instructs the CPU of the target device 100 to partially update the target software. Thus, according to the update assistance device 200 of the present embodiment, it is possible to inform the first CPU 106 in the target device 100 to partially update the target software instead of updating the target software all at once. Thus, according to the update assistance device 200 of the present embodiment, it is possible to instruct the first CPU 106 in the target device 100 to write the updated target block into the first working memory 104, or to update the target software using the updated target block supplied to the first working memory 104, and enable the target device 100 to execute the processing desired by the update assistance device 200.
[0073] In addition, the update assistance device 200 of the present embodiment acquires update software via a computer network. Thus, with the update assistance device 200 of the present embodiment, it is possible to acquire update software in various environments accessible to the computer network.
[0074] In addition, a field device including the update assistance device 200 of the present embodiment is provided. Such a field device has relatively many opportunities to update the software stored therein, and the capacity of the mounted memory is relatively small in many cases. Therefore, by applying the update assistance device 200 of the present embodiment to such a highly compatible field device, a more remarkable effect can be achieved.
[0075] In addition, the field device further includes: an object device 100; and a relay device 50. The object device 100 and the update assistance device 200 are installed on the relay device 50, and the relay device 50 relays communication between the object device 100 and the update assistance device 200. Thus, even in an existing field device, by simply installing the update assistance device 200 on the relay device 50, the function can be extended in such a way as to achieve local update of the target software. That is, the update assistance device 200 can also be developed as a module and be configured to be connectable to the device 10 in the future.
[0076] Figure 4 A modified example of the configuration diagram of the device 10 that can use the update assistance device 200 of the present embodiment is shown. In this figure, components having the Figure 1 same structure are labeled with the same reference numerals, and the description is omitted except for the following differences. In the above description, as an example, the case where the device executing the object software to be updated is only one object device 100 is shown, but in this figure, the case where the devices executing the object software to be updated are multiple is described.
[0077] In this figure, for ease of explanation, the object device 100 is referred to as the first object device 100. In addition, the update assistance device 200 is also referred to as the second object device 200. That is, the update assistance device 200 functions as a device assisting the update in other object devices and also functions as an object device itself. In this figure, the device 10 further includes a third object device 300 in addition to the relay device 50, the first object device 100, and the update assistance device 200 (second object device 200).
[0078] The third target device 300, like the first target device 100, is a device that executes the target software to be updated. As an example, the third target device 300 can be a third board that is detachably installed in the third slot of the relay device 50 serving as a substrate. The third target device 300 includes a third non-volatile memory 302, a third working memory 304, and a third CPU 306.
[0079] The third non-volatile memory 302, the third working memory 304, and the third CPU 306 can be the same components as the first non-volatile memory 102, the first working memory 104, and the first CPU 106. Therefore, except for the differences, the description is omitted here.
[0080] In this figure, the three devices, i.e., the first target device 100, the second target device 200, and the third target device 300, are devices that execute the target software to be updated. That is, the target software to be updated is stored in each of the first non-volatile memory 102 in the first target device 100, the second non-volatile memory 202 in the second target device 200, and the third non-volatile memory 302 in the third target device 300. Moreover, the update assistance device 200 assists in the software update of the first target device 100 and the third target device 300, and also updates the software stored in itself.
[0081] In this case, the update software stored in the update software storage unit 220 can have a plurality of software areas for respectively updating the plurality of target softwares stored in the plurality of target devices 100 to 300.
[0082] Figure 5 An example of the update software showing a modified example is shown. As shown in this figure, the update software can have, for example, three software areas: area A, area B, and area C.
[0083] Area A is a software area for updating the target software stored in the first non-volatile memory 102 in the first target device 100. The splitting unit 240 can split area A into three blocks (blocks a1, a2, and a3) in the same manner as the above process, for example. Moreover, the supply unit 260 can supply the update software for updating the target software stored in the first non-volatile memory 102 to the first working memory 104 in block units by supplying the update target block ai to the first working memory 104 according to the index i.
[0084] Region B is a software region for updating the object software stored in the second non-volatile memory 202 of the second object device 200. Here, when the second CPU 206 executes the update process of the object software stored in the second non-volatile memory 202 using the second working memory 204 as a working area, the free capacity of the second working memory 204 is large enough. As an example, the size of region B is 600 MB, and the free capacity of the second working memory 204 is 1 GB. In this case, the second CPU 206 can use the second working memory 204 as a working area to update the object software at once. Therefore, the dividing unit 240 may not divide region B into a plurality of blocks. Moreover, the supplying unit 260 can supply the update software of region B directly to the second working memory 204.
[0085] Region C is a software region for updating the object software stored in the third non-volatile memory 302 of the third object device 300. Here, when the third CPU 306 executes the update process of the object software stored in the third non-volatile memory 302 using the third working memory 304 as a working area, the free capacity of the third working memory 304 is insufficient. As an example, the size of region C is 600 MB, and the free capacity of the third working memory 304 is 512 MB. In this case, the dividing unit 240 can divide region C into two blocks, block c1 (300 MB) and block c2 (300 MB). Moreover, the supplying unit 260 can supply the update software for updating the object software stored in the third non-volatile memory 302 to the third working memory 304 in block units by supplying the update target block ci to the third working memory 304 according to the index i.
[0086] In this way, the update software can be used to update a plurality of object softwares that are respectively updated using a plurality of different working memories (for example, the first working memory 104, the second working memory 204, and the third working memory 304) as working areas. In this case, the dividing unit 240 can divide the update software into a plurality of blocks such that each block is equal to or less than the free capacity of the corresponding working memory among the plurality of working memories. Moreover, the supplying unit 260 can supply the update software to the corresponding working memory in block units.
[0087] Thus, according to the update assisting device 200 of the present embodiment, by performing the division process and the supply process in block units for the regions determined to be necessary in accordance with the respective free capacities of a plurality of working memories (for example, the first working memory 104, the second working memory 204, and the third working memory 304), it is also possible to update a plurality of object softwares stored in a plurality of object devices 100 to 300 using one update software.
[0088] Figure 6 An example of a block diagram of an update assistance device 200 showing another embodiment. In this figure, components having the same functions are labeled with the same reference numerals, and the description is omitted hereinafter except for the differences. The update assistance device 200 of another embodiment further includes a pre-update software acquisition unit 610, a pre-update software storage unit 620, and a return unit 630 in addition to the functional units included in the update assistance device 200 of the above embodiment. Figure 2 The pre-update software acquisition unit 610 acquires pre-update software representing the object software before the update from the target device 100. More specifically, the pre-update software acquisition unit 610 can communicate with the first CPU 106 via the relay device 50 before updating the object software, and acquire a copy of the object software stored in the first non-volatile memory 102 as the pre-update software. The pre-update software acquisition unit 610 supplies the acquired pre-update software to the pre-update software storage unit 620. The functions of such a pre-update software acquisition unit 610 can be provided, for example, by the second CPU 206 and a communication unit (not shown).
[0089] The pre-update software storage unit 620 stores the pre-update software. More specifically, the pre-update software storage unit 620 can store a copy of the object software supplied from the pre-update software acquisition unit 610 as the pre-update software. The functions of such a pre-update software storage unit 620 can be provided, for example, by the second non-volatile memory 202.
[0090] When the update of the object software using the update software is unsuccessful, the return unit 630 returns the pre-update software to the target device. More specifically, the determination unit 270 can start a timer set for a predetermined period based on the supply of the update target block i. Then, when the first CPU 106 does not notify the completion of the update process until the timer expires, the determination unit 270 can determine that the update of the object software is unsuccessful. In this case, the determination unit 270 can notify the return unit 630 that the update of the object software is unsuccessful. Correspondingly, the return unit 630 can access the pre-update software storage unit 620 and acquire the stored pre-update software. Then, the return unit 630 can communicate with the first CPU 106 via the relay device 50 and return the pre-update software to the target device 100. The functions of such a return unit 630 can be provided, for example, by the second CPU 206 and a communication unit (not shown).
[0091]
[0092] In this way, the update assistance device 200 of another embodiment acquires the pre-update software from the target device 100 and stores it. In the case where the update of the target software is unsuccessful, the pre-update software is sent back to the target device 100. Thus, according to the update assistance device 200 of another embodiment, before updating the target software, the pre-update target software is backed up to its own device. Therefore, even if the update of the target software does not end successfully, the pre-update target software can be restored to the target device 100 according to the send-back from the send-back unit 630.
[0093] Figure 7 Another example of the configuration diagram of the update assistance device 200 of this embodiment is shown. In this figure, components having the same structure as Figure 1 are labeled with the same reference numerals, and the description is omitted except for the following differences. In the above description, as an example, the case where the update assistance device 200 includes the second non-volatile memory 202 is shown. However, in this figure, the update assistance device 200 includes an interface unit 710 and a storage device 720 instead of or in addition to the second non-volatile memory 202.
[0094] The interface unit 710 is an input / output unit for connecting the storage device 720 to the update assistance device 200. For example, the interface unit 710 can be a port, slot, or connector for detachably connecting the storage device 720 to the update assistance device 200. As an example, it can be a USB port or an SD card slot.
[0095] The storage device 720 is a recording medium capable of storing data. For example, the storage device 720 can be a recording medium detachably installed in the update assistance device 200 via the interface unit 710. As an example, it can be a USB memory or an SD card to enable the carrying of data.
[0096] The update software can be pre-stored in such a storage device 720. That is, the function of the update software storage unit 220 can be provided by the detachable storage device 720. Thus, according to the update assistance device 200 of this embodiment, there is no need to download the update software separately. Therefore, even in an environment where the computer network cannot be accessed, the update of the target software can be assisted, and the cost and time spent on downloading can be reduced.
[0097] Figure 8 An example of an update assistance system that can use the update assistance device 200 of this embodiment is shown. In this figure, for components having the same structure as Figure 1Components with the same structure are labeled with the same reference numerals, and descriptions are omitted except for the following differences. In the above description, as an example, the case where the update assistance device 200 is built into the device 10 is shown, but in this figure, the update assistance device 200 is provided on the cloud. That is, the update assistance device 200 can be a virtual board located on the cloud.
[0098] In this case, the update assistance device 200 can be configured to be able to communicate with the target device 100 via a computer network and a relay device 50. Therefore, the supply unit 260 can supply the update software to the first working memory 104 in the target device 100 in block units via the computer network. Thus, according to the update assistance device 200 of the present embodiment, it is possible to assist in the update of the target software in the target device 100 without preparing a physical board. In addition, since it is possible to update a plurality of target devices 100 built into a plurality of devices 10 from the update assistance device 200 on the cloud, effective updates can be performed (centrally).
[0099] Various embodiments of the present invention can be described with reference to flowcharts and block diagrams. Here, a module can represent (1) a stage of a process of performing an operation or (2) a part of a device having a function of performing an operation. Specific stages and parts can be implemented by dedicated circuits, programmable circuits supplied together with computer-readable instructions stored on a computer-readable medium, and / or processors supplied together with computer-readable instructions stored on a computer-readable medium. The dedicated circuit can include digital and / or analog hardware circuits, and can also include an integrated circuit (IC) and / or discrete circuits. The programmable circuit can include a reconfigurable hardware circuit, which includes memory elements such as logical AND, logical OR, logical XOR, logical NAND, logical NOR, and other logical operations, flip-flops, registers, field-programmable gate arrays (FPGAs), programmable logic arrays (PLAs), etc.
[0100] A computer-readable medium can include any tangible device capable of storing instructions executable by a suitable device. As a result, a computer-readable medium having instructions stored therein includes a product containing instructions capable of being executed for manufacturing means for performing the operations specified by a flowchart or block diagram. Examples of computer-readable media can include: electronic storage media, magnetic storage media, optical storage media, electromagnetic storage media, semiconductor storage media, etc. More specific examples of computer-readable media can include: floppy (registered trademark) disks, magnetic disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), electrically erasable programmable read-only memory (EEPROM), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disc (DVD), Blu-ray (RTM) disc, memory stick, integrated circuit card, etc.
[0101] Computer-readable instructions include any one of source code and object code described by any combination of one or more programming languages including assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, status setting data, or object-oriented programming languages such as Smalltalk (registered trademark), JAVA (registered trademark), C++, etc., and existing procedural programming languages such as the "C" programming language or the same programming language.
[0102] Computer-readable instructions can be provided to a processor or programmable circuit of a general-purpose computer, special-purpose computer, or other programmable data processing device via a local or local area network (LAN), a wide area network (WAN) such as the Internet, and computer-readable instructions are executed for manufacturing means for performing the operations specified by a flowchart or block diagram. Examples of processors include: computer processors, processing units, microprocessors, digital signal processors, controllers, microcontrollers, etc.
[0103] Figure 9 An example of the computer 9900 representing various ways in which the present invention can be implemented in whole or in part. Through the program installed in the computer 9900, the computer 9900 can function as an operation associated with the device of the embodiment of the present invention or one or more parts of the device, or execute the operation or the one or more parts, and / or the computer 9900 can execute the process of the embodiment of the present invention or a stage of the process. In order to cause the computer 9900 to execute specific operations associated with several or all of the modules of the flowcharts and block diagrams described in this specification, such a program can be executed by the CPU 9912.
[0104] The computer 9900 of the present embodiment includes a CPU 9912, a RAM 9914, a graphics controller 9916, and a display device 9918, which are interconnected via a main controller 9910. The computer 9900 also includes input / output units such as a communication interface 9922, a hard disk drive 9924, a DVD drive 9926, and an IC card drive, which are connected to the main controller 9910 via an input / output controller 9920. The computer also includes a ROM 9930 and conventional input / output units such as a keyboard 9942, which are connected to the input / output controller 9920 via an input / output chip 9940.
[0105] The CPU 9912 operates according to programs stored in the ROM 9930 and the RAM 9914, thereby controlling each unit. The graphics controller 9916 acquires image data generated by the CPU 9912 in a frame buffer or the like provided in the RAM 9914 or itself, and displays the image data on the display device 9918.
[0106] The communication interface 9922 can communicate with other electronic devices via a network. The hard disk drive 9924 stores programs and data used by the CPU 9912 in the computer 9900. The DVD drive 9926 reads programs or data from a DVD-ROM 9901 and provides the programs or data to the hard disk drive 9924 via the RAM 9914. The IC card drive reads programs and data from an IC card and / or writes programs and data to the IC card.
[0107] The ROM 9930 stores therein a boot program and the like executed by the computer 9900 at activation and / or a program dependent on the hardware of the computer 9900. The input / output chip 9940 can also connect various input / output units to the input / output controller 9920 via a parallel port, a serial port, a keyboard port, a mouse port, etc.
[0108] Programs are provided by a computer-readable medium such as a DVD-ROM 9901 or an IC card. The programs are read from the computer-readable medium and installed in the hard disk drive 9924, the RAM 9914, or the ROM 9930, which are also examples of computer-readable media, and are executed by the CPU 9912. The information processing described in these programs is read into the computer 9900, thereby bringing about cooperation between the programs and the above various types of hardware resources. The device or method can be configured to implement the operation or processing of information by using the computer 9900.
[0109] For example, in the case of performing communication between the computer 9900 and an external device, the CPU 9912 may execute a communication program loaded in the RAM 9914, and direct communication processing to the communication interface 9922 based on the processing described in the communication program. Under the control of the CPU 9912, the communication interface 9922 reads transmission data stored in a transmission buffer processing area provided in a recording medium such as the RAM 9914, a hard disk drive 9924, a DVD-ROM 9901, or an IC card, transmits the read transmission data to the network, or writes received data received from the network to a reception buffer processing area provided on the recording medium, etc.
[0110] In addition, the CPU 9912 may read all or a necessary part of a file or database stored in an external recording medium such as the hard disk drive 9924, a DVD drive 9926 (DVD-ROM 9901), an IC card, etc. into the RAM 9914, and perform various types of processing on the data on the RAM 9914. Then, the CPU 9912 writes the processed data back to the external recording medium.
[0111] Various types of information such as various types of programs, data, tables, and databases can be stored in the recording medium and undergo information processing. The CPU 9912 performs various types of processing described throughout this disclosure on the data read from the RAM 9914 and writes the results back to the RAM 9914. The various types of processing include various types of operations, information processing, conditional judgment, conditional branch, unconditional branch, information retrieval / replacement, etc. specified by an instruction sequence of a program. In addition, the CPU 9912 can retrieve information in files, databases, etc. in the recording medium. For example, in the case where a plurality of entries each having an attribute value of a first attribute associated with an attribute value of a second attribute are stored in the recording medium, the CPU 9912 can retrieve an entry that matches the condition specifying the attribute value of the first attribute from the plurality of entries, and read the attribute value of the second attribute stored in the entry, thereby obtaining the attribute value of the second attribute associated with the first attribute that satisfies a predetermined condition.
[0112] The programs or software modules described above can be stored in a computer-readable medium on or near the computer 9900. In addition, a recording medium such as a hard disk or RAM provided in a server system connected to a dedicated communication network or the Internet can be used as a computer-readable medium, whereby the program is provided to the computer 9900 via the network.
[0113] As described above, the present invention has been described using embodiments, but the technical scope of the present invention is not limited to the scope described in the above embodiments. It is obvious to those skilled in the art that various changes or improvements can be made to the above embodiments. According to the description of the claims, the embodiments with such changes or improvements can also be included in the technical scope of the present invention.
[0114] In the claims, the specification, and the drawings, for the operations, processes, steps, stages, and other processes in the apparatuses, systems, programs, and methods shown, the execution order is not particularly specified as "earlier", "before", etc. In addition, it should be noted that as long as the output of the previous process is not used in the subsequent process, it can be implemented in any order. Regarding the operation flow in the claims, the specification, and the drawings, even if it is described using "first," "next," etc. for the convenience of explanation, it does not mean that it must be implemented in that order. Description of Reference Numerals
[0115] 10 Device, 50 Relay Device, 100 Target Device (First Target Device), 102 First Non-Volatile Memory, 104 First Working Memory, 106 First CPU, 200 Update Assistance Device (Second Target Device), 202 Second Non-Volatile Memory, 204 Second Working Memory, 206 Second CPU, 210 Update Software Acquisition Unit, 220 Update Software Storage Unit, 230 Capacity Information Acquisition Unit, 240 Division Unit, 250 Indication Unit, 260 Supply Unit, 270 Judgment Unit, 300 Third Target Device, 302 Third Non-Volatile Memory, 304 Third Working Memory, 306 Third CPU, 610 Pre-Update Software Acquisition Unit, 620 Pre-Update Software Storage Unit, 630 Return Unit, 710 Interface Unit, 720 Storage Device, 9900 Computer, 9901 DVD-ROM, 9910 Main Controller, 9912 CPU, 9914 RAM, 9916 Graphics Controller, 9918 Display Device, 9920 Input / Output Controller, 9922 Communication Interface, 9924 Hard Disk Drive, 9926 DVD Drive, 9930 ROM, 9940 Input / Output Chip, 9942 Keyboard.
Claims
1. An update assistance device, characterized in that it comprises: an update software storage unit that stores update software for updating object software executed in an object device; a splitting unit that splits the update software into a plurality of blocks so that each block is less than or equal to the free capacity of a working memory used as a working area for updating the object software; and a supply unit that supplies the update software to the working memory in block units.
2. The update assistance device according to claim 1, characterized in that the update assistance device further comprises a determination unit that determines whether a partial update of the object software using an update target block among the plurality of blocks is completed, and in the case where it is determined that the partial update of the object software using the update target block is completed, the supply unit supplies the next update target block among the plurality of blocks to the working memory.
3. The update assistance device according to claim 1, characterized in that the update assistance device further comprises a capacity information acquisition unit that acquires capacity information indicating the free capacity of the working memory, and the splitting unit splits the update software into the plurality of blocks based on the capacity information.
4. The update assistance device according to claim 1, characterized in that the object device comprises a non-volatile memory that stores the object software, the working memory, and a CPU that executes an update process of the object software, and the update assistance device further comprises an instruction unit that instructs the CPU of the object device to partially update the object software.
5. The update assistance device according to claim 4, characterized in that the instruction unit instructs the CPU of the object device to write an update target block into the working memory.
6. The update assistance device according to claim 4, characterized in that the instruction unit instructs the CPU of the object device to update the object software using the update target block supplied to the working memory.
7. The update assistance device according to claim 1, characterized in that the update software is used to update a plurality of object software that are respectively updated using a plurality of different working memories as working areas, the splitting unit splits the update software into the plurality of blocks such that each block is less than or equal to the free capacity of the corresponding working memory among the plurality of working memories, and the supply unit supplies the update software to the corresponding working memory in block units.
8. The update assistance device according to claim 1, characterized in that it further comprises: a pre-update software acquisition unit that acquires pre-update software representing the object software before update from the object device; a pre-update software storage unit that stores the pre-update software; and a feedback unit that, in the case where the update of the object software using the update software is unsuccessful, feeds back the pre-update software to the object device.
9. The update assistance device according to any one of claims 1 to 8, characterized in that The update assistance device further includes an update software acquisition unit that acquires the update software via a computer network.
10. The update assistance device according to any one of claims 1 to 8, wherein, the function of the update software storage unit is provided by a detachable storage device.
11. The update assistance device according to any one of claims 1 to 8, wherein, the supply unit supplies the update software to the working memory via a computer network.
12. A field device, wherein, it includes the update assistance device according to any one of claims 1 to 8.
13. The field device according to claim 12, wherein, it further includes: the target device; and a relay device, the target device and the update assistance device are installed on the relay device, and the relay device relays communication between the target device and the update assistance device.
14. An update assistance method, wherein, it includes: a computer stores update software for updating target software executed in a target device; the computer divides the update software into a plurality of blocks so that each block is less than or equal to the free capacity of a working memory used as a working area for updating the target software; and the computer supplies the update software to the working memory in block units.
15. An update assistance program, wherein, a computer functions as an update software storage unit, a division unit, and a supply unit by executing the update assistance program, the update software storage unit stores update software for updating target software executed in a target device, the division unit divides the update software into a plurality of blocks so that each block is less than or equal to the free capacity of a working memory used as a working area for updating the target software, the supply unit supplies the update software to the working memory in block units.
Citation Information
Patent Citations
Field equipment system
JP2004295299A
Method for updating memory of field device and its system
JP2005135223A
Memory update system for field apparatus
JP2005173747A
CPU memory device and layout program displacing method
JP2005182106A