WO2018159691A1 - 通信処理装置、情報処理装置、及び、通信処理装置の制御方法 - Google Patents

通信処理装置、情報処理装置、及び、通信処理装置の制御方法 Download PDF

Info

Publication number
WO2018159691A1
WO2018159691A1 PCT/JP2018/007549 JP2018007549W WO2018159691A1 WO 2018159691 A1 WO2018159691 A1 WO 2018159691A1 JP 2018007549 W JP2018007549 W JP 2018007549W WO 2018159691 A1 WO2018159691 A1 WO 2018159691A1
Authority
WO
WIPO (PCT)
Prior art keywords
reference destination
firmware
data
destination address
update
Prior art date
Application number
PCT/JP2018/007549
Other languages
English (en)
French (fr)
Inventor
拓弥 原田
裕隆 氏川
學 吉野
憲行 太田
鈴木 謙一
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to US16/488,864 priority Critical patent/US11360758B2/en
Priority to JP2019503068A priority patent/JP6751197B2/ja
Priority to EP18760807.0A priority patent/EP3572932A4/en
Priority to CN201880013897.8A priority patent/CN110300955B/zh
Publication of WO2018159691A1 publication Critical patent/WO2018159691A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B10/00Transmission systems employing electromagnetic waves other than radio-waves, e.g. infrared, visible or ultraviolet light, or employing corpuscular radiation, e.g. quantum communication
    • H04B10/27Arrangements for networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Definitions

  • the present invention relates to a communication processing device, an information processing device, and a control method for the communication processing device.
  • This application includes Japanese Patent Application No. 2017-036929 filed in Japan on February 28, 2017, Japanese Patent Application No. 2017-140265 filed in Japan on July 19, 2017, and August 25, 2017. Claim priority based on Japanese Patent Application No. 2017-162703 filed in Japan, the contents of which are incorporated herein.
  • the time until the communication device is started again and the program can be executed is accompanied by interruption of the communication service.
  • the interruption of the communication service has an effect that the user who uses the communication service cannot use the network. Therefore, at present, it is difficult to update the firmware during service operation.
  • OLT Optical Line Network
  • ONU subscriber line terminal device
  • the optical communication network to which the OLT is connected is a passive optical communication network such as a PON (Passive Optical Network), for example.
  • the ONU is a device that realizes communication with another communication device by an optical signal passing through a communication network.
  • the ONU may be configured using a plurality of devices.
  • the ONU is installed, for example, in the home of a user who receives communication service.
  • the firmware update the firmware is used after being expanded from ROM (Read Only Memory) to the memory when starting up the communication device.
  • the firmware before update stored in ROM is rewritten to the updated firmware.
  • a technique is known in which the updated firmware is expanded in a memory at the next startup to complete the update (for example, see Non-Patent Document 1).
  • the communication device when the communication device is restarted and the firmware is updated, the communication is disconnected during the time from when the communication device is turned off until it can be used again. . Further, when the communication device is activated, the firmware written in the ROM is expanded in the memory, thereby enabling communication. However, if the memory is directly rewritten during operation of the communication device, there is a concern that an unexpected abnormality may occur in the communication device. Regarding the method for shortening the firmware update time, new items, etc. are stored in the ROM by pre-writing the updated firmware (hereinafter referred to as “updated firmware”) to which new functions are added in the free space of the ROM.
  • updated firmware updated firmware
  • firmware before update There is a method to select and start either firmware when starting the communication device with the firmware before update (hereinafter referred to as “firmware before update”) and the firmware after update not added.
  • firmware before update the firmware before update
  • the firmware after update not added.
  • the time for writing the firmware to the ROM is shortened, only the firmware to be activated can be selected at the next activation. For this reason, it is necessary to rewrite the firmware on the memory to reflect the firmware update to the service in operation. To reflect the updated firmware stored in the ROM to the memory, restart the communication device. Can't escape.
  • PON protection is a method of shortening the time when communication is interrupted when a failure occurs by providing a communication device for updating and physically switching the path.
  • an optical access device such as an OLT
  • ONUs may be connected to one optical access device using an optical splitter. In this case, in order to switch to the optical access device for update in order to update the function of the optical access device, the physical device configuration and the communication path must be changed.
  • an object of the present invention is to provide an optical access device capable of updating firmware without causing communication interruption.
  • the communication processing device stores first data that is data related to firmware before update and second data that is data related to firmware after update, and a reference destination included in the first data
  • a memory for storing a first reference destination address indicating a storage area associated with the reference destination, and at least a part of the first reference destination address stored in the memory for the reference destination of the second data
  • a rewriting unit that rewrites a second reference destination address indicating a storage area, and when referring to the reference destination of the first data, the second data is referred to based on the second reference destination address stored in the memory A control unit.
  • the rewriting unit rewrites the first reference destination address stored in the memory to the second reference destination address in response to a rewrite instruction.
  • the rewriting unit rewrites the second reference destination address obtained by adding a predetermined offset value to the first reference destination address stored in the memory.
  • One aspect of the present invention is the communication processing device described above, wherein the memory further stores data related to platform firmware, and the control unit refers to the reference destination of the first data via the referenced platform firmware.
  • the second data is referred to based on the second reference destination address stored in the memory.
  • the communication processing apparatus further includes a writing unit that writes the second data in the free storage area when the memory has a free storage area in which the second data is written.
  • the communication processing device further includes a stop processing unit that sets a guard time that is a period, and the control unit is configured to set the guard set by the stop processing unit. During the time period, processing other than processing for rewriting the first reference destination address by the rewriting unit to the second reference destination address or processing other than processing having higher priority than the processing for rewriting is stopped.
  • the rewriting unit is configured such that at least one of a number of the first reference destination addresses to be rewritten and a time limit of a function restricted by the rewriting process is a threshold value.
  • the stop processing unit determines whether or not at least one of the rewrite number and the constraint time is equal to or greater than the threshold value.
  • the guard time is set based on either one.
  • the rewrite unit when the rewrite unit further stores third data, which is another data related to the updated firmware, in the memory, the first reference destination address At least a part is rewritten to the second reference destination address or a third reference destination address indicating a storage area of a reference destination of the third data, or at least a part of the second reference destination address is changed to the first reference address. 3 Rewrite to the reference address.
  • One aspect of the present invention is the communication processing device according to the first aspect, wherein the first data storage area is stored in an area different from the storage area of the first data and is included in the second data.
  • the value of the second variable holding the reference destination address indicating the first variable is rewritten to the first variable reference destination address indicating the storage area of the first variable in the first data, and the control unit
  • the first variable is referred to based on the first variable reference destination address held by.
  • the rewriting unit performs the rewriting on the first variable that is included in the first data and the second data in common.
  • One aspect of the present invention is the communication processing apparatus according to the first aspect, wherein the rewriting unit stores the first and second data when the third data, which is another data related to the updated firmware, is further stored in the memory.
  • a value of a third variable that is stored in an area different from the storage area and holds a reference destination address indicating a storage area of at least a part of the first variable, the first variable reference destination address, or Rewrite to the reference destination address held by the second variable.
  • One aspect of the present invention further includes a communication unit that communicates based on the second data referred to by the control unit in the communication processing device.
  • An information processing apparatus stores first data that is data related to firmware before update and second data that is data related to firmware after update, and a reference destination included in the first data
  • a memory that stores a first reference destination address indicating a storage area in association with the reference destination, and a control unit that references the memory, and the control unit is at least partly stored in the memory
  • the first reference destination address of the second data is rewritten to a second reference destination address indicating the storage area of the reference destination of the second data, and is stored in the memory when the reference destination of the first data is referred to
  • the second data is referred to based on the second reference destination address.
  • the method for controlling a communication processing apparatus stores first data that is data related to firmware before update and second data that is data related to firmware after update, and is included in the first data
  • a first reference destination address indicating a reference destination storage area is stored in association with the reference destination, and at least a part of the first reference destination address is a second reference indicating the reference destination storage area of the second data
  • the second data is referred to based on the stored second reference destination address.
  • FIG. 6 is a flowchart showing a flow of firmware update according to the second embodiment. It is a figure which shows the example of a structure of the optical communication system in 1st and 2nd embodiment. It is a figure which shows the example of a structure of the optical communication system in 3rd Embodiment. It is a figure which shows the example of a structure of the optical communication system in 4th Embodiment.
  • FIG. 1 is a diagram illustrating an example of an optical communication system according to the first embodiment.
  • the optical communication system 1 is a system that communicates using an optical signal.
  • the optical communication system 1 includes an optical access device 2 and a writing device 3.
  • the optical access device 2 is a communication device such as an OLT.
  • the optical access device 2 includes a ROM (Read Only Memory) 20, a startup processing unit 21, a memory 22, a CPU (Central Processing Unit) 23, a communication unit 24, a writing unit 25, a registration unit 26, A rewriting unit 27 and a stop processing unit 28 are provided.
  • the optical access device 2 may further include a nonvolatile recording medium (non-temporary recording medium) such as a magnetic hard disk device or a semiconductor storage device.
  • a nonvolatile recording medium non-temporary recording medium
  • the writing device 3 is an information processing device such as a personal computer.
  • the writing device 3 stores the updated firmware 222.
  • the post-update firmware 222 is firmware for the optical access device 2 to perform optical communication, for example. If the writing device 3 writes the post-update firmware 222 onto the pre-update firmware 221 in the memory 22 during the period when the CPU 23 is using the pre-update firmware 221, an unexpected error may occur in the optical access device 2. May occur. Therefore, the writing device 3 stores the updated firmware 222 in an empty area of the memory 22 so that the pre-update firmware 221 stored in the memory 22 is not rewritten.
  • the writing device 3 stores the updated firmware 222 in the memory 22 even during the period when the CPU 23 is using the pre-update firmware 221. be able to.
  • the free area of the memory 22 is an area where the pre-update firmware 221 and information in use are not written. Therefore, the free area may be an area in which firmware that is no longer used due to past updates is written.
  • the writing device 3 may write all of the updated firmware 222 or a difference between the pre-update firmware 221 and the post-update firmware 222 in the memory 22.
  • the optical access device 2 in the first embodiment switches the processing to the function data or the like included in the post-update firmware 222 instead of the function data or the like included in the pre-update firmware 221 by indirect reference.
  • the optical access device 2 in the first embodiment rewrites the address of function data and the like included in the pre-update firmware 221 to the address of function data and the like included in the post-update firmware 222.
  • the indirect reference holds an entry point such as a call destination function or a variable value. By rewriting the value of this entry point, the specified function or variable value can be called.
  • the function entry point indicates from which memory address of the firmware the function is written.
  • CPU23 implement
  • the activation processing unit 21 writes the pre-update firmware 200 stored in the ROM 20 into the memory 22 as the pre-update firmware 221 at the time of activation.
  • the activation processing unit 21 may be realized by using hardware such as an LSI (Large Scale Integration) such as an ASIC (Application Specific Integrated Circuit), an FPGA (Field-Programmable Gate Array), or a GPU (Graphics Processing Unit).
  • LSI Large Scale Integration
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • GPU Graphics Processing Unit
  • the activation processing unit 21 writes the pre-update firmware 200 stored in the ROM 20 into the memory 22 as the pre-update firmware 221 when the optical access device 2 is activated and before the CPU 23 is activated.
  • the pre-update firmware 200 is firmware for the optical access device 2 to execute optical communication, for example.
  • the activation processing unit 21 writes the platform firmware 220 stored in the nonvolatile recording medium such as the ROM 20 in the memory 22 when the optical access device 2 is activated and before the CPU 23 is activated.
  • the platform firmware 220 is firmware such as an operating system, for example.
  • the platform firmware 220 is a caller of each function data of the pre-update firmware 221 and the post-update firmware 222.
  • the storage medium in which the pre-update firmware 200 is stored is not limited to the ROM 20.
  • the storage medium storing the pre-update firmware 200 may be, for example, an HDD, an optical disk, or an external memory as long as it is a memory area that is referred to at the time of startup. Even if the storage medium storing the pre-update firmware 200 is a volatile memory, it does not have to be volatilized during the startup process.
  • the storage medium storing the pre-update firmware 200 may be a storage area such as a memory provided by a server, a cloud, or the like for the optical access device 2 or a VM associated with the optical access device 2. Good.
  • the ROM 20 is a read-only recording medium.
  • the ROM 20 may be a rewritable flash ROM.
  • the ROM 20 stores pre-update firmware 200.
  • the ROM 20 does not store the updated firmware 222.
  • the pre-update firmware 200 is stored in the ROM 20 in a state in which the CPU 23 can operate even when it is referred to by the CPU 23. That is, the binary data of the pre-update firmware 200 is the same as the binary data of the pre-update firmware 221.
  • the memory 22 is a volatile recording medium such as a RAM (Random Access Memory).
  • the memory 22 only needs to be rewritable.
  • the memory 22 may be a writable nonvolatile storage medium, a register, an FPGA, or the like.
  • the memory 22 stores the platform firmware 220 when the optical access device 2 is activated by a write operation by the activation processing unit 21.
  • the pre-update firmware 221 is stored in the memory 22 by a writing operation by the activation processing unit 21 when the optical access device 2 is activated.
  • the memory 22 includes a free space having a sufficient capacity.
  • the sufficient capacity is a capacity that can store at least the updated firmware 222.
  • the updated firmware 222 output from the writing device 3 is stored in a free area of the memory 22. For example, after the CPU 23 is activated, the updated firmware 222 is stored in the memory 22 in a free area.
  • the pre-update firmware 221 includes a reference destination 223 that is function data, a variable value, or the like.
  • the function data is associated with the start address of the function data storage area of the firmware 221 before update in the memory 22.
  • the variable value is associated with the start address of the storage area of the variable of the firmware 221 before update in the memory 22.
  • the updated firmware 222 includes a new reference destination 225 that is function data, variable values, or the like.
  • the function data is associated with the start address of the storage area for the function data of the updated firmware 222 in the memory 22.
  • the variable value is associated with the start address of the storage area for the variable of the updated firmware 222 in the memory 22.
  • the memory 22 further stores an indirect reference table 224.
  • the indirect reference table 224 is data in a table format in which function data, variable values, and the like are associated with the top addresses of storage areas for the function data, variables, and the like.
  • the CPU 23 is an arithmetic device.
  • the CPU 23 controls the operation of each unit of the optical access device 2.
  • the CPU 23 implements functions such as a writing unit 25, a registration unit 26, a rewriting unit 27, and a stop processing unit 28 by executing a program stored in the memory 22 or the like.
  • the writing unit 25, the registration unit 26, the rewriting unit 27, the stop processing unit 28, and the like may be realized using, for example, an LSI such as an ASIC, hardware such as an FPGA, and a GPU.
  • the CPU 23 and hardware such as LSI such as ASIC, FPGA and GPU correspond to the control unit.
  • the CPU 23 executes an operation based on each program by reading the platform firmware 220, the pre-update firmware 221 or the post-update firmware 222 stored in the volatile memory 22.
  • the writing unit 25 may acquire the updated firmware 222, which is the updated firmware, via the communication unit 24.
  • the writing unit 25 may acquire the updated firmware 222 from an external storage medium such as a CD-ROM.
  • the writing unit 25 stores the updated firmware 222 in the volatile memory 22.
  • the writing unit 25 determines whether or not the updated firmware 222 can be written in the free area of the memory 22 based on the write request output by the writing device 3.
  • the write request includes information indicating the capacity of the updated firmware 222.
  • the writing unit 25 determines whether or not the free area of the memory 22 is greater than or equal to the capacity of the updated firmware 222 based on the capacity of the updated firmware 222 included in the write request.
  • the writing unit 25 writes the updated firmware 222 into the memory 22 when the free area of the memory 22 is equal to or larger than the capacity of the updated firmware 222.
  • the writing unit 25 may write all of the updated firmware 222 or a difference between the pre-update firmware 221 and the post-update firmware 222 in the memory 22. On the other hand, the writing unit 25 does not write the updated firmware 222 to the memory 22 when the free area of the memory 22 is less than the capacity of the updated firmware 222. When the free area of the memory 22 is less than the capacity of the updated firmware 222, the writing unit 25 may notify that the free area of the memory 22 is less than the capacity of the updated firmware 222. Good. Note that the post-update firmware 222 may determine the size of the free memory area before writing to the memory 22. The updated firmware 222 performs writing to the memory 22 according to the determination result.
  • the registration unit 26 stores the reference destination 223 included in the pre-update firmware 221 and the reference to the indirect reference table 224.
  • a reference destination address such as the top address of the storage area of the destination 223 is registered.
  • the function entry points held in the data area of the pre-update firmware 221 are stored in the memory 22.
  • the registration unit 26 registers the entry point of the function stored in the memory 22 as a reference destination address. In other words, the registration unit 26 registers the correspondence between the function pointer of the pre-update firmware 221 and the reference destination address of the function. That is, the registration unit 26 assigns the reference destination address to the function pointer.
  • the registration in the indirect reference table 224 is not necessarily performed by the registration unit 26 when the pre-update firmware 200 is written into the memory 22. Registration in the indirect reference table 224 may be performed by a linker or the like when the pre-update firmware 221 is compiled.
  • the rewriting unit 27 stores the new reference destination 225 included in the updated firmware 222 and the new reference destination 225 into the indirect reference table 224.
  • a new reference destination address such as the top address of the storage area is registered. Further, the rewriting unit 27 rewrites the reference destination address stored in association with the reference destination 223 stored in the indirect reference table 224 to a new reference destination address. If the post-update firmware 222 is only stored in the memory 22, the CPU 23 can refer only to data related to the pre-update firmware 221.
  • the rewriting unit 27 rewrites the reference destination address so that the reference destination address stored in the indirect reference table 224 referred to by the CPU 23 indicates the address of the storage area of the new reference destination 225. Thereby, the CPU 23 refers to the new reference destination 225. Specifically, the rewriting unit 27 writes the value of the function pointer that is written when the updated firmware 222 is compiled, as a new reference destination address, in association with the new reference destination 225, and writes it to the indirect reference table 224. (sign up). Further, the rewriting unit 27 rewrites the reference destination address associated with the reference destination 223 stored in the indirect reference table 224 with the value of the function pointer written when the updated firmware 222 is compiled.
  • the updated firmware 222 is programmed using a function pointer or the like. For this reason, when the updated firmware 222 is compiled, an entry point area in which the function data is stored is secured in the updated firmware 222.
  • the new reference address is created when the updated firmware 222 is compiled.
  • the created new reference destination indicates the memory address designated by the updated firmware 222, and thus does not change dynamically. In this way, a new reference destination address of the updated firmware 222 can be grasped in advance.
  • the rewriting unit 27 rewrites the reference destination address stored in association with the reference destination 223 included in the pre-update firmware 221 to a new reference destination address. As a result, a new reference destination 225 included in the updated firmware 222 can be called.
  • the rewrite unit 27 rewrites the indirect reference table 224 in response to a rewrite instruction.
  • the rewrite instruction is input, for example, by inputting a command line via the operation system.
  • the rewrite instruction is input by a program or a user.
  • the rewrite instruction includes identification information of a function to be rewritten of the reference destination address.
  • the rewrite instruction may further include a new reference destination address of the function to be rewritten to the reference destination address.
  • the rewriting unit 27 may determine whether or not the number of reference destination addresses to be rewritten is equal to or greater than a threshold value.
  • the rewrite unit 27 When the number of reference destination addresses to be rewritten is less than the threshold, the rewrite unit 27 sets the reference destination address stored in association with the reference destination 223 included in the pre-update firmware 221 as a new reference destination address. Perform rewrite processing. On the other hand, when the number of reference destination addresses to be rewritten is equal to or greater than the threshold, the rewrite unit 27 outputs information indicating that the number of reference destination addresses to be rewritten is equal to or greater than the threshold to the stop processing unit 28. The rewriting unit 27 may rewrite the reference destination address stored in association with the reference destination 223 included in the pre-update firmware 221 to a new reference destination address without determining the number of reference destination addresses to be rewritten. Good.
  • the rewriting unit 27 performs rewriting processing of the indirect reference table 224 by calling a system call included in the operating system.
  • the rewriting unit 27 may call a system call using an interrupt handler and execute a rewriting process of the indirect reference table 224.
  • the processing of the rewriting unit 27 may be any process as long as data in the memory 22 can be written or rewritten.
  • the rewriting unit 27 may acquire a new reference destination address using the offset value. For example, the rewriting unit 27 adds a predetermined offset value to the reference destination address stored in the indirect reference table 224 to obtain a new reference destination address. The rewrite unit 27 rewrites the reference destination address in the indirect reference table 224 with the acquired new reference destination address. As a result, the rewriting unit 27 rewrites the reference destination address of the function data of the firmware 200 before the update requested by the CPU 23 to the reference destination address of the function data of the firmware 222 after the update.
  • the offset value is, for example, a value indicating a difference between the start address value of the storage area of the pre-update firmware 221 and the start address value of the storage area of the post-update firmware 222.
  • the rewriting unit 27 may have a flag indicating whether or not to use an offset value, for example. When the offset value is “1”, the rewrite unit 27 adds the offset value to the reference destination address stored in the indirect reference table 224. On the other hand, when the offset value is “0”, the rewriting unit 27 refers to the reference destination address stored in the indirect reference table 224. A flag may be provided for each function.
  • FIG. 2 is a diagram illustrating indirect referencing in the optical access apparatus according to the first embodiment.
  • the updated firmware 222 is stored in the memory 22 in a state where the reference destination 223 included in the pre-update firmware 221 and the reference destination address of the reference destination 223 are registered in the indirect reference table 224. The process when written to is shown.
  • the rewrite unit 27 registers a new reference destination 225 included in the updated firmware 222 and a new reference destination address of the new reference destination 225. Further, the rewriting unit 27 rewrites the reference destination address stored in association with the reference destination 223 stored in the indirect reference table 224 with the new reference destination address of the new reference destination 225.
  • FIG. 2 is a diagram illustrating indirect referencing in the optical access apparatus according to the first embodiment.
  • the stop processing unit 28 acquires information indicating that the total number of reference destination addresses to be rewritten output by the writing unit 25 or the total processing time associated with the reference is equal to or greater than a threshold
  • the guard time is set based on the number of The guard time is a period during which processing other than rewriting processing is stopped.
  • the stop target may include a process having a higher priority than the rewrite process, or may be limited to a process having the same or lower priority as the rewrite process, or an equivalent and lower process. A process having a higher priority than the rewrite process is less likely to cause a problem due to writing.
  • the processing time with high priority is not estimated separately, there is an effect that the threshold value can be determined to a larger value.
  • the threshold is set by the time of the higher priority processing. Need to be small. However, there is an effect that the priority can be observed.
  • the writing process is a process of rewriting the reference destination address stored in association with the reference destination 223 in the indirect reference table 224 to a new reference destination.
  • the CPU 23 stops processes other than the period of the guard time, the process other than the rewrite process, or the process having a higher priority than the rewrite process. Then, the stop processing unit 28 outputs a stop command, which is a command for stopping processing other than the rewrite processing, to the platform firmware 220, an OS (Operating System), or the like.
  • the stop command includes information indicating the guard time.
  • the stop processing unit 28 stores information in a table format in which the number of reference destination addresses to be rewritten and the guard time are associated with each other. The stop processing unit 28 selects a guard time based on the information in the table format, and sets the selected guard time.
  • the CPU 23 executes an operation based on the platform firmware 220 stored in the memory 22. Further, the CPU 23 executes an operation based on the pre-update firmware 221 or the post-update firmware 222 based on the association between the reference destination 223 and the reference destination address based on the indirect reference table 224. Specifically, in the indirect reference table 224, when the new reference destination address of the post-update firmware 222 is associated with the reference destination 223 included in the pre-update firmware 221, the CPU 23 sets the new reference destination address. get. Then, the CPU 23 acquires a new reference destination 225 stored in the acquired new reference destination address. The CPU 23 acquires the new reference destination 225 stored in the new reference destination address of the updated firmware 222, and then returns to the reference source.
  • the CPU 23 acquires the reference destination 223 of the firmware 221 before update.
  • the CPU 23 refers to the reference destination of the pre-update firmware 221 for reference destinations other than the predetermined new reference destination 225.
  • the CPU 23 acquires data related to the pre-update firmware 221 or the post-update firmware 222 according to the reference destination address stored in the indirect reference table 224.
  • the communication unit 24 communicates with another communication device using an optical signal in accordance with control by the CPU 23 that executes an operation based on the pre-update firmware 221 or the post-update firmware 222.
  • the other communication device may be an ONU, for example.
  • FIG. 3 is a flowchart showing an example of the operation of the optical access system according to the first embodiment.
  • the optical access device 2 malfunctions and needs to be stopped abnormally and restarted.
  • the optical access device 2 develops the pre-update firmware 200 stored in the ROM 20 in the memory 22 and executes it.
  • the optical access device 2 writes the updated firmware 222 into the memory 22.
  • the optical access device 2 confirms the normality of the updated firmware 222 written in the memory 22.
  • Step S101 An optical access device similar to the optical access device 2 that writes the updated firmware 222 is used to verify whether the updated firmware 222 has a problem. If it is determined that the updated firmware 222 is defective, the process proceeds to step S102.
  • Step S102 If it is determined that there is a problem with the firmware after the update, a process for returning the execution result of the firmware after the update or a restart of the optical access device is performed. (Step S ⁇ b> 103)
  • the writing device 3 When it is determined that there is no malfunction in the updated firmware, the writing device 3 is connected to the optical access device 2.
  • the writing device 3 outputs a write request to the optical access device 2.
  • the writing unit 25 of the optical access device 2 determines whether or not a capacity for writing the updated firmware 222 in the memory 22 is free in response to the write request output by the writing device 3.
  • the process proceeds to step S102, and when it is determined that the capacity is free, the process proceeds to step S104.
  • the pre-update firmware being executed is overwritten with the post-update firmware, the pre-update firmware is damaged.
  • the optical access device 2 may stop.
  • the writing unit 25 refers to a memory map output when compiling the updated firmware 222 and acquires the size of the updated firmware 222.
  • the writing unit 25 may obtain the size of the firmware 221 before update by dumping the memory information of the firmware 221 before update. (Step S ⁇ b> 104)
  • the writing device 3 transfers the updated firmware 222 to the optical access device 2.
  • Step S ⁇ b> 105) The writing unit 25 of the optical access device 2 writes the updated firmware 222 transferred by the writing device 3 into the memory 22.
  • the firmware may be updated by the same method as the normal firmware update.
  • the CPU 23 executes the updated firmware 222 written in the memory 22 by the writing unit 25, and determines whether or not the correct firmware has been written.
  • the writing unit 25 may check and determine whether or not the updated firmware 222 transferred to the optical access device 2 matches the data of the updated firmware 222 expanded on the memory 22.
  • the CPU 23 determines whether or not there is a defect in the execution result. If one or both of the case where the correct firmware is not written and the case where the execution result is defective, the process proceeds to step S107. If the correct firmware is written and the execution result is not defective, The process proceeds to step S108. (Step S107) In the case where one or both of cases where the correct firmware is not written and the execution result is defective, the CPU 23 restores the execution result. (Step S108) When correct firmware is written and when there is no defect in the execution result, the rewrite unit 27 of the optical access device 2 may perform the following determination.
  • the rewriting unit 27 determines whether or not the number of reference destination addresses to be rewritten that are associated with the reference destination 223 stored in the indirect reference table 224 is equal to or greater than a threshold value. If the number of reference destination addresses to be rewritten is equal to or greater than the threshold, the process proceeds to step S109, and if it is less than the threshold, the process proceeds to step S110. The determination process in step S108 may be omitted. In this case, the rewriting unit 27 transitions to step S110. When the number of reference destination addresses to be rewritten is one, the reference destination address associated with the reference destination 223 of the pre-update firmware 221 in the indirect reference table 224 is set as a new reference destination 225 of the post-update firmware 222.
  • Step S109 When the number of reference destination addresses to be rewritten is equal to or greater than the threshold value, the stop processing unit 28 of the optical access apparatus 2 calculates a guard time based on the number of reference destination addresses to be rewritten.
  • the stop processing unit 28 outputs, to the platform firmware 220 and the like, a stop command for stopping processes other than the rewriting process during the guard time period obtained by the calculation.
  • the stop processing unit 28 may output a control instruction that gives the highest priority to the rewriting process to the platform firmware 220 or the like. For example, the stop processing unit 28 outputs a stop command and a priority control instruction to the platform firmware 220 or the like using a system call or the like.
  • Step S110 The rewrite unit 27 of the optical access device 2 rewrites the reference destination address stored in association with the reference destination 223 stored in the indirect reference table 224 to a new reference destination address. Specifically, the rewrite unit 27 confirms the reference address of the function pointer associated with the reference destination 223 of the function to be updated included in the pre-update firmware 221.
  • the rewrite unit 27 rewrites the reference destination address with a new reference destination address of the new reference destination 225 of the function to be updated included in the updated firmware 222. By doing so, the firmware can be accurately updated without any defects.
  • the firmware update process may be performed again.
  • the rewriting unit 27 determines whether the rewriting is successful. If it is determined that rewriting has succeeded, the process proceeds to step S111. If it is determined that rewriting has failed, the process proceeds to step S112.
  • Step S111 When it is determined that the rewriting is successful, the rewriting unit 27 of the optical access device 2 confirms the rewriting result. Specifically, the rewriting unit 27 confirms whether or not the process shifts to the updated firmware 222 by confirming whether or not the rewritten new reference address is correct. If the rewriting unit 27 determines that the process shifts to the updated firmware 222 because there is no abnormality or error, the rewriting unit 27 ends the update sequence. (Step S112) When it is determined that the rewriting has failed, the rewriting unit 27 of the optical access apparatus 2 restores the execution result. The optical access device 2 may be restarted when rewriting fails and the operation of the optical access device 2 is stopped.
  • the execution result is restored.
  • the case where the operation is stopped indicates, for example, a case where processing for a predetermined period (millisecond) is stopped or a case where there is no response to a timer such as a watchdog timer.
  • the updated firmware 222 may be stored in the ROM 20.
  • the updated firmware 222 stored in the ROM 20 is written in a free area of the memory 22.
  • the indirect reference table 224 may be included in the pre-update firmware 221.
  • the case where the writing unit 25 writes the updated firmware 222 in the free area of the memory 22 based on the writing request output from the writing device 3 has been described, but the present invention is not limited to this example. .
  • the writing unit 25 may write all of the updated firmware 222 or may write a difference between the pre-update firmware 221 and the pre-update firmware 221.
  • the stop processing unit 28 sets the guard time based on the number of reference destination addresses to be rewritten has been described, but the present invention is not limited to this example.
  • the stop processing unit 28 may set the guard time based on the restriction time of the function that is restricted by rewriting the reference address.
  • the stop processing unit 28 may set a plurality of guard times when the set guard time is longer than the restriction time of the function restricted by rewriting the reference destination address.
  • the rewriting unit 27 determines whether or not at least one of the number of reference destination addresses to be rewritten and the constraint time of the function that is constrained by the rewriting process is greater than or equal to the threshold value.
  • the stop processing unit 28 sets the guard time based on either the number of rewrites or the constraint time when it is determined that at least one of the number of rewrites and the constraint time is greater than or equal to the threshold value.
  • the optical access device 2 includes the memory 22, the rewrite unit 27, and the CPU 23.
  • the memory 22 stores a reference destination 223 that is data related to the firmware 221 before update and a reference destination address that is an address indicating a storage area of the reference destination in association with each other.
  • the rewriting unit 27 rewrites at least a part of the reference destination addresses stored in the memory 22 to a new reference destination address indicating a storage area of the reference destination 225 that is data related to the updated firmware 222.
  • the CPU 23 refers to the new reference destination 225 based on the rewritten new reference destination address.
  • the writing unit is further provided.
  • the writing unit writes the updated firmware 222 in the free storage area.
  • the rewriting unit 27 determines whether or not the number of reference destination addresses to be rewritten is equal to or greater than a threshold value.
  • the optical access device 2 includes a stop processing unit that sets a guard time for stopping processing other than the rewrite processing when it is determined that the number of reference destination addresses to be rewritten is equal to or greater than a threshold value.
  • the CPU 23 stops processes other than the process of rewriting the reference destination address to a new reference destination address according to the guard time set by the stop processing unit.
  • the stop processing unit 28 performs the guard time based on one or both of the number of reference destination addresses and the restriction time of a function restricted by rewriting the reference destination address. Set. With this configuration, it is possible to set a guard time for stopping processes other than the rewriting process.
  • a text area and a data area are held on the memory 22 for each of the firmware 221 before update and the firmware 222 after update.
  • the data area stores variable values.
  • the post-update firmware 222 cannot refer to the value of the variable stored in the data area of the pre-update firmware 221.
  • the value or state of the variable is initialized after the firmware update. This requires recalculation of variable values and reacquisition of states after updating the firmware.
  • the second embodiment a process of taking over the value of a variable before and after firmware update will be described.
  • the second embodiment provides a technique that can continuously use variable values and states before and after firmware update without service interruption. The second embodiment will be described in detail with reference to the drawings.
  • FIG. 4 is a configuration diagram showing an example of the configuration of the optical access device 2 in the second embodiment.
  • the rewriting unit 27 rewrites the reference destination address stored in association with the reference destination 223 stored in the indirect reference table 224 to a new reference destination address.
  • the rewriting part 27 in 2nd Embodiment is further provided with the substitution part 29 with respect to 1st Embodiment.
  • the assigning unit 29 assigns the address of the variable included in the pre-update firmware 221 to a pointer variable that holds the address of the variable included in the post-update firmware 222. That is, the assigning unit 29 performs the assignment by writing the address of the variable included in the pre-update firmware 221 to the designated location of the post-update firmware 222 in the memory 22.
  • the substitution unit 29 writes the address included in the updated firmware 222 for another variable. Specifically, the assigning unit 29 assigns the address by writing an address by calling a system call provided in the operating system, for example.
  • the pre-update firmware 221 is a program composed of a text area and a data area. Function data to be executed by the optical access device 2 is stored in the text area. The function data realizes a series of processes for realizing optical communication by the optical access device 2. The function data of each function realizes different processing. In the data area, values of variables referred to by function data are stored. Specifically, the function data refers to an address (start address) indicating a storage area for variable values. For function data, the value of a variable in the data area is acquired by referring to the start address.
  • the pre-update firmware 221 is an aspect of first data indicating the firmware before update.
  • the updated firmware 222 is a program composed of a text area and a data area.
  • Function data to be executed by the optical access device 2 is stored in the text area.
  • values of variables referred to by function data are stored in the data area.
  • the function data refers to an address (start address) indicating a storage area for variable values.
  • the function data refers to the value of the variable in the data area by referring to the start address.
  • the post-update firmware 222 is an aspect of the second data indicating the pre-update firmware.
  • the CPU 23 cannot refer to the data area of the pre-update firmware 221 from the post-update firmware 222 only by storing the post-update firmware 222 in the memory 22.
  • the address of the variable needs to be rewritten. That is, the address must be rewritten so that the address referred to by the function data of the post-update firmware 222 indicates the address of the data area of the pre-update firmware 221.
  • the CPU 23 executes the function data of the updated firmware 222, referring to the data area of the pre-update firmware 221 is referred to as indirect reference.
  • the memory 22 includes the indirect reference table 224.
  • the indirect reference table 224 is data in a table format in which function data, variable values, and the like are associated with the top addresses of storage areas for the function data, variables, and the like.
  • a table in which a variable is associated with the start address of a storage area in which the value of the variable is stored is referred to as a variable table.
  • the rewriting unit 27 may be provided in the CPU 23 as, for example, a core peripheral circuit of the CPU 23.
  • the CPU 23 refers to the function data using indirect reference in the pre-update firmware 221.
  • the address of the reference destination of the function data is rewritten not to the function in the pre-update firmware 221 but to the start address of the function in the post-update firmware 222.
  • the CPU 23 executes a function in the updated firmware 222. In this way, the firmware is updated by rewriting the indirect reference destination.
  • the assigning unit 29 assigns the start address indicating the storage area of the variable of the firmware 221 before the update to the start address indicating the storage area of the firmware 222 after the update in the variable table.
  • the address of the variable referred to by the CPU 23 is rewritten to the address of the storage area of the pre-update firmware 221 and the address of the storage area of the post-update firmware 222.
  • the CPU 23 refers to the variable table of the updated firmware 222 when the updated firmware 222 is executed.
  • the CPU 23 refers to the value of the variable stored in the data area of the pre-update firmware 221 indicated by the reference destination address held in the variable table. As a result, the CPU 23 can continue to use the variables used in the pre-update firmware 221 as they are from the program executed by the post-update firmware 222.
  • FIG. 5 is a schematic diagram in the case of indirectly referring to the data area of the pre-update firmware from the post-update firmware according to the second embodiment.
  • the memory 22 stores pre-update firmware 221 and post-update firmware 222.
  • the pre-update firmware 221 holds a text area ver1 and a data area ver1 in a storage area in the memory 22.
  • the text area ver1 holds a plurality of function data.
  • each function data refers to the value of the variable from the data area ver1.
  • the post-update firmware 222 holds a text area ver2 and a data area ver2 in the storage area in the memory 22.
  • the text area ver2 holds a plurality of function data.
  • the text area ver2 holds a plurality of function data.
  • FIG. 6 is a schematic diagram regarding the reference of the value of the variable by the pre-update firmware according to the second embodiment.
  • the program 320 is an example of a program code of the pre-update firmware 221.
  • two variables, Val_A and Val_B are defined as variables.
  • the start address of Val_A is “0x0001010” and the value is “100”.
  • the start address of Val_B is “0x0001050” and the value is “200”.
  • the CPU 23 can refer to the value of the variable by executing the pre-update firmware 221 and directly referring to the two variables.
  • variable pointer holds the start address of the variable assigned by the assigning unit 29 as a reference destination address.
  • the variable pointer is a variable that stores the address of a variable used in, for example, the C language.
  • start address of the variable Val_A is substituted for Po_X.
  • the head address of the variable Val_B is assigned to Po_Y.
  • the defined variable pointer is held in the variable table 322.
  • the variable table 322 has a variable pointer record for each variable pointer.
  • the variable pointer record has values of a variable pointer, a variable pointer address, and a reference destination address.
  • the variable pointer indicates a variable name defined by the program 320.
  • the variable pointer address indicates the head address on the data area where the variable pointer is stored.
  • the reference destination address is a value held by the variable pointer, and indicates the head address on the data area where the variable to be inherited is stored.
  • the uppermost record of the variable table 322 has a variable pointer value of “Po_X”, a head address value held by the variable pointer of “0x0002010”, and a reference destination address value of “ 0x0001010 ". Therefore, according to the top record of the variable table 322, the variable pointer defined by the program 320 is “Po_X”, and the variable pointer is stored at the address “0x0002010” in the data area. The variable pointer holds a value of “0x0001010” as a reference destination address.
  • the value of the pointer variable is indirectly referenced by executing the processes “* Po_X” and “* Po_Y”. Specifically, when “* Po_X” is executed, the address held by the variable pointer Po_X held in the variable table 322 is referred to. The address held by the variable pointer holds the value “0x0001010” as the reference destination address. Therefore, “100” that is the value of the variable Val_A held in the reference destination address “0x0001010” is referred to.
  • FIG. 7 is a schematic diagram regarding indirect referencing of variable values by the updated firmware according to the second embodiment.
  • the program 320 is an example of a program code of the pre-update firmware 221.
  • Each variable defined in the pre-update firmware 221 is stored in a state in which the value of the variable is associated with the start address in the data area of the pre-update firmware 221 as shown in the table 321.
  • the program 330 is an example of a program code of the updated firmware 222.
  • three variables of Val_A, Val_B, and Val_C are defined as variables.
  • the start address of the variable Val_A is “0x1001010” and the value is “100”.
  • the start address of the variable Val_B is “0x1001050” and the value is “200”.
  • the start address of the variable Val_C is “0x1001070”, and the value is “300”.
  • variable pointer In the program 330, three pointer variables Po_X, Po_Y, and Po_Z are defined as variable pointers.
  • the variable pointer is a variable that holds the start address of the variable as a reference destination address.
  • the start address of the variable Val_A is assigned to the pointer variable Po_X.
  • the leading address of the variable Val_B is assigned to the pointer variable Po_Y.
  • the start address of the variable Val_C is assigned to the pointer variable Po_Z.
  • Each defined variable pointer is held in the variable table 332.
  • variables held in the variable table 332 include variables used in the calculation algorithm of DBA (Dynamic Bandwidth Allocation), variables holding ONU authentication information registered in the OLT, and VLAN ( Virtual Local Area Network) and other variables that hold setting information.
  • DBA Dynamic Bandwidth Allocation
  • variables holding ONU authentication information registered in the OLT variables holding ONU authentication information registered in the OLT
  • VLAN Virtual Local Area Network
  • other variables that hold setting information Alternatively, as an example of a variable held in the variable table 332, a variable that holds a maximum value or a maximum value of a communication band allocated to the OLT can be given.
  • each reference destination address of the variable pointer is the head address of the updated firmware 222 variable. That is, each reference destination address of the variable pointer points to the data area of the updated firmware 222.
  • the value of the address of the variable pointer Po_X is “0x10002010”, and the value of the reference destination address is “0x1001010”. Therefore, in order to refer to the data area of the pre-update firmware 221 from the post-update firmware 222, the data area of the pre-update firmware 221 is used as the reference destination of the variable pointer used in the post-update firmware 222 in the variable table 332.
  • the indicated address needs to be stored.
  • Val_A is a variable name used in the firmware 221 before update and the firmware 222 after update.
  • the assigning unit 202 obtains the leading address “0x0001010” of the variable Val_A stored in the pre-update firmware 221. According to the program 330, the start address “0x1001010” of the variable Val_A is assigned to the variable pointer Po_X.
  • the assignment unit 202 acquires a variable pointer record related to the variable pointer Po_X from the variable table 332.
  • the assigning unit 202 assigns the leading address “0x0001010” of the variable stored in the pre-update firmware 221 as the value of the reference destination address of the acquired variable pointer record.
  • the value of the variable Val_A is indirectly referenced by “* Po_X”. Specifically, when “* Po_X” is executed, the address of the variable pointer regarding the variable pointer Po_X held in the variable table 332 is referred to.
  • the variable pointer address holds a value of “0x0001010” indicating the data area of the pre-update firmware 221 as a reference destination address. Therefore, “100”, which is the value of the reference destination address “0x0001010” of the pre-update firmware 221 can be referred to by indirect reference from the post-update firmware 222.
  • the substituting unit 29 of the rewriting unit 27 substitutes the head address in the pre-update firmware 221 for the reference destination address of the variable table 332 for the variables used in both the pre-update firmware 221 and the post-update firmware 222. Further, as described in the first embodiment, the rewriting unit 27 rewrites the address of the function of the firmware 221 before update in the indirect reference table 224 with the address indicating the firmware 222 after update.
  • FIG. 8 is a flowchart showing a flow of firmware update according to the second embodiment.
  • the user may perform prior confirmation of the updated firmware 222 and the memory 22 that are written in the ROM 20 as prior confirmation when updating the firmware.
  • prior confirmation verification using the same optical access device as the optical access device 2 is required in advance.
  • step S201 the firmware update program stored in ROM 20
  • the program of the firmware 221 before update that is in operation is not rewritten.
  • the rewrite unit 27 stores the updated firmware 222 in the memory 22 (step S202).
  • the CPU 23 determines whether or not the updated firmware 222 is normally stored in the memory 22 (step S203). Specifically, if the updated firmware 222 is stored and the address area reserved for other programs is not infringed, the CPU 23 indicates that the updated firmware 222 has been stored normally. You may judge. Alternatively, the CPU 23 may determine that the updated firmware 222 has been normally stored when a signal indicating that the storage of the updated firmware 222 has been normally completed is received from the rewriting unit 27.
  • the other program may be, for example, platform firmware 220, pre-update firmware 221 or the like.
  • step S203: NO When the updated firmware 222 is not normally stored in the memory 22 (step S203: NO), the process proceeds to step S212.
  • step S203: YES When the updated firmware 222 is normally stored in the memory 22 normally (step S203: YES), the CPU 23 confirms the execution result (step S204). The CPU 23 determines whether or not the execution result is normal (step S205). If the execution result is not normal (step S205: NO), the process proceeds to step S212.
  • step S206 the CPU 23 may determine whether or not the number of functions or variables to be rewritten is greater than a threshold (step S206).
  • the function to be rewritten may be a function executed by the CPU 23.
  • the variable to be rewritten may be a variable used in either the pre-update firmware 221 or the post-update firmware 222, for example.
  • step S206: NO the CPU 23 transitions to step S210.
  • the determination process in step S206 may be omitted. In this case, the CPU 23 transitions to step S210.
  • step S207 the CPU 23 calculates a switching guard time (step S207).
  • the switching guard time is a time for stopping the operation of the optical access apparatus 2 other than the process of rewriting the address so that no abnormality occurs in the operation of the optical access apparatus 2 when the address is rewritten.
  • the CPU 23 starts counting the switching guard time (step S208).
  • the CPU 23 stops the operation other than the process of rewriting the address of the optical access device 2 (step S209).
  • the CPU 23 rewrites the reference destination address of the pre-update firmware 221 stored in the indirect reference table 224 with the reference destination address of the post-update firmware 222 for the function to be switched. Further, the CPU 23 stores the start address of the variable in the pre-update firmware 221 as the reference destination address of the post-update firmware 222 regarding the variable referred to in the function to be switched (step S210).
  • the CPU 23 determines whether or not the reference address can be normally stored (step S211). If it can be stored normally (step S211: YES), the process is terminated. If the data cannot be stored normally (step S211: NO), the CPU 23 deletes the updated firmware 222 from the memory 22, thereby returning the optical access device 2 to the state before being stored in the updated firmware 222. (Step S212). The CPU 23 may restart the optical access device 2.
  • the rewriting unit 27 stores the reference destination address indicating the storage area of at least some target variables among the variables included in the firmware 222 after the update, which is stored in an area different from the storage area of the firmware 221 before the update.
  • the value of the pointer variable to be held is rewritten to the reference destination address (first variable reference destination address) indicating the storage area of the target variable in the firmware 221 before update.
  • the CPU 23 refers to the value of the target variable based on the reference destination address held by the pointer variable.
  • the pre-update firmware 221 and the post-update firmware 222 are stored in the memory 22.
  • the CPU 23 refers to the data area of the pre-update firmware 221 via the post-update firmware 222. Therefore, the value of the variable used before the firmware update can be used as it is from the program executed in the text area of the updated firmware. That is, the value or state of the variable can be continuously used before and after the firmware update. Therefore, it is possible to take over the ONU authentication information and value calculation state, and a firmware update method that does not affect service quality and does not interrupt service is realized. Further, by referring to the data area of the pre-update firmware 221 in the memory 22 from the post-update firmware 222, the optical access device 2 such as ONU authentication information and value calculation status is initialized after the firmware update. It becomes possible to prevent.
  • the CPU 23 or the assigning unit 29 may copy the variable values, function data, and the like used in the pre-update firmware 221 to a storage area for variable values used in the post-update firmware 222. As a result, the CPU 23 or the assigning unit 29 can increase the free space in the memory 22 when the pre-update firmware 221 is not used.
  • the storage area shared by the pre-update firmware 221 and the post-update firmware 222 (hereinafter referred to as “shared area”) is the memory 22. May be stipulated.
  • the CPU 23 can acquire the variable value used in the pre-update firmware 221 from the shared area. That is, the CPU 23 can take over the variable value used in the pre-update firmware 221 by referring to the shared area even during the period in which the CPU 23 executes the operation based on the post-update firmware 222.
  • Modification 1 When a new variable is added in the updated firmware 222, the data area of the updated firmware 222 may be used. For example, in FIG. 7, a variable Val_C is added as a new variable. The variable Val_C is referenced from a function in the updated firmware 222. The new variable Val_C has a head address “0x1001070”. In FIG. 7, the variable pointer Po_Z holds the reference destination address of the variable Val_C. According to the variable table 332, the variable pointer Po_Z stores “0x1001070” indicating the data area of the updated firmware 222 as a reference destination address. Therefore, even when a variable value is held in the data area in the updated firmware 222, the optical access device 2 can perform optical communication without affecting the calculation in the updated firmware 222.
  • the memory 22 stores a plurality of different post-update firmware 222.
  • the updated firmware 222a may be stored in the memory 22.
  • the CPU 23 executes a function stored in the newly added post-update firmware 222 a from each post-update firmware 222 based on the state of the pre-update firmware 221.
  • the rewriting unit 27 rewrites the reference destination of the function of the pre-update firmware 221 to the post-update firmware 222 or a new reference destination of the newly added post-update firmware 222a.
  • the rewriting unit 27 rewrites the reference destination of the function of the updated firmware 222 with a new reference destination of the newly added updated firmware 222a.
  • the rewriting unit 27 performs the following process when the updated firmware 222a is further stored. That is, the rewriting unit 27 uses at least a part of the reference destination address (first reference destination address) of the target function in the pre-update firmware 221 as a new reference destination address (second reference destination address) of the updated firmware 222, or Then, it is rewritten to a new reference destination (third reference destination address) of the updated firmware 222a.
  • the rewriting unit 27 rewrites at least a part of the reference destination address (second reference destination address) of the target function of the updated firmware 222 to a new reference destination (third reference destination address) of the updated firmware 222a.
  • the assigning unit 29 assigns the variable address of the pre-update firmware 221 or the post-update firmware 222 to the variable pointer of the newly added post-update firmware 222a.
  • the rewriting unit 27 performs the following process when the updated firmware 222a is further stored.
  • the rewriting unit 27 rewrites the value of the pointer variable that stores the reference destination address indicating the storage area of at least a part of the target variable, which is stored in an area different from the storage area of the pre-update firmware 221 and the post-update firmware 222. .
  • the rewrite unit 27 stores the value of the pointer variable in the reference destination address (first variable reference destination address) indicating the storage area of the target variable in the pre-update firmware 221 or the reference destination held by the pointer variable of the post-update firmware 222 Rewrite to address.
  • the overhead time for acquiring the address in the firmware 221 before updating the variable is added to the processing time of the program to be executed.
  • the overhead time has a negligible effect compared to the program processing time.
  • the present invention is applied in consideration of the hardware specifications of the application destination OLT, the processing time required for the application program, the application program, the number of times the variable address acquisition is executed, and the like. It is desirable.
  • the rewriting unit 27 described above may be realized by an information processing apparatus such as a personal computer or a smart device connected to the optical access apparatus 2.
  • the processor of the information processing device connected to the optical access device 2 may function as the rewriting unit 27 by executing the program.
  • FIG. 9 is a diagram illustrating an example of the configuration of the optical communication system 1 described in the first and second embodiments.
  • the pre-update firmware 221 on the memory 22 has a reference source 226.
  • the rewriting unit 27 uses the address (reference destination 223) indicating the storage area of the pre-update firmware 221 in the function reference table 224 as the address indicating the storage area of the post-update firmware 222 (new Rewrite to reference destination 225).
  • the CPU 23 can refer to the function data or the like of the post-update firmware 222 instead of referring to the function data or the like of the pre-update firmware 221 or the like.
  • the CPU 23 When executing the process of the reference source 226, the CPU 23 refers to the indirect reference table 224 and refers to the function data of the updated firmware 222 stored in the reference destination address (new reference destination 225). At this time, the CPU 23 stores the return address of the pre-update firmware 221 that is the reference source 226 in a register for storing the return address (hereinafter referred to as “return destination register”). The return address is a return address of processing executed by the CPU 23.
  • the CPU 23 refers to the data related to the pre-update firmware 221 stored in the address indicated by the return destination register value after referring to the function data of the post-update firmware 222. As a result, the CPU 23 can refer to the function data and the like of the pre-update firmware 221 for function data and the like other than the predetermined function data.
  • the optical access device 2 can update the firmware without causing a communication interruption.
  • the optical access device 2 can provide a specific function to the user without causing a communication interruption. That is, the optical access device 2 can perform live update in which firmware is dynamically updated.
  • the third embodiment is different from FIG. 9 in that the platform firmware 220 has a reference source. In the third embodiment, only differences from the first embodiment will be described.
  • FIG. 10 is a diagram illustrating an example of the configuration of the optical communication system 1 according to the third embodiment. 9, the platform firmware 220 on the memory 22 has a reference source 227.
  • the processing of the rewriting unit 27 is the same as in FIG. As shown in FIG. 10, the platform firmware 220 has a reference source 227. As described in the first embodiment, the rewriting unit 27 refers to the function reference table 224, sets the reference destination address (reference destination 223) indicating the storage area of the pre-update firmware 221 and the storage area of the post-update firmware 222. The reference address shown (new reference destination 225) is rewritten. Thus, when the function data of the platform firmware 220 is called, the CPU 23 can refer to the function data of the post-update firmware 222 instead of referring to the function data of the pre-update firmware 221 or the like.
  • the memory 22 further stores data related to the platform firmware 220 determined in advance.
  • the rewrite 27 rewrites the reference destination address indicating the storage area of the first data referenced from the platform firmware 220 to the reference destination address indicating the storage area of the second data.
  • data referred to the CPU 23 via the platform firmware 220 is rewritten from the first data to the second data.
  • the communication unit 24 performs communication based on the second data referred to by the CPU 23.
  • the optical access device 2 of the third embodiment can reduce the overhead compared to the first embodiment, and can update the firmware without causing a communication interruption. That is, the optical access device 2 according to the second embodiment reduces the overhead compared to the case where the data related to the post-update firmware 222 is referred to via the pre-update firmware 221 and does not cause communication interruption. Can be updated.
  • the fourth embodiment is a combination of the first embodiment and the third embodiment.
  • FIG. 11 is a diagram illustrating an example of the configuration of the optical communication system 1 according to the fourth embodiment.
  • the pre-update firmware 221 has a reference source 226.
  • the reference address is switched between the address of the storage area of the firmware 221 before update and the address of the storage area of the firmware 222 after update.
  • the platform firmware 220 has a reference source 227. Thereby, when the CPU 23 calls the function data of the platform firmware 220, the reference address is switched between the address of the storage area of the firmware 221 before update and the address of the storage area of the firmware 222 after update.
  • the functional units of the optical access device 2 of the fourth embodiment are the functional units of the optical access device 2 of the first embodiment and the functions of the optical access device 2 of the third embodiment. It is a combination with the department.
  • the optical access device 2 according to the fourth embodiment can update the firmware without causing a communication interruption by a flexible switching operation even if the overhead increases due to an increase in the number of references. is there.
  • any of a plurality of embodiments and any of the embodiments and modifications may be applied in combination. In this case, the effect which combined the effect of each embodiment or a modification is produced.
  • indirect reference processing is added to an executed program using a function pointer or a structure.
  • the address of the reference destination function held by the function pointer is read, and the processing is shifted to that address.
  • the case where the address held by the function pointer is rewritten is illustrated. That is, the case where the rewriting unit 27 rewrites the value before the update in the indirect reference table 224 to a predetermined value or a value obtained by adding / subtracting a predetermined offset value is illustrated.
  • the indirect reference table 224 may be effectively rewritten. For example, a flag indicating whether to adopt a value before update or a value after update may be provided.
  • the rewriting unit 27 refers to the value of the flag and determines whether or not to perform rewriting according to the value of the flag. For example, the rewrite unit 27 acquires the pre-update address from the indirect reference table 224 when the flag value is “0”. When the value of the flag is “1”, the rewriting unit 27 acquires the reference destination address of the indirect reference table 224 and effectively rewrites it. The same applies to the case where the offset value is used. When the value of the flag is “0”, the rewriting unit 27 acquires the address before update (for example, the value “A”) from the indirect reference table 224.
  • the rewriting unit 27 acquires the address before update (for example, the value “A”) from the indirect reference table 224.
  • the rewriting unit 27 adds / subtracts an offset value (for example, a value “B”) instead of an address before the update (for example, a value “A”) (addition).
  • an offset value for example, a value “B”
  • the value “A + B” is acquired, the indirect reference table 224 is acquired, and it is effectively rewritten.
  • the flag may be provided for each firmware or for each function, for example. Alternatively, the flag may be provided for each subroutine, and the value may be updated dynamically. The rewriting process using the flag can also be applied to the rewriting process of the variable table.
  • the program for realizing this function may be recorded on a computer-readable recording medium, and the program recorded on the recording medium may be read into a computer system and executed.
  • the “computer system” includes an OS and hardware such as peripheral devices.
  • the “computer-readable recording medium” refers to a storage device such as a flexible medium, a magneto-optical disk, a portable medium such as a ROM or a CD-ROM, and a hard disk incorporated in a computer system.
  • the “computer-readable recording medium” dynamically holds a program for a short time like a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line.
  • a volatile memory inside a computer system serving as a server or a client in that case may be included and a program held for a certain period of time.
  • the program may be a program for realizing a part of the above-described functions, and may be a program capable of realizing the functions described above in combination with a program already recorded in a computer system. You may implement
  • the reference destination 223 is an example of the first data
  • the reference destination address is an example of the first reference destination address
  • the writing device 3 is an example of another device
  • the new reference destination 225 is It is an example of second data
  • a new reference destination address is an example of a second reference destination address
  • the CPU 23 is an example of a processor.
  • the present invention is applicable to optical access devices such as station side communication terminals.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Electromagnetism (AREA)
  • Stored Programmes (AREA)

Abstract

更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶するメモリと、前記メモリに記憶されている少なくとも一部の前記第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換える書換部と、前記第1データの前記参照先を参照する際に、前記メモリに記憶された前記第2参照先アドレスに基づいて前記第2データを参照する制御部と、を備える通信処理装置。

Description

通信処理装置、情報処理装置、及び、通信処理装置の制御方法
 本発明は、通信処理装置、情報処理装置、及び、通信処理装置の制御方法に関する。
 本願は、2017年2月28日に日本に出願された特願2017-036929号、2017年7月19日に日本に出願された特願2017-140265号、及び、2017年8月25日に日本に出願された特願2017-162703号に基づき優先権を主張し、その内容をここに援用する。
 通信サービスを提供する通信装置に対して、新規機能の追加又は機能のバグ修正を行う場合、通信装置に実装されるファームウェアを更新する必要がある。ファームウェアの更新では、揮発性メモリ内のデータを安全に更新するために、揮発性メモリ内で実行されるプログラムを全て停止させて、データを書き換える必要がある。したがって、通信装置を再起動させなければならない場合があった。
 通信装置を再起動させると、再び通信装置が起動してプログラムが実行可能となるまでの時間は、通信サービスの中断を伴う。通信サービスの中断では、通信サービスを利用するユーザがネットワークを利用できないという影響がある。したがって、現状では、サービス運用中のファームウェアの更新は困難である。
 光アクセスネットワークで使用される局舎側の通信装置であるOLT(Optical Line Network)においても同様の問題が生じる。特に光アクセスネットワークでは経済性の観点から通信装置の冗長化が難しく、通信サービスの中断を伴わないファームウェアの更新は困難であった。そのため、ファームウェア更新時に運用系から冗長系へ一時的に切り替えてサービス断を避けるような手法を適用できない。したがって、現状OLTの装置構成ではサービス断を伴わないで、ファームウェアの更新を実現することは困難である。ここで、OLTは、光通信網を経由する光信号によって、加入者線端局装置(ONU: Optical Network Unit)等の他の通信装置との通信を実現する装置である。OLTが接続される光通信網は、例えば、PON(Passive Optical Network)等の受動光通信網である。ONUは、通信網を経由する光信号によって他の通信装置との通信を実現する装置である。ONUは、複数の機器を用いて構成されてもよい。ONUは、例えば通信サービスの提供を受けるユーザの宅内に設置される。
 ファームウェアの更新に関して、ファームウェアは、通信装置の起動時に、ROM(Read Only Memory)からメモリに展開されて使用されるが、ROMに記憶されている更新前のファームウェアを、更新後のファームウェアに書き換えて、次回の起動時に更新後のファームウェアをメモリに展開させて更新を完了させる技術が知られている(例えば、非特許文献1参照)。
小谷 亮,清原 良三,攝津 敦,橘高 大造,"組み込みLinuxにおけるソフトウェア更新方式(1)"情報処理学会第66回全国大会.
 前述したように、通信装置を再起動してファームウェアの更新を実施するには、通信装置の電源を落としてから再び使用可能になるまでの時間の間が通信断となるため、サービス断となる。
 また、通信装置は、起動時に、ROMに書き込まれたファームウェアが、メモリに展開されることによって、通信可能となる。しかし、通信装置の稼働中に、メモリを直接書き換えてしまうと、その通信装置に、想定外の異常が発生することが懸念される。
 ファームウェアの更新時間を短縮する手法に関して、新規機能等が追加された更新後のファームウェア(以下、「更新後ファームウェア」という)を、ROMの空き領域に事前に書き込むことによって、ROMに、新規事項等が追加されていない更新前のファームウェア(以下、「更新前ファームウェア」という)と更新後ファームウェアとを保持した状態で、通信装置を起動するときにいずれか一方のファームウェアを選択して起動させる方式が知られている。この場合、ファームウェアを、ROMに書き込む時間は短縮されるが、次回の起動のときに、起動させるファームウェアの選択しかできない。このため、ファームウェア更新を運用中のサービスに反映させるにはメモリ上のファームウェアを書き換える必要があるが、ROMに記憶された更新後ファームフェアを、メモリに反映させるためには、通信装置の再起動は免れることができない。
 また、PONプロテクションを、ファームウェアの更新に適用することで、サービス断のないファームウェアの更新を実現する方法が提案されている。この方法では、更新後ファームウェアが書き込まれている更新用の通信装置を備え、更新前ファームウェアが書き込まれている通信装置から更新用の通信装置へ、物理的に経路を切り替える。ここで、PONプロテクションとは、更新用の通信装置を備えて、物理的に経路を切り替えることで、障害が発生したときに通信断となる時間を短縮する手法である。
 しかし、OLT等の光アクセス装置においては、一つの光アクセス装置に対して、複数のONUが光スプリッタを用いて接続されている場合がある。この場合、光アクセス装置の機能を更新するために、更新用の光アクセス装置に切り替えるには、物理的な装置構成や通信の経路を変更しなければならない。さらに、通常時に使用しない更新用の光アクセス装置を常に備えておくことや、更新用の光アクセス装置へ経路を切り替えるための光スイッチが必要である。
 また、経済性の観点から、更新用の光アクセス装置が用意されていない構成も多く存在する。このため、PONプロテクションをファームウェアの更新に適用することで、サービス断のないファームウェアの更新を実施することは経済性の観点から難しい。
 上記事情に鑑み、本発明は、通信断を発生させずにファームウェアを更新することが可能である光アクセス装置を提供することを目的としている。
 本発明の一態様の通信処理装置は、更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶するメモリと、前記メモリに記憶されている少なくとも一部の前記第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換える書換部と、前記第1データの前記参照先を参照する際に、前記メモリに記憶された前記第2参照先アドレスに基づいて前記第2データを参照する制御部と、を備える。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、書き換え指示に応じて、前記メモリに記憶された前記第1参照先アドレスを、前記第2参照先アドレスに書き換える。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、前記メモリに記憶された前記第1参照先アドレスに所定のオフセット値を加算した前記第2参照先アドレスに書き換える。
 本発明の一態様は、上記の通信処理装置であって、前記メモリは、プラットフォームファームウェアに関するデータを更に記憶し、前記制御部は、参照した前記プラットフォームファームウェアを介して前記第1データの前記参照先を参照する際に、前記メモリに記憶されている前記第2参照先アドレスに基づいて前記第2データを参照する。
 本発明の一態様は、上記の通信処理装置において、前記メモリが、前記第2データを書き込む空き記憶領域を有する場合に、前記空き記憶領域に前記第2データを書き込む書込部をさらに備える。
 本発明の一態様は、上記の通信処理装置において、前記通信処理装置は、期間であるガードタイムを設定する停止処理部、をさらに備え、前記制御部は、前記停止処理部が設定した前記ガードタイムの期間、前記書換部による前記第1参照先アドレスを前記第2参照先アドレスに書き換える処理以外の処理、又は前記書き換える処理より優先度が高い処理以外処理を停止させる。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、書き換え対象の前記第1参照先アドレスの数、及び、前記書き換える処理によって制約を受ける機能の制約時間の少なくともいずれかが閾値以上であるか否かを判定し、前記停止処理部は、前記書き換え数、及び、前記制約時間の少なくともいずれかが前記閾値以上であると判定された場合に、前記書き換え数及び前記制約時間のいずれか一方に基づいて、前記ガードタイムを設定する。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、前記メモリに前記更新後のファームウェアに関する別のデータである第3データがさらに記憶される場合、前記第1参照先アドレスの少なくとも一部を、前記第2参照先アドレス、または、前記第3データの参照先の記憶領域を示す第3参照先アドレスに書き換える、または、前記第2参照先アドレスの少なくとも一部を、前記第3参照先アドレスに書き換える。
 本発明の一態様は、上記の通信処理装置において、前記第1データの記憶領域とは異なる領域に記憶され、前記第2データに含まれる変数のうち少なくとも一部の第1の変数の記憶領域を示す参照先アドレスを保持する第2の変数の値を、前記第1データにおける前記第1の変数の記憶領域を示す第1変数参照先アドレスに書き換え、前記制御部は、前記第2の変数が保持する前記第1変数参照先アドレスに基づいて前記第1の変数を参照する。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、前記第1データ及び前記第2データに共通に含まれる前記第1の変数について、前記書き換えを行う。
 本発明の一態様は、上記の通信処理装置において、前記書換部は、前記メモリに前記更新後のファームウェアに関する別のデータである第3データがさらに記憶される場合、前記第1、第2データの記憶領域とは異なる領域に記憶され、少なくとも一部の前記第1の変数の記憶領域を示す参照先アドレスを保持する第3の変数の値を、前記第1変数参照先アドレス、または、前記第2の変数が保持する参照先アドレスに書き換える。
 本発明の一態様は、上記の通信処理装置において、前記制御部に参照された前記第2データに基づいて通信する通信部と、をさらに備える。
 本発明の一態様の情報処理装置は、更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶するメモリと、前記メモリを参照する制御部と、を有し、前記制御部は、前記メモリに記憶されている少なくとも一部の前記第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換え、前記第1データの前記参照先を参照する際に、前記メモリに記憶された前記第2参照先アドレスに基づいて前記第2データを参照する。
 本発明の一態様の通信処理装置の制御方法は、更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶し、少なくとも一部の第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換え、前記第1データの前記参照先を参照する際に、記憶された前記第2参照先アドレスに基づいて前記第2データを参照する。
 本発明により、通信断を発生させずにファームウェアを更新することが可能である。
第1の実施形態に係る光通信システムの一例を示す図である。 第1の実施形態に係る光アクセル装置における間接参照を示す図である。 第1の実施形態に係る光アクセスシステムの動作の一例を示すフローチャートである。 第2の実施形態における光アクセス装置の構成の例を示す構成図である。 第2の実施形態に係る更新後ファームウェアから更新前ファームウェアのデータ領域を間接参照する場合の概要図である。 第2の実施形態に係る更新前ファームウェアによる変数の値の参照に関する概要図である。 第2の実施形態に係る更新後ファームウェアによる変数の値の間接参照に関する概要図である。 第2の実施形態に係るファームウェア更新の流れを示すフローチャートである。 第1及び第2の実施形態における、光通信システムの構成の例を示す図である。 第3の実施形態における、光通信システムの構成の例を示す図である。 第4の実施形態における、光通信システムの構成の例を示す図である。
 本発明を実施するための形態を、図面を参照しつつ説明する。以下で説明する実施形態は一例に過ぎず、本発明が適用される実施形態は、以下の実施形態に限られない。
 なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
 (第1の実施形態)
 図1は、第1の実施形態に係る光通信システムの一例を示す図である。光通信システム1は、光信号を用いて通信するシステムである。光通信システム1は、光アクセス装置2と、書込装置3とを備える。
 光アクセス装置2は、OLT等の通信装置である。光アクセス装置2は、ROM(Read Only Memory)20と、起動処理部21と、メモリ22と、CPU(Central Processing Unit)23と、通信部24と、書込部25と、登録部26と、書換部27と、停止処理部28とを備える。光アクセス装置2は、磁気ハードディスク装置や半導体記憶装置等の不揮発性の記録媒体(非一時的な記録媒体)を更に備えてもよい。
 書込装置3は、パーソナルコンピュータ等の情報処理装置である。書込装置3は、更新後ファームウェア222を記憶している。更新後ファームウェア222は、例えば、光アクセス装置2が光通信を実行するためのファームウェアである。
 仮に、更新前ファームウェア221をCPU23が使用している期間に、書込装置3が更新後ファームウェア222をメモリ22の更新前ファームウェア221の上に書き込んだ場合、光アクセス装置2に、想定外の異常が発生してしまう場合がある。そこで、書込装置3は、メモリ22に記憶されている更新前ファームウェア221を書き換えないように、メモリ22の空き領域に更新後ファームウェア222を記憶させる。したがって、メモリ22の空き領域に更新後ファームウェア222を記憶させる場合、更新前ファームウェア221をCPU23が使用している期間であっても、書込装置3は、メモリ22に更新後ファームウェア222を記憶させることができる。
 メモリ22の空き領域は、更新前ファームウェア221や使用中の情報が書き込まれていない領域である。したがって、空き領域は、過去の更新によって使用されなくなったファームウェアが書き込まれた領域であってもよい。
 書込装置3は、更新後ファームウェア222の全部、または、更新前ファームウェア221と更新後ファームウェア222との差分をメモリ22に書き込んでも良い。
 また、第1の実施形態における光アクセス装置2は、間接参照によって、更新前ファームウェア221に含まれる関数データ等の代わりに、更新後ファームウェア222に含まれる関数データ等へ処理に切り替える。具体的に、第1の実施形態における光アクセス装置2は、更新前ファームウェア221に含まれる関数データ等のアドレスを、更新後ファームウェア222に含まれる関数データ等のアドレスへ書き換える。
 ここで、間接参照は、呼び出し先の関数や変数値等のエントリポイントを保持する。このエントリポイントの値を書き換えることで、指定した関数や変数値等を呼び出すことができる。関数のエントリポイントは、ファームウェアのどのメモリ番地から関数が書き込まれているかを示す。
 次に、光アクセス装置2の詳細を説明する。
 CPU23は、ROM20等に記憶されるプログラムを実行することによって、起動処理部21を実現する。この場合、起動処理部21は、起動時に、ROM20に記憶されている更新前ファームウェア200を、更新前ファームウェア221としてメモリ22に書き込む。
 起動処理部21は、ASIC(Application Specific Integrated Circuit)等のLSI(Large Scale Integration)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)等のハードウェアを用いて実現されてもよい。以下、起動処理部21が、ハードウェア等を用いて実現される場合を例示する。この場合、起動処理部21は、光アクセス装置2の起動時であってCPU23が起動する前に、ROM20に記憶されている更新前ファームウェア200を、更新前ファームウェア221としてメモリ22に書き込む。更新前ファームウェア200は、例えば、光アクセス装置2が光通信を実行するためのファームウェアである。
 また、起動処理部21は、光アクセス装置2の起動時であってCPU23が起動する前に、ROM20等の不揮発性の記録媒体に記憶されているプラットフォームファームウェア220をメモリ22に書き込む。以下、不揮発性の記録媒体の一例として、ROM20を適用した場合について説明を続ける。プラットフォームファームウェア220は、例えば、オペレーティングシステム等のファームウェアである。プラットフォームファームウェア220は、更新前ファームウェア221及び更新後ファームウェア222の各関数データの呼び出し元である。
 なお、更新前ファームウェア200が記憶される記憶媒体は、ROM20に限定されるものではない。更新前ファームウェア200が記憶される記憶媒体は、起動時に参照されるメモリ領域であれば、例えば、HDDや光ディスクや外部のメモリであってもよい。また、更新前ファームウェア200が記憶される記憶媒体は、揮発性のメモリであっても、起動処理時に揮発しなければよい。また、更新前ファームウェア200が記憶される記憶媒体は、光アクセス装置2、または光アクセス装置2が関連するVM等に対して、サーバーやクラウド等によって提供されるメモリ等の記憶領域であってもよい。
 ROM20は、読み出し専用の記録媒体である。ROM20は、書き換え可能なフラッシュROMであってもよい。ROM20は、更新前ファームウェア200を記憶している。ROM20は、更新後ファームウェア222を記憶していない。更新前ファームウェア200は、CPU23から参照された場合であってもCPU23が動作可能な状態で、ROM20に記憶されている。すなわち、更新前ファームウェア200のバイナリデータは、更新前ファームウェア221のバイナリデータと同じである。
 メモリ22は、RAM(Random Access Memory)等の揮発性の記録媒体である。なお、メモリ22は、書き換え可能であればよい。メモリ22は、書き込み可能な不揮発性の記憶媒体や、レジスタやFPGA等であってもよい。
 メモリ22は、起動処理部21による書き込み操作によって、光アクセス装置2の起動時に、プラットフォームファームウェア220を記憶する。また、更新前ファームウェア221が、光アクセス装置2の起動時に、起動処理部21による書き込み操作によってメモリ22に記憶される。メモリ22は、プラットフォームファームウェア220及び更新前ファームウェア221を記憶した場合でも、十分な容量の空き領域を備えている。十分な容量とは、少なくとも更新後ファームウェア222を記憶できる容量である。書込装置3が出力する更新後ファームウェア222は、メモリ22の空き領域に記憶される。例えば、CPU23が起動した後に、空き領域に更新後ファームウェア222がメモリ22に記憶される。
 更新前ファームウェア221は、関数データや変数値等である参照先223を含む。関数データには、メモリ22における、更新前ファームウェア221の関数データの記憶領域の先頭アドレス等が対応付けられている。変数値には、メモリ22における、更新前ファームウェア221の変数の記憶領域の先頭アドレス等が対応付けられている。
 更新後ファームウェア222は、関数データや変数値等である新たな参照先225を含む。関数データには、メモリ22における、更新後ファームウェア222の関数データの記憶領域の先頭アドレス等が対応付けられている。変数値には、メモリ22における、更新後ファームウェア222の変数の記憶領域の先頭アドレス等が対応付けられている。
 メモリ22は、間接参照テーブル224を更に記憶する。間接参照テーブル224は、関数データや変数値等と、その関数データや変数等の記憶領域の先頭アドレス等とを関連付けたテーブル形式のデータである。
 CPU23は、演算装置である。CPU23は、光アクセス装置2の各部の動作を制御する。CPU23は、メモリ22等に記憶されるプログラムを実行することによって、書込部25、登録部26、書換部27、及び停止処理部28等の機能を実現する。または、書込部25、登録部26、書換部27、及び停止処理部28等は、例えば、ASIC等のLSI、FPGA、GPU等のハードウェアを用いて実現されてもよい。CPU23、及び、ASIC等のLSI、FPGA、GPU等のハードウェアは、制御部に対応する。
 CPU23は、揮発性メモリ22に記憶されたプラットフォームファームウェア220、更新前ファームウェア221又は更新後ファームウェア222を読み込むことによって、各プログラムに基づく動作を実行する。
 書込部25は、更新後のファームウェアである更新後ファームウェア222を、通信部24を介して取得してもよい。書込部25は、更新後ファームウェア222をCD-ROM等の外部記憶媒体から取得してもよい。
 書込部25は、更新後ファームウェア222を揮発性メモリ22に記憶させる。書込部25は、書込装置3が出力した書込要求に基づいて、メモリ22の空き領域に更新後ファームウェア222を書き込むことができるか否かを判定する。ここで、書込要求は、更新後ファームウェア222の容量を示す情報を含む。
 具体的には、書込部25は、書込要求に含まれる更新後ファームウェア222の容量に基づいて、メモリ22の空き領域が、更新後ファームウェア222の容量以上であるか否かを判定する。書込部25は、メモリ22の空き領域が、更新後ファームウェア222の容量以上である場合には、更新後ファームウェア222を、メモリ22に書き込む。書込部25は、更新後ファームウェア222の全部、または、更新前ファームウェア221と更新後ファームウェア222との差分をメモリ22に書き込んでも良い。
 一方、書込部25は、メモリ22の空き領域が、更新後ファームウェア222の容量未満である場合には、更新後ファームウェア222を、メモリ22に書き込まない。書込部25は、メモリ22の空き領域が、更新後ファームウェア222の容量未満である場合には、メモリ22の空き領域が、更新後ファームウェア222の容量未満であることを通知するようにしてもよい。なお、更新後ファームウェア222が、メモリ22への書き込みを行う前に、メモリ空き領域のサイズを判定してもよい。更新後ファームウェア222は、判定結果に応じて、メモリ22への書き込みを行う。
 登録部26は、起動処理部21が、ROM20に記憶されている更新前ファームウェア200をメモリ22に書き込んだ場合に、間接参照テーブル224へ、更新前ファームウェア221に含まれる参照先223と、その参照先223の記憶領域の先頭アドレス等である参照先アドレスとを登録する。具体的には、更新前ファームウェア221のデータ領域内に保持される関数のエントリポイントがメモリ22に記憶される。登録部26は、メモリ22に記憶される関数のエントリポイントを参照先アドレスとして登録する。換言すると、登録部26は、更新前ファームウェア221の関数のポインタと、当該関数の参照先アドレスとの対応を登録する。すなわち、登録部26は、関数ポインタへの参照先アドレスの代入を行う。
 なお、間接参照テーブル224への登録は、必ずしも、更新前ファームウェア200のメモリ22への書き込み時に、登録部26によって行われる必要はない。間接参照テーブル224への登録は、更新前ファームウェア221のコンパイル時等に、リンカ等によって行われてもよい。
 書換部27は、書込部25が更新後ファームウェア222をメモリ22へ書き込んだ場合に、間接参照テーブル224へ、更新後ファームウェア222に含まれる新たな参照先225と、その新たな参照先225の記憶領域の先頭アドレス等である新たな参照先アドレスとを登録する。また、書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けて記憶された参照先アドレスを、新たな参照先アドレスに書き換える。
 更新後ファームウェア222がメモリ22に記憶されているだけでは、CPU23は、更新前ファームウェア221に関するデータしか参照することができない。このため、書換部27は、CPU23が参照する間接参照テーブル224に記憶されている参照先アドレスが新たな参照先225の記憶領域のアドレスを指すように、参照先アドレスを書き換える。これにより、CPU23は、新たな参照先225を参照する。
 具体的には、書換部27は、更新後ファームウェア222がコンパイルされるときに書き込まれる関数ポインタの値を、新たな参照先アドレスとして、新たな参照先225と関連付けて、間接参照テーブル224へ書き込む(登録する)。また、書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けられている参照先アドレスを、更新後ファームウェア222がコンパイルされるときに書き込まれる関数ポインタの値に書き換える。更新後ファームウェア222は、関数ポインタ等を用いてプログラミングされている。このため、更新後ファームウェア222がコンパイルされるときに、更新後ファームウェア222に、関数のデータが記憶されるエントリポイントの領域が確保される。
 なお、新たな参照先アドレスは、更新後ファームウェア222がコンパイルされるときに作成される。この作成された新たな参照先は、更新後ファームウェア222で指定されたメモリ番地を示すため、動的に変化しない。
 このようにすることによって、更新後ファームウェア222の新たな参照先アドレスを予め把握できる。また、書換部27は、更新前ファームウェア221に含まれる参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先アドレスに書き換える。これによって、更新後ファームウェア222に含まれる新たな参照先225を呼び出すことができる。
 書換部27は、例えば、書き換え指示に応じて、間接参照テーブル224を書き換える。書き換え指示は、例えば、オペレーションシステムを介して、コマンドラインが入力されることによって入力される。書き換え指示は、プログラムやユーザによって入力される。書き換え指示は、参照先アドレスの書き換え対象の関数の識別情報を含む。書き換え指示は、さらに、参照先アドレスの書き換え対象の関数の新たな参照先アドレスを含んでいてもよい。
 また、書換部27は、書き換える参照先アドレスの数が閾値以上であるか否かを判定してもよい。書換部27は、書き換える参照先アドレスの数が閾値未満である場合には、前述した更新前ファームウェア221に含まれる参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先アドレスに書き換える処理を行う。
 一方、書換部27は、書き換える参照先アドレスの数が閾値以上である場合には、書き換える参照先アドレスの数が閾値以上であることを示す情報を、停止処理部28へ出力する。なお、書換部27は、書き換える参照先アドレスの数を判定することなく、更新前ファームウェア221に含まれる参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先アドレスに書き換えてもよい。
 書換部27は、例えば、オペレーティングシステムが備えるシステムコールを呼び出すことによって、間接参照テーブル224の書き換え処理を行う。書換部27は、例えば、割り込みハンドラを利用してシステムコールを呼び出し、間接参照テーブル224の書き換え処理を実行してもよい。なお、書換部27の処理は、メモリ22内のデータの書込み又はデータの書換えが行えるならばどのようなものであってもよい。
 書換部27は、オフセット値を用いて、新たな参照先アドレスを取得してもよい。書換部27は、例えば、間接参照テーブル224が記憶している参照先アドレスに、所定のオフセット値を加算して、新たな参照先アドレスを取得する。書換部27は、間接参照テーブル224の参照先アドレスを、取得した新たな参照先のアドレスに書き換える。これにより、書換部27は、CPU23が参照を要求した更新前ファームウェア200の関数データの参照先アドレスを、更新後ファームウェア222の関数データの参照先アドレスに書き換える。オフセット値は、例えば、更新前ファームウェア221の記憶領域の先頭アドレス値と、更新後ファームウェア222の記憶領域の先頭アドレス値との差を示す値である。
 書換部27は、例えば、オフセット値を用いるか否かを示す、フラグを有してもよい。書換部27は、オフセット値が値「1」である場合には、間接参照テーブル224が記憶している参照先アドレスにオフセット値を加算する。一方、オフセット値が値「0」である場合には、書換部27は、間接参照テーブル224が記憶している参照先アドレスを参照する。また、フラグは関数ごとに設けられてもよい。
 図2は、第1の実施形態に係る光アクセス装置における間接参照を示す図である。図2に示される例では、間接参照テーブル224に、更新前ファームウェア221に含まれる参照先223と、その参照先223の参照先アドレスとが登録されている状態で、更新後ファームウェア222がメモリ22に書き込まれた場合の処理が示される。
 更新後ファームウェア222がメモリ22に書き込まれた場合、書換部27は、更新後ファームウェア222に含まれる新たな参照先225と、その新たな参照先225の新たな参照先アドレスとを登録する。また、書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先225の新たな参照先アドレスに書き換える。
 図2によれば、間接参照テーブル224には、更新前ファームウェア221に含まれる「function_1」と、「function_1」の参照先アドレス「0x00001111」とが関連付けて記憶されている。さらに、間接参照テーブル224には、更新前ファームウェア221に含まれる「function_2」と、「function_2」の参照先アドレス「0x00001222」とが関連付けて記憶されている。
 この状態で、更新後ファームウェア222が、メモリ22に書き込まれた場合、書換部27は、更新後ファームウェア222に含まれる「function_1a」と、「function_1a」の参照先アドレス「0x00001500」とを関連付けて記憶する。
 そして、書換部27は、間接参照テーブル224内の「function_1」に関連付けて記憶されている「0x00001111」を、「function_1a」に関連付けて記憶されている「0x00001500」に書き換える。
 図1に戻り、説明を続ける。
 停止処理部28は、書込部25が出力した書き換える参照先アドレスの数の総和、又は参照に伴う処理時間の総和が閾値以上であることを示す情報を取得した場合に、その書き換える参照先アドレスの数等に基づいて、ガードタイムを設定する。ガードタイムは、書き換え処理以外の処理を停止させる期間である。
 ここで停止対象は、書き換え処理よりも優先度が高い処理を含んでもよいし、書き換え処理と優先度が同等又は下位、或いは同等及び下位の処理に限定されてもよい。書き換え処理よりも優先度の高い処理は、書込による不具合が生じ難い。また、優先度の高い処理の時間を別途見積もらないため、閾値をより大きい値に決定できる効果がある。一方、書き換え処理と優先度が同等又は下位、或いは同等および下位の処理に限定するは、優先度の高い処理の時間による影響を別途見積もる必要があり、優先度の高い処理の時間の分だけ閾値を小さくする必要がある。ただし、優先度を順守できるという効果がある。
 以下は、書き換えるプロセス以外のプロセスを停止する場合で説明するが、書き込み処理と優先度が同等又は下位、或いは同等及び下位の処理に限定した場合も同様である。書き込み処理は、前述したとおり、間接参照テーブル224内の参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先に書き換える処理である。このように、CPU23は、例えば、停止処理部28が決定したガードタイムに基づいて、ガードタイムの期間、書き換え処理以外の処理、又は書き換え処理より優先度が高い処理以外処理を停止させる。
 そして、停止処理部28は、書換処理以外の処理を停止させる命令である停止命令を、プラットフォームファームウェア220やOS(Operating System)等に出力する。ここで、停止命令は、ガードタイムを示す情報を含む。具体的には、停止処理部28は、書き換える参照先アドレスの数と、ガードタイムとを関連付けたテーブル形式の情報を記憶する。停止処理部28は、そのテーブル形式の情報に基づいて、ガードタイムを選択し、選択したガードタイムを設定する。
 CPU23は、メモリ22に記憶されているプラットフォームファームウェア220に基づく動作を実行する。また、CPU23は、間接参照テーブル224に基づいて、参照先223と参照先アドレスとの関連付けに基づいて、更新前ファームウェア221又は更新後ファームウェア222に基づく動作を実行する。
 具体的には、CPU23は、間接参照テーブル224において、更新前ファームウェア221に含まれる参照先223に更新後ファームウェア222の新たな参照先アドレスが関連付けられている場合には、新たな参照先アドレスを取得する。そして、CPU23は、取得した新たな参照先アドレスに記憶されている新たな参照先225を取得する。CPU23は、更新後ファームウェア222の新たな参照先アドレスに記憶されている新たな参照先225を取得した後、参照元に戻る。
 CPU23は、間接参照テーブル224において、更新前ファームウェア221に含まれる参照先223に更新前ファームウェア221の参照先アドレスが記憶されている場合には、更新前ファームウェア221の参照先223を取得する。CPU23は、予め定められた新たな参照先225以外の参照先等については、更新前ファームウェア221の参照先等を参照する。このように、CPU23は、間接参照テーブル224に記憶されている参照先アドレスに応じて、更新前ファームウェア221又は更新後ファームウェア222に関するデータを取得する。
 通信部24は、更新前ファームウェア221又は更新後ファームウェア222に基づく動作を実行するCPU23による制御に応じて、光信号を用いて他の通信装置と通信する。他の通信装置は、例えば、ONUであってもよい。
 (光アクセス装置の動作)
 図3は、第1の実施形態に係る光アクセスシステムの動作の一例を示すフローチャートである。
 光アクセス装置2に、不具合が発生し、異常停止して再起動が必要となることがある。光アクセス装置2は、ROM20に記憶されている更新前ファームウェア200を、メモリ22に展開して実行する。光アクセス装置2は、更新後ファームウェア222を、メモリ22に書き込む。光アクセス装置2は、メモリ22に書き込んだ更新後ファームウェア222の正常性を確認する。
 (ステップS101) 更新後ファームウェア222を書き込む光アクセス装置2と同様の光アクセス装置を使用して、更新後ファームウェア222に不具合があるか否かが検証される。更新後ファームウェア222に、不具合があると判定された場合には、処理がステップS102へ移行する。一方、不具合がないと判定された場合には、処理がステップS103へ移行する。
 (ステップS102) 更新後ファームウェアに不具合があると判定した場合には、更新後ファームウェアの実行結果を元に戻す処理や、光アクセス装置の再起動が行われる。
 (ステップS103) 更新後ファームウェアに不具合がないと判定した場合には、書込装置3が、光アクセス装置2へ接続される。書込装置3は、光アクセス装置2へ、書込要求を出力する。光アクセス装置2の書込部25は、書込装置3が出力した書込要求に応じて、メモリ22に、更新後ファームウェア222を書き込む容量が空いているか否かを判定する。更新後ファームウェア222を書き込む容量が空いていないと判定した場合にはステップS102へ移行し、容量が空いていると判定した場合にはステップS104へ移行する。
 実行中である更新前ファームウェアに対して更新後ファームウェアで上書きした場合、更新前ファームウェアが破損される。これにより、光アクセス装置2が停止してしまう場合がある。更新前ファームウェアの破損を防ぐためには、空き領域のサイズが十分足りていることを事前に確認してから書き込む必要がある。
 例えば、書込部25は、更新後ファームウェア222のコンパイル時に出力されるメモリマップを参照して、更新後ファームウェア222のサイズを取得する。書込部25は、更新前ファームウェア221のメモリ情報をダンプして、更新前ファームウェア221のサイズを取得してもよい。
 (ステップS104) 書込装置3は、更新後ファームウェア222を、光アクセス装置2へ転送する。
 (ステップS105) 光アクセス装置2の書込部25は、書込装置3が転送した更新後ファームウェア222を、メモリ22へ書き込む。ここで、書込部25が更新後ファームウェア222を書き込む容量が空いていると判定したにも関わらず、実行中のプログラムを書き換えてしまった場合は、実行結果を元に戻すか光アクセス装置2を強制的に再起動させる。光アクセス装置2が再起動した後、通常のファームウェアの更新と同様の手法で、ファームウェアの更新を行うようにしてもよい。
 (ステップS106) CPU23は、書込部25がメモリ22に書き込んだ更新後ファームウェア222を実行し、正しいファームウェアが書き込まれたか否かを判定する。書込部25は、光アクセス装置2に転送された更新後ファームウェア222と、メモリ22上に展開された更新後ファームウェア222のデータとが一致するか否かを確認して判定してもよい。
 CPU23は、正しいファームウェアが書き込まれていると判定した場合に、さらに、実行結果に不具合がないか否かを判定する。正しいファームウェアが書き込まれていない場合及び実行結果に不具合がある場合のいずれか一方又は両方の場合にはステップS107へ移行し、正しいファームウェアが書き込まれている場合及び実行結果に不具合がない場合にはステップS108へ移行する。
 (ステップS107) 正しいファームウェアが書き込まれていない場合及び実行結果に不具合がある場合のいずれか一方又は両方の場合には、CPU23は、実行結果を元に戻す。
 (ステップS108) 正しいファームウェアが書き込まれている場合及び実行結果に不具合がない場合には、光アクセス装置2の書換部27は、次の判定を行ってもよい。書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けられ、且つ書き換える参照先アドレスの数が閾値以上であるか否かを判定する。書き換える参照先アドレスの数が閾値以上である場合にはステップS109へ移行し、閾値未満である場合にはステップS110へ移行する。ステップS108の判定処理は省略されてもよい。この場合、書換部27は、ステップS110に遷移する。
 ここで、書き換える参照先アドレスの数が一つである場合は、間接参照テーブル224内の更新前ファームウェア221の参照先223に関連付けられる参照先アドレスを、更新後ファームウェア222の新たな参照先225に関連付けられる新たな参照先アドレスへ書き換えても、問題が生じ難いと想定される。しかし、書き換える参照先アドレスの数が、複数である場合は、更新前ファームウェア221と、更新後ファームウェア222との間で、参照先223と新たな参照先225とが混同してしまうことが懸念される。特に、書き換える参照先アドレスに関連付けられる参照先223によっては、更新時間が、機能の制約時間以上となることが想定される。このため、光アクセス装置2は、書き換えるプロセスを実行するときに、他のプロセスが割り込まないように、実行中のプログラムを含めて、書き換えるプロセス以外のプロセスを一時的に停止させる。
 (ステップS109) 書き換える参照先アドレスの数が閾値以上である場合には、光アクセス装置2の停止処理部28は、書き換える参照先アドレスの数に基づいて、ガードタイムを計算する。停止処理部28は、計算することによって得られたガードタイムの期間、当該書き換える処理以外の処理を停止させる停止命令を、プラットフォームファームウェア220等に出力する。
 なお、停止処理部28は、書き換える処理の優先度を最上位する制御指示をプラットフォームファームウェア220等に出力してもよい。例えば、停止処理部28は、システムコール等を用いて、停止命令や優先度の制御指示をプラットフォームファームウェア220等に出力する。CPU23は、停止処理部28が出力した停止命令にしたがって、ガードタイムの期間、書き換える処理以外の処理を停止させる。CPU23が書き換える処理以外の処理の停止を開始した後、ステップS110へ移行する。
 (ステップS110) 光アクセス装置2の書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けて記憶されている参照先アドレスを、新たな参照先アドレスに書き換える。具体的には、書換部27は、更新前ファームウェア221に含まれる更新対象の関数の参照先223に関係付けられている関数ポインタの参照先アドレスを確認する。そして、書換部27は、その参照先アドレスを、更新後ファームウェア222に含まれる更新対象の関数の新たな参照先225の新たな参照先アドレスに書き換える。このようにすることによって、不具合が無く正確にファームウェアの更新を実行できる。
 ここで、書込部25が実行中のプログラムを書き換えてしまった場合は、実行結果を元に戻す処理や、光アクセス装置2の強制的な再起動が行われる。光アクセス装置2が再起動された後、ファームウェアの更新処理が再度行われてもよい。
 書換部27は、書き換えが成功したか否かを判定する。書き換えが成功したと判定した場合にはステップS111へ移行し、書き換えが失敗したと判定した場合にはステップS112へ移行する。
 (ステップS111) 書き換えが成功したと判定した場合には、光アクセス装置2の書換部27は、書き換えの結果を確認する。具体的には、書換部27は、書き換えた新たな参照先アドレスが正しいか否かを確認することによって、更新後ファームウェア222へ処理が移行するか否かを確認する。書換部27は、異常やエラーが無いことによって、更新後ファームウェア222へ処理が移行すると判定した場合、更新シーケンスを終了する。
 (ステップS112) 書き換えが失敗したと判定した場合には、光アクセス装置2の書換部27は、実行結果を元に戻す。なお、書き換えが失敗し、光アクセス装置2の動作が停止した場合に、光アクセス装置2が再起動されてもよい。光アクセス装置2の動作が停止した場合についても、実行結果が元に戻される。なお、動作が停止した場合は、例えば、所定の期間(ミリ秒)処理が停止した場合や、ウォッチドッグタイマー(watchdog timer)等のタイマーに対する応答がない場合等を示す。
 前述した実施形態では、ROM20に更新後ファームウェア222が記憶されていない場合について説明したが、この例に限られない。例えば、ROM20に更新後ファームウェア222が記憶されてもよい。この場合、ROM20に記憶された更新後ファームウェア222が、メモリ22の空き領域に書き込まれる。
 また、前述した実施形態において、間接参照テーブル224が、更新前ファームウェア221に含まれてもよい。
 前述した実施形態では、書込部25が、書込装置3が出力した書込要求に基づいて、メモリ22の空き領域に更新後ファームウェア222を書き込む場合について説明したが、この例に限られない。例えば、書込部25は、更新後ファームウェア222の全てを書き込んでもよいし、更新前ファームウェア221と更新前ファームウェア221との差分を書き込んでもよい。
 前述した実施形態では、停止処理部28が、書き換える参照先アドレスの数に基づいて、ガードタイムを設定する場合について説明したが、この例に限られない。例えば、停止処理部28が、参照先アドレスを書き換えることによって制約を受ける機能の制約時間に基づいて、ガードタイムを設定してもよい。また、停止処理部28は、設定したガードタイムが、参照先アドレスを書き換えることによって制約を受ける機能の制約時間よりも長い場合には、複数のガードタイムを設定してもよい。
 このように、書換部27は、書き換え対象の参照先アドレスの数、及び、書き換える処理によって制約を受ける機能の制約時間の少なくともいずれかが閾値以上であるか否かを判定する。停止処理部28は、書き換え数、及び、制約時間の少なくともいずれかが閾値以上であると判定された場合に、書き換え数及び制約時間のいずれか一方に基づいて、前記ガードタイムを設定する。
 以上説明した少なくとも一つの実施形態によれば、光アクセス装置2は、メモリ22、書換部27、及びCPU23を有する。メモリ22は、更新前ファームウェア221に関するデータである参照先223と、参照先の記憶領域を示すアドレスである参照先アドレスとを関連付けて記憶する。書換部27は、メモリ22に記憶されている参照先アドレスのうち、少なくとも一部の参照先アドレスを、更新後ファームウェア222に関するデータである参照先225の記憶領域を示す新たな参照先アドレスに書き換える。CPU23は、書き換えられた新たな参照先アドレスに基づいて、新たな参照先225を参照する。
 このように構成することによって、光アクセス装置2のファームウェアを更新する場合に、ネットワークのサービス断を防ぐとともに、提供中のサービスを継続したままファームウェアの更新が可能となる。
 また、少なくとも一つの実施形態によれば、書込部をさらに備える。書込部は、更新後ファームウェア222を書き込む記憶領域が空いている場合に、空いている記憶領域に更新後ファームウェア222を書き込む。このように構成することによって、実行中のプログラムを書き換えてしまうことによって生じる不具合の発生を防ぐことができる。仮に、実行中のプログラムを書き換えてしまうことによって、不具合が発生した場合でも、実行結果を元に戻すか光アクセス装置2を強制的に再起動させることによって、迅速にサービスを再開できる。
 また、少なくとも一つの実施形態によれば、書換部27は、書き換える参照先アドレスの数が閾値以上であるか否かを判定する。光アクセス装置2は、書き換える参照先アドレスの数が閾値以上と判定された場合に、書き換え処理以外の処理を停止させるガードタイムを設定する停止処理部を備える。CPU23は、停止処理部が設定したガードタイムにしたがって、参照先アドレスを新たな参照先アドレスに書き換える処理以外の処理を停止させる。
 このように構成することによって、更新の対象となる参照先アドレスの数が多くなった場合に懸念される事象を抑制できる。つまり、更新前ファームウェア221と、更新後ファームウェア222との間で、参照先223と新たな参照先225とが混同する事象の発生を抑制できる。
 また、少なくとも一つの実施形態によれば、停止処理部28は、参照先アドレスの数、及び参照先アドレスを書き換えることによって制約を受ける機能の制約時間のいずれか一方又は両方に基づいて、ガードタイムを設定する。このように構成することによって、書き換える処理以外の処理を停止させるガードタイムを設定できる。
(第2の実施形態)
 更新前のファームウェア221及び更新後のファームウェア222それぞれについて、メモリ22上にテキスト領域とデータ領域とが保持される。データ領域には、変数の値が記憶される。更新後ファームウェア222は、更新前ファームウェア221のデータ領域に保存されている変数の値を参照できない。このように、ファームウェアの更新前後で、変数の値又は状態の引継ぎが考慮されない場合、ファームウェア更新後に変数の値や状態が初期化される。これにより、ファームウェアの更新後に変数の値の再計算や状態の再取得が必要となる。
 例えば、加入者側端末であるONUの登録、認証情報又はOLTが、ONUの上り通信帯域を制御するDBA(Dynamic Bandwidth Allocation)の計算の状態を更新前後で引き継げない場合、通信の遅延、再接続又は認証情報の再登録が必要となる。
 第2の実施形態では、ファームウェアの更新前後で、変数の値を引継ぐ処理を説明する。すなわち、第2の実施形態では、サービス中断を伴わないファームウェアの更新前後で変数の値や状態を継続して利用できる技術を提供する。第2の実施形態について、図面を参照して詳細に説明する。
 図4は、第2の実施形態における光アクセス装置2の構成の例を示す構成図である。
 第1の実施形態で説明したとおり、書換部27は、間接参照テーブル224に記憶されている参照先223に関連付けて記憶された参照先アドレスを、新たな参照先アドレスに書き換える。第2の実施形態における書換部27は、第1の実施形態に対して、代入部29をさらに備える。
 代入部29は、更新前ファームウェア221に含まれる変数のアドレスを、更新後ファームウェア222に含まれる当該変数のアドレスを保持するポインタ変数に代入する。すなわち、代入部29は、メモリ22における更新後ファームウェア222の指定箇所に、更新前ファームウェア221に含まれる変数のアドレスを書き込むことによって、代入を行う。代入部29は、別の変数については、更新後ファームウェア222に含まれるアドレスを書き込む。具体的に、代入部29は、例えば、オペレーティングシステムが備えるシステムコールを呼び出すことによってアドレスを書き込むことで、代入する。
 以下、具体的に説明する。更新前ファームウェア221は、テキスト領域とデータ領域とから構成されるプログラムである。テキスト領域には、光アクセス装置2で実行される関数データが記憶される。関数データは、光アクセス装置2による光通信を実現する一連の処理を実現する。各関数の関数データは、それぞれ異なる処理を実現する。データ領域には、関数データによって参照される変数の値が記憶される。具体的には、関数データは、変数の値の記憶領域を示すアドレス(先頭アドレス)を参照する。関数データは、先頭アドレスを参照することで、データ領域内の変数の値を取得する。更新前ファームウェア221は、更新前のファームウェアを示す第1データの一態様である。
 更新後ファームウェア222は、テキスト領域とデータ領域とから構成されるプログラムである。テキスト領域には、光アクセス装置2で実行される関数データが記憶される。データ領域には、関数データによって参照される変数の値が記憶される。具体的には、関数データは、変数の値の記憶領域を示すアドレス(先頭アドレス)を参照する。関数データは、先頭アドレスを参照することで、データ領域内の変数の値を参照する。更新後ファームウェア222は、更新前のファームウェアを示す第2データの一態様である。
 CPU23は、更新後ファームウェア222がメモリ22に記憶されただけでは、更新後ファームウェア222から、更新前ファームウェア221のデータ領域を参照することができない。CPU23が、動作に応じて、更新後ファームウェア222の関数データの実行時に、更新前ファームウェア221のデータ領域内の変数の値を参照するには、変数のアドレスが書き換えられる必要がある。すなわち、更新後ファームウェア222の関数データが参照するアドレスが、更新前ファームウェア221のデータ領域のアドレスを指すように、アドレスが書き換えられなければならない。このように、CPU23が更新後ファームウェア222の関数データの実行時に、更新前ファームウェア221のデータ領域を参照することを間接参照という。
 第1の実施形態で説明したとおり、メモリ22は、間接参照テーブル224を備える。間接参照テーブル224は、関数データや変数値等と、その関数データや変数等の記憶領域の先頭アドレス等とを関連付けたテーブル形式のデータである。以下、間接参照テーブル224が有する情報のうち、変数と変数の値が記憶される記憶領域の先頭アドレスとを関連付けたテーブルを変数テーブルと称する。
 間接参照テーブル224を書き換えることによって、テキスト領域及びデータ領域内の参照先アドレス(先頭アドレス等)が、更新前ファームウェア221の記憶領域のアドレスと、更新後ファームウェア222の記憶領域のアドレスとの間で切り替えられる。なお、書換部27は、例えば、CPU23のコアのペリフェラル回路としてCPU23に備えられてもよい。
 第1の実施形態で説明したとおり、CPU23は、更新前ファームウェア221内の間接参照を用いて関数データを参照する。この際に、例えば、関数データの参照先のアドレスが、更新前ファームウェア221内の関数ではなく、更新後ファームウェア222内の関数の先頭アドレスに書き換えられる。これにより、CPU23は、更新後ファームウェア222内の関数を実行する。このように間接参照先を書き換えることで、ファームウェアの更新を実現する。
 第2の実施形態において、代入部29は、変数テーブル内の更新後のファームウェア222の変数の記憶領域を示す先頭アドレスに、更新前のファームウェア221の変数の記憶領域を示す先頭アドレスを代入する。これにより、CPU23が参照する変数のアドレスが、更新前ファームウェア221の記憶領域のアドレスと更新後ファームウェア222の記憶領域のアドレスに書き換えられる。
 CPU23は、更新後ファームウェア222の実行時に、更新後ファームウェア222の変数テーブルを参照する。CPU23は、変数テーブルに保持される参照先アドレスが示す更新前ファームウェア221のデータ領域に記憶されている、変数の値を参照する。これによって、CPU23は、更新後ファームウェア222で実行されるプログラムから、更新前ファームウェア221で使用されていた変数をそのまま継続して使用することができる。
 図5は、第2の実施形態に係る、更新後ファームウェアから更新前ファームウェアのデータ領域を間接参照する場合の概要図である。同図に示すように、メモリ22は、更新前ファームウェア221と更新後ファームウェア222とを記憶する。更新前ファームウェア221は、メモリ22内の記憶域にテキスト領域ver1とデータ領域ver1と保持する。テキスト領域ver1は、複数の関数データを保持する。CPU23の動作に応じて、各関数データは、データ領域ver1から変数の値を参照する。
 更新後ファームウェア222は、メモリ22内の記憶域にテキスト領域ver2とデータ領域ver2と保持する。テキスト領域ver2は、複数の関数データを保持する。テキスト領域ver2は、複数の関数データを保持する。更新後ファームウェア222のテキスト領域ver2の各関数データがメモリ22に記憶された場合に、更新前ファームウェア221のデータ領域ver1の先頭アドレスを参照するように、代入部29によって変数テーブルが書き換えられる。したがって、更新後ファームウェア222の各関数データは、更新前ファームウェア221のデータ領域ver1を参照する。これにより、更新前ファームウェア221で使用されていた変数の値を継続して使用する事が可能になる。
 図6は、第2の実施形態に係る、更新前ファームウェアによる変数の値の参照に関する概要図である。プログラム320は、更新前ファームウェア221のプログラムコードの一例である。プログラム320では、変数としてVal_A、Val_Bの2変数が定義される。テーブル321によると、Val_Aの先頭アドレスは、“0x0001010”であり、値は“100”である。Val_Bの先頭アドレスは、“0x0001050”であり、値は“200”である。CPU23は、更新前ファームウェア221を実行し、2つの変数を直接参照することで、変数の値を参照することができる。
 プログラム320には、変数ポインタとして、Po_X、Po_Yの2つの変数が定義される。第2の実施形態において、変数ポインタは、代入部29によって代入される変数の先頭アドレスを、参照先アドレスとして保持する。変数ポインタは、例えばC言語等で使われる、変数のアドレスを記憶する変数である。プログラム320では、Po_Xには、変数Val_Aの先頭アドレスが代入される。Po_Yには、変数Val_Bの先頭アドレスが代入される。定義された変数ポインタは、変数テーブル322に保持される。
 変数テーブル322は、各変数ポインタの変数ポインタレコードを有する。変数ポインタレコードは、変数ポインタ、変数ポインタのアドレス、及び参照先アドレスの各値を有する。変数ポインタは、プログラム320で定義される変数名を示す。変数ポインタのアドレスは、変数ポインタが記憶されるデータ領域上の先頭アドレスを示す。参照先アドレスは、変数ポインタが保持する値であって、引き継ぎ対象の変数が記憶されるデータ領域上の先頭アドレスを示す。
 変数テーブル322に示される例では、変数テーブル322の最上段のレコードは、変数ポインタの値が“Po_X”、変数ポインタの保持される先頭アドレスの値が“0x0002010”、参照先アドレスの値が”0x0001010”である。従って、変数テーブル322の最上段のレコードによると、プログラム320によって定義された変数ポインタは、“Po_X”であり、変数ポインタは、データ領域の”0x0002010”というアドレスに記憶される。変数ポインタは、参照先アドレスとして“0x0001010”の値を保持する。
 プログラム320では、「*Po_X」、「*Po_Y」の処理が実行されることによって、ポインタ変数の値が間接参照される。具体的には、「*Po_X」が実行されると、変数テーブル322に保持される変数ポインタPo_Xが保持するアドレスが参照される。変数ポインタが保持するアドレスには、参照先アドレスとして、“0x0001010”の値が保持される。したがって、参照先アドレス“0x0001010”に保持される変数Val_Aの値である、“100”が参照される。
 図7は、第2の実施形態に係る、更新後ファームウェアによる変数の値の間接参照に関する概要図である。プログラム320は、更新前ファームウェア221のプログラムコードの一例である。更新前ファームウェア221で定義された各変数は、テーブル321に示される通り、変数の値と、更新前ファームウェア221のデータ領域内の先頭アドレスが紐づけられた状態で記憶される。
 プログラム330は、更新後ファームウェア222のプログラムコードの一例である。プログラム330では、変数としてVal_A、Val_B、Val_Cの3つの変数が定義される。テーブル331によると、変数Val_Aの先頭アドレスは、“0x1001010”であり、値は“100”である。変数Val_Bの先頭アドレスは、“0x1001050”であり、値は“200”である。変数Val_Cの先頭アドレスは、“0x1001070”であり、値は“300”である。
 プログラム330は、変数ポインタとして、Po_X、Po_Y、Po_Zの3つのポインタ変数が定義される。変数ポインタは、変数の先頭アドレスを、参照先アドレスとして保持する変数である。プログラム330では、ポインタ変数Po_Xには、変数Val_Aの先頭アドレスが代入される。ポインタ変数Po_Yには、変数Val_Bの先頭アドレスが代入される。ポインタ変数Po_Zには、変数Val_Cの先頭アドレスが代入される。定義された各変数ポインタは、変数テーブル332に保持される。
 なお、変数テーブル332に保持される変数の例としては、DBA(Dynamic Bandwidth Allocation)の計算アルゴリズムで使用される変数や、OLTに登録されているONUの認証情報を保持する変数、及び、VLAN(Virtual Local Area Network)の設定情報を保持する変数等が挙げられる。または、変数テーブル332に保持される変数の例として、OLTに割り当てられる通信帯域の最大値や最大値等を保持する変数が挙げられる。
 更新後ファームウェア222をメモリ22に書き込んだ状態における変数テーブル332において、変数ポインタのそれぞれの参照先アドレスは、更新後ファームウェア222の変数の先頭アドレスである。すなわち、変数ポインタのそれぞれの参照先アドレスは、更新後ファームウェア222のデータ領域を指す。具体的には、変数テーブル332の最上段のレコードによると、変数ポインタPo_Xのアドレスの値が“0x10002010”、参照先アドレスの値が”0x1001010”である。したがって、更新後ファームウェア222から更新前ファームウェア221のデータ領域を参照するためには、変数テーブル332内の、更新後ファームウェア222で使用される変数ポインタの参照先として、更新前ファームウェア221のデータ領域を示すアドレスが記憶される必要がある。
 更新前ファームウェア221のデータ領域を示すアドレスを変数テーブル332に記憶させる方法について、変数Val_Aを用いて詳述する。書換部27の代入部29は、更新前ファームウェア221と更新後ファームウェア222とで使用される変数名を特定する。Val_Aは、更新前ファームウェア221と更新後ファームウェア222とで使用される変数名である。代入部202は、更新前ファームウェア221に記憶される変数Val_Aの先頭アドレス“0x0001010”を取得する。プログラム330によると、変数Val_Aの先頭アドレス“0x1001010”は、変数ポインタPo_Xに代入される。代入部202は、変数テーブル332から変数ポインタPo_Xに関する変数ポインタレコードを取得する。代入部202は、取得した変数ポインタレコードの参照先アドレスの値として、更新前ファームウェア221に記憶される変数の先頭アドレス“0x0001010”を代入する。
 プログラム330では、「*Po_X」によって、変数Val_Aの値が間接参照される。具体的には、「*Po_X」が実行されると、変数テーブル332に保持される変数ポインタPo_Xに関する、変数ポインタのアドレスが参照される。変数ポインタのアドレスには、参照先アドレスとして、更新前ファームウェア221のデータ領域を示す“0x0001010”の値が保持される。したがって、更新後ファームウェア222から間接参照によって、更新前ファームウェア221の参照先アドレス“0x0001010”の値である、“100”が参照できる。
 書換部27の代入部29は、更新前ファームウェア221と更新後ファームウェア222との両方で使用される変数について、変数テーブル332の参照先アドレスに、更新前ファームウェア221における先頭アドレスを代入する。また、第1の実施形態で説明したとおり、書換部27は、間接参照テーブル224の更新前ファームウェア221の関数のアドレスを、更新後ファームウェア222を示すアドレスに書き換える。
 図8は、第2の実施形態に係る、ファームウェア更新の流れを示すフローチャートである。ユーザは、ファームウェア更新にあたり、事前確認としてROM20へ書き込まれる更新後ファームウェア222や、メモリ22の事前確認が行われてもよい。事前確認には、予め光アクセス装置2と同じ光アクセス装置を用いた検証が必要となる。
 CPU23は、ROM20に記憶されるファームウェア更新プログラムを実行する(ステップS201)。なお、本実施例では光アクセス装置2の再起動は実施されないため、稼働中の更新前ファームウェア221のプログラムの書き換えが行われない。CPU23が、ファームウェア更新プログラムを実行すると、書換部27は、更新後ファームウェア222をメモリ22に記憶させる(ステップS202)。
 CPU23は、更新後ファームウェア222がメモリ22に正常に記憶されたか否か判定する(ステップS203)。具体的には、CPU23は、更新後ファームウェア222が記憶されたことで、予め他のプログラムのために確保しておいたアドレス領域が侵害されていない場合、更新後ファームウェア222が正常に記憶されたと判定してもよい。または、CPU23は、書換部27から、正常に更新後ファームウェア222の記憶が完了した旨を示す信号を受け付けた場合に、更新後ファームウェア222が正常に記憶されたと判定してもよい。他のプログラムは、例えば、プラットフォームファームウェア220や更新前ファームウェア221等であってもよい。
 更新後ファームウェア222が正常にメモリ22に正常に記憶されなかった場合(ステップS203:NO)、ステップS212に遷移する。更新後ファームウェア222が正常にメモリ22に正常に記憶された場合(ステップS203:YES)、CPU23は、実行結果を確認する(ステップS204)。CPU23は、実行結果が正常であったか否かを判定する(ステップS205)。実行結果が正常ではなかった場合(ステップS205:NO)、ステップS212に遷移する。
 実行結果が正常であった場合(ステップS205:YES)、CPU23は、書換え対象となる関数または変数の数が閾値よりも大きいか否か判定してもよい(ステップS206)。書換え対象となる関数とは、CPU23が実行する関数であってもよい。書換え対象となる変数とは、例えば、更新前ファームウェア221及び更新後ファームウェア222のいずれでも使われる変数であってもよい。閾値よりも小さい場合(ステップS206:NO)、CPU23はステップS210へ遷移する。ステップS206の判定処理は省略されてもよい。この場合、CPU23は、ステップS210に遷移する。
 閾値よりも大きい場合(ステップS206:YES)、CPU23は、切替ガードタイムを算出する(ステップS207)。切替ガードタイムとは、アドレスを書き換える際に、光アクセス装置2の動作に異常が生じないように、アドレスを書き換える処理以外の光アクセス装置2の動作を停止させる時間である。CPU23は、切替ガードタイムの計数を開始する(ステップS208)。CPU23は、光アクセス装置2の、アドレスを書き換える処理以外の動作を停止させる(ステップS209)。
 CPU23は、切替対象となる関数に関して、間接参照テーブル224に記憶されている、更新前ファームウェア221の参照先アドレスを、更新後ファームウェア222の参照先アドレスに書き換える。また、CPU23は、切替対象となる関数で参照される変数に関して、更新前ファームウェア221の当該変数の先頭アドレスを、更新後ファームウェア222の参照先アドレスとして記憶させる(ステップS210)。CPU23は、参照先アドレスを正常に記憶させることができたか否か判定する(ステップS211)。正常に記憶させることができた場合(ステップS211:YES)、処理を終了する。正常に記憶させることができなかった場合(ステップS211:NO)、CPU23は、更新後ファームウェア222をメモリ22から削除することで、光アクセス装置2を更新後ファームウェア222記憶される前の状態に戻す(ステップS212)。CPU23は、光アクセス装置2を再起動させてもよい。
 以上のように、書換部27は、更新前ファームウェア221の記憶領域とは異なる領域に記憶され、更新後ファームウェア222に含まれる変数のうち少なくとも一部の対象変数の記憶領域を示す参照先アドレスを保持するポインタ変数の値を、更新前ファームウェア221における対象変数の記憶領域を示す参照先アドレス(第1変数参照先アドレス)に書き換える。また、CPU23は、ポインタ変数が保持する参照先アドレスに基づいて対象変数の値を参照する。
 このように構成された光アクセス装置2では、メモリ22に更新前ファームウェア221及び更新後ファームウェア222が記憶される。CPU23が、更新後ファームウェア222を介して更新前ファームウェア221のデータ領域を参照する。したがって、ファームウェアの更新前に使用されていた変数の値を、更新後ファームウェアのテキスト領域で実行されるプログラムからそのまま使用できる。すなわち、ファームウェアの更新前後で、変数の値又は状態を継続して利用することが可能になる。
 そのため、ONUの認証情報や値の計算状態の引継ぎが可能となり、サービス品質に影響なく、サービス中断を伴わないファームウェアの更新手法が実現される。さらに、メモリ22内の更新前ファームウェア221のデータ領域を更新後ファームウェア222から参照することによって、ファームウェア更新後に、ONUの認証情報や値の計算状態等の光アクセス装置2が初期化されることを防ぐことが可能となる。
 また、CPU23又は代入部29は、更新後ファームウェア222において使用する変数値の記憶領域に、更新前ファームウェア221において使用した変数値や関数データ等をコピーしてもよい。これによって、CPU23又は代入部29は、更新前ファームウェア221を使用しない場合には、メモリ22における空き領域を増やすことができる。
 更新前ファームウェア221において使用した変数値を更新後ファームウェア222において使用する変数値に引き継ぐ場合、更新前ファームウェア221及び更新後ファームウェア222が共用する記憶領域(以下「共用領域」という。)が、メモリ22に定められていてもよい。これによって、CPU23は、更新後ファームウェア222の記憶領域を変数テーブルが記憶している場合でも、更新前ファームウェア221において使用した変数値を、共用領域から取得することができる。すなわち、CPU23は、更新後ファームウェア222に基づく動作をCPU23が実行している期間でも、更新前ファームウェア221において使用した変数値を、共用領域を参照して引き継ぐことができる。
(変形例1)
 更新後ファームウェア222において、新しい変数が追加された場合、更新後ファームウェア222のデータ領域が利用されてもよい。例えば、図7では、新しい変数として変数Val_Cが追加されている。変数Val_Cは、更新後ファームウェア222内の関数から参照される。新しい変数Val_Cは、先頭アドレスが“0x1001070”である。図7では、変数ポインタPo_Zが変数Val_Cの参照先アドレスを保持する。変数テーブル332によると、変数ポインタPo_Zは、参照先アドレスとして、更新後ファームウェア222のデータ領域を示す“0x1001070”を記憶する。したがって、更新後ファームウェア222内のデータ領域に変数の値を保持した場合でも,更新後ファームウェア222内での計算に影響を与えることなく、光アクセス装置2は、光通信を行うことができる。
(変形例2)
 第1、第2の実施の形態における更新処理を複数回実行した場合、メモリ22は、複数の異なる更新後ファームウェア222を記憶する。具体的には、メモリ22に、更新後ファームウェア222に加えて、さらに更新後ファームウェア222aが記憶される場合がある。更新後ファームウェア222aが記憶される場合、CPU23は、更新前ファームウェア221の状態に基づいて、新しく追加された更新後ファームウェア222aに記憶される関数を、それぞれの更新後ファームウェア222から実行する。
 具体的には、書換部27は、更新前ファームウェア221の関数の参照先を、又は更新後ファームウェア222、または、新しく追加された更新後ファームウェア222aの新たな参照先に書き換える。または、書換部27は、更新後ファームウェア222の関数の参照先を、新しく追加された更新後ファームウェア222aの新たな参照先に書き換える。
 このように、書換部27は、更新後ファームウェア222aがさらに記憶される場合、次の処理を行う。すなわち、書換部27は、更新前ファームウェア221における対象関数の参照先アドレス(第1参照先アドレス)の少なくとも一部を、更新後ファームウェア222の新たな参照先アドレス(第2参照先アドレス)、または、更新後ファームウェア222aの新たな参照先(第3参照先アドレス)に書き換える。または、書換部27は、更新後ファームウェア222の対象関数の参照先アドレス(第2参照先アドレス)の少なくとも一部を、更新後ファームウェア222aの新たな参照先(第3参照先アドレス)に書き換える。
 また、代入部29は、更新前ファームウェア221又は更新後ファームウェア222の変数のアドレスを、新しく追加された更新後ファームウェア222aの変数ポインタに代入する。
 このように、書換部27は、更新後ファームウェア222aがさらに記憶される場合、次の処理を行う。すなわち、書換部27は、更新前ファームウェア221及び更新後ファームウェア222の記憶領域とは異なる領域に記憶され、少なくとも一部の対象変数の記憶領域を示す参照先アドレスを保持するポインタ変数の値を書き換える。書換部27は、当該ポインタ変数の値を、更新前ファームウェア221における対象変数の記憶領域を示す参照先アドレス(第1変数参照先アドレス)、または、更新後ファームウェア222のポインタ変数が保持する参照先アドレスに書き換える。
 このように構成されることで、メモリ22が、複数の更新後ファームウェアを記憶した場合であっても、光アクセス装置2は、光通信の処理を継続して行うことができる。
(変形例3)
 第1、第2の実施形態を適用することで、実行されるプログラムの処理時間に、変数の更新前ファームウェア221におけるアドレスを取得する分のオーバーヘッドの時間が加わる。オーバーヘッドの時間は、プログラムの処理時間と比較してごく僅かな影響である。しかし、本発明が適用されるOLTのハードウェアスペックによっては,プログラム内で変数のアドレス取得される回数が増加した場合、プログラムの異常停止が発生する可能性がある。したがって,本発明は、適用先のOLTのハードウェアスペックと適用先のプログラムに要求される処理時間と適用先のプログラムと、変数のアドレス取得が実行される回数等と、を考慮して適用されることが望ましい。
(変形例4)
 なお、以上説明してきた書換部27は、光アクセス装置2に接続されたパーソナルコンピュータ、スマートデバイス等の情報処理装置によって実現されてもよい。例えば、光アクセス装置2に接続された情報処理装置のプロセッサが上記プログラムを実行することによって、書換部27として機能してもよい。
(第3の実施形態)
 以上、第3の実施形態を説明する前に、第1、第2の実施形態における光通信システム1の構成の例を説明する。
 図9は、第1、第2の実施形態で説明した光通信システム1の構成の例を示す図である。
 図9に示すように、メモリ22上の更新前ファームウェア221は、参照元226を有する。第1の実施形態で説明したとおり、書換部27は、関数参照テーブル224における更新前ファームウェア221の記憶領域を示すアドレス(参照先223)を、更新後ファームウェア222の記憶領域を示すアドレス(新たな参照先225)に書き換える。これによって、CPU23は、更新前ファームウェア221の関数データ等を呼び出した場合に、更新前ファームウェア221の関数データ等を参照する代わりに、更新後ファームウェア222の関数データ等を参照することができる。
 CPU23は、参照元226の処理を実行する際に、間接参照テーブル224を参照し、参照先アドレス(新たな参照先225)に記憶されている更新後ファームウェア222の関数データを参照する。この時、CPU23は、戻り先アドレスを記憶するレジスタ(以下「戻り先レジスタ」という。)に、参照元226である更新前ファームウェア221の戻り先アドレスを記憶する。戻り先アドレスは、CPU23が実行する処理の戻り先のアドレスである。
 CPU23は、更新後ファームウェア222の関数データを参照した後、戻り先レジスタ値が示すアドレスに記憶されている更新前ファームウェア221に関するデータを参照する。これによって、CPU23は、予め定められた関数データ以外の関数データ等については、更新前ファームウェア221の関数データ等を参照することができる。
 このように、光アクセス装置2は、通信断を発生させずにファームウェアを更新することが可能である。光アクセス装置2は、通信断を発生させずに特定の機能をユーザに提供することが可能である。すなわち、光アクセス装置2は、動的にファームウェアを更新するというライブアップデートが可能である。
 (第3の実施形態)
 第3の実施形態では、プラットフォームファームウェア220が参照元を有する点が図9と相違する。第3の実施形態では、第1の実施形態との相違点についてのみ説明する。
 図10は、第3の実施形態光通信システム1の構成の例を示す図である。図9に対して、メモリ22上のプラットフォームファームウェア220は、参照元227を有える。
 書換部27の処理は図9と同様である。図10に示すように、プラットフォームファームウェア220は、参照元227を有する。第1の実施形態で説明したとおり、書換部27は、関数参照テーブル224を参照し、更新前ファームウェア221の記憶領域を示す参照先アドレス(参照先223)を、更新後ファームウェア222の記憶領域を示す参照先アドレス(新たな参照先225)に書き換える。これによって、CPU23は、プラットフォームファームウェア220の関数データ等を呼び出した場合に、更新前ファームウェア221の関数データ等を参照する代わりに、更新後ファームウェア222の関数データ等を参照することができる。
 以上のように、メモリ22は、予め定められたプラットフォームファームウェア220に関するデータをさらに記憶する。書換27は、プラットフォームファームウェア220から参照される第1データの記憶領域を示す参照先アドレスを、第2データの記憶領域を示す参照先アドレスに書き換える。これによって、プラットフォームファームウェア220を介してCPU23に参照されるデータを第1データから第2データに書き換える。通信部24は、CPU23に参照された第2データに基づいて通信する。
 これによって、第3の実施形態の光アクセス装置2は、第1の実施形態と比較してオーバーヘッドを削減して、通信断を発生させずにファームウェアを更新することが可能である。すなわち、第2実施形態の光アクセス装置2は、更新後ファームウェア222に関するデータを、更新前ファームウェア221を介して参照する場合と比較して、オーバーヘッドを削減して、通信断を発生させずにファームウェアを更新することが可能である。
 (第4の実施形態)
 第4の実施形態は、第1の実施形態及び第3の実施形態の組み合わせである。
 図11は、第4の実施形態に係る光通信システム1の構成の例を示す図である。
 図11によると、更新前ファームウェア221は参照元226を有する。これにより、CPU23が更新前ファームウェア221の関数データ等を呼び出した場合に、参照先アドレスを更新前ファームウェア221の記憶領域のアドレスと更新後ファームウェア222の記憶領域のアドレスとの間で切り替える。
 図11によると、プラットフォームファームウェア220は、参照元227を有する。これにより、CPU23がプラットフォームファームウェア220の関数データ等を呼び出した場合に、参照先アドレスを更新前ファームウェア221の記憶領域のアドレスと更新後ファームウェア222の記憶領域のアドレスとの間で切り替える。
 以上のように、第4の実施形態の光アクセス装置2の各機能部は、第1の実施形態の光アクセス装置2の各機能部と、第3の実施形態の光アクセス装置2の各機能部との組み合わせである。これによって、第4の実施形態の光アクセス装置2は、参照の回数が増えることによってオーバーヘッドが増大したとしても、柔軟な切替動作によって、通信断を発生させずにファームウェアを更新することが可能である。
 以上、複数の実施形態、及び変形例を説明したが、いずれか複数の実施形態、及び、いずれかの実施形態と変形例が組み合わせて適用されてもよい。この場合、それぞれの実施形態または変形例の効果を組み合わせた効果を奏する。
 上述した実施の形態では、関数ポインタや構造体を用いて、実行されるプログラムに対して間接参照の処理を追加する。これにより、関数が呼び出された際に、関数ポインタが保持する参照先の関数のアドレスが読み取られ、そのアドレスに処理が移行される。このように、上述した実施形態では、関数ポインタで保持されているアドレスを、書き換える場合を例示した。つまり、書換部27が、間接参照テーブル224における更新前の値を、所定の値、または所定のオフセット値が加算/減算された値に、書き換える場合を例示した。
 ただし、間接参照テーブル224は、実効的に、書き換え処理が行われてもよい。例えば、更新前の値を採用するか、または、更新後の値を採用するかを示すフラグが設けられてもよい。書換部27は、フラグの値を参照し、フラグの値に応じて、書き換えを行うか否かを判定する。例えば、書換部27は、フラグの値が「0」の場合に、間接参照テーブル224から更新前のアドレスを取得する。書換部27は、フラグの値が「1」の場合に、間接参照テーブル224の参照先のアドレスを取得し、実効的に書き換える。
 オフセット値を用いる場合についても同様である。書換部27は、フラグの値が「0」の場合に、間接参照テーブル224から、更新前のアドレス(例えば、値「A」)を取得する。書換部27は、フラグの値が「1」の場合に、更新前のアドレス(例えば、値「A」)の代わりに、オフセット値(例えば値「B」)が加算/減算されたアドレス(加算の場合、値「A+B」)を取得し、間接参照テーブル224を取得し、実効的に書き換える。
 フラグは、例えば、ファームウェアごと、または、関数ごとに設けられてもよい。または、フラグはサブルーチンごとに設けられてもよいし、値が動的に更新されてもよい。フラグを用いた書き換え処理は、変数テーブルの書換え処理にも適用可能である。
 上述した実施形態に係る光アクセス装置2、書込装置3の少なくとも一部をコンピュータで実現するようにしてもよい。この場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
 前述した実施形態において、参照先223は第1データの一例であり、参照先アドレスは第1参照先アドレスの一例であり、書込装置3は他装置の一例であり、新たな参照先225は第2データの一例であり、新たな参照先アドレスは第2参照先アドレスの一例であり、CPU23はプロセッサの一例である。
 以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
 本発明は、局側通信端末等の光アクセス装置に適用可能である。
1…光通信システム, 2…光アクセス装置, 3…書込装置, 20…ROM, 21…起動処理部, 22…メモリ, 23…CPU, 24…通信部, 25…書込部, 26…登録部, 27…書換部, 29…代入部, 200、221…更新前ファームウェア, 220…プラットフォームファームウェア, 222…更新後ファームウェア, 223…参照先, 224…間接参照テーブル, 225…新たな参照先

Claims (14)

  1.  更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶するメモリと、
     前記メモリに記憶されている少なくとも一部の前記第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換える書換部と、
     前記第1データの前記参照先を参照する際に、前記メモリに記憶された前記第2参照先アドレスに基づいて前記第2データを参照する制御部と、
    を備える、
     通信処理装置。
  2.  前記書換部は、書き換え指示に応じて、前記メモリに記憶された前記第1参照先アドレスを、前記第2参照先アドレスに書き換える、
     請求項1に記載の通信処理装置。
  3.  前記書換部は、前記メモリに記憶された前記第1参照先アドレスに所定のオフセット値を加算した前記第2参照先アドレスに書き換える、
     請求項1に記載の通信処理装置。
  4.  前記メモリは、プラットフォームファームウェアに関するデータを更に記憶し、
     前記制御部は、参照した前記プラットフォームファームウェアを介して前記第1データの前記参照先を参照する際に、前記メモリに記憶されている前記第2参照先アドレスに基づいて前記第2データを参照する、
     請求項1乃至請求項3に記載の通信処理装置。
  5.  前記メモリが、前記第2データを書き込む空き記憶領域を有する場合に、前記空き記憶領域に前記第2データを書き込む書込部をさらに備える、
     請求項1に記載の通信処理装置。
  6.  前記通信処理装置は、
     期間であるガードタイムを設定する停止処理部、をさらに備え、
     前記制御部は、前記停止処理部が設定した前記ガードタイムの期間、前記書換部による前記第1参照先アドレスを前記第2参照先アドレスに書き換える処理以外の処理、又は前記書き換える処理より優先度が高い処理以外処理を停止させる、
     請求項1に記載の通信処理装置。
  7.  前記書換部は、書き換え対象の前記第1参照先アドレスの数、及び、前記書き換える処理によって制約を受ける機能の制約時間の少なくともいずれかが閾値以上であるか否かを判定し、
     前記停止処理部は、前記書き換え数、及び、前記制約時間の少なくともいずれかが前記閾値以上であると判定された場合に、前記書き換え数及び前記制約時間のいずれか一方に基づいて、前記ガードタイムを設定する、
     請求項6に記載の通信処理装置。
  8.  前記書換部は、前記メモリに前記更新後のファームウェアに関する別のデータである第3データがさらに記憶される場合、前記第1参照先アドレスの少なくとも一部の、前記第2参照先アドレス、または前記第3データの参照先の記憶領域を示す第3参照先アドレスへの書き換え、もしくは、前記第2参照先アドレスの少なくとも一部の、前記第3参照先アドレスへの前記書き換えを行う、
     請求項1に記載の通信処理装置。
  9.  前記書換部は、前記第1データの記憶領域とは異なる領域に記憶され、前記第2データに含まれる変数のうち少なくとも一部の第1の変数の記憶領域を示す参照先アドレスを保持する第2の変数の値を、前記第1データにおける前記第1の変数の記憶領域を示す第1変数参照先アドレスに書き換え、
     前記制御部は、前記第2の変数が保持する前記第1変数参照先アドレスに基づいて前記第1の変数を参照する、
     請求項1に記載の通信処理装置。
  10.  前記書換部は、前記第1データ及び前記第2データに共通に含まれる前記第1の変数について、前記書き換えを行う、
     請求項9に記載の通信処理装置。
  11.  前記書換部は、前記メモリに前記更新後のファームウェアに関する別のデータである第3データがさらに記憶される場合、前記第1、第2データの記憶領域とは異なる領域に記憶され、少なくとも一部の前記第1の変数の記憶領域を示す参照先アドレスを保持する第3の変数の値を、前記第1変数参照先アドレス、または、前記第2の変数が保持する参照先アドレスに書き換える、
     請求項9に記載の通信処理装置。
  12.  前記制御部に参照された前記第2データに基づいて通信する通信部と、
     をさらに備える請求項1に記載の通信処理装置。
  13.  更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶するメモリと、
     前記メモリを参照する制御部と、を有し、
     前記制御部は、前記メモリに記憶されている少なくとも一部の前記第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換え、前記第1データの前記参照先を参照する際に、前記メモリに記憶された前記第2参照先アドレスに基づいて前記第2データを参照する、
     情報処理装置。
  14.  更新前のファームウェアに関するデータである第1データ、及び、更新後のファームウェアに関するデータである第2データを記憶するとともに、前記第1データに含まれる参照先の記憶領域を示す第1参照先アドレスを前記参照先に関連付けて記憶し、
     少なくとも一部の第1参照先アドレスを、前記第2データの前記参照先の記憶領域を示す第2参照先アドレスに書き換え、
     前記第1データの前記参照先を参照する際に、記憶された前記第2参照先アドレスに基づいて前記第2データを参照する、
     通信処理装置の制御方法。
PCT/JP2018/007549 2017-02-28 2018-02-28 通信処理装置、情報処理装置、及び、通信処理装置の制御方法 WO2018159691A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US16/488,864 US11360758B2 (en) 2017-02-28 2018-02-28 Communication processing device, information processing device, and communication processing device control method
JP2019503068A JP6751197B2 (ja) 2017-02-28 2018-02-28 通信処理装置、情報処理装置、及び、通信処理装置の制御方法
EP18760807.0A EP3572932A4 (en) 2017-02-28 2018-02-28 COMMUNICATION PROCESSING DEVICE, INFORMATION PROCESSING DEVICE AND COMMUNICATION PROCESSING DEVICE CONTROL PROCESS
CN201880013897.8A CN110300955B (zh) 2017-02-28 2018-02-28 通信处理装置、信息处理装置和通信处理装置的控制方法

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2017036929 2017-02-28
JP2017-036929 2017-02-28
JP2017-140265 2017-07-19
JP2017140265 2017-07-19
JP2017-162703 2017-08-25
JP2017162703 2017-08-25

Publications (1)

Publication Number Publication Date
WO2018159691A1 true WO2018159691A1 (ja) 2018-09-07

Family

ID=63371074

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/007549 WO2018159691A1 (ja) 2017-02-28 2018-02-28 通信処理装置、情報処理装置、及び、通信処理装置の制御方法

Country Status (5)

Country Link
US (1) US11360758B2 (ja)
EP (1) EP3572932A4 (ja)
JP (1) JP6751197B2 (ja)
CN (1) CN110300955B (ja)
WO (1) WO2018159691A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019208186A1 (ja) * 2018-04-27 2019-10-31 日本電信電話株式会社 通信装置及び情報処理方法
JP2021002317A (ja) * 2019-06-21 2021-01-07 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
JP2022549529A (ja) * 2019-12-13 2022-11-25 ベックホフ オートメーション ゲーエムベーハー オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法
JP2022551342A (ja) * 2019-12-13 2022-12-08 ベックホフ オートメーション ゲーエムベーハー 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7032649B2 (ja) * 2018-05-30 2022-03-09 日本電信電話株式会社 通信方法
CN113076054A (zh) * 2020-01-03 2021-07-06 中强光电股份有限公司 存储器存取系统和存储器存取方法
KR102510167B1 (ko) * 2021-08-03 2023-03-15 시큐리티플랫폼 주식회사 플래시 메모리를 이용한 펌웨어 대용량 업데이트 개선 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004090232A (ja) * 2002-08-29 2004-03-25 Canon Inc 記録装置及び記録装置の制御方法
JP2009272764A (ja) * 2008-05-01 2009-11-19 Fujitsu Ltd 通信システム及び呼制御装置
JP2010130620A (ja) * 2008-12-01 2010-06-10 Oki Networks Co Ltd プログラム更新システム、方法及びプログラム、並びに、呼制御サーバ
JP2017036929A (ja) 2015-08-06 2017-02-16 国立研究開発法人産業技術総合研究所 ハイボリューム・エアサンプラー装着用pm2.5分級器
JP2017140265A (ja) 2016-02-12 2017-08-17 国立大学法人群馬大学 スコープ先端部の洗浄器
JP2017162703A (ja) 2016-03-10 2017-09-14 三洋電機株式会社 組電池とこの組電池を搭載した車両

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962502A (ja) 1995-08-22 1997-03-07 Hitachi Ltd 情報処理装置
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US6760908B2 (en) 2001-07-16 2004-07-06 Namodigit Corporation Embedded software update system
JP4153324B2 (ja) * 2003-01-31 2008-09-24 松下電器産業株式会社 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
GB0423882D0 (en) * 2004-10-27 2004-12-01 Level 5 Networks Ltd Packet information
WO2012127522A1 (ja) * 2011-03-18 2012-09-27 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US9871698B2 (en) * 2012-11-02 2018-01-16 Nec Corporation Information processing device
US20140189203A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage control method
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9329850B2 (en) * 2014-06-24 2016-05-03 International Business Machines Corporation Relocation of instructions that use relative addressing
US9952850B2 (en) * 2015-07-28 2018-04-24 Datadirect Networks, Inc. Automated firmware update with rollback in a data storage system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004090232A (ja) * 2002-08-29 2004-03-25 Canon Inc 記録装置及び記録装置の制御方法
JP2009272764A (ja) * 2008-05-01 2009-11-19 Fujitsu Ltd 通信システム及び呼制御装置
JP2010130620A (ja) * 2008-12-01 2010-06-10 Oki Networks Co Ltd プログラム更新システム、方法及びプログラム、並びに、呼制御サーバ
JP2017036929A (ja) 2015-08-06 2017-02-16 国立研究開発法人産業技術総合研究所 ハイボリューム・エアサンプラー装着用pm2.5分級器
JP2017140265A (ja) 2016-02-12 2017-08-17 国立大学法人群馬大学 スコープ先端部の洗浄器
JP2017162703A (ja) 2016-03-10 2017-09-14 三洋電機株式会社 組電池とこの組電池を搭載した車両

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AKIRA KOTANIRYOZO KIYOHARAATSUSHI SETTSUTAIZO KITTAKA: "A Software Update Method for Embedded Linux Systems (1", 66TH NATIONAL MEETING OF THE INFORMATION PROCESSING SOCIETY OF JAPAN
See also references of EP3572932A4

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019208186A1 (ja) * 2018-04-27 2019-10-31 日本電信電話株式会社 通信装置及び情報処理方法
US11630656B2 (en) 2018-04-27 2023-04-18 Nippon Telegraph And Telephone Corporation Communication device and information processing method
JP2021002317A (ja) * 2019-06-21 2021-01-07 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
US11281445B2 (en) 2019-06-21 2022-03-22 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus, device and storage medium for upgrading application
JP7090657B2 (ja) 2019-06-21 2022-06-24 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
JP2022549529A (ja) * 2019-12-13 2022-11-25 ベックホフ オートメーション ゲーエムベーハー オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法
JP2022551342A (ja) * 2019-12-13 2022-12-08 ベックホフ オートメーション ゲーエムベーハー 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法
JP7270112B2 (ja) 2019-12-13 2023-05-09 ベックホフ オートメーション ゲーエムベーハー 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法
JP7303389B2 (ja) 2019-12-13 2023-07-04 ベックホフ オートメーション ゲーエムベーハー オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法

Also Published As

Publication number Publication date
JPWO2018159691A1 (ja) 2019-07-04
US20190377569A1 (en) 2019-12-12
EP3572932A1 (en) 2019-11-27
EP3572932A4 (en) 2020-12-23
CN110300955A (zh) 2019-10-01
CN110300955B (zh) 2024-03-08
US11360758B2 (en) 2022-06-14
JP6751197B2 (ja) 2020-09-02

Similar Documents

Publication Publication Date Title
WO2018159691A1 (ja) 通信処理装置、情報処理装置、及び、通信処理装置の制御方法
US10701084B2 (en) Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
JP5113700B2 (ja) ファームウェア更新装置及び方法
US20170255459A1 (en) Embedded device and program updating method
US20110283274A1 (en) Firmware image update and management
JP2023009293A (ja) 通信装置及び情報処理方法
JPH086796A (ja) ダウンロード方法、そのネットワークシステム、及びデータファイル更新方法
US11119948B2 (en) Memory protection circuit and memory protection method
CN104915226A (zh) 一种网络设备软件启动方法、装置及网络设备
KR100986487B1 (ko) 고장 허용 갱신 에이전트를 구비한 모바일 핸드세트
JP2016139354A (ja) 情報処理システム
JP2011175352A (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JP2019074950A (ja) 情報処理装置、制御装置、制御方法及び制御プログラム
WO2021153224A1 (ja) 情報処理装置および情報処理方法
CN111079194A (zh) 计算装置和用于该计算装置的运行方法
US10082967B2 (en) Transfer apparatus and recovery control device
JP6682897B2 (ja) 通信設定方法、通信設定プログラム、情報処理装置および情報処理システム
US20190286447A1 (en) Information processing device
JP7461755B2 (ja) 情報処理装置、プログラム更新システム、及びプログラム更新方法
CN117407218A (zh) 一种OpenPower服务器PNOR固件备份和恢复方法及系统
JP2008108048A (ja) コンピュータ及びそのファームウェア更新方法
JP2009301479A (ja) マイクロコンピュータ
JP2017228006A (ja) 電子制御装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18760807

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019503068

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018760807

Country of ref document: EP

Effective date: 20190823