Patent Description:
In recent years, the Internet of Things (IoT) and Industrial IoT (IIoT) have attracted attention. For example, in a plant such as a factory production line, a large number of field devices having a communication function including sensors or actuators are disposed, and integration of monitoring or control of the production line by a system to which these are connected is being advanced.

In a conventional field device, since a communication unit for performing communication and an application unit for performing measurement and the like are integrated into one module, it has been difficult for a user to detach one of them and replace it with a new one. In addition, since the firmware for operating the device is stored outside of the application unit, even if the user wants to change only a part of the sensor or the like, it is necessary for the user to change the entire device.

<CIT> discloses a device driver for a device. <CIT> discloses a field device with long-term firmware compatibility. <CIT> discloses a background firmware update.

In order to solve the above problems, according to the present invention, an apparatus is provided. The apparatus may comprise a communication module including a processor and a communication unit. The apparatus may comprise an application module that is detachably coupled to the communication module. The application module may include a functional unit including at least one of a sensor, an actuator, or a communication port that is to be connected to at least one of an external sensor or an external actuator. The application module may include an application module memory for storing firmware that is executed by the processor.

The processor, by executing the firmware, may control the functional unit and perform communication via the communication unit with a device to which the apparatus is connected.

The communication module may further include a firmware memory including a firmware region for storing the firmware that is obtained from the application module. The processor may execute the firmware stored in the firmware region of the firmware memory.

The processor, during a start-up process, may obtain identification information from the application module that is coupled to the communication module, and may obtain the firmware stored in the application module memory and store the firmware in the firmware region of the firmware memory in response to the identification information that has been obtained not matching identification information associated with the firmware stored in the firmware memory.

The application module memory may store one or more pieces of firmware that are executed by the processor. During the start-up process, the processor may store, in the firmware memory, the firmware that corresponds to a communication protocol used by the communication module among the one or more pieces of firmware stored in the application module memory.

The application module memory may store version information of the firmware in association with the firmware. During a start-up process, the processor may determine whether or not to store the firmware that is stored in the application module memory in the firmware region of the firmware memory based on a result of comparing the version information of the firmware stored in the firmware memory and the version information associated with the firmware stored in the application module memory.

The processor, according to the invention, during the start-up process, may store the firmware stored in the application module memory in a backup region of the firmware memory and restart the processor. The processor may store the firmware that is stored in the backup region of the firmware memory in the firmware region of the firmware memory during the restart.

The processor may download a piece of firmware from a device to which the apparatus is connected and store the downloaded firmware in the application module memory.

The processor stores data relating to at least one functional unit and the communication unit in application module memory. The processor may store the data that is stored in the application module memory in a data memory inside the communication module and use the data that is stored to perform processing.

Further, according to the present invention, a communication module is provided. The communication module may include a connection unit for detachably coupling an application module including a functional unit including at least one of a sensor, an actuator, or a communication port that is to be connected to at least one of an external sensor or an external actuator. The communication module may include a processor. The communication module may include a communication unit. The processor may execute firmware stored in an application module memory included in the application module that is coupled by the connection unit.

Further, according to the present invention, a method is provided. The method may include coupling, by a communication module including a processor and a communication unit, the communication module and an application module detachable from the communication module, wherein the application module includes a functional unit including at least one of a sensor, an actuator, or a communication port that is to be connected to at least one of an external sensor or an external actuator, and includes an application module memory for storing firmware that is executed by the processor. The method may include providing, by the application module, the firmware that is executed by the processor to the processor. The method may include executing, by the processor, the firmware provided from the application module.

The present invention is defined by the appended set of independent claims.

Hereinafter, the present invention will be described through embodiments of the present invention, but the following embodiments do not limit the invention according to the claims. In addition, not all combinations of the features described in the embodiments are necessarily essential to the solution of the invention.

<FIG> shows a system <NUM> according to the present embodiment. The system <NUM> monitors or controls each device of, for example, a production line in a plant or the like. The system <NUM> includes a network <NUM>, a server <NUM>, a terminal <NUM>, a gateway <NUM>, one or more of an apparatus <NUM>, an external sensor <NUM>, and an external actuator <NUM>. For example, the plant includes chemical plants and other industrial plants, plants that manage and control wells of gas fields and oil fields and the like and their surroundings, plants that manage and control generation of power such as hydroelectric, thermal, and nuclear power, plants that manage and control energy harvesting from solar and wind power and the like, or plants that manage and control water supply and sewage, dams, and the like. It is noted that the abovementioned plants are only examples, and the plants are not limited to the abovementioned plants.

The network <NUM> connects the server <NUM>, the terminal <NUM>, and the apparatus <NUM> wirelessly or by wire. The network <NUM> may be the Internet, a wide area network, a local area network, or the like.

The server <NUM> provides various types of information to the one or more apparatuses <NUM> via the network <NUM>. The server <NUM> provides information corresponding to a request from the terminal <NUM> to the apparatus <NUM>. The server <NUM> transmits various types of information received from the apparatus <NUM> to the terminal <NUM>, to provide the user of the terminal <NUM> with the information. The server <NUM> may be accomplished by a computer such as a server computer, or may be an apparatus accomplished by a plurality of computers. The server <NUM> may provide a cloud computing system.

The terminal <NUM> transmits an input from the user to the apparatus <NUM> via the server <NUM> or directly. The terminal <NUM> may be a computer such as a PC (personal computer), a tablet computer, a smartphone, a workstation, a server computer, or a general purpose computer, or a computer system to which a plurality of computers are connected.

When connecting the apparatus <NUM> to the network <NUM>, the gateway <NUM> performs protocol conversion when the communication protocols of the apparatus <NUM> and a connected device (for example, the server <NUM>, the terminal <NUM>, or an external server) are different.

The apparatus <NUM> may be a field device. The apparatus <NUM> may include, for example, a sensor device such as a flow meter and a temperature sensor, a valve device such as a flow control valve and an on-off valve, an actuator device such as a fan and a motor, and/or other devices installed at a plant site. It is noted that the abovementioned devices are only examples, and the devices are not limited to the abovementioned devices. The apparatus <NUM> performs measurement or monitoring by a sensor or the like, or controls an actuator or the like. The apparatus <NUM> comprises a communication module <NUM> and an application module <NUM>. The communication module <NUM> and the application module <NUM> are detachably coupled to each other by a connection unit <NUM> included in the communication module <NUM> and a connection unit <NUM> included in the application module <NUM>.

The communication module <NUM> connects the apparatus <NUM> to the network <NUM> via the gateway <NUM>. The communication module <NUM> also executes firmware to perform various types of controls of the application module <NUM> connected to the communication module <NUM>. The firmware exists for each type of communication protocol used by the communication module <NUM> for its connection to the network <NUM> and for each type of function (functional unit <NUM>) of the application module <NUM>. Each piece of firmware is a program that is executed for realizing functions such as measurement, control, or communication of the corresponding communication module <NUM> and the application module <NUM>. As an example, the communication module <NUM> acquires sensor information from an integrated sensor <NUM> or the external sensor <NUM>, and transmits the sensor information to the connected device via the network <NUM>. As an example, the communication module <NUM> provides control information received from the connected device to the application module <NUM> to control an integrated actuator <NUM> or the external actuator <NUM>. In addition, the communication module <NUM> receives one or more pieces of firmware from the connected device and updates the firmware. The communication module <NUM> includes a processor <NUM>, a communication unit <NUM>, a first data memory <NUM>, a firmware memory <NUM>, a second data memory <NUM>, a power supply unit <NUM>, and the connection unit <NUM>.

The processor <NUM> is connected to the communication unit <NUM>, the first data memory <NUM>, the firmware memory <NUM>, the second data memory <NUM>, the power supply unit <NUM>, and the connection unit <NUM>. The processor <NUM>, by executing the firmware, controls the functional unit <NUM> of the application module <NUM>, and performs wired or wireless communication with the connected device of the apparatus <NUM> via the communication unit <NUM>. Here, the processor <NUM> executes the firmware stored in an application module memory <NUM> included in the application module <NUM> coupled with the communication module <NUM> by the connection units <NUM> and <NUM>. For example, the processor <NUM> causes the functional unit <NUM> to acquire the sensor information from the integrated sensor <NUM> and to control the integrated actuator <NUM> to operate.

The communication unit <NUM> is connected to the network <NUM> via the gateway <NUM> or a wire. The communication unit <NUM> may communicate with the connected device in accordance with communication specifications by protocol control by the processor <NUM>. In addition, the communication unit <NUM> may communicate with the connected device without using the network <NUM>, but by using NFC (Near Field Communication) or Bluetooth (registered trademark) communication technology. The communication unit <NUM> may be directly connected to the terminal <NUM> or the like, by wire, or communicatively connected wirelessly to the terminal <NUM> or the like, to perform communication with the connected device (the terminal <NUM> or the like) without using the network <NUM>.

The processor <NUM> stores data relating to at least one functional unit <NUM> and the communication unit <NUM> in the first data memory <NUM>. The first data memory <NUM> may store data used by the processor <NUM> to control the at least one functional unit <NUM> and the communication unit <NUM>. The first data memory <NUM> may store a coefficient (constant) used for correction of sensor information and the like. In addition, the first data memory <NUM> may store various types of information received from the connected device via the communication unit <NUM> or from the application module <NUM> via the connection units <NUM> and <NUM>. The first data memory <NUM> may be a volatile memory such as a dynamic random access memory (DRAM) or a static random access memory (SRAM).

The firmware memory <NUM> stores firmware executed by the processor <NUM>. The firmware memory <NUM> may include a non-volatile memory such as an erasable programmable read only memory (EPROM or flash memory), an electrically erasable programmable read only memory (EEPROM), a ferroelectric random access memory (FRAM (registered trademark)), a compact disc read only memory (CD-ROM), or a digital versatile disk (DVD).

The second data memory <NUM> stores information specific to the communication module <NUM>. For example, the second data memory <NUM> stores the type, the remaining life, or the used power amount of the battery in the power supply unit <NUM>. The second data memory <NUM> may be a non-volatile memory such as an erasable programmable read only memory (EPROM or flash memory), an EEPROM, a FRAM (registered trademark), a CD-ROM, or a DVD.

The power supply unit <NUM> is connected to the connection unit <NUM>. The power supply unit <NUM> supplies power to each element of the communication module <NUM> as well as to the application module <NUM> via the connection units <NUM> and <NUM>. The power supply unit <NUM> may include a battery which its battery life may be appropriately diagnosed according to a request from the processor <NUM>.

The connection unit <NUM> is detachably connected to the connection unit <NUM> of the application module <NUM>. The connection unit <NUM> is electrically connected to the connection unit <NUM> to communicatively connect the communication module <NUM> and the application module <NUM>. The connection unit <NUM> may include a connector terminal.

The application module <NUM> includes the integrated sensor <NUM>, the integrated actuator <NUM>, the external sensor <NUM>, and the external actuator <NUM>, and controls the integrated actuator <NUM> and the external actuator <NUM> based on the measurements by the integrated sensor <NUM> and the external sensor <NUM>, the sensor information provided to the communication module <NUM>, or the control information provided from the communication module <NUM>. In addition, the application module <NUM> provides the firmware stored in the application module memory <NUM> to the processor <NUM> via the firmware memory <NUM>. The application module <NUM> includes the attachment control unit <NUM>, the application module memory <NUM>, the functional unit <NUM>, and the connection unit <NUM>.

The attachment control unit <NUM> is connected to the connection unit <NUM>. The attachment control unit <NUM> transmits an attachment signal to the communication module <NUM> in response to receiving an attachment confirmation signal to check whether the application module <NUM> is attached to the communication module <NUM> from the communication module <NUM>. In addition, the attachment control unit <NUM> may perform power control for suppressing power consumption of the application module <NUM> until receiving the attachment confirmation signal from the communication module <NUM>.

The application module memory <NUM> stores the firmware executed by the processor <NUM>. The application module memory <NUM> may be a non-volatile memory such as an EPROM, a flash memory, an EEPROM, a FRAM (registered trademark), a CD-ROM, or a DVD.

The functional unit <NUM> is connected to the connection unit <NUM> to provide a sensing function or an actuator function. The functional unit <NUM> includes the integrated sensor <NUM> and the integrated actuator <NUM> along with a communication port <NUM>, an analog control unit <NUM>, and a measurement unit <NUM>.

The integrated sensor <NUM> is connected to the analog control unit <NUM> to provide the sensor information acquired by the integrated sensor <NUM> to the analog control unit <NUM>, or the integrated actuator <NUM> is connected to the analog control unit <NUM> to execute an operation corresponding to a control signal provided from the analog control unit <NUM>. The integrated sensor <NUM> may be, for example, a temperature sensor such as a thermocouple sensor, a humidity sensor, a pressure sensor, a vibration sensor, a corrosion sensor, an environment sensor, a flow sensor, or a level sensor. The integrated actuator <NUM> may be a relay, an electric valve, or a heater.

The communication port <NUM> is used for connecting to at least one of the external sensor <NUM> or the external actuator <NUM>. The communication port <NUM> may be communicatively connected to at least one of the external sensor <NUM> or the external actuator <NUM> by wire or wirelessly. The communication port <NUM> may be communicatively connected to at least one of the external sensor <NUM> or the external actuator <NUM> using, for example, NFC communication or Bluetooth (registered trademark) communication technology. In addition, the communication port <NUM> is connected to the analog control unit <NUM>. The communication port <NUM> acquires the sensor information from the external sensor <NUM> and provides the sensor information to the analog control unit <NUM>. In addition, the communication port <NUM> provides the control signal obtained from the analog control unit <NUM> to the external actuator <NUM>. The communication port <NUM> may include a general purpose input/output terminal and a communication cable. In addition, the communication port <NUM> may include a conductor cable that is electrically connected to the external sensor <NUM> and the external actuator <NUM>.

The analog control unit <NUM> is connected to the measurement unit <NUM>. The analog control unit <NUM> performs signal pre-processing or post-processing such as amplification and filtering of a signal provided from the measurement unit <NUM> or the communication port <NUM> in response to a request from the processor <NUM>. As an example, the analog control unit <NUM> amplifies or filters the sensor signal acquired from the integrated sensor <NUM> or the external sensor <NUM>. In addition, the analog control unit <NUM> may supply a current according to the control information obtained from the communication module <NUM> to the integrated actuator <NUM> or the external actuator <NUM>. The analog control unit <NUM> may include, for example, an amplifier, a filter, an analog switch, or a comparator.

The measurement unit <NUM> is connected to the connection unit <NUM>. The measurement unit <NUM> performs signal processing such as A/D conversion processing in response to a request from the processor <NUM>, and performs transmission and reception of information with the processor <NUM>. The measurement unit <NUM> may communicate with the processor <NUM> using general purpose communication such as SPI (Serial Peripheral Interface) or UART (Universal Asynchronous Receiver Transmitter) communication. The measurement unit <NUM> may include a field programmable gate array (FPGA) or a small CPU. In addition, the measurement unit <NUM> may be controlled directly by the processor <NUM> using one or more general purpose input/outputs (GPIO). Furthermore, the measurement unit <NUM> may include an A/D converter, a D/A converter, or a counter.

The connection unit <NUM> is used for detachably coupling the communication module <NUM> including the processor <NUM> and the communication unit <NUM> to the application module <NUM>. The connection unit <NUM> may include a connection terminal. In the present embodiment, the connection unit <NUM> may enable its communication with the connection unit <NUM> using a serial communication protocol. Communication between the connection unit <NUM> and the connection unit <NUM> may be, for example, SPI communication or UART communication.

The external sensor <NUM> provides the sensor information acquired by the external sensor <NUM> to the analog control unit <NUM> via the communication port <NUM>, or the external actuator <NUM> executes an operation according to the control signal provided from the analog control unit <NUM> via the communication port <NUM>. The external sensor <NUM> may be, for example, a temperature sensor such as a thermocouple sensor, a humidity sensor, a pressure sensor, a vibration sensor, a corrosion sensor, an environment sensor, a flow sensor, or a level sensor. The external actuator <NUM> may be a relay, an electric valve, or a heater.

According to the above described system <NUM>, since the communication module <NUM> and the application module <NUM> are detachably coupled by the connection units <NUM> and <NUM>, the user can easily detach one of the modules to replace it with a new one.

In addition, according to the system <NUM>, since the application module <NUM> holds the firmware, it is not necessary for the communication module <NUM> to hold the firmware corresponding to the coupled application module <NUM> in advance. For this reason, the user can combine the existing communication module <NUM> with application modules <NUM> of different function types including firmware corresponding to the communication specifications of the communication module <NUM>. Accordingly, when a new application module <NUM> is developed and sold, the user can purchase the new application module <NUM> alone and immediately operate the apparatus <NUM> by coupling the new application module <NUM> to the existing communication module <NUM>. It is also unnecessary for the developer to upgrade the entire apparatus <NUM> and to perform a release test of the firmware for each device every time the function of the application module <NUM> is changed, and thus the process steps and the period for development can be reduced.

According to the system <NUM>, since the firmware is stored in the application module memory <NUM> inside the application module <NUM>, even if the user exchanges the entire communication module <NUM> for battery replacement or the like, the apparatus <NUM> can easily continue its processing before the exchange by executing the firmware inside the application module <NUM> after the exchange.

<FIG> shows a configuration of a firmware memory <NUM> according to the present embodiment. The firmware memory <NUM> has a bootloader region <NUM> of the processor <NUM>, a firmware region <NUM> for storing the firmware obtained from the application module <NUM>, and a backup region <NUM>.

The bootloader region <NUM> stores a bootloader for starting up the firmware. The bootloader may be a program for causing the apparatus <NUM> to execute a common initialization process or the like regardless of the type of the application module <NUM> to be coupled.

The firmware region <NUM> stores firmware that is read out and executed by the processor <NUM>. Furthermore, the firmware region <NUM> stores identification information <NUM> of the application module <NUM> having the functional unit <NUM> to be controlled when the firmware is executed, protocol information <NUM> corresponding to a communication protocol of a communication process executed by the firmware, and version information <NUM> of the firmware. It is noted that, for convenience, the firmware region <NUM> may store any piece of firmware corresponding to the communication protocol used by the processor <NUM> of the communication module <NUM> to execute the firmware and to perform communication in an initial state such as at the time of factory shipment of the communication module <NUM>.

The backup region <NUM> stores backup of the firmware provided from the application module <NUM>. Furthermore, the backup region <NUM> stores identification information <NUM> of the application module <NUM> supported by the firmware that has been backed up, protocol information <NUM> of the firmware, and version information <NUM> of the firmware.

The identification information is information for identifying the application module <NUM> or a sensor/actuator that is included therein. The identification information may be product identification information that indicates a model number or the like of the application module <NUM> or the sensor/actuator. In addition, the identification information may indicate the product type of the application module <NUM> or the sensor/actuator, such as a temperature sensor or a pressure sensor. The identification information may be a digit or a character string, or may be a combination of a digit and a character string.

The protocol information is information indicating the communication protocol for the processor <NUM> of the communication module <NUM> to execute the firmware and to perform communication with the server <NUM>, the terminal <NUM>, or the like. The protocol information is a communication protocol, for example, LoRa (registered trademark), SIGFOX (registered trademark), Random Phase Multiple Access (RPMA), Narrow Band IoT (NB-IoT), HART (registered trademark), BRAIN, Foundation Fieldbus (registered trademark) ), WirelessHART (registered trademark) or a communication protocol defined by ISA100.11a or the like.

The version information is information that indicates the version or revision of the corresponding firmware. The version information is updated by a revision of the firmware such as addition of a new function, correction of a bug, or change to a specification. The version information may be a digit or a character string, or may be a combination of a digit and a character string. The digit part of the version information may include a decimal point, and the digit part may indicate that the larger the value of the digits, the newer the developed firmware.

<FIG> shows a configuration of an application module memory <NUM> according to the present embodiment. In the present embodiment, the application module memory <NUM> includes an identification information storage region for storing identification information <NUM>, one or more firmware regions <NUM> for storing one or more pieces of firmware, and one or more data regions <NUM> respectively provided in correspondence with the firmware stored in the firmware region <NUM>. In <FIG>, the application module memory <NUM> stores a plurality of pieces of firmware and includes the identification information storage region, a plurality of firmware regions <NUM>, and a plurality of data regions <NUM> having different communication protocols.

The identification information storage region stores the identification information <NUM> of the firmware stored in the plurality of firmware regions <NUM>. Alternatively, the identification information <NUM> may be stored in another ROM or a register inside the application module <NUM>.

The plurality of firmware regions <NUM> may store a plurality of pieces of firmware having the same identification information. For example, firmware regions <NUM> to <NUM> are for pieces of firmware for operating temperature sensors of the same model number, and firmware regions <NUM>, <NUM>, <NUM>, and <NUM> may respectively correspond to protocols A, B, C, and D. It is noted that all firmware regions <NUM> inside the application module memory <NUM> may store firmware, and there may be an empty firmware region <NUM> in which no firmware is stored.

Each of the firmware regions <NUM> to <NUM> may have a first firmware region <NUM> and a second firmware region <NUM> inside each of their own firmware regions <NUM> to <NUM>. Either one of the first firmware region <NUM> and the second firmware region <NUM> is an active region and may be accessed by the processor <NUM> via the connection units <NUM> and <NUM>. The other is an inactive region, and the processor <NUM> cannot access the inactive region. The active region may store the latest piece of firmware that can be used by the processor <NUM>, and the inactive region may store the previously downloaded firmware. In the present embodiment, the first firmware region <NUM> and the second firmware region <NUM> may further store protocol information <NUM> and version information <NUM> of the firmware in association with the firmware.

Each data region <NUM> stores data corresponding to each piece of firmware supporting different communication protocols. The data includes information specific to the corresponding piece of firmware or to the application module <NUM>. For example, the data may include a communication address supported by the corresponding piece of firmware, and may include, as an example, an EUI-<NUM> identifier, which is a <NUM>-bit identifier, uniquely assigned to the communication device. In addition, when the supported communication protocol corresponds to wireless communication, the data may include an encryption key that is exchanged between the apparatus <NUM> and the gateway <NUM> in advance by provisioning. The data may include scheduling information set by the connected device when the supported communication protocol corresponds to fieldbus communication. In addition, the data may include a parameter such as a value for calibration of the sensor/actuator that is controlled by the corresponding piece of firmware or a coefficient used for correction of sensor information or actuator control information, and may include a serial number of the device of the application module <NUM>.

According to the present embodiment, since the application module memory <NUM> stores a plurality of pieces of firmware and data that are supporting different communication protocols, the communication module <NUM> can operate the existing application module <NUM> by executing the firmware based on the data that are corresponding to the communication protocol supported by the communication module <NUM> and stored in the application module memory <NUM>. Therefore, the combination of application module memory <NUM> is not limited to a combination with a specific communication module <NUM>. For example, even when changing the communication environment, the user can continue using the existing application module <NUM> by changing the communication module <NUM> alone. In addition, since the application module memory <NUM> stores various types of data, even if only the communication module <NUM> is replaced alone at the time of battery replacement or the like, the user can immediately start using the apparatus <NUM> with the same settings and continue to execute the same operation.

It is noted that the application module memory <NUM> may have an empty firmware region <NUM> and an empty data region <NUM> in which no firmware or data is stored. In addition, when the application module memory <NUM> stores one piece of firmware, the application module memory <NUM> may include one firmware region <NUM> and one data region <NUM>, and may include a plurality of firmware regions <NUM> and a plurality of data regions <NUM>. When the application module memory <NUM> has a plurality of firmware regions <NUM> and a plurality of data regions <NUM>, since the number of pieces of firmware is one, the application module memory <NUM> may have an empty firmware region <NUM> and an empty data region <NUM> in which no firmware or data is stored.

<FIG> shows the operation of the bootloader during execution of a start-up process of the apparatus <NUM> according to the present embodiment. In S400, the user turns on the power of the power supply unit <NUM> of the communication module <NUM> to supply power to each element of the communication module <NUM>.

In S402, the processor <NUM> reads out and executes the bootloader stored in the bootloader region <NUM> inside the firmware memory <NUM>. Before or during the execution of the bootloader, the processor <NUM> may perform various types of self-diagnoses or various types of initialization processes such as checking memory size, checking the operation of the memory, or checking the communication environment.

In S404, the processor <NUM> determines whether or not new information is stored in the backup region <NUM>. When the processor <NUM> determines that new information is stored, the processor <NUM> moves the process to S406. When new information is not confirmed, the processor <NUM> moves the process to S408. For example, the processor <NUM> may determine whether or not the identification information, the protocol information, and the version information of the firmware stored in the firmware region <NUM> and the firmware stored in the backup region <NUM> match. When the processor <NUM> determines that they do not match, the processor <NUM> may move the process to S406, and when the processor <NUM> determines that they do match, the processor <NUM> may move the process to S408.

In S406, the processor <NUM> updates the information in the firmware region <NUM> by writing the firmware, the identification information <NUM>, the protocol information <NUM>, and the version information <NUM> stored in the backup region <NUM> to each target region of the firmware region <NUM>.

In S408, the processor <NUM> activates a common function of the firmware stored in the firmware region <NUM>. Here, the common function of the firmware refers to a function that all of the firmware of the apparatus <NUM> has in common. The common function will be described below with reference to the processing shown in S500 to S510 of <FIG>.

As described above, the processor <NUM> executes the bootloader and copies the firmware from the backup region <NUM> to the firmware region <NUM> when the apparatus <NUM> is started up. Therefore, the firmware in the firmware region <NUM> can be automatically updated in response to an update of the firmware in the backup region <NUM>.

<FIG> shows the operation of the apparatus <NUM> according to the present embodiment during execution of the start-up process and execution of a specific function. <FIG> shows an operation, during the execution of the start-up process of the apparatus <NUM>, from the execution of the common function of the firmware shown in S408 of <FIG> to the execution of the specific function of the firmware. In S500, the power supply unit <NUM> supplies power to the application module <NUM> via the connection unit <NUM> in response to a request from the processor <NUM>.

In S502, an attachment control unit <NUM> transmits, to the communication module <NUM>, an attachment signal indicating that the application module <NUM> is attached to the communication module <NUM> via the connection units <NUM> and <NUM>. In the present embodiment, the attachment control unit <NUM> may transmit the attachment signal to the communication module <NUM> in response to receiving an attachment confirmation signal for confirming that the application module <NUM> is attached to the communication module <NUM>. When the processor <NUM> determines that the attachment signal from the attachment control unit <NUM> has been received, the processor <NUM> moves the process to S504, and when the processor <NUM> determines that the attachment signal has not been received, the processor <NUM> waits until the attachment signal from the attachment control unit <NUM> is received in S502.

In S504, the processor <NUM> obtains the identification information <NUM> from the application module memory <NUM> inside the application module <NUM> coupled to the communication module <NUM>, and determines whether or not the obtained identification information <NUM> and the identification information <NUM> associated with the firmware stored in the firmware region <NUM> inside the firmware memory <NUM> match. For example, at the time of battery replacement or the like, when the user uses the same application module <NUM> as in the previous start-up, or when the user changes the application module <NUM> to a new model of the same type as in the previous start-up, the two pieces of identification information match. On the other hand, when the user changes the application module <NUM> to a product type different from that at the time of the previous start-up such as, for example, when the user changes a temperature sensor to a pressure sensor, the two pieces of identification information do not match. When the processor <NUM> determines that the two pieces of identification information match, the processor <NUM> moves the process to S506, and when the processor <NUM> determines that the two pieces of identification information do not match, the processor <NUM> moves the process to S514.

In S506, the processor <NUM> determines whether or not there is firmware corresponding to the communication protocol used by the communication module <NUM> among one or more pieces of firmware stored in the application module memory <NUM>. In the present embodiment, the processor <NUM> may make the determination by comparing the protocol information <NUM> stored in the active region of each firmware region <NUM> inside the application module memory <NUM> with the protocol information <NUM> stored in the firmware region <NUM> inside the firmware memory <NUM>. When there is firmware with matching protocol information, the processor <NUM> moves the process to S508, and when there is no firmware with matching protocol information, the processor <NUM> moves the process to S520.

In S508, the processor <NUM> compares the version information <NUM> associated with the firmware that has been determined to have a matching communication protocol in S506 with the version information <NUM> of the firmware stored in the active region of the firmware region <NUM> inside the firmware memory <NUM>, among the firmware stored in the firmware region <NUM> inside the application module memory <NUM>. Then, based on the result of the comparison, the processor <NUM> determines whether or not to store the firmware stored in the application module memory <NUM> in the firmware memory <NUM>. In the present embodiment, the processor <NUM> may determine to copy the firmware stored in the active region of the application module memory <NUM> to the firmware memory <NUM> when the firmware including the version information <NUM> inside the application module memory <NUM> is newer than the firmware including the version information <NUM> inside the firmware memory <NUM>. When the processor <NUM> determines that the firmware including the version information <NUM> is not newer than the firmware including the version information <NUM>, such as that the two pieces of version information match, the processor <NUM> moves the process to S510. When the processor <NUM> determines that the two pieces of version information do not match and the firmware including the version information <NUM> inside the application module memory <NUM> is newer than the firmware including the version information <NUM> inside the firmware memory <NUM>, the processor <NUM> moves the process to S516.

In addition, when the firmware including the version information <NUM> inside the application module memory <NUM> is older than the firmware including the version information <NUM> inside the firmware memory <NUM>, the processor <NUM> may determine to copy the firmware stored in the active region of the application module memory <NUM> to the firmware memory <NUM> and execute it. As an example, the processor <NUM> may make the determination in response to receiving a signal from a user commanding a downgrade process. For example, the processor <NUM> may make the determination in response to receiving a command of the downgrade process from a connected device operated by the user. In addition, in a case where the apparatus <NUM> includes an input means to which the command of the downgrade process is input from the user, the processor <NUM> may make the determination in response to an input to the input means. In this case, when the processor <NUM> determines that the firmware including the version information <NUM> inside the application module memory <NUM> is not older than the firmware including the version information <NUM> inside the firmware memory <NUM>, such as when the two pieces of version information match, the processor <NUM> moves the process to S510, and when the processor <NUM> determines that it is older, the processor <NUM> moves the process to S516.

In S510, the processor <NUM> stores data corresponding to the communication protocol used by the communication module <NUM> among the data region <NUM> inside the application module <NUM> (for example, a communication address or a calibration value of a sensor/actuator) in the first data memory <NUM> inside the communication module <NUM>. In another embodiment, instead of the processor <NUM>, an external controller (not shown) (for example, a Direct Memory Access (DMA) controller or the like) may store data from the application module memory <NUM> to the first data memory <NUM>.

In S512, the processor <NUM> uses the data stored in the first data memory <NUM> to read out the firmware stored in the firmware region <NUM> of the firmware memory <NUM>, execute the specific function of the firmware, and ends the process. The specific function of the firmware refers to a program set for each piece of firmware so that the target application module <NUM> can realize a target function. For example, the processor <NUM> may provide the sensor information acquired from the integrated sensor <NUM> and the external sensor <NUM> to the terminal <NUM> via the server <NUM> in response to a request from the terminal <NUM> or periodically. In addition, the processor <NUM> may receive control information from the terminal <NUM> via the server <NUM> and control the integrated actuator and the external actuator based on the control information in response to a request from the terminal <NUM> or periodically.

In addition, during the operation of the apparatus <NUM>, the processor <NUM> may read out the data from the first data memory <NUM>. When it is necessary to change the data, the processor <NUM> may write the data in the first data memory <NUM>, and after a certain period of time elapses, write the data inside the first data memory <NUM> to the application module memory <NUM>. As result, it is possible to reduce the number of times of writing to the application module memory <NUM> and to improve the performance of the firmware as a whole.

In S514, similarly to S506, the processor <NUM> determines whether or not there is firmware corresponding to the communication protocol supported by the communication module <NUM> among the one or more pieces of firmware stored in the application module memory <NUM> in response to the two pieces of identification information not matching in S504. When there is firmware with matching protocol information, the processor <NUM> moves the process to S516, and when there is no firmware with matching protocol information, the processor <NUM> moves the process to S520.

In S516, the processor <NUM> obtains the firmware corresponding to the communication protocol used by the communication module <NUM> among the one or more pieces of firmware stored in the firmware region <NUM> inside the application module memory <NUM> and stores the firmware in the backup region <NUM> of the firmware memory <NUM>. In the present embodiment, the processor <NUM> transmits a read out request to the application module <NUM>. The application module <NUM> transmits the firmware stored in the active region of the firmware region <NUM> of the application module memory <NUM> to the processor <NUM> in response to receiving the read out request. The processor <NUM> stores the firmware received from the application module <NUM> in the backup region <NUM> of the firmware memory <NUM>. In another embodiment, instead of the processor <NUM>, an external controller (not shown) may copy the firmware from the application module memory <NUM> to the backup region <NUM>. In addition, the processor <NUM> stores the protocol information <NUM> and the version information <NUM> corresponding to the firmware to be copied that is stored in the firmware region <NUM> inside the application module memory <NUM> to the target regions <NUM> and <NUM> of the backup region <NUM> of the firmware memory <NUM>.

In S518, the processor <NUM> restarts the apparatus <NUM> and ends the process. In this case, after returning the process to S402 of <FIG> during the restart and causing the bootloader to execute the step, the processor <NUM> stores the firmware stored in the backup region <NUM> inside the firmware memory <NUM> in S404 to S406 of <FIG> in the firmware region <NUM> inside the firmware memory <NUM>.

In S520, in response to determining that there is no firmware with matching protocol information in S506 to S514, the processor <NUM> outputs a signal indicating that there is no firmware corresponding to the communication protocol of the communication module <NUM> and ends the process. The processor <NUM> may transmit an error signal to the terminal <NUM> via the communication unit <NUM>.

In this way, according to the present embodiment, if each device and the firmware have not been changed, the processor <NUM> can read out and execute the firmware that has already been stored in the firmware memory <NUM> as it is after the processor <NUM> has copied the data corresponding to the communication protocol supported by the communication module <NUM> from the application module memory <NUM> to the first data memory <NUM> during the start-up process. Therefore, the processor <NUM> can easily continue the process at the time of the previous execution of the firmware.

According to the present embodiment, when the application module <NUM> having identification information different from that at the time of the previous start-up is coupled to the communication module <NUM>, the processor <NUM> automatically copies the firmware corresponding to the communication protocol supported by the communication module <NUM> from the application module <NUM> to the communication module <NUM> and executes it. For this reason, for example, when changing the product type of the sensor or the like, the user can use the existing communication module <NUM> to quickly operate the application module <NUM> after the change.

According to the present embodiment, when the communication module <NUM> is coupled to the application module <NUM> having a different version of firmware from that at the time of the previous start-up, the processor <NUM> automatically copies the new version of the firmware from the application module <NUM> and executes it. For this reason, the processor <NUM> can always operate the new version of the firmware stored in the application module <NUM>.

According to the present embodiment, since the processor <NUM> copies and executes the firmware corresponding to the communication protocol of the communication module <NUM>, even if the communication module <NUM> is exchanged due to a change in the communication environment, a user can continuously use the existing application module <NUM> as long as the firmware corresponding to the communication protocol after the change is stored in the existing application module <NUM>.

According to the invention, since the loaded firmware is stored in the backup region <NUM> during the start-up process by the processor <NUM> and is copied to the firmware region <NUM> after the restart, the loaded firmware can be stably operated.

It is noted that the processor <NUM> may execute the firmware by directly reading out the firmware and data stored in the application module memory <NUM> without using the firmware memory <NUM>. In this case, the processes shown in S404 and S406 of <FIG> and S504, S508 to S510, and S514 to S518 of <FIG> may be omitted. Instead of S408 of <FIG>, the processor <NUM> may start up the common function of the firmware by executing an arbitrary piece of firmware stored in the application module memory <NUM>. Then, in S506 of <FIG>, the processor <NUM> determines whether or not there is firmware corresponding to the communication protocol supported by the communication module <NUM> in the application module memory <NUM> in response to receiving the attachment signal from the communication module <NUM> in S502. When there is firmware corresponding to the communication protocol inside the application module memory <NUM>, instead of S512, the processor <NUM> may read out the firmware and the corresponding data inside the application module memory <NUM> and execute the specific function of the firmware. When there is no firmware corresponding to the communication protocol inside the application module memory <NUM>, the processor <NUM> may move the process to S520 and transmit the error signal.

<FIG> shows a configuration of a download file to the application module memory <NUM> according to the present embodiment. The download file includes identification information <NUM>, one or more pieces of firmware <NUM> to <NUM>, and protocol information <NUM> and version information <NUM> corresponding to each piece of the firmware <NUM> to <NUM>. The firmware <NUM> to <NUM> of the download file may each correspond to a different communication protocol. As an example, the firmware <NUM>, <NUM>, <NUM>, and <NUM> may respectively correspond to a protocol A, B, C, and D. The firmware <NUM>, <NUM>, <NUM>, and <NUM> may each have the same version information. In order to improve the development efficiency of the apparatus <NUM>, the firmware <NUM> to <NUM> of the download file may be independently designed so as not to interfere with each other. The flow of downloading the download file shown in <FIG> to the application module memory <NUM> of the apparatus <NUM> will be described in detail below.

<FIG> shows a flow of downloading the download file according to the present embodiment to the application module memory <NUM>. In S700, in response to a request from a connected device of the apparatus <NUM> (for example, the server <NUM>, the terminal <NUM>, or an external server), the processor <NUM> may receive the download file including the firmware from the connected device via the communication unit <NUM> and begin downloading.

In S702, the processor <NUM> determines whether or not the identification information <NUM> stored in the application module memory <NUM> and the identification information <NUM> of the download file match. When the processor <NUM> determines that the two pieces of identification information match, the processor <NUM> moves the process to S704, and when the processor <NUM> determines that the two pieces of identification information do not match, the processor <NUM> moves the process to S712.

In S704, the processor <NUM> erases the inactive region of the firmware region <NUM> inside the application module memory <NUM> in response to determining that the two pieces of identification information match in S702. For example, when the first firmware region <NUM> is an active region, the firmware and the like inside the second firmware region <NUM> may be erased.

In S706, the processor <NUM> writes and stores the firmware of the download file in the erased region of the firmware region <NUM> for each piece of protocol information.

In S708, the processor <NUM> activates the inactive region of the firmware region <NUM> and deactivates the active region. The processor <NUM> may perform switching of the active region and the inactive region in response to the writing of the firmware, and may perform the switching in response to a request from the connected device.

In S710, the processor <NUM> restarts the apparatus <NUM> and ends the process.

In S712, the processor <NUM> transmits an error signal indicating that the download file cannot be downloaded to the application module memory <NUM> in response to the determination in S702 that the two pieces of identification information do not match. The processor <NUM> may transmit the error signal to the connected device via the communication unit <NUM>.

It is noted that instead of S704 to S706, in response to determining that the two pieces of identification information match in S702, the processor <NUM> may compare the protocol information of the firmware stored in the application module memory <NUM> and the download file, and when it is determined that the two pieces of protocol information <NUM> and <NUM> match, the processor <NUM> may write the firmware of the download file to the inactive region of the target firmware region <NUM>. When the processor <NUM> determines in S702 that the two pieces of protocol information do not match, the processor <NUM> may determine whether or not there is a free region in the application module memory <NUM>, and when there is a free region, the processor <NUM> may write the firmware of the download file in the free region. When there is no free region, the processor <NUM> may transmit an error signal to the connected device.

In addition, the processor <NUM> may download only a specific piece of firmware from the download file. For example, when a failure is found in the firmware inside the application module <NUM> that is different from the operating firmware, the processor <NUM> can update only the failed firmware while the firmware is in operation.

As described above, the apparatus <NUM> updates the firmware by downloading the firmware from the connected device and storing it in the application module memory <NUM>. Therefore, the user can always use the apparatus <NUM> holding the new version of the firmware without having to replace the application module <NUM> every time updated firmware is released. In addition, according to the apparatus <NUM>, multiple pieces of firmware corresponding to different communication protocols inside the application module memory <NUM> can be updated collectively by one download operation. This saves the user from having to download firmware for each piece of firmware, simplifies version management, and greatly improves maintainability. In addition, the apparatus <NUM> can prepare firmware corresponding to a communication protocol to be used in the future using the currently operating firmware in advance, so that the apparatus <NUM> can be quickly shifted to a new communication environment. For a developer, since multiple pieces of firmware can be consolidated into one download file, the number of management steps can be significantly reduced. It is noted that according to the apparatus <NUM>, the firmware of the download file can be written in the inactive region of the firmware region <NUM>, and the immediately previous piece of firmware can be left in the active region. For this reason, even if a failure occurs during the download process, the apparatus <NUM> can easily be restored to the immediately previous state.

<FIG> shows an expansion apparatus <NUM> together with the external sensor <NUM> and the external actuator <NUM> according to the present embodiment. In the present figure, the components denoted by the same reference numerals as those in <FIG> are basically the same as the description shown in <FIG>, and therefore the following description will focus on the differences. The expansion apparatus <NUM> shown in <FIG> has the same configuration and function as the apparatus <NUM> shown in <FIG>, except that the communication module <NUM> is an extension communication module <NUM> having an external memory <NUM>.

The external memory <NUM> stores multiple pieces of firmware including one or more pieces of identification information. The external memory <NUM> may include a removable storage medium such as a USB memory or an SD card connected to the extension communication module <NUM>.

The processor <NUM> reads out the firmware from the external memory <NUM> instead of receiving the upgraded multiple pieces of firmware from the connected device. The processor <NUM> may store the read out firmware to the application module memory <NUM> via the connection units <NUM> and <NUM>. The processor <NUM> may store the firmware in the application module memory <NUM> by reading out the firmware in the external memory <NUM> at the time of start-up and performing the same processing as S702 to S712 of <FIG>.

According to the expansion apparatus <NUM> described above, since the processor <NUM> can obtain the firmware from the external memory <NUM> inside the apparatus <NUM> without downloading the firmware from the connected device via the network <NUM>, the firmware can be quickly obtained.

<FIG> shows a configuration of the external memory <NUM> according to the present embodiment. The external memory <NUM> includes one or more external memory files <NUM> to <NUM>. Each of the external memory files <NUM> to <NUM> includes, in association with identification information <NUM>, multiple pieces of firmware <NUM> to <NUM>, and protocol information <NUM> and version information <NUM> corresponding to each piece of the firmware <NUM> to <NUM>.

As described above, since the external memory <NUM> may include the firmware including multiple pieces of the identification information <NUM>, the application module <NUM> can select and store the appropriate firmware in the application module <NUM> at the time of attachment. Therefore, the user can use multiple types of the application module <NUM> in combination with one extension communication module <NUM>. For example, the user can update the firmware of the multiple types of the application module <NUM> from one to the next simply by sequentially attaching one extension communication module <NUM> to the multiple types of the application module <NUM> and starting them up. Therefore, maintenance work on site is greatly reduced. It is noted that after a firmware update, even if the user removes the extension communication module <NUM> from the application module <NUM> and attaches the previous communication module <NUM>, the new firmware can be used continuously.

The system <NUM> does not need to include the gateway <NUM>. In addition, the application module <NUM> includes at least one of the integrated sensor <NUM>, the integrated actuator <NUM>, the external sensor <NUM>, or the external actuator <NUM>, and does not need to include all of them. Therefore, the functional unit <NUM> includes at least one of the integrated sensor <NUM>, the integrated actuator <NUM>, or the communication port <NUM>, and does not need to include all of them.

Furthermore, the second data memory <NUM> may be stored with data relating to the functional unit <NUM> and the communication unit <NUM> by the processor <NUM> in addition to the first data memory <NUM> or instead of the first data memory <NUM>. In this case, the first data memory <NUM> described in <FIG> may be replaced with the second data memory <NUM>.

The attachment control unit <NUM> may be included in the communication module <NUM> or the extension communication module <NUM> instead of the application module <NUM>. In this case, instead of S502 of <FIG>, the processor <NUM> may determine whether or not the application module <NUM> is attached to the communication module <NUM> in response to the attachment control unit <NUM> detecting a physical change inside the connection unit <NUM>. For example, the attachment control unit <NUM> may supply a current to the connection unit <NUM> in response to a request from the processor <NUM>, and provide the attachment signal to the processor <NUM> in response to detecting a change in the resistance value inside the connection unit <NUM>. When the processor <NUM> determines that the attachment signal has been received, the processor <NUM> moves the process to S504, and when the processor <NUM> determines that the attachment signal has not been received, the processor <NUM> returns the process to S502.

The apparatus <NUM> or the expansion apparatus <NUM> may include one or more application modules <NUM>. When the apparatus <NUM> or the expansion apparatus <NUM> includes multiple application modules <NUM>, one communication module <NUM> or one extension communication module <NUM> and the multiple application modules <NUM> may be coupled. The communication module <NUM> or the extension communication module <NUM> may include multiple connection units <NUM>. In this case, the communication module <NUM> or the firmware memory <NUM> of the extension communication module <NUM> may include multiple firmware regions <NUM> and multiple backup regions <NUM> corresponding to the functional unit <NUM> of the multiple application modules <NUM> connected to the communication module <NUM> or the extension communication module <NUM> for storing the firmware. The processor <NUM> may obtain multiple pieces of firmware corresponding to the multiple application modules <NUM> connected to the communication module <NUM> or the extension communication module <NUM> from the application module memory <NUM> and execute the abovementioned various types of processes in a time-division or parallel manner.

Also, various embodiments of the present invention may be described with reference to flowcharts and block diagrams. Blocks may represent (<NUM>) steps of processes in which operations are performed or (<NUM>) sections of apparatuses responsible for performing operations. Certain steps and sections may be implemented by dedicated circuitry, programmable circuitry supplied with computer-readable instructions stored on computer-readable media, and/or processors supplied with computer-readable instructions stored on computer-readable media. Dedicated circuitry may include digital and/or analog hardware circuits and may include integrated circuits (IC) and/or discrete circuits. Programmable circuitry may include reconfigurable hardware circuits comprising logical AND, OR, XOR, NAND, NOR, and other logical operations, flip-flops, registers, memory elements, etc., such as field-programmable gate arrays (FPGA), programmable logic arrays (PLA), etc. Computer-readable media may include any tangible device that can store instructions for execution by a suitable device, such that the computer-readable medium having instructions stored therein comprises an article of manufacture including instructions which can be executed to create means for performing operations specified in the flowcharts or block diagrams. Examples of computer-readable media may include an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, etc. More specific examples of computer-readable media may include a floppy (registered trademark) disk, a diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an electrically erasable programmable read-only memory (EEPROM), a static random access memory (SRAM), a compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a BLU-RAY (RTM) disc, a memory stick, an integrated circuit card, etc. Computer-readable instructions may include assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, JAVA (registered trademark), C++, etc., and conventional procedural programming languages, such as the "C" programming language or similar programming languages. Computer-readable instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus, or to programmable circuitry, locally or via a local area network (LAN), a wide area network (WAN) such as the Internet, and the like. Thereby, the processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus or the programmable circuitry can execute the computer-readable instructions so as to create means for performing operations specified in the flowcharts or block diagrams. Examples of the processor include a computer processor, a processing unit, a microprocessor, a digital signal processor, a controller, a microcontroller, and the like. <FIG> shows an example of a computer <NUM> in which a plurality of aspects of the present invention may be wholly or partially embodied. A program installed on the computer <NUM> can cause the computer <NUM> to function as an operation associated with the apparatus according to an embodiment of the present invention or as one or more sections of the apparatus, or to execute the operation or the one or more sections. In addition or alternatively, the program can cause the computer <NUM> to execute a process or steps of the process according to an embodiment of the present invention. Such a program may be executed by a CPU <NUM> so as to cause the computer <NUM> to perform certain operations associated with some or all of the blocks of flowcharts and block diagrams described herein.

The computer <NUM> according to the present embodiment includes a CPU <NUM>, a RAM <NUM>, a graphic controller <NUM>, and a display device <NUM>, which are mutually connected by a host controller <NUM>. In addition, the computer <NUM> includes input/output units such as a communication interface <NUM>, a hard disk drive <NUM>, DVD-ROM drive <NUM>, or an IC card drive, and they are connected to the host controller <NUM> via an input/output controller <NUM>. In addition, the computer includes legacy input/output units such as a ROM <NUM> and a keyboard <NUM>, and they are connected to the input/output controller <NUM> via an input/output chip <NUM>.

The CPU <NUM> operates according to programs stored in the ROM <NUM> and the RAM <NUM>, thereby controlling each unit. The graphic controller <NUM> obtains image data generated by the CPU <NUM> on a frame buffer or the like provided in the RAM <NUM> or in itself, and causes the image data to be displayed on the display device <NUM>.

The communication interface <NUM> communicates with other electronic devices via a network. The hard disk drive <NUM> stores programs and data to be used by the CPU <NUM> within the computer <NUM>. The DVD-ROM drive <NUM> reads the programs or the data from the DVD-ROM <NUM>, and provides the hard disk drive <NUM> with the programs or the data via the RAM <NUM>. The IC card drive reads programs and data from an IC card, and additionally or alternatively writes the programs and data to the IC card.

The ROM <NUM> stores therein at least one of a boot program or the like executed by the computer <NUM> at the time of activation or a program that is dependent on the hardware of the computer <NUM>. The input/output chip <NUM> may also connect various input/output units to the input/output controller <NUM> via a parallel port, a serial port, a keyboard port, a mouse port or the like.

A program is provided by computer readable media such as the DVD-ROM <NUM> or the IC card. The program is read from the computer readable media, installed into the hard disk drive <NUM>, the RAM <NUM>, or the ROM <NUM>, which are also examples of computer readable media, and is executed by the CPU <NUM>. The information processing described in these programs is read into the computer <NUM>, resulting in cooperation between a program and the above-mentioned various types of hardware resources. An apparatus or method may be constituted by realizing the operation or processing of information in accordance with the usage of the computer <NUM>.

For example, when communication is performed between the computer <NUM> and an external device, the CPU <NUM> may execute a communication program loaded onto the RAM <NUM> to instruct communication processing to the communication interface <NUM>, based on the processing described in the communication program. The communication interface <NUM>, under control of the CPU <NUM>, reads transmission data stored on a transmission buffering region provided in a recording medium such as the RAM <NUM>, the hard disk drive <NUM>, the DVD-ROM <NUM>, or the IC card, and transmits the read transmission data to a network or writes reception data received from a network to a reception buffering region or the like provided on the recording medium.

In addition, the CPU <NUM> may cause all or a necessary unit of a file or a database to be read into the RAM <NUM>, the file or the database having been stored in an external recording medium such as the hard disk drive <NUM>, the DVD-ROM drive <NUM> (DVD-ROM <NUM>), the IC card, etc., and perform various types of processing on the data on the RAM <NUM>. The CPU <NUM> may then write back the processed data to the external recording medium.

Various types of information, such as various types of programs, data, tables, and databases, may be stored in the recording medium to undergo information processing. The CPU <NUM> may perform various types of operations, information processing, conditional determination, conditional branching, unconditional branching, and various types of processes including information retrieval and replacement described in various places in the present disclosure and specified by the instruction sequence of the program on the data read from the RAM <NUM>, and write back the result to the RAM <NUM>. In addition, the CPU <NUM> may search for information in a file, a database, etc., in the recording medium. For example, when a plurality of entries, each having an attribute value of a first attribute associated with an attribute value of a second attribute, are stored in the recording medium, the CPU <NUM> may search for an entry matching the condition whose attribute value of the first attribute is designated, from among the plurality of entries, and read the attribute value of the second attribute stored in the entry, thereby obtaining the attribute value of the second attribute associated with the first attribute satisfying the predetermined condition.

The above-explained program or software modules may be stored in the computer <NUM> or in the computer readable media near the computer <NUM>. In addition, a recording medium such as a hard disk or a RAM provided in a server system connected to a dedicated communication network or the Internet can be used as the computer readable media, thereby providing the program to the computer <NUM> via the network.

While the embodiments of the present invention have been described, the technical scope of the invention is not limited to the above described embodiments. It is apparent to persons skilled in the art that various alterations and improvements can be added to the above-described embodiments. It is also apparent from the scope of the claims that the embodiments added with such alterations or improvements can be included in the technical scope of the invention.

The operations, procedures, steps, and stages of each process performed by an apparatus, system, program, and method shown in the claims, embodiments, or diagrams can be performed in any order as long as the order is not indicated by "prior to," "before," or the like and as long as the output from a previous process is not used in a later process. Even if the process flow is described using phrases such as "first" or "next" in the claims, embodiments, or diagrams, it does not necessarily mean that the process must be performed in this order. EXPLANATION OF REFERENCES.

Claim 1:
An apparatus (<NUM>) comprising:
a communication module (<NUM>) including a processor (<NUM>), a communication unit (<NUM>) and a firmware memory (<NUM>) having a firmware region (<NUM>) and a backup region (<NUM>); and
an application module (<NUM>) detachably coupled to the communication module (<NUM>),
wherein
the application module (<NUM>) includes
a functional unit (<NUM>) including at least one of a sensor (<NUM>), an actuator (<NUM>), or a communication port (<NUM>) that is to be connected to at least one of an external sensor (<NUM>) or an external actuator (<NUM>), and
an application module memory (<NUM>) for storing firmware (<NUM>, <NUM>, <NUM>, <NUM>) that is executed by the processor; and
the processor (<NUM>) is configured to
during a start-up process, store the firmware stored in the application module memory (<NUM>) in the backup region (<NUM>) and restarts the processor, and
during the restart process, store the firmware that is stored in the backup region (<NUM>) in the firmware region (<NUM>).