WO2021131754A1 - 通信機器及びプログラム - Google Patents

通信機器及びプログラム Download PDF

Info

Publication number
WO2021131754A1
WO2021131754A1 PCT/JP2020/046098 JP2020046098W WO2021131754A1 WO 2021131754 A1 WO2021131754 A1 WO 2021131754A1 JP 2020046098 W JP2020046098 W JP 2020046098W WO 2021131754 A1 WO2021131754 A1 WO 2021131754A1
Authority
WO
WIPO (PCT)
Prior art keywords
firmware
update
storage area
block
communication
Prior art date
Application number
PCT/JP2020/046098
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 JP2021567215A priority Critical patent/JP7377893B2/ja
Publication of WO2021131754A1 publication Critical patent/WO2021131754A1/ja
Priority to US17/808,401 priority patent/US20220318000A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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

  • This disclosure relates to communication equipment and programs.
  • FOTA Firmware Over the Air
  • the device receives a difference file (update file) showing the update contents for the firmware by wireless communication.
  • the device reads from the firmware storage area that stores the firmware, updates the firmware by comparing the firmware with the difference file using the update storage area, and writes the updated firmware to the firmware storage area.
  • the communication device is a communication device that performs wireless communication, and includes a firmware storage area for storing the firmware of the communication device, an update storage area used for an update process for updating the firmware, and the firmware. It is provided with a communication unit that receives a difference file representing the update contents with respect to the above wireless communication, and an update processing unit that executes the update process based on the difference file.
  • the update processing unit divides the firmware stored in the firmware storage area into a plurality of blocks, and executes the update process for each block using the update storage area.
  • the program according to the second aspect is a process of dividing each of the unupdated firmware and the updated firmware into a plurality of blocks to the information processing device for distributing the difference file showing the updated contents to the firmware of the communication device. , The process of extracting the difference data representing the update content of the updated firmware with respect to the unupdated firmware in block units, and the process of generating the difference file including the difference data in the block units are executed.
  • FOTA In FOTA, it is necessary to secure a large storage capacity that can store the entire firmware as the storage capacity of the update storage area used for firmware update.
  • the firmware of the communication unit (for example, LPWA communication unit) of the device is large in size, if the memory capacity of the device is designed according to the size of this firmware, it is necessary to mount a large capacity memory in the device. Therefore, the device that updates the firmware by FOTA has a problem that the cost increases due to the increase in the memory capacity.
  • the purpose of this disclosure is to realize firmware update by FOTA with a small capacity memory.
  • FIG. 1 is a diagram showing a configuration of a communication system 1 according to an embodiment.
  • the communication system 1 includes a communication device 100, a network 200, a server 300, and a terminal 400.
  • the communication device 100 is a device having a communication function and is used for sensing purposes such as remote monitoring.
  • the communication device 100 has a configuration in which the type of sensor used for measurement can be customized by the user in order to be able to support various services related to sensing.
  • the communication device 100 is a device used for sensing purposes.
  • the communication device 100 is any device that uses FOTA and has a small storage capacity of the memory to be mounted. It may be such a device.
  • the communication device 100 has a configuration in which the sensor 170 can be attached and detached, and can be provided with high versatility and low cost.
  • “detachable” is not limited to the case where the sensor 170 can be physically attached (attached) and detached to the communication device 100, and the sensor 170 is electrically connected to the communication device 100 via a cable or the like. And the case where cutting is possible.
  • the configuration in which the sensor 170 can be attached and detached is not limited to the communication device 100, and the sensor 170 may be mounted on the communication device 100.
  • the communication device 100 transmits the sensor data output by the sensor 170 to the server 300 via wireless communication with the base station 201 included in the network 200.
  • the communication device 100 performs LPWA (Low Power Wide Area) wireless communication.
  • the LPWA method is a wireless communication method that realizes long-distance communication while suppressing power consumption.
  • the LPWA method is, for example, cellular LPWA, Sigfox, or LoRaWAN.
  • Cellular LPWA may be eMTC (enhanced Machine Type Communications) or NB-IoT (Narrow Band-Internet of Things) specified in the 3GPP (3rd generation partnership project) standard.
  • the network 200 is provided with a base station 201 that performs wireless communication with the communication device 100.
  • the network 200 includes a high-frequency communication network (WAN: Wide Area Network).
  • the network 200 may further include the Internet.
  • the server 300 is connected to the network 200.
  • the server 300 communicates with the communication device 100 via the network 200.
  • the server 300 makes various settings for the communication device 100 and collects sensor data from the communication device 100.
  • the server 300 does not necessarily have to be a dedicated server.
  • the server 300 may be a general-purpose terminal in which a predetermined application program is installed, or may be a cloud server.
  • the server 300 When the firmware of the communication device 100 needs to be updated, the server 300 provides the communication device 100 with a difference file showing the contents of the change to the current firmware of the communication device 100.
  • the difference file includes a difference program corresponding to the difference in firmware before and after the update, and a version number indicating the version of the firmware after the update.
  • the server 300 may be physically or logically divided into a server function for collecting sensor data and a server function for providing a difference file.
  • the communication device 100 receives the difference file by wireless communication and updates the firmware based on the received difference file.
  • FOTA has a push-type method in which a difference file is distributed from the server 300 to the communication device 100 when there is a firmware update.
  • a push-type firmware update method there is a firmware update method using the LwM2M (Lightweight Machine to Machine) protocol established by OMA (Open Mobile Alliance).
  • LwM2M Lightweight Machine to Machine
  • OMA Open Mobile Alliance
  • the terminal 400 accesses the server 300 via the network 200, receives information from the server 300, and displays the received information. For example, the terminal 400 displays a setting screen for making various settings for the communication device 100, and displays the sensor data collected by the server 300 on the remote monitoring screen.
  • the terminal 400 may be a portable terminal, for example, a smartphone, a tablet terminal, a notebook PC, or a wearable terminal.
  • the terminal 400 may be a stationary terminal, for example, a desktop PC.
  • Dedicated application software for displaying information received from the server 300 may be installed in the terminal 400.
  • a general-purpose Web browser for displaying information received from the server 300 may be installed in the terminal 400.
  • FIG. 2 is a diagram showing a configuration of a communication device 100 according to an embodiment.
  • the communication device 100 includes an antenna 110, an RF (Radio Frequency) unit 120, a communication unit 130, a control unit 140, a battery 150, and a sensor interface 160.
  • RF Radio Frequency
  • the antenna 110 and the RF unit 120 transmit and receive radio signals. Specifically, the RF unit 120 performs amplification processing, filtering processing, and the like on the radio signal received by the antenna 110, converts the radio signal into a baseband signal (received signal), and outputs the radio signal to the communication unit 130. Further, the RF unit 120 converts the baseband signal (transmission signal) output from the communication unit 130 into a radio signal, performs amplification processing and the like, and transmits it from the antenna 110.
  • the communication unit 130 has a communication processor 131 that performs communication processing conforming to the LPWA method.
  • the communication processor 131 may be referred to as a modem or baseband processor.
  • the communication process includes layer 1 and layer 2 processes of the OSI reference model.
  • the communication processor 131 performs demodulation processing, decoding processing, and the like on the received signal output by the RF unit 120, and outputs the received data to the control unit 140.
  • the communication processor 131 performs coding processing, modulation processing, and the like on the transmission data output by the control unit 140, and outputs the transmission signal to the RF unit 120.
  • the communication unit 130 has a communication memory 132.
  • the communication memory 132 stores the communication firmware executed by the communication processor 131 and is used as a work area of the communication processor 131.
  • the communication memory 132 includes a non-volatile memory (ROM) for storing communication firmware and the like, and a volatile memory (RAM) used as a work area.
  • the control unit 140 performs various processes and controls on the communication device 100.
  • the control unit 140 is sometimes called a microcontroller or a microcomputer.
  • the control unit 140 has a control processor 141.
  • the control processor 141 is sometimes called an application processor.
  • the control processor 141 executes each program (firmware) of the application, the FOTA, the device driver, and the OS (Operating System). The details of the control processor 141 will be described later.
  • the control unit 140 has a control memory 142.
  • the control memory 142 stores the control firmware executed by the control processor 141 and is used as a work area of the control processor 141.
  • the control memory 142 includes a non-volatile memory (ROM) for storing communication firmware and the like, and a volatile memory (RAM) used as a work area.
  • ROM non-volatile memory
  • RAM volatile memory
  • the communication memory 132 and at least a part of the control memory 142 may be physically integrated.
  • the ROM included in the communication memory 132 and the ROM included in the control memory 142 may be physically integrated, or the RAM included in the communication memory 132 and the RAM included in the control memory 142 may be physically integrated. And may be physically integrated.
  • the battery 150 is composed of a primary battery or a secondary battery, and supplies electric power for driving the communication device 100.
  • the sensor interface 160 is an interface to which the sensor 170 is electrically connected.
  • the sensor interface 160 is configured to conform to any of a USB (Universal Serial Bus) standard, a UART (Universal Synchronous Receiver / Transmitter) standard, and an I2C (Inter-Integrated Circuit) standard.
  • the sensor interface 160 may be connected to the sensor 170 without a cable.
  • the sensor 170 that can be connected to the sensor interface 160 is, for example, at least one of a temperature sensor 171, a humidity sensor 172, a position sensor 173, an acceleration sensor 174, a geomagnetic sensor 175, an illuminance sensor 176, a pressure sensor 177, and a gyro sensor 178.
  • the user of the communication device 100 purchases a sensor 170 according to his / her needs as needed, and attaches the sensor 170 to the communication device 100.
  • the sensor 170 mounted on the communication device 100 can be removed or replaced by the user.
  • the communication device 100 has a plurality of ports 161a, 161b, .... A separate sensor 170 is electrically connected to each port.
  • the temperature sensor 171 is a sensor that measures the temperature and outputs the temperature data as sensor data.
  • the humidity sensor 172 is a sensor that measures humidity and outputs humidity data as sensor data.
  • the position sensor 173 is a sensor that measures the position and outputs the position data as sensor data.
  • the position sensor 173 includes a GNSS receiver.
  • the acceleration sensor 174 is a sensor that measures acceleration and outputs acceleration data as sensor data.
  • the acceleration sensor 174 may be a uniaxial acceleration sensor or a multi-axis acceleration sensor.
  • the geomagnetic sensor 175 is a sensor that measures the geomagnetism and outputs the geomagnetic data as sensor data.
  • the illuminance sensor 176 is a sensor that measures illuminance and outputs illuminance data as sensor data.
  • the barometric pressure sensor 177 is a sensor that measures barometric pressure and outputs barometric pressure data as sensor data.
  • the gyro sensor 178 is a sensor that measures the ang
  • the control unit 140 performs a transmission process (hereinafter, referred to as “data transmission process”) for transmitting the sensor data obtained by the sensor 170 to the server 300.
  • data transmission process a transmission process
  • the control unit 140 determines whether or not the preset transmission conditions are satisfied.
  • the communication unit 130 performs data transmission processing when the transmission condition is satisfied.
  • the transmission condition may be a condition that the sensor data (sensor value) of the specific sensor 170 exceeds or falls below the threshold value.
  • the control unit 140 may control the communication unit 130 so as to periodically execute the data transmission process.
  • the communication unit 130 may be set to the power saving mode during the period when the data transmission process is not performed.
  • the power saving mode may be a mode in which power supply to the RF unit 120 and the communication unit 130 is stopped.
  • the power saving mode may be PSM (Power Saving Mode) or eDRX (extended Ministry Reception) defined by the 3GPP (Third Generation Partnership Project) standard.
  • the control processor 141 of the control unit 140 has an application processing unit 141a and an update processing unit 141b.
  • the application processing unit 141a is a functional unit corresponding to an application program which is a kind of control firmware.
  • the update processing unit 141b is a functional unit corresponding to the firmware update function for updating the firmware by FOTA.
  • the update processing unit 141b may use a pull-type firmware update method. Specifically, the update processing unit 141b accesses the server 300, inquires of the server 300 whether or not there is a firmware update, and then acquires the difference file from the server 300. The update processing unit 141b updates the firmware to be updated using the acquired difference file.
  • the firmware to be updated may be control firmware or communication firmware.
  • the size of the communication firmware is larger than the size of the control firmware.
  • FIG. 3 is a diagram showing an update process of the communication firmware according to the embodiment.
  • the communication memory 132 provided in the communication unit 130 includes a communication firmware storage area 132a for storing communication firmware.
  • the communication firmware storage area 132a is provided in the non-volatile memory included in the communication memory 132.
  • the control memory 142 provided in the control unit 140 includes a control firmware storage area 142a for storing the control firmware and an update storage area 142b used for the update processing of the communication firmware.
  • the control firmware storage area 142a is provided in the non-volatile memory included in the control memory 142.
  • the update storage area 142b is provided in the volatile memory included in the control memory 142.
  • the communication unit 130 receives the difference file representing the update contents for the communication firmware by wireless communication.
  • the update processing unit 141b stores the difference file received by the communication unit 130 in the control memory 142 (update storage area 142b or other storage area).
  • the update processing unit 141b executes the update processing of the communication firmware based on this difference file.
  • the update processing unit 141b divides the communication firmware stored in the communication firmware storage area 132a into a plurality of blocks (blocks # 1 to # 5 in the example of FIG. 3), and divides the update storage area 142b into a plurality of blocks (blocks # 1 to # 5 in the example of FIG. 3).
  • the update process is executed block by block.
  • FIG. 3 shows an example in which the size (block size) of each of the plurality of blocks of the communication firmware is fixed.
  • the block size is a size equal to or smaller than the size of the storage capacity of the update storage area 142b.
  • the update processing unit 141b executes the update process for each block using the update storage area 142b, 1) the target block (for example, block # 1) included in the plurality of blocks # 1 to # 5 is selected. While reading from the communication firmware storage area 132a, this target block is written to the update storage area 142b, 2) the target block is updated by comparing the target block with the difference file in the update storage area 142b, and 3) update. The updated target block is read from the update storage area 142b, and the updated target block is written (written back) to the communication firmware storage area 132a. For example, when the update processing unit 141b updates the block # 1 of the communication firmware, the update processing unit 141b overwrites the block # 1 before the update with the block # 1 after the update.
  • the update processing unit 141b updates the block # 1 of the communication firmware
  • the update processing unit 141b overwrites the block # 1 before the update with the block # 1 after the update.
  • the update processing unit 141b writes the updated target block to the communication firmware storage area 132a, and confirms whether or not the writing is completed correctly. When it is confirmed that the writing is completed correctly, the update processing unit 141b executes the update processing of the above 1) to 3) with the next block (for example, block # 2) as the target block.
  • the storage capacity of the update storage area 142b is not a large storage capacity that matches the size of the entire communication firmware, but a small storage capacity that matches the size of one block. Since it is done, the memory cost can be reduced.
  • the communication firmware input / output by the communication memory 132 is divided into blocks, even if a malicious third party acquires and analyzes the memory input / output data, the contents of the communication firmware can be detected. Because it is difficult, security can be strengthened.
  • FIG. 4 is a diagram showing an update process of the control firmware according to the embodiment.
  • control memory 142 provided in the control unit 140 includes a control firmware storage area 142a for storing the control firmware and an update storage area 142b used for the control firmware update process. ..
  • the update storage area 142b is used not only for the above-mentioned communication firmware update process but also for the control firmware update process. That is, the update storage area 142b is shared in the communication firmware update process and the control firmware update process. As a result, it is not necessary to provide the update storage area 142b in the communication memory 132, so that the storage capacity of the communication memory 132 can be reduced.
  • the communication unit 130 receives the difference file representing the update contents for the control firmware by wireless communication.
  • the update processing unit 141b stores the difference file received by the communication unit 130 in the control memory 142 (update storage area 142b or other storage area).
  • the update processing unit 141b executes the update processing of the control firmware based on this difference file.
  • the update processing unit 141b divides the control firmware stored in the control firmware storage area 142a into a plurality of blocks (blocks # 1 to # 3 in the example of FIG. 4), and divides the update storage area 142b into a plurality of blocks (blocks # 1 to # 3 in the example of FIG. 4).
  • the update process is executed block by block.
  • FIG. 4 shows an example in which the size (block size) of each of the plurality of blocks of the control firmware is fixed.
  • the block size is a size equal to or smaller than the size of the storage capacity of the update storage area 142b.
  • the update processing unit 141b executes the update process for each block using the update storage area 142b, 1) the target block (for example, block # 1) included in the plurality of blocks # 1 to # 3 is selected. While reading from the control firmware storage area 142a, this target block is written to the update storage area 142b, 2) the target block is updated by comparing the target block with the difference file in the update storage area 142b, and 3) update. The updated target block is read from the update storage area 142b, and the updated target block is written (written back) to the control firmware storage area 142a. For example, when the control firmware block # 1 is updated, the update processing unit 141b overwrites the block # 1 before the update with the block # 1 after the update.
  • the target block for example, block # 1 included in the plurality of blocks # 1 to # 3 is selected. While reading from the control firmware storage area 142a, this target block is written to the update storage area 142b, 2) the target block is updated by comparing the target block with the difference file in the update storage area
  • the update processing unit 141b writes the updated target block to the control firmware storage area 142a, and confirms whether or not the writing is completed correctly. When it is confirmed that the writing is completed correctly, the update processing unit 141b executes the update processing of the above 1) to 3) with the next block (for example, block # 2) as the target block.
  • the storage capacity of the update storage area 142b is not a large storage capacity that matches the size of the entire control firmware, but a small storage capacity that matches the size of one block. I'm done.
  • FIG. 5 is a diagram showing a configuration of the server 300 according to the embodiment.
  • the server 300 has a communication unit 310 and a control unit 320.
  • the communication unit 310 includes, for example, a wired communication interface.
  • the communication unit 310 is connected to the network 200 and communicates with the communication device 100 via the network 200.
  • the control unit 320 performs various processes and controls on the server 300.
  • the control unit 320 has a processor 321 and a memory 322.
  • the memory 322 stores a program executed by the processor 321 and is used as a work area of the processor 321.
  • the memory 322 includes an auxiliary storage device such as an HDD or an SSD.
  • the control unit 320 executes a process of collecting and managing sensor data from the communication device 100 and a process of providing a difference file to the communication device 100 in order to update the firmware of the communication device 100.
  • the communication unit 310 performs a reception process in which the communication device 100 receives the sensor data obtained by the sensor 170 from the communication device 100.
  • the control unit 320 stores and manages the sensor data received from the communication device 100.
  • FIG. 6 is a diagram showing a firmware update operation in the communication device 100 according to the embodiment.
  • the update operation of the communication firmware will be described as an example.
  • step S1 the update processing unit 141b downloads the difference file.
  • step S2 the update processing unit 141b reads the target block (for example, block # 1) of the communication firmware stored in the communication firmware storage area 132a, and writes this target block to the update storage area 142b.
  • the target block for example, block # 1 of the communication firmware stored in the communication firmware storage area 132a
  • step S3 the update processing unit 141b updates the target block by comparing the target block with the difference file in the update storage area 142b.
  • step S4 the update processing unit 141b reads the updated target block (updated block) from the update storage area 142b, and writes (writes back) the updated block to the communication firmware storage area 132a.
  • step S5 the update processing unit 141b determines whether or not the writing of the updated block to the communication firmware storage area 132a is completed correctly.
  • step S5 the update processing unit 141b executes error processing in step S7.
  • the error processing may be a processing of trying again to write the updated block to the communication firmware storage area 132a.
  • the error processing may be a process of restarting from step S2 for the same target block.
  • the error processing may be a processing for terminating the update operation as a firmware update failure.
  • step S5 the update processing unit 141b determines whether or not the update has been completed for all the blocks. If “YES” in step S6, the update operation ends.
  • step S8 the update processing unit 141b selects the next block as the target block. Then, the update processing unit 141b executes the processing after step S2 for the next block.
  • the communication device 100 divides the communication firmware or the control firmware into a plurality of blocks, and executes the update process for each block using the update storage area 142b.
  • the storage capacity of the update storage area 142b is not a large storage capacity that matches the size of the entire firmware, but a small storage capacity that matches the size of one block. Therefore, a small capacity memory is used as the control memory 142. Can be installed. Therefore, the cost of the communication unit 130 can be reduced.
  • the update processing unit 141b writes the updated target block to the communication firmware storage area 132a or the control firmware storage area 142a, confirms whether or not the writing is completed correctly, and the writing is completed correctly. When it is confirmed that this has been done, the update process is executed with the next block as the target block. As a result, the reliability of the firmware update can be improved.
  • the update processing unit 141b uses the same update storage area 142b in the update process for the communication firmware and the update process for the control firmware. As a result, the overall memory storage capacity can be reduced as compared with the case where separate update storage areas are used for the update process for the communication firmware and the update process for the control firmware.
  • the size of each of the plurality of blocks is fixed. For example, it is easy to make the update storage area 142b a small storage capacity according to the size of one block.
  • FOTA updates the firmware using wireless communication, but it is used not only for adding and improving functions but also for fixing serious problems. Therefore, in a normal application, it is common to share a volatile memory (RAM), but in FOTA, a dedicated RAM is reserved so that it can always operate. However, since FOTA is not a function that operates frequently, it is desired to reduce the memory used by FOTA as much as possible from the viewpoint of effectively using RAM in a device having a small memory.
  • FIG. 7 is a diagram showing details of the operation of the communication device 100 according to the embodiment.
  • the firmware is abbreviated as FW.
  • the communication device 100 has a ROM constituting a non-volatile memory area and RAMs 1 to 3 forming a volatile memory area.
  • the ROM may be an EEPROM (Electrically Erasable Programmable Read-Only Memory) such as a flash memory.
  • the ROM is a non-volatile memory included in the control memory 142 and / or the communication memory 132.
  • the RAMs 1 to 3 are volatile memories included in the control memory 142 and / or the communication memory 132. In the first modification, the RAMs 1 to 3 form an update storage area 142b.
  • the ROM has a storage area R1 for storing a difference file received by the communication unit 130 by wireless communication, a storage area R2 used as a work area, and a storage area R3 for storing a program (firmware).
  • the storage area R3 is a storage area corresponding to the control firmware storage area 142a or the communication firmware storage area 132a.
  • step S101 of FIG. 7 the update processing unit 141b writes the difference file (difference data) read from the storage area R1 of the ROM to the RAM 1.
  • the difference file is in a compressed state.
  • step S102 the update processing unit 141b decompresses the difference file stored in the RAM 1 and writes the decompressed difference file to the RAM 2.
  • step S103 the update processing unit 141b reads one block (target block) of the unupdated firmware from the storage area R3 of the ROM, and writes the read target block to the RAM 3.
  • step S104 the update processing unit 141b updates the target block by comparing the decompressed difference file (difference data) stored in the RAM 2 with the target block stored in the RAM 3.
  • the RAM 3 is used as a non-volatile memory for comparison processing.
  • the updated target block constitutes one block of the updated firmware.
  • step S105 the update processing unit 141b reads the updated target block stored in the RAM 3 and writes the read updated target block to the storage area R2 of the ROM.
  • the updated target block is written in the storage area R2, which is a work area, in order to enable restarting from the interruption point when a sudden power failure or the like occurs.
  • step S106 the update processing unit 141b reads the updated target block stored in the storage area R2 of the ROM, and writes the read updated target block to the storage area R3 of the ROM.
  • the update processing unit 141b may overwrite the target block of the unupdated firmware with the updated target block.
  • the firmware stored in the storage area R3 of the ROM is updated.
  • a total of three RAMs, RAM 1 to RAM 3, are required.
  • FIG. 8 is a diagram showing the operation of the communication device 100 according to the first modification of the embodiment. Here, the differences from the operation of FIG. 7 will be mainly described.
  • step S201 the update processing unit 141b writes the difference file (difference data) read from the storage area R1 of the ROM into the RAM 1.
  • the difference file is in a compressed state.
  • step S202 the update processing unit 141b decompresses the difference file stored in the RAM 1 and writes the decompressed difference file to the RAM 2.
  • step S203 the update processing unit 141b reads the decompressed difference file (difference data) stored in the RAM 2 stored in the RAM 2, and writes the read decompressed difference file into the storage area R2 of the ROM. That is, the update processing unit 141b saves the decompressed difference file stored in the RAM 2 in the working area (storage area R2) of the ROM.
  • step S204 the update processing unit 141b reads one block (target block) of the unupdated firmware from the storage area R3 of the ROM, and writes the read target block to the RAM 2. That is, the RAM 2 is reused.
  • step S205 the update processing unit 141b updates the target block by comparing the decompressed difference file (difference data) stored in the storage area R2 of the ROM with the target block stored in the RAM 2.
  • the updated target block constitutes one block of the updated firmware.
  • step S206 the update processing unit 141b reads the updated target block stored in the RAM 2 and writes the read updated target block to the storage area R2 of the ROM.
  • step S207 the update processing unit 141b reads the updated target block stored in the storage area R2 of the ROM, and writes the read updated target block to the storage area R3 of the ROM.
  • the update processing unit 141b may overwrite the target block of the unupdated firmware with the updated target block.
  • the firmware stored in the storage area R3 of the ROM is updated.
  • the update processing unit 141b When the difference file, which is a compressed file, is decompressed in the volatile memory area (RAM2), the update processing unit 141b according to the change example 1 saves the decompressed difference file in the non-volatile memory area (ROM storage area R2). Then, when the update processing unit 141b writes the target block to the volatile memory area (RAM2), the update processing unit 141b stores the target block stored in the volatile memory area (RAM2) in the non-volatile memory area (ROM storage area R2). The target block is updated by comparing with the difference file.
  • the volatile memory area (RAM 2) can be reused for the comparison process, so that the RAM 3 for the comparison process can be eliminated. .. Therefore, since the RAM required for FOTA can be reduced from three to two, it is possible to easily realize FOTA even in a memory-saving device.
  • the RAM area prepared in advance by the decompressed difference file depends on the data pattern of the unupdated firmware (old FW) and the updated firmware (new FW). It may exceed. In this case, there is a problem that the RAM size is exceeded and the update by OTA fails. Modification 2 is an embodiment for solving such a problem.
  • the block is not the difference data but the new FW.
  • the block of is treated as difference data and processing is continued.
  • the information processing device that creates the difference file may be the server 300 shown in FIG. 1 or the device that provides the difference file to the server 300.
  • the information processing device is at least one computer having at least one processor and at least one memory.
  • the information processing device adds a new FW block instead of the difference data
  • the information processing device adds information indicating that it is not the difference data to the header of the corresponding block.
  • the update processing unit 141b of the communication device 100 skips the difference application process of the corresponding block if it is not the difference data when the header is read.
  • FIG. 9 is a diagram showing a data flow when the information processing apparatus according to the modification 2 generates a difference file.
  • the information processing apparatus divides the unupdated firmware (old FW) into a plurality of blocks and the updated firmware (new FW) into a plurality of blocks. ..
  • the size of each block and the number of block divisions may be fixed.
  • the information processing apparatus acquires one block of unupdated firmware (hereinafter referred to as “unupdated block”) and corresponds to one block of updated firmware (hereinafter referred to as “unupdated block”). , Called "updated block”), extract the difference between the unupdated block and the updated block, and generate the difference data.
  • unupdated block one block of unupdated firmware
  • unupdated block corresponds to one block of updated firmware
  • updated block Called "updated block”
  • the information processing apparatus determines whether or not the size of the generated difference data exceeds a predetermined size (maximum RAM size), and if not, selects and exceeds the difference data. In that case, the updated block is selected as the difference data.
  • a predetermined size maximum RAM size
  • the information processing device compresses the selected difference data (which may be an updated block).
  • the information processing device generates a header to be linked to the compressed difference data.
  • the compressed difference data is an updated block
  • the information processing apparatus when the compressed difference data is an updated block, the information processing apparatus generates a header including information indicating that the data is not the difference extraction, and concatenates the header to the compressed difference data.
  • a file is a combination of compressed difference data and a header.
  • the information processing device applies such an operation to all blocks to generate a difference file consisting of a plurality of files corresponding to the plurality of blocks. Then, the difference file generated by the information processing device is distributed from the server 300 shown in FIG. 1 to the communication device 100.
  • FIG. 10 is a diagram showing an operation flow when the information processing device according to the modification 2 generates a difference file.
  • step S301 the information processing apparatus reads one unupdated block of the unupdated firmware.
  • step S302 the information processing device reads the corresponding block (updated block) of the updated firmware.
  • step S303 the information processing device extracts the difference between the unupdated block and the updated block and generates the difference data.
  • step S304 the information processing apparatus determines whether or not the size of the generated difference data is smaller than a predetermined size (maximum RAM size). When the size of the generated difference data is less than the predetermined size (step S304: YES), the information processing apparatus proceeds to the process in step S307.
  • a predetermined size maximum RAM size
  • step S304 when the size of the generated difference data is equal to or larger than a predetermined size (step S304: NO), the information processing apparatus uses the updated block as it is as the difference data (step S305), and uses it as the header information of the corresponding block. Information indicating that the difference has not been extracted is added (step S306), and the process proceeds to step S307.
  • step S307 the information processing device compresses the difference data (which may be an updated block).
  • step S308 the information processing device adds a header. Then, the information processing apparatus connects the header to the compressed difference data (step S309).
  • step S310 the information processing device determines whether or not the corresponding block is the final block.
  • step S310: YES the information processing device determines whether or not the corresponding block is the final block.
  • step S310: NO the information processing apparatus returns the process to step S301 and resumes the operation for the next block.
  • FIG. 11 is a diagram showing the operation of the communication device 100 according to the second modification.
  • the differences from the operation of FIG. 8 will be mainly described.
  • the update processing unit 141b of the communication device 100 writes the difference file (difference data) read from the storage area R1 of the ROM to the RAM 1 (step S201), and decompresses the difference file stored in the RAM 1. , The decompressed difference file is written to RAM 2 (step S202).
  • the update processing unit 141b decodes the header of the difference data of the corresponding block, and determines whether or not the header contains information indicating that the difference has not been extracted.
  • the header does not contain information indicating that the difference has not been extracted
  • the difference data corresponding to the header is processed in the same manner as in the first modification of the above-described embodiment.
  • the update processing unit 141b handles the difference data corresponding to the header as an updated block (step S401), and the updated block. Is written in the storage area R2 of the ROM (step S206). That is, the update processing unit 141b identifies the file including the updated firmware block from the plurality of files constituting the difference file based on the additional information (header information) included in the difference file, and updates the file. Write the resulting block of firmware to the ROM (firmware storage area).
  • the information processing device for distributing the difference file is divided into a plurality of blocks for each of the unupdated firmware and the updated firmware, and the unupdated firmware is updated.
  • the process of extracting the difference data representing the updated contents of the firmware in block units and the process of generating the difference file including the difference data in block units are executed.
  • the information processing device replaces the difference data corresponding to the specific block in the difference file with the updated firmware corresponding to the specific block. In the diff file.
  • the size of each of the plurality of blocks may be variable.
  • the block size By making the block size variable, it is possible to specify the optimum division method according to the size of the firmware, for example.
  • additional information for determining the size of each of a plurality of blocks may be added to the difference file.
  • the additional information includes at least one of information indicating the number of divisions of the firmware and information indicating the size of each block.
  • the update processing unit 141b determines the size of each of the plurality of blocks based on the additional information, and divides the firmware according to the size of each determined block.
  • a program that causes a computer to execute each process performed by the communication device 100 or the information processing device may be provided.
  • the program may be recorded on a computer-readable medium.
  • Computer-readable media allow you to install programs on your computer.
  • the computer-readable medium on which the program is recorded may be a non-transient recording medium.
  • the non-transient recording medium is not particularly limited, but may be, for example, a recording medium such as a CD-ROM or a DVD-ROM.
  • a functional unit (circuit) that executes each process performed by the communication device 100 may be integrated, and at least a part of the communication device 100 may be configured as a semiconductor integrated circuit (chipset, SoC).

Landscapes

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

Abstract

通信機器100は、通信機器100のファームウェアを記憶するファームウェア記憶領域と、ファームウェアを更新する更新処理に用いる更新用記憶領域142bと、ファームウェアに対する更新内容を表す差分ファイルを無線通信により受信する通信部130と、差分ファイルに基づいて更新処理を実行する更新処理部141bとを有する。更新処理部141bは、ファームウェア記憶領域に記憶されたファームウェアを複数のブロックに分割し、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行する。

Description

通信機器及びプログラム
 本開示は、通信機器及びプログラムに関する。
 近年、機器に組み込まれる制御プログラムであるファームウェアを無線通信によって配信及び更新するFOTA(Firmware Over the Air)と呼ばれる技術が広く用いられている(例えば、特許文献1参照)。
 FOTAでは、機器は、ファームウェアに対する更新内容を表す差分ファイル(更新用ファイル)を無線通信により受信する。機器は、ファームウェアを記憶するファームウェア記憶領域から読み出し、更新用記憶領域を用いてファームウェアを差分ファイルと比較することでファームウェアを更新し、更新後のファームウェアをファームウェア記憶領域に書き込む。
特開2018-45406号公報
 第1の態様に係る通信機器は、無線通信を行う通信機器であって、前記通信機器のファームウェアを記憶するファームウェア記憶領域と、前記ファームウェアを更新する更新処理に用いる更新用記憶領域と、前記ファームウェアに対する更新内容を表す差分ファイルを前記無線通信により受信する通信部と、前記差分ファイルに基づいて前記更新処理を実行する更新処理部とを備える。前記更新処理部は、前記ファームウェア記憶領域に記憶された前記ファームウェアを複数のブロックに分割し、前記更新用記憶領域を用いて1ブロックごとに前記更新処理を実行する。
 第2の態様に係るプログラムは、通信機器のファームウェアに対する更新内容を表す差分ファイルを配信するための情報処理装置に、未更新のファームウェア及び更新されたファームウェアのそれぞれを複数のブロックに分割する処理と、前記未更新のファームウェアに対する前記更新されたファームウェアの更新内容を表す差分データをブロック単位で抽出する処理と、前記ブロック単位での前記差分データを含む前記差分ファイルを生成する処理とを実行させる。
一実施形態に係る通信システムの構成を示す図である。 一実施形態に係る通信機器の構成を示す図である。 一実施形態に係る通信用ファームウェアの更新処理を示す図である。 一実施形態に係る制御用ファームウェアの更新処理を示す図である。 一実施形態に係るサーバの構成を示す図である。 一実施形態に係る通信機器におけるファームウェア更新動作を示す図である。 一実施形態に係る通信機器の動作の詳細を示す図である。 実施形態の変更例1に係る通信機器の動作を示す図である。 変更例2に係る情報処理装置が差分ファイルを生成する際のデータフローを示す図である。 変更例2に係る情報処理装置が差分ファイルを生成する際の動作フローを示す図である。 変更例2に係る通信機器の動作を示す図である。
 FOTAでは、ファームウェア更新に用いる更新用記憶領域の記憶容量として、ファームウェア全体を記憶可能な大きな記憶容量を確保する必要がある。特に、機器の通信部(例えば、LPWA通信部)のファームウェアはサイズが大きいため、このファームウェアのサイズに合わせて機器のメモリ容量を設計すると、大容量のメモリを機器に搭載する必要がある。よって、FOTAによるファームウェア更新を行う機器は、メモリ容量の増大に起因してコストが増大するという問題があった。
 そこで、本開示は、FOTAによるファームウェア更新を小容量のメモリで実現することを目的とする。
 図面を参照して実施形態について説明する。図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
 (通信システムの構成)
 まず、一実施形態に係る通信システムの構成について説明する。図1は、一実施形態に係る通信システム1の構成を示す図である。
 図1に示すように、通信システム1は、通信機器100と、ネットワーク200と、サーバ300と、端末400とを有する。
 通信機器100は、通信機能を有する機器であって、例えば遠隔監視等のセンシングの用途で用いる機器である。通信機器100は、センシングに関する様々なサービスに対応可能とするために、測定に使用するセンサの種類をユーザがカスタマイズ可能な構成を有する。一実施形態において、通信機器100がセンシングの用途で用いる機器である一例について説明するが、通信機器100は、FOTAを用いる機器であって、搭載するメモリの記憶容量が小さい機器であれば、どのような機器であってもよい。
 一実施形態において、通信機器100は、センサ170を着脱可能な構成を有しており、汎用性が高く、且つ低コストで提供可能である。ここで「着脱可能」とは、センサ170が通信機器100に物理的に取り付け(装着)及び取り外しが可能である場合に限らず、センサ170が通信機器100にケーブル等を介して電気的に接続及び切断が可能である場合も含む。但し、センサ170を着脱可能な構成に通信機器100に限定されるものではなく、センサ170を通信機器100に搭載していてもよい。
 通信機器100は、ネットワーク200に含まれる基地局201との無線通信を介して、センサ170が出力するセンサデータをサーバ300に送信する。例えば、通信機器100は、LPWA(Low Power Wide Area)方式の無線通信を行う。LPWA方式は、消費電力を抑えつつ遠距離通信を実現する無線通信の方式である。LPWA方式は、例えば、セルラLPWA、Sigfox、又はLoRaWANである。セルラLPWAは、3GPP(3rd generation partnership project)規格において規定されたeMTC(enhanced Machine Type Communications)又はNB-IoT(Narrow Band-Internet of Things)であってもよい。
 ネットワーク200には、通信機器100との無線通信を行う基地局201が設けられている。ネットワーク200は、高域通信網(WAN:Wide Area Network)を含む。ネットワーク200は、インターネットをさらに含んでもよい。
 サーバ300は、ネットワーク200に接続されている。サーバ300は、ネットワーク200を介して通信機器100との通信を行う。例えば、サーバ300は、通信機器100に対する各種の設定を行ったり、通信機器100からセンサデータを収集したりする。サーバ300は、必ずしも専用のサーバでなくてもよい。サーバ300は、所定のアプリケーションプログラムがインストールされた汎用の端末であってもよいし、クラウドサーバであってもよい。
 サーバ300は、通信機器100のファームウェア更新が必要な場合、通信機器100の現在のファームウェアに対する変更内容を示す差分ファイルを通信機器100に提供する。差分ファイルは、更新の前後におけるファームウェアの差分に対応する差分プログラムと、更新後のファームウェアのバージョンを示すバージョン番号とを含む。なお、サーバ300は、センサデータを収集するサーバ機能と差分ファイルを提供するサーバ機能とに物理的又は論理的に分割されていてもよい。
 通信機器100は、無線通信によって差分ファイルを受信し、受信した差分ファイルに基づいてファームウェア更新を行う。このようなFOTAには、ファームウェア更新があるときにサーバ300から通信機器100に対して差分ファイルを配信するプッシュ型の方法がある。プッシュ型でファームウェア更新を行う方法としては、OMA(Open Mobile Alliance)で策定されたLwM2M(Lightweight Machine to Machine)のプロトコルを用いたファームウェア更新方法がある。また、FOTAには、通信機器100がファームウェア更新の有無をサーバ300に問い合わせたうえで通信機器100がサーバ300から差分ファイルを取得するプル型の方法がある。
 端末400は、ネットワーク200を介してサーバ300にアクセスし、サーバ300から情報を受信し、受信した情報を表示する。例えば、端末400は、通信機器100に対する各種の設定を行うための設定画面を表示したり、サーバ300が収集したセンサデータを遠隔監視画面上に表示したりする。端末400は、可搬型の端末、例えばスマートフォン、タブレット端末、ノートPC、又はウェアラブル端末であってもよい。端末400は、据置の端末、例えばデスクトップPCであってもよい。
 端末400には、サーバ300から受信する情報を表示するための専用のアプリケーションソフトウェアがインストールされていてもよい。端末400には、サーバ300から受信する情報を表示するための汎用のWebブラウザがインストールされていてもよい。
 (通信機器の構成)
 次に、一実施形態に係る通信機器100の構成について説明する。図2は、一実施形態に係る通信機器100の構成を示す図である。
 図2に示すように、通信機器100は、アンテナ110と、RF(Radio Frequency)部120と、通信部130と、制御部140と、バッテリ150と、センサインターフェイス160とを有する。
 アンテナ110及びRF部120は、無線信号を送受信する。具体的には、RF部120は、アンテナ110が受信する無線信号に対して増幅処理及びフィルタ処理等を行い、無線信号をベースバンド信号(受信信号)に変換して通信部130に出力する。また、RF部120は、通信部130から出力されるベースバンド信号(送信信号)を無線信号に変換し、増幅処理等を行ってアンテナ110から送信する。
 通信部130は、LPWA方式に準拠する通信処理を行う通信用プロセッサ131を有する。通信用プロセッサ131は、モデム又はベースバンドプロセッサと呼ばれることがある。通信処理は、OSI参照モデルのレイヤ1及びレイヤ2の処理を含む。例えば、通信用プロセッサ131は、RF部120が出力する受信信号に対する復調処理及び復号処理等を行って、受信データを制御部140に出力する。また、通信用プロセッサ131は、制御部140が出力する送信データに対する符号化処理及び変調処理等を行って、送信信号をRF部120に出力する。
 通信部130は、通信用メモリ132を有する。通信用メモリ132は、通信用プロセッサ131により実行される通信用ファームウェアを記憶するとともに、通信用プロセッサ131の作業領域として利用される。通信用メモリ132は、通信用ファームウェア等を記憶する不揮発性メモリ(ROM)と、作業領域として利用される揮発性メモリ(RAM)とを含む。
 制御部140は、通信機器100における各種の処理及び制御を行う。制御部140は、マイクロコントローラ又はマイクロコンピュータと呼ばれることがある。制御部140は、制御用プロセッサ141を有する。制御用プロセッサ141は、アプリケーションプロセッサと呼ばれることがある。例えば、制御用プロセッサ141は、アプリケーション、FOTA、デバイスドライバ、及びOS(Operating System)の各プログラム(ファームウェア)を実行する。制御用プロセッサ141の詳細については後述する。
 制御部140は、制御用メモリ142を有する。制御用メモリ142は、制御用プロセッサ141により実行される制御用ファームウェアを記憶するとともに、制御用プロセッサ141の作業領域として利用される。制御用メモリ142は、通信用ファームウェア等を記憶する不揮発性メモリ(ROM)と、作業領域として利用される揮発性メモリ(RAM)とを含む。
 なお、通信用メモリ132の少なくとも一部と制御用メモリ142の少なくとも一部とが物理的に一体化されていてもよい。例えば、通信用メモリ132に含まれるROMと制御用メモリ142に含まれるROMとが物理的に一体化されていてもよいし、通信用メモリ132に含まれるRAMと制御用メモリ142に含まれるRAMとが物理的に一体化されていてもよい。
 バッテリ150は、一次電池又は二次電池により構成され、通信機器100を駆動する電力を供給する。
 センサインターフェイス160は、センサ170が電気的に接続されるインターフェイスである。例えば、センサインターフェイス160は、USB(Universal Serial Bus)規格、UART(Universal Asynchronous Receiver/Transmitter)規格、又はI2C(Inter-Integrated Circuit)規格のいずれかに準拠して構成される。センサインターフェイス160は、ケーブルを介さずにセンサ170と接続されてもよい。
 センサインターフェイス160に接続され得るセンサ170は、例えば、温度センサ171、湿度センサ172、位置センサ173、加速度センサ174、地磁気センサ175、照度センサ176、気圧センサ177、及びジャイロセンサ178のうち少なくとも1つである。通信機器100のユーザは、自身のニーズに応じたセンサ170を必要に応じて購入し、このセンサ170を通信機器100に装着する。通信機器100に装着されたセンサ170は、ユーザにより取り外し又は取り替え可能である。通信機器100は、複数のポート161a,161b,・・・を有する。各ポートには、個別のセンサ170が電気的に接続される。
 なお、温度センサ171は、温度を測定し、温度データをセンサデータとして出力するセンサである。湿度センサ172は、湿度を測定し、湿度データをセンサデータとして出力するセンサである。位置センサ173は、位置を測定し、位置データをセンサデータとして出力するセンサである。例えば、位置センサ173は、GNSS受信機を含んで構成される。加速度センサ174は、加速度を測定し、加速度データをセンサデータとして出力するセンサである。加速度センサ174は、一軸の加速度センサであってもよいし、多軸の加速度センサであってもよい。地磁気センサ175は、地磁気を測定し、地磁気データをセンサデータとして出力するセンサである。照度センサ176は、照度を測定し、照度データをセンサデータとして出力するセンサである。気圧センサ177は、気圧を測定し、気圧データをセンサデータとして出力するセンサである。ジャイロセンサ178は、角速度を測定し、角速度データをセンサデータとして出力するセンサである。
 このように構成された通信機器100において、制御部140は、センサ170により得られたセンサデータをサーバ300に送信する送信処理(以下、「データ送信処理」と呼ぶ)を行うように通信部130を制御する。例えば、制御部140は、予め設定された送信条件が満たされたか否かを判定する。通信部130は、送信条件が満たされたときにデータ送信処理を行う。送信条件は、特定のセンサ170のセンサデータ(センサ値)が閾値を超えた又は下回ったという条件であってもよい。或いは、制御部140は、データ送信処理を周期的に実行するように通信部130を制御してもよい。
 通信部130は、データ送信処理を行わない期間において省電力モードに設定されてもよい。省電力モードは、RF部120及び通信部130への給電が停止されるモードであってもよい。省電力モードは、3GPP(Third Generation Partnership Project)規格で規定されるPSM(Power Saving Mode)又はeDRX(extended Discontinuous Reception)であってもよい。
 制御部140の制御用プロセッサ141は、アプリケーション処理部141aと、更新処理部141bとを有する。アプリケーション処理部141aは、制御用ファームウェアの一種であるアプリケーションプログラムに対応する機能部である。更新処理部141bは、FOTAによるファームウェア更新を行うファームウェア更新機能に対応する機能部である。
 更新処理部141bは、プル型のファームウェア更新方法を利用してもよい。具体的には、更新処理部141bは、サーバ300にアクセスし、ファームウェア更新の有無をサーバ300に問い合わせたうえでサーバ300から差分ファイルを取得する。更新処理部141bは、取得した差分ファイルを用いて、更新対象のファームウェアを更新する。
 更新対象のファームウェアは、制御用ファームウェアであってもよいし、通信用ファームウェアであってもよい。一般的に、通信用ファームウェアのサイズは、制御用ファームウェアのサイズよりも大きい。
 図3は、一実施形態に係る通信用ファームウェアの更新処理を示す図である。
 図3に示すように、通信部130に設けられた通信用メモリ132は、通信用ファームウェアを記憶する通信用ファームウェア記憶領域132aを含む。例えば、通信用ファームウェア記憶領域132aは、通信用メモリ132に含まれる不揮発性メモリに設けられる。
 制御部140に設けられた制御用メモリ142は、制御用ファームウェアを記憶する制御用ファームウェア記憶領域142aと、通信用ファームウェアの更新処理に用いる更新用記憶領域142bとを含む。例えば、制御用ファームウェア記憶領域142aは、制御用メモリ142に含まれる不揮発性メモリに設けられる。更新用記憶領域142bは、制御用メモリ142に含まれる揮発性メモリに設けられる。
 通信用ファームウェアを更新するためのFOTAが開始されると、通信部130は、通信用ファームウェアに対する更新内容を表す差分ファイルを無線通信により受信する。更新処理部141bは、通信部130が受信した差分ファイルを制御用メモリ142(更新用記憶領域142b又は他の記憶領域)に記憶させる。
 更新処理部141bは、この差分ファイルに基づいて通信用ファームウェアの更新処理を実行する。ここで、更新処理部141bは、通信用ファームウェア記憶領域132aに記憶された通信用ファームウェアを複数のブロック(図3の例では、ブロック#1乃至#5)に分割し、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行する。図3において、通信用ファームウェアの複数のブロックのそれぞれのサイズ(ブロックサイズ)が固定である一例を示している。ブロックサイズは、更新用記憶領域142bの記憶容量のサイズ以下のサイズである。
 例えば、更新処理部141bは、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行するとき、1)複数のブロック#1乃至#5に含まれる対象ブロック(例えば、ブロック#1)を通信用ファームウェア記憶領域132aから読み出すとともに、この対象ブロックを更新用記憶領域142bに書き込み、2)更新用記憶領域142b内で対象ブロックを差分ファイルと比較することで対象ブロックを更新し、3)更新された対象ブロックを更新用記憶領域142bから読み出すとともに、更新された対象ブロックを通信用ファームウェア記憶領域132aに書き込む(書き戻す)。例えば、更新処理部141bは、通信用ファームウェアのブロック#1を更新した場合、更新前のブロック#1を更新後のブロック#1で上書きする。
 更新処理部141bは、更新された対象ブロックを通信用ファームウェア記憶領域132aに書き込むとともに、正しく書き込みが完了したか否かを確認する。更新処理部141bは、正しく書き込みが完了したことが確認されると、次のブロック(例えば、ブロック#2)を対象ブロックとして、上記1)乃至3)の更新処理を実行する。
 このような更新処理部141bの動作を用いることで、更新用記憶領域142bの記憶容量は、通信用ファームウェア全体のサイズに合わせた大きな記憶容量ではなく、1ブロックのサイズに合わせた小さな記憶容量で済むことになるため、メモリのコストを削減できる。
 また、通信用メモリ132が入出力する通信用ファームウェアはブロック単位に分割されているため、悪意のある第三者がメモリ入出力データを取得及び解析しても、通信用ファームウェアの内容を見破ることが難しいため、セキュリティを強化できる。
 図4は、一実施形態に係る制御用ファームウェアの更新処理を示す図である。
 図4に示すように、制御部140に設けられた制御用メモリ142は、制御用ファームウェアを記憶する制御用ファームウェア記憶領域142aと、制御用ファームウェアの更新処理に用いる更新用記憶領域142bとを含む。
 更新用記憶領域142bは、上述した通信用ファームウェアの更新処理だけではなく、制御用ファームウェアの更新処理にも用いられる。すなわち、通信用ファームウェアの更新処理及び制御用ファームウェアの更新処理において更新用記憶領域142bを共通化している。これにより、更新用記憶領域142bを通信用メモリ132に設ける必要が無くなるため、通信用メモリ132の記憶容量を削減できる。
 制御用ファームウェアを更新するためのFOTAが開始されると、通信部130は、制御用ファームウェアに対する更新内容を表す差分ファイルを無線通信により受信する。更新処理部141bは、通信部130が受信した差分ファイルを制御用メモリ142(更新用記憶領域142b又は他の記憶領域)に記憶させる。
 更新処理部141bは、この差分ファイルに基づいて制御用ファームウェアの更新処理を実行する。ここで、更新処理部141bは、制御用ファームウェア記憶領域142aに記憶された制御用ファームウェアを複数のブロック(図4の例では、ブロック#1乃至#3)に分割し、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行する。図4において、制御用ファームウェアの複数のブロックのそれぞれのサイズ(ブロックサイズ)が固定である一例を示している。ブロックサイズは、更新用記憶領域142bの記憶容量のサイズ以下のサイズである。
 例えば、更新処理部141bは、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行するとき、1)複数のブロック#1乃至#3に含まれる対象ブロック(例えば、ブロック#1)を制御用ファームウェア記憶領域142aから読み出すとともに、この対象ブロックを更新用記憶領域142bに書き込み、2)更新用記憶領域142b内で対象ブロックを差分ファイルと比較することで対象ブロックを更新し、3)更新された対象ブロックを更新用記憶領域142bから読み出すとともに、更新された対象ブロックを制御用ファームウェア記憶領域142aに書き込む(書き戻す)。例えば、更新処理部141bは、制御用ファームウェアのブロック#1を更新した場合、更新前のブロック#1を更新後のブロック#1で上書きする。
 更新処理部141bは、更新された対象ブロックを制御用ファームウェア記憶領域142aに書き込むとともに、正しく書き込みが完了したか否かを確認する。更新処理部141bは、正しく書き込みが完了したことが確認されると、次のブロック(例えば、ブロック#2)を対象ブロックとして、上記1)乃至3)の更新処理を実行する。
 このような更新処理部141bの動作を用いることで、更新用記憶領域142bの記憶容量は、制御用ファームウェア全体のサイズに合わせた大きな記憶容量ではなく、1ブロックのサイズに合わせた小さな記憶容量で済む。
 (サーバの構成)
 次に、一実施形態に係るサーバ300の構成について説明する。図5は、一実施形態に係るサーバ300の構成を示す図である。
 図5に示すように、サーバ300は、通信部310と、制御部320とを有する。通信部310は、例えば、有線通信インターフェイスを含んで構成される。通信部310は、ネットワーク200と接続され、ネットワーク200を介して通信機器100との通信を行う。
 制御部320は、サーバ300における各種の処理及び制御を行う。制御部320は、プロセッサ321及びメモリ322を有する。メモリ322は、プロセッサ321により実行されるプログラムを記憶するとともに、プロセッサ321の作業領域として利用される。メモリ322は、HDD又はSSD等の補助記憶装置を含む。
 制御部320は、通信機器100からのセンサデータを収集及び管理する処理と、通信機器100のファームウェアを更新するために差分ファイルを通信機器100に提供する処理とを実行する。センサデータを収集するために、通信部310は、通信機器100がセンサ170により得たセンサデータを通信機器100から受信する受信処理を行う。制御部320は、通信機器100から受信したセンサデータを記憶及び管理する。
 (通信機器の動作例)
 図6は、一実施形態に係る通信機器100におけるファームウェア更新動作を示す図である。ここでは、通信用ファームウェアの更新動作を例に挙げて説明する。
 図6に示すように、ステップS1において、更新処理部141bは、差分ファイルをダウンロードする。
 ステップS2において、更新処理部141bは、通信用ファームウェア記憶領域132aに記憶された通信用ファームウェアの対象ブロック(例えば、ブロック#1)を読み出すとともに、この対象ブロックを更新用記憶領域142bに書き込む。
 ステップS3において、更新処理部141bは、更新用記憶領域142b内で対象ブロックを差分ファイルと比較することで、この対象ブロックを更新する。
 ステップS4において、更新処理部141bは、更新された対象ブロック(更新済みブロック)を更新用記憶領域142bから読み出すとともに、更新済みブロックを通信用ファームウェア記憶領域132aに書き込む(書き戻す)。
 ステップS5において、更新処理部141bは、通信用ファームウェア記憶領域132aに対する更新済みブロックの書き込みが正しく完了したか否かを判定する。
 ステップS5で「NO」の場合、ステップS7において、更新処理部141bは、エラー処理を実行する。エラー処理は、通信用ファームウェア記憶領域132aに対する更新済みブロックの書き込みを再度試行する処理であってもよい。エラー処理は、同じ対象ブロックについてステップS2からやり直す処理であってもよい。エラー処理は、ファームウェア更新失敗として更新動作を終了する処理であってもよい。
 ステップS5で「YES」の場合、ステップS6において、更新処理部141bは、全ブロックについて更新が完了したか否かを判定する。ステップS6で「YES」の場合、更新動作が終了する。
 ステップS6で「NO」の場合、ステップS8において、更新処理部141bは、次のブロックを対象ブロックとして選択する。そして、更新処理部141bは、次のブロックについてステップS2以降の処理を実行する。
 (実施形態のまとめ)
 以上説明したように、通信機器100は、通信用ファームウェア又は制御用ファームウェアを複数のブロックに分割し、更新用記憶領域142bを用いて1ブロックごとに更新処理を実行する。これにより、更新用記憶領域142bの記憶容量は、ファームウェア全体のサイズに合わせた大きな記憶容量ではなく、1ブロックのサイズに合わせた小さな記憶容量で済むため、制御用メモリ142として小容量のメモリを搭載できる。このため、通信部130の低コスト化を実現できる。
 一実施形態において、更新処理部141bは、更新された対象ブロックを通信用ファームウェア記憶領域132a又は制御用ファームウェア記憶領域142aに書き込むとともに、正しく書き込みが完了したか否かを確認し、正しく書き込みが完了したことが確認されると、次のブロックを対象ブロックとして更新処理を実行する。これにより、ファームウェア更新の信頼性を高めることができる。
 一実施形態において、更新処理部141bは、通信用ファームウェアに対する更新処理及び制御用ファームウェアに対する更新処理で、同じ更新用記憶領域142bを用いる。これにより、通信用ファームウェアに対する更新処理及び制御用ファームウェアに対する更新処理で別々の更新用記憶領域を用いる場合に比べて、全体的なメモリの記憶容量を削減できる。
 一実施形態において、複数のブロックのそれぞれのサイズが固定である。例えば、1ブロックのサイズに合わせて、更新用記憶領域142bを小さな記憶容量とすることが容易である。
 (変更例1)
 次に、実施形態の変更例1について説明する。
 上述したように、FOTAは、無線通信を用いてファームウェアを更新するものであるが、機能の追加や改善だけでなく、重大な不具合を修正する際にも利用される。そのため、通常のアプリケーションでは揮発性メモリ(RAM)を共用することが一般的であるが、FOTAでは、必ず動作できるよう専用にRAMを確保している。しかし、FOTAは頻繁に動作する機能ではないため、小メモリの機器においてRAMを有効利用する観点では、FOTAで使用するメモリを少しでも削減することが望まれる。
 ここで、変更例1に係る動作の説明に先立ち、上述した実施形態に係る動作の詳細について説明する。図7は、実施形態に係る通信機器100の動作の詳細を示す図である。なお、図面において、ファームウェアをFWと略記している。
 図7に示すように、通信機器100は、不揮発性メモリ領域を構成するROMと、揮発性メモリ領域を構成するRAM1乃至RAM3とを有する。ROMは、フラッシュメモリ等のEEPROM(Electrically Erasable Programmable Read-Only Memory)であってもよい。
 ROMは、制御用メモリ142及び/又は通信用メモリ132に含まれる不揮発性メモリである。RAM1乃至RAM3は、制御用メモリ142及び/又は通信用メモリ132に含まれる揮発性メモリである。変更例1において、RAM1乃至RAM3は、更新用記憶領域142bを構成する。
 ROMは、通信部130が無線通信により受信した差分ファイルを記憶する記憶領域R1と、作業領域として用いる記憶領域R2と、プログラム(ファームウェア)を記憶する記憶領域R3とを有する。記憶領域R3は、制御用ファームウェア記憶領域142a又は通信用ファームウェア記憶領域132aに相当する記憶領域である。
 図7のステップS101において、更新処理部141bは、ROMの記憶領域R1から読み出した差分ファイル(差分データ)をRAM1に書き込む。ここで、差分ファイルは、圧縮された状態にある。
 ステップS102において、更新処理部141bは、RAM1に記憶された差分ファイルを解凍し、解凍した差分ファイルをRAM2に書き込む。
 ステップS103において、更新処理部141bは、ROMの記憶領域R3から未更新ファームウェアの1ブロック(対象ブロック)を読み出し、読み出した対象ブロックをRAM3に書き込む。
 ステップS104において、更新処理部141bは、RAM2に記憶された解凍済みの差分ファイル(差分データ)と、RAM3に記憶された対象ブロックとを比較することで対象ブロックを更新する。ここで、RAM3は、比較処理のための不揮発性メモリとして用いられる。なお、更新後の対象ブロックは、更新されたファームウェアの1ブロックを構成する。
 ステップS105において、更新処理部141bは、RAM3に記憶された更新済みの対象ブロックを読み出し、読み出した更新済みの対象ブロックをROMの記憶領域R2に書き込む。ここで、更新済みの対象ブロックを作業領域である記憶領域R2に書き込むのは、突然の電源断等が生じた場合に中断点から再開することを可能とするためである。
 ステップS106において、更新処理部141bは、ROMの記憶領域R2に記憶された更新済みの対象ブロックを読み出し、読み出した更新済みの対象ブロックをROMの記憶領域R3に書き込む。ここで、更新処理部141bは、未更新のファームウェアの対象ブロックを、更新済みの対象ブロックで上書きしてもよい。
 このような動作を全ブロックについて行うことにより、ROMの記憶領域R3に記憶されたファームウェアが更新される。しかしながら、このような動作において、RAM1乃至RAM3の合計3つのRAMが必要である。
 次に、実施形態の変更例1に係る通信機器100の動作について説明する。図8は、実施形態の変更例1に係る通信機器100の動作を示す図である。ここでは、図7の動作との相違点について主として説明する。
 図8に示すように、ステップS201において、更新処理部141bは、ROMの記憶領域R1から読み出した差分ファイル(差分データ)をRAM1に書き込む。ここで、差分ファイルは、圧縮された状態にある。
 ステップS202において、更新処理部141bは、RAM1に記憶された差分ファイルを解凍し、解凍した差分ファイルをRAM2に書き込む。
 ステップS203において、更新処理部141bは、RAM2に記憶されたRAM2に記憶された解凍済みの差分ファイル(差分データ)を読み出し、読み出した解凍済みの差分ファイルをROMの記憶領域R2に書き込む。すなわち、更新処理部141bは、RAM2に記憶された解凍済みの差分ファイルをROMの作業領域(記憶領域R2)に退避させる。
 ステップS204において、更新処理部141bは、ROMの記憶領域R3から未更新ファームウェアの1ブロック(対象ブロック)を読み出し、読み出した対象ブロックをRAM2に書き込む。すなわち、RAM2が再利用される。
 ステップS205において、更新処理部141bは、ROMの記憶領域R2に記憶された解凍済みの差分ファイル(差分データ)と、RAM2に記憶された対象ブロックとを比較することで対象ブロックを更新する。更新後の対象ブロックは、更新されたファームウェアの1ブロックを構成する。
 ステップS206において、更新処理部141bは、RAM2に記憶された更新済みの対象ブロックを読み出し、読み出した更新済みの対象ブロックをROMの記憶領域R2に書き込む。
 ステップS207において、更新処理部141bは、ROMの記憶領域R2に記憶された更新済みの対象ブロックを読み出し、読み出した更新済みの対象ブロックをROMの記憶領域R3に書き込む。ここで、更新処理部141bは、未更新のファームウェアの対象ブロックを、更新済みの対象ブロックで上書きしてもよい。
 このような動作を全ブロックについて行うことにより、ROMの記憶領域R3に記憶されたファームウェアが更新される。
 変更例1に係る更新処理部141bは、圧縮ファイルである差分ファイルを揮発性メモリ領域(RAM2)において解凍すると、解凍した差分ファイルを不揮発性メモリ領域(ROMの記憶領域R2)に退避させる。そして、更新処理部141bは、対象ブロックを揮発性メモリ領域(RAM2)に書き込むと、揮発性メモリ領域(RAM2)に記憶された対象ブロックを、不揮発性メモリ領域(ROMの記憶領域R2)に記憶された差分ファイルと比較することで対象ブロックを更新する。
 解凍した差分ファイルを不揮発性メモリ領域(ROMの記憶領域R2)に退避させることにより、揮発性メモリ領域(RAM2)を比較処理に再利用できるため、比較処理用のRAM3を不要とすることができる。よって、FOTAに必要なRAMを3つから2つに削減できるため、省メモリの機器においてもFOTAを実現し易くすることができる。
 (変更例2)
 次に、実施形態の変更例2について説明する。
 FOTAによる更新処理中に差分ファイルを解凍した際に、未更新ファームウェア(旧FW)及び更新されたファームウェア(新FW)のデータパターンに依存して、解凍済みの差分ファイルが予め用意したRAM領域を超えてしまう場合があり得る。この場合、RAMサイズオーバが発生し、FOTAによる更新に失敗してしまうという問題がある。変更例2は、このような問題を解決するための実施例である。
 具体的には、差分ファイルを作成する情報処理装置は、あるブロックに対応する差分データのサイズが、通信機器100で予め用意したRAMサイズを超えてしまう場合、そのブロックは差分データではなく新FWのブロックを差分データとして扱って処理を継続する。
 ここで、差分ファイルを作成する情報処理装置とは、図1に示すサーバ300であってもよいし、サーバ300に差分ファイルを提供する装置であってもよい。情報処理装置は、少なくとも1つのプロセッサ及び少なくとも1つのメモリを有する少なくとも1つのコンピュータである。
 そして、情報処理装置は、差分データに代えて新FWのブロックを追加する場合、該当するブロックのヘッダに、差分データではないことを示す情報を追加する。通信機器100の更新処理部141bは、FOTA処理において、ヘッダを読みだした際に、差分データではない場合、該当するブロックの差分適用処理をスキップする。
 図9は、変更例2に係る情報処理装置が差分ファイルを生成する際のデータフローを示す図である。
 図9(a)及び(b)に示すように、情報処理装置は、未更新ファームウェア(旧FW)を複数のブロックに分割するとともに、更新されたファームウェア(新FW)を複数のブロックに分割する。各ブロックのサイズ及びブロック分割数は固定であってもよい。
 図9(c)に示すように、情報処理装置は、未更新ファームウェアの1つのブロック(以下、「未更新ブロック」と呼ぶ)を取得するとともに、更新されたファームウェアの対応する1つのブロック(以下、「更新されたブロック」と呼ぶ)を取得し、未更新ブロックと更新されたブロックとの差分を抽出し、差分データを生成する。
 図9(d)に示すように、情報処理装置は、生成した差分データのサイズが所定サイズ(最大RAMサイズ)を超えるか否かを判定し、超えない場合には差分データを選択し、超える場合には更新されたブロックを差分データとして選択する。
 図9(e)に示すように、情報処理装置は、選択した差分データ(更新されたブロックであり得る)を圧縮する。
 図9(f)及び(g)に示すように、情報処理装置は、圧縮した差分データに連結するヘッダを生成する。ここで、情報処理装置は、圧縮した差分データが更新されたブロックである場合、差分抽出していないデータであることを示す情報を含むヘッダを生成し、圧縮した差分データにヘッダを連結する。圧縮した差分データとヘッダとが連結されたものをファイルと呼ぶ。
 情報処理装置は、このような動作を全ブロックについて適用することにより、複数のブロックに対応する複数のファイルからなる差分ファイルを生成する。そして、情報処理装置により生成された差分ファイルは、図1に示すサーバ300から通信機器100に対して配信される。
 図10は、変更例2に係る情報処理装置が差分ファイルを生成する際の動作フローを示す図である。
 図10に示すように、ステップS301において、情報処理装置は、未更新ファームウェアの1つの未更新ブロックを読み込む。
 ステップS302において、情報処理装置は、更新されたファームウェアの対応する1つのブロック(更新されたブロック)を読み込む。
 ステップS303において、情報処理装置は、未更新ブロックと更新されたブロックとの差分を抽出し、差分データを生成する。
 ステップS304において、情報処理装置は、生成した差分データのサイズが所定サイズ(最大RAMサイズ)未満であるか否かを判定する。生成した差分データのサイズが所定サイズ未満である場合(ステップS304:YES)、情報処理装置は、処理をステップS307に進める。
 一方、生成した差分データのサイズが所定サイズ以上である場合(ステップS304:NO)、情報処理装置は、更新されたブロックをそのまま差分データとして使用し(ステップS305)、該当するブロックのヘッダ情報に差分抽出していないことを示す情報を追加し(ステップS306)、処理をステップS307に進める。
 ステップS307において、情報処理装置は、差分データ(更新されたブロックであり得る)を圧縮する。
 ステップS308において、情報処理装置は、ヘッダを付加する。そして、情報処理装置は、圧縮した差分データにヘッダを連結する(ステップS309)。
 ステップS310において、情報処理装置は、該当するブロックが最終ブロックであるか否かを判定する。該当するブロックが最終ブロックである場合(ステップS310:YES)、本動作が終了する。一方、該当するブロックが最終ブロックではない場合(ステップS310:NO)、情報処理装置は、処理をステップS301に戻し、次のブロックを対象として動作を再開する。
 次に、変更例2に係る通信機器100の動作について説明する。図11は、変更例2に係る通信機器100の動作を示す図である。ここでは、図8の動作との相違点について主として説明する。
 図11に示すように、通信機器100の更新処理部141bは、ROMの記憶領域R1から読み出した差分ファイル(差分データ)をRAM1に書き込み(ステップS201)、RAM1に記憶された差分ファイルを解凍し、解凍した差分ファイルをRAM2に書き込む(ステップS202)。
 ここで、更新処理部141bは、該当するブロックの差分データのヘッダを解読し、差分抽出していないことを示す情報がヘッダに含まれるか否かを判定する。差分抽出していないことを示す情報がヘッダに含まれていない場合、当該ヘッダに対応する差分データについては、上述の実施形態の変更例1と同様にして処理する。
 一方、差分抽出していないことを示す情報がヘッダに含まれている場合、更新処理部141bは、当該ヘッダに対応する差分データを更新されたブロックとして取り扱い(ステップS401)、当該更新されたブロックをROMの記憶領域R2に書き込む(ステップS206)。すなわち、更新処理部141bは、差分ファイルに含まれる付加情報(ヘッダ情報)に基づいて、差分ファイルを構成する複数のファイルの中から、更新されたファームウェアのブロックを含むファイルを特定し、当該更新されたファームウェアのブロックをROM(ファームウェア記憶領域)に書き込む。
 このように、変更例2において、差分ファイルを配信するための情報処理装置は、未更新のファームウェア及び更新されたファームウェアのそれぞれを複数のブロックに分割する処理と、未更新のファームウェアに対する更新されたファームウェアの更新内容を表す差分データをブロック単位で抽出する処理と、ブロック単位での差分データを含む差分ファイルを生成する処理とを実行する。情報処理装置は、特定のブロックに対応する差分データのサイズが所定サイズを超える場合、特定のブロックに対応する差分データを差分ファイルに含めることに代えて、特定のブロックに対応する更新されたファームウェアを差分ファイルに含める。
 これにより、解凍済みの差分ファイル(差分データ)のサイズが予め用意したRAM領域を超えてしまうことを防止し、RAMサイズオーバの発生を抑制できるため、FOTAによる更新に失敗してしまう可能性を低減できる。
 (その他の実施形態)
 上述した実施形態において、複数のブロックのそれぞれのサイズが固定である一例について説明したが、複数のブロックのそれぞれのサイズが可変であってもよい。ブロックサイズを可変にすることで、例えばファームウェアのサイズに応じて最適な分割方法を指定可能になる。ブロックサイズを可変にする場合、差分ファイルには、複数のブロックのそれぞれのサイズを決定するための付加情報が付加されてもよい。付加情報は、ファームウェアの分割数を示す情報及び各ブロックのサイズを示す情報のうち少なくとも1つを含む。更新処理部141bは、付加情報に基づいて複数のブロックのそれぞれのサイズを決定し、決定した各ブロックのサイズに従ってファームウェアを分割する。
 通信機器100又は情報処理装置が行う各処理をコンピュータに実行させるプログラムが提供されてもよい。プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、コンピュータにプログラムをインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD-ROMやDVD-ROM等の記録媒体であってもよい。
 また、通信機器100が行う各処理を実行する機能部(回路)を集積化し、通信機器100の少なくとも一部を半導体集積回路(チップセット、SoC)として構成してもよい。
 以上、図面を参照して実施形態について詳しく説明したが、具体的な構成は上述のものに限られることはなく、要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
 本願は、日本国特許出願第2019-233509号(2019年12月24日出願)及び日本国特許出願第2020-110969号(2020年6月26日出願)の優先権を主張し、その内容の全てが本願明細書に組み込まれている。

Claims (11)

  1.  無線通信を行う通信機器であって、
     前記通信機器のファームウェアを記憶するファームウェア記憶領域と、
     前記ファームウェアを更新する更新処理に用いる更新用記憶領域と、
     前記ファームウェアに対する更新内容を表す差分ファイルを前記無線通信により受信する通信部と、
     前記差分ファイルに基づいて前記更新処理を実行する更新処理部と、を備え、
     前記更新処理部は、前記ファームウェア記憶領域に記憶された前記ファームウェアを複数のブロックに分割し、前記更新用記憶領域を用いて1ブロックごとに前記更新処理を実行する
     通信機器。
  2.  前記更新処理部は、前記更新用記憶領域を用いて1ブロックごとに前記更新処理を実行するとき、
      前記複数のブロックに含まれる対象ブロックを前記ファームウェア記憶領域から読み出すとともに、前記対象ブロックを前記更新用記憶領域に書き込み、
      前記更新用記憶領域内で前記対象ブロックを前記差分ファイルと比較することで前記対象ブロックを更新し、
      前記更新された対象ブロックを前記更新用記憶領域から読み出すとともに、前記更新された対象ブロックを前記ファームウェア記憶領域に書き込む
     請求項1に記載の通信機器。
  3.  前記更新処理部は、
      前記更新された対象ブロックを前記ファームウェア記憶領域に書き込むとともに、正しく書き込みが完了したか否かを確認し、
      正しく書き込みが完了したことが確認されると、次のブロックを前記対象ブロックとして前記更新処理を実行する
     請求項2に記載の通信機器。
  4.  前記複数のブロックのそれぞれのサイズが固定である
     請求項1乃至3のいずれか1項に記載の通信機器。
  5.  前記複数のブロックのそれぞれのサイズが可変であり、
     前記差分ファイルには、前記複数のブロックのそれぞれのサイズを決定するための付加情報が付加され、
     前記更新処理部は、前記付加情報に基づいて前記複数のブロックのそれぞれのサイズを決定する
     請求項1乃至3のいずれか1項に記載の通信機器。
  6.  前記ファームウェアには、通信用ファームウェア及び制御用ファームウェアがあり、
     前記更新処理部は、前記通信用ファームウェアに対する前記更新処理及び前記制御用ファームウェアに対する前記更新処理で、同じ前記更新用記憶領域を用いる
     請求項1乃至5のいずれか1項に記載の通信機器。
  7.  前記通信部を制御する制御部をさらに備え、
     前記制御部は、
     前記更新処理部として動作する制御用プロセッサと、
     前記更新用記憶領域を含む制御用メモリと、を有する
     請求項1乃至6のいずれか1項に記載の通信機器。
  8.  前記更新用記憶領域は、揮発性メモリ領域を含み、
     前記更新処理部は、
      圧縮ファイルである前記差分ファイルを前記揮発性メモリ領域において解凍すると、解凍した差分ファイルを不揮発性メモリ領域に退避させ、
      前記対象ブロックを前記揮発性メモリ領域に書き込むと、前記揮発性メモリ領域に記憶された前記対象ブロックを、前記不揮発性メモリ領域に記憶された前記差分ファイルと比較することで前記対象ブロックを更新する
     請求項2又は3に記載の通信機器。
  9.  前記差分ファイルは、前記ファームウェア記憶領域に記憶された前記複数のブロックに対応する複数のファイルを含み、
     前記更新処理部は、
      前記差分ファイルに含まれる付加情報に基づいて、前記複数のファイルの中から、更新されたファームウェアのブロックを含むファイルを特定し、
      前記特定されたファイルに含まれる前記更新されたファームウェアのブロックを前記ファームウェア記憶領域に書き込む
     請求項1乃至8のいずれか1項に記載の通信機器。
  10.  通信機器のファームウェアに対する更新内容を表す差分ファイルを配信するための情報処理装置に、
     未更新のファームウェア及び更新されたファームウェアのそれぞれを複数のブロックに分割する処理と、
     前記未更新のファームウェアに対する前記更新されたファームウェアの更新内容を表す差分データをブロック単位で抽出する処理と、
     前記ブロック単位での前記差分データを含む前記差分ファイルを生成する処理と、を実行させる
     プログラム。
  11.  前記情報処理装置に、
     特定のブロックに対応する前記差分データのサイズが所定サイズを超える場合、前記特定のブロックに対応する前記差分データを前記差分ファイルに含めることに代えて、前記特定のブロックに対応する前記更新されたファームウェアを前記差分ファイルに含める処理をさらに実行させる
     請求項10に記載のプログラム。
PCT/JP2020/046098 2019-12-24 2020-12-10 通信機器及びプログラム WO2021131754A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021567215A JP7377893B2 (ja) 2019-12-24 2020-12-10 通信機器及びプログラム
US17/808,401 US20220318000A1 (en) 2019-12-24 2022-06-23 Communication apparatus and program

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2019-233509 2019-12-24
JP2019233509 2019-12-24
JP2020-110969 2020-06-26
JP2020110969 2020-06-26

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/808,401 Continuation US20220318000A1 (en) 2019-12-24 2022-06-23 Communication apparatus and program

Publications (1)

Publication Number Publication Date
WO2021131754A1 true WO2021131754A1 (ja) 2021-07-01

Family

ID=76575512

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/046098 WO2021131754A1 (ja) 2019-12-24 2020-12-10 通信機器及びプログラム

Country Status (3)

Country Link
US (1) US20220318000A1 (ja)
JP (1) JP7377893B2 (ja)
WO (1) WO2021131754A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116400946A (zh) * 2023-02-24 2023-07-07 深圳市丰润达科技有限公司 基于区块差异的交换机升级方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008021322A (ja) * 2007-08-14 2008-01-31 Fujitsu Ltd 無線端末装置及び該装置におけるソフトウェア更新方法
JP2010237852A (ja) * 2009-03-30 2010-10-21 Hitachi Software Eng Co Ltd ファームウェア更新システム、ファームウェア配信サーバ、及びファームウェア組み込み機器、並びにプログラム
WO2016121442A1 (ja) * 2015-01-26 2016-08-04 日立オートモティブシステムズ株式会社 車載制御装置、プログラム書き込み装置、プログラム生成装置及びプログラム
JP2017199183A (ja) * 2016-04-27 2017-11-02 日立オートモティブシステムズ株式会社 車両用電子制御装置、プログラム更新方法、サーバ装置
WO2018173911A1 (ja) * 2017-03-24 2018-09-27 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
JP2018160208A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356961B1 (en) * 1994-06-03 2002-03-12 Motorola, Inc. Method and apparatus for minimizing an amount of data communicated between devices and necessary to modify stored electronic documents
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US5918194A (en) * 1996-08-01 1999-06-29 Keithley Instruments, Inc. Integrated modular measurement system having configurable firmware architecture and modular mechanical parts
JP3863118B2 (ja) * 2002-04-01 2006-12-27 松下電器産業株式会社 受信装置、印刷装置およびファームウェア更新システム
JP4063615B2 (ja) * 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
US7320009B1 (en) * 2003-03-28 2008-01-15 Novell, Inc. Methods and systems for file replication utilizing differences between versions of files
US20090083475A1 (en) * 2007-09-24 2009-03-26 Mediatek Inc. Apparatus and method for updating firmware stored in a memory
EP2229625B1 (en) * 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
TWI384367B (zh) * 2008-12-31 2013-02-01 Askey Computer Corp 韌體更新系統及方法
JP5478986B2 (ja) * 2009-08-21 2014-04-23 株式会社日立ソリューションズ 情報機器及びプログラム
US20120144380A1 (en) * 2010-12-07 2012-06-07 Samsung Electronics Co. Ltd. Method for generating delta file using basic blocks
JP5653259B2 (ja) 2011-03-08 2015-01-14 クラリオン株式会社 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
WO2016035336A1 (ja) 2014-09-03 2016-03-10 日本電気株式会社 休職予測システム、予測ルール学習装置、予測装置、休職予測方法及びコンピュータ読み取り可能記録媒体
JP2016151979A (ja) 2015-02-19 2016-08-22 Necソリューションイノベータ株式会社 メンタルヘルスケア支援システム、装置、方法およびプログラム
WO2017172953A1 (en) 2016-03-30 2017-10-05 Square, Inc. Compressed firmware update
JP6562121B1 (ja) 2018-06-07 2019-08-21 富士通株式会社 学習用データ生成プログラムおよび学習用データ生成方法
EP3647944A1 (en) * 2018-10-30 2020-05-06 Shenzhen Goodix Technology Co., Ltd. Memory optimized block-based differential update algorithm

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008021322A (ja) * 2007-08-14 2008-01-31 Fujitsu Ltd 無線端末装置及び該装置におけるソフトウェア更新方法
JP2010237852A (ja) * 2009-03-30 2010-10-21 Hitachi Software Eng Co Ltd ファームウェア更新システム、ファームウェア配信サーバ、及びファームウェア組み込み機器、並びにプログラム
WO2016121442A1 (ja) * 2015-01-26 2016-08-04 日立オートモティブシステムズ株式会社 車載制御装置、プログラム書き込み装置、プログラム生成装置及びプログラム
JP2017199183A (ja) * 2016-04-27 2017-11-02 日立オートモティブシステムズ株式会社 車両用電子制御装置、プログラム更新方法、サーバ装置
WO2018173911A1 (ja) * 2017-03-24 2018-09-27 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
JP2018160208A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア

Also Published As

Publication number Publication date
JP7377893B2 (ja) 2023-11-10
JPWO2021131754A1 (ja) 2021-07-01
US20220318000A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
EP2857965B1 (en) Method and device for generating firmware over-the-air upgrade package
CN103176824B (zh) 一种***升级的方法及装置
CN107273160A (zh) 一种版本升级的方法及装置
WO2018113298A1 (zh) 一种提示用户更新应用版本的方法及设备
KR100679413B1 (ko) 이동 통신 단말기의 선택적 데이터 복구 방법 및 장치
US20090254897A1 (en) Updating firmware on mobile electronice devices
CN103699408A (zh) 一种软件升级的方法和设备
CN108804130B (zh) 程序安装包生成方法及装置
CN103092662A (zh) 一种基于嵌入式操作***的终端设备的软件模块升级方法
EP3399408A1 (en) Information processing apparatus and computer readable storage medium
EP3154280B1 (en) Wireless communication device, electronic timepiece and wireless communication method
CN110597542A (zh) 软件自动ota升级方法及装置、电子设备
JP5897155B2 (ja) ワイヤレス・ハンドヘルド・デバイス起動方法及びワイヤレス・ハンドヘルド・デバイス
WO2021131754A1 (ja) 通信機器及びプログラム
CN109358904B (zh) 应用程序分析的集中分发
CN106066686A (zh) 一种信息处理方法及终端设备
KR20150066876A (ko) 사용자 인터페이스 제어 방법 및 그 전자 장치
AU2021202098B2 (en) Multimedia data playing method and terminal device
JP2013125517A (ja) 車載装置,更新システム,サーバ
JP7325523B2 (ja) 電子機器及び制御方法
CN106990988A (zh) 一种程序更新的方法及装置
KR100873327B1 (ko) 이동통신 단말기의 펌웨어 업데이트 방법 및 장치
WO2021131753A1 (ja) 通信機器、サーバ、及び制御方法
US11264132B2 (en) Terminal device
CN110018999A (zh) 一种文件管理方法、***及电子设备和存储介质

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021567215

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20905958

Country of ref document: EP

Kind code of ref document: A1