NZ709047A - Efficient modification of data in non-volatile memory - Google Patents
Efficient modification of data in non-volatile memoryInfo
- Publication number
- NZ709047A NZ709047A NZ709047A NZ70904715A NZ709047A NZ 709047 A NZ709047 A NZ 709047A NZ 709047 A NZ709047 A NZ 709047A NZ 70904715 A NZ70904715 A NZ 70904715A NZ 709047 A NZ709047 A NZ 709047A
- Authority
- NZ
- New Zealand
- Prior art keywords
- data
- memory
- collector
- tasks
- update
- Prior art date
Links
- 238000006011 modification reaction Methods 0.000 title claims abstract description 41
- 230000004048 modification Effects 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 abstract description 66
- 238000004891 communication Methods 0.000 description 24
- 230000004044 response Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000005611 electricity Effects 0.000 description 5
- 235000008694 Humulus lupulus Nutrition 0.000 description 4
- 235000009808 lpulo Nutrition 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000001228 spectrum Methods 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 241001482238 Pica pica Species 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000003068 static Effects 0.000 description 2
- 230000000295 complement Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000000875 corresponding Effects 0.000 description 1
- 230000003111 delayed Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000003287 optical Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002035 prolonged Effects 0.000 description 1
- 230000002104 routine Effects 0.000 description 1
- 230000001360 synchronised Effects 0.000 description 1
Abstract
Techniques are disclosed herein for efficient modification of data in non-volatile memory. In some examples, an update, such as a firmware update, may be generated for a first portion of data, such as firmware or a portion of firmware. In some cases, the first portion of data may be used in combination with a respective second portion of data. Also, in some cases, in combination with the update, various modifications may be determined for the second portion of data. Additionally, a set of tasks may be generated for performing the modifications to the second portion of data. The update may then be transmitted along with the set of tasks from one or more control devices to one or more update devices that are being updated with the update. ation with a respective second portion of data. Also, in some cases, in combination with the update, various modifications may be determined for the second portion of data. Additionally, a set of tasks may be generated for performing the modifications to the second portion of data. The update may then be transmitted along with the set of tasks from one or more control devices to one or more update devices that are being updated with the update.
Description
EFFICIENT MODIFICATION OF DATA IN NON-VOLATILE MEMORY
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. Patent Application No. 14/339,737, filed July 24,
2014, the entirety of which is incorporated by reference herein.
TECHNICAL BACKGROUND
After a firmware update is performed on a remote device, there is often a need
to modify data that is stored in non-volatile memory used in combination with the firmware. The
modifying of this data may include, for example, inserting, deleting and/or rearranging of data
items in various data structures. The modifying of this data may also include, for example,
changing a format or a representation of various data items. In some cases, a remote device such
as a utility meter may include firmware that is stored in flash memory. The firmware may be
used in combination with other data that stored in non-volatile memory such as an electrically
erasable programmable read-only memory (EEPROM). This other data may include, for
example, configuration data, load profile data and other data that may be used in combination
with the firmware. When the firmware is updated, the other data stored in the EEPROM may
need to be modified such as described above.
SUMMARY OF THE DISCLOSURE
Techniques are disclosed herein for efficient modification of data in non-volatile
memory. In some examples, an update, such as a firmware update, may be generated for a first
portion of data, such as firmware or a portion of firmware. In some cases, the first portion of
data may be used in combination with a respective second portion of data. Also, in some cases,
in combination with the update, various modifications may be determined for the second portion
of data. The modifications may, for example, assist in allowing the second portion of data to be
used in combination with the first portion of data after the update is applied to the first portion of
data. The modifications may include, for example, one or more deletions, insertions,
rearrangements and/or other changes to the second portion of data. Additionally, a set of tasks
may be generated for performing the modifications to the second portion of data. The set of
tasks may include, for example, one or more memory fill tasks, one or more memory move tasks,
one or more invoke function tasks and/or one or more other tasks. The update may then be
transmitted along with the set of tasks from one or more control devices to one or more update
devices that are being updated with the update.
After receiving the update, each update device may then apply the update to the
first portion of data. The first portion of data may, for example, be stored at the update devices
in flash memory. The update devices may also use the received set of tasks to perform the
modifications to the second portion of data. The second portion of data may be stored at the
update devices in non-volatile memory such as an EEPROM. In some cases, the set of tasks may
have an associated order of performance for each task in the set of tasks. Additionally, in some
cases, each task in the set of tasks may have an associated indicator that indicates whether the
task is complete or not complete. Furthermore, in some cases, each task in the set of tasks may
be performed in an atomic manner.
The set of tasks may, for example, be stored by the update devices in a third
portion of memory. The third portion of memory may be memory that remains intact, at least
temporarily, when not powered. This may include, for example, static random-access memory
(SRAM). After performance of the set of tasks and corresponding modification to the second
portion of memory, the set of tasks may be deleted from the third portion of memory.
Other features and advantages of the described embodiments may become
apparent from the following detailed description and accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing summary, as well as the following detailed description of various
embodiments, is better understood when read in conjunction with the appended drawings. For
the purpose of illustrating the invention, there are shown in the drawings exemplary
embodiments of various aspects of the invention; however, the invention is not limited to the
specific methods and instrumentalities disclosed. In the drawings:
Figure 1 is a diagram of an exemplary metering system;
Figure 2 expands upon the diagram of Fig. 1 and illustrates an exemplary
metering system in greater detail;
Figure 3A is a block diagram illustrating an exemplary collector;
Figure 3B is a block diagram illustrating an exemplary meter;
Figure 4 is a diagram of an exemplary subnet of a wireless network for
collecting data from remote devices;
Figure 5A is a flowchart of an example process for providing information for
modifying data in non-volatile memory;
Figure 5B is a flowchart of an example process for modifying data in non-
volatile memory;
Figure 6 is a diagram depicting some example modifications to a second portion
of data;
Figure 7 is a diagram depicting example memory portions of an update device;
Figure 8 is a diagram of an example task listing.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
Exemplary systems and methods for gathering meter data are described below.
It will be appreciated by those of ordinary skill in the art that the description given herein with
respect to those figures is for exemplary purposes only and is not intended in any way to limit
the scope of potential embodiments.
Generally, a plurality of meter devices, which operate to track usage of a service
or commodity such as, for example, electricity, water, and gas, are operable to wirelessly
communicate. One or more devices, referred to herein as “collectors,” are provided that “collect”
data transmitted by the other meter devices so that it can be accessed by other computer systems.
The collectors receive and compile metering data from a plurality of meter devices via wireless
communications. A data collection server may communicate with the collectors to retrieve the
compiled meter data.
Figure 1 provides a diagram of one exemplary metering system 110. System
110 comprises a plurality of meters 114, which are operable to sense and record consumption or
usage of a service or commodity such as, for example, electricity, water, or gas. Meters 114 may
be located at customer premises such as, for example, a home or place of business. Meters 114
comprise circuitry for measuring the consumption of the service or commodity being consumed
at their respective locations and for generating data reflecting the consumption, as well as other
data related thereto. Meters 114 may also comprise circuitry for wirelessly transmitting data
generated by the meter to a remote location. Meters 114 may further comprise circuitry for
receiving data, commands or instructions wirelessly as well. Meters that are operable to both
receive and transmit data may be referred to as "bi-directional" or "two-way" meters, while
meters that are only capable of transmitting data may be referred to as "transmit-only" or "one-
way" meters. In bi-directional meters, the circuitry for transmitting and receiving may comprise a
transceiver. In an illustrative embodiment, meters 114 may be, for example, electricity meters
manufactured by Elster Solutions, LLC and marketed under the tradename REX.
System 110 further comprises collectors 116. In one embodiment, collectors 116
are also meters operable to detect and record usage of a service or commodity such as, for
example, electricity, water, or gas. In addition, collectors 116 are operable to send data to and
receive data from meters 114. Thus, like the meters 114, the collectors 116 may comprise both
circuitry for measuring the consumption of a service or commodity and for generating data
reflecting the consumption and circuitry for transmitting and receiving data. In one embodiment,
collector 116 and meters 114 communicate with and amongst one another using any one of
several wireless techniques such as, for example, frequency hopping spread spectrum (FHSS)
and direct sequence spread spectrum (DSSS).
A collector 116 and the meters 114 with which it communicates define a
subnet/LAN 120 of system 110. As used herein, meters 114 and collectors 116 may be referred
to as “nodes” in the subnet 120. In each subnet/LAN 120, each meter transmits data related to
consumption of the commodity being metered at the meter’s location. The collector 116 receives
the data transmitted by each meter 114, effectively “collecting” it, and then periodically
transmits the data from all of the meters in the subnet/LAN 120 to a data collection server 206.
The data collection server 206 stores the data for analysis and preparation of bills, for example.
The data collection server 206 may be a specially programmed general purpose computing
system and may communicate with collectors 116 via a network 112. The network 112 may
comprise any form of network, including a wireless network or a fixed-wire network, such as a
local area network (LAN), a wide area network, the Internet, an intranet, a telephone network,
such as the public switched telephone network (PSTN), a Frequency Hopping Spread Spectrum
(FHSS) radio network, a mesh network, a Wi-Fi (802.11) network, a Wi-Max (802.16) network,
a land line (POTS) network, or any combination of the above.
Referring now to Figure 2, further details of the metering system 110 are shown.
Typically, the system will be operated by a utility company or a company providing information
technology services to a utility company. As shown, the system 110 comprises a network
management server 202, a network management system (NMS) 204 and the data collection
server 206 that together manage one or more subnets/LANs 120 and their constituent nodes. The
NMS 204 tracks changes in network state, such as new nodes registering/unregistering with the
system 110, node communication paths changing, etc. This information is collected for each
subnet/LAN 120 and is detected and forwarded to the network management server 202 and data
collection server 206.
Each of the meters 114 and collectors 116 is assigned an identifier (LAN ID)
that uniquely identifies that meter or collector on its subnet/LAN 120. In this embodiment,
communication between nodes (i.e., the collectors and meters) and the system 110 is
accomplished using the LAN ID. However, it is preferable for operators of a utility to query and
communicate with the nodes using their own identifiers. To this end, a marriage file 208 may be
used to correlate a utility’s identifier for a node (e.g., a utility serial number) with both a
manufacturer serial number (i.e., a serial number assigned by the manufacturer of the meter) and
the LAN ID for each node in the subnet/LAN 120. In this manner, the utility can refer to the
meters and collectors by the utilities identifier, while the system can employ the LAN ID for the
purpose of designating particular meters during system communications.
A device configuration database 210 stores configuration information regarding
the nodes. For example, in the metering system 110, the device configuration database may
include data regarding time of use (TOU) switchpoints, etc. for the meters 114 and collectors 116
communicating in the system 110. A data collection requirements database 212 contains
information regarding the data to be collected on a per node basis. For example, a utility may
specify that metering data such as load profile, demand, TOU, etc. is to be collected from
particular meter(s) 114a. Reports 214 containing information on the network configuration may
be automatically generated or in accordance with a utility request.
The network management system (NMS) 204 maintains a database describing
the current state of the global fixed network system (current network state 220) and a database
describing the historical state of the system (historical network state 222). The current network
state 220 contains data regarding current meter-to-collector assignments, etc. for each
subnet/LAN 120. The historical network state 222 is a database from which the state of the
network at a particular point in the past can be reconstructed. The NMS 204 is responsible for,
amongst other things, providing reports 214 about the state of the network. The NMS 204 may
be accessed via an API 220 that is exposed to a user interface 216 and a Customer Information
System (CIS) 218. Other external interfaces may also be implemented. In addition, the data
collection requirements stored in the database 212 may be set via the user interface 216 or CIS
218.
The data collection server 206 collects data from the nodes (e.g., collectors 116)
and stores the data in a database 224. The data includes metering information, such as energy
consumption and may be used for billing purposes, etc. by a utility provider.
The network management server 202, network management system 204 and
data collection server 206 communicate with the nodes in each subnet/LAN 120 via network
110.
Figure 3A is a block diagram illustrating further details of one embodiment of a
collector 116. Although certain components are designated and discussed with reference to
Figure 3A, it should be appreciated that the invention is not limited to such components. In fact,
various other components typically found in an electronic meter may be a part of collector 116,
but have not been shown in Figure 3A for the purposes of clarity and brevity. Also, the invention
may use other components to accomplish the operation of collector 116. The components that are
shown and the functionality described for collector 116 are provided as examples, and are not
meant to be exclusive of other components or other functionality.
As shown in Figure 3A, collector 116 may comprise metering circuitry 304 that
performs measurement of consumption of a service or commodity and a processor 305 that
controls the overall operation of the metering functions of the collector 116. The collector 116
may further comprise a display 310 for displaying information such as measured quantities and
meter status and a memory 312 for storing data. The collector 116 further comprises wireless
LAN communications circuitry 306 for communicating wirelessly with the meters 114 in a
subnet/LAN and a network interface 308 for communication over the network 112.
In one embodiment, the metering circuitry 304, processor 305, display 310 and
memory 312 are implemented using an A3 ALPHA meter available from Elster Electricity, Inc.
In that embodiment, the wireless LAN communications circuitry 306 may be implemented by a
LAN Option Board (e.g., a 900 MHz two-way radio) installed within the A3 ALPHA meter, and
the network interface 308 may be implemented by a WAN Option Board (e.g., a telephone
modem) also installed within the A3 ALPHA meter. In this embodiment, the WAN Option
Board 308 routes messages from network 112 (via interface port 302) to either the meter
processor 305 or the LAN Option Board 306. LAN Option Board 306 may use a transceiver (not
shown), for example a 900 MHz radio, to communicate data to meters 114. Also, LAN Option
Board 306 may have sufficient memory to store data received from meters 114. This data may
include, but is not limited to the following: current billing data (e.g., the present values stored
and displayed by meters 114), previous billing period data, previous season data, and load profile
data.
LAN Option Board 306 may be capable of synchronizing its time to a real time
clock (not shown) in A3 ALPHA meter, thereby synchronizing the LAN reference time to the
time in the meter. The processing necessary to carry out the communication functionality and the
collection and storage of metering data of the collector 116 may be handled by the processor 305
and/or additional processors (not shown) in the LAN Option Board 306 and the WAN Option
Board 308.
The responsibility of a collector 116 is wide and varied. Generally, collector 116
is responsible for managing, processing and routing data communicated between the collector
and network 112 and between the collector and meters 114. Collector 116 may continually or
intermittently read the current data from meters 114 and store the data in a database (not shown)
in collector 116. Such current data may include but is not limited to the total kWh usage, the
Time-Of-Use (TOU) kWh usage, peak kW demand, and other energy consumption
measurements and status information. Collector 116 also may read and store previous billing and
previous season data from meters 114 and store the data in the database in collector 116. The
database may be implemented as one or more tables of data within the collector 116.
Figure 3B is a block diagram of an exemplary embodiment of a meter 114 that
may operate in the system 110 of Figures 1 and 2. As shown, the meter 114 comprises metering
circuitry 304’ for measuring the amount of a service or commodity that is consumed, a processor
305’ that controls the overall functions of the meter, a display 310’ for displaying meter data and
status information, and a memory 312’ for storing data and program instructions. The meter 114
further comprises wireless communications circuitry 306’ for transmitting and receiving data
to/from other meters 114 or a collector 116.
Referring again to Figure 1, in the exemplary embodiment shown, a collector
116 directly communicates with only a subset of the plurality of meters 114 in its particular
subnet/LAN. Meters 114 with which collector 116 directly communicates may be referred to as
“level one” meters 114a. The level one meters 114a are said to be one “hop” from the collector
116. Communications between collector 116 and meters 114 other than level one meters 114a
are relayed through the level one meters 114a. Thus, the level one meters 114a operate as
repeaters for communications between collector 116 and meters 114 located further away in
subnet 120.
Each level one meter 114a typically will only be in range to directly
communicate with only a subset of the remaining meters 114 in the subnet 120. The meters 114
with which the level one meters 114a directly communicate may be referred to as level two
meters 114b. Level two meters 114b are one “hop” from level one meters 114a, and therefore
two “hops” from collector 116. Level two meters 114b operate as repeaters for communications
between the level one meters 114a and meters 114 located further away from collector 116 in the
subnet 120.
While only three levels of meters are shown (collector 116, first level 114a,
second level 114b) in Figure 1, a subnet 120 may comprise any number of levels of meters 114.
For example, a subnet 120 may comprise one level of meters but might also comprise eight or
more levels of meters 114. In an embodiment wherein a subnet comprises eight levels of meters
114, as many as 1024 meters might be registered with a single collector 116.
As mentioned above, each meter 114 and collector 116 that is installed in the
system 110 has a unique identifier (LAN ID) stored thereon that uniquely identifies the device
from all other devices in the system 110. Additionally, meters 114 operating in a subnet 120
comprise information including the following: data identifying the collector with which the
meter is registered; the level in the subnet at which the meter is located; the repeater meter at the
prior level with which the meter communicates to send and receive data to/from the collector; an
identifier indicating whether the meter is a repeater for other nodes in the subnet; and if the meter
operates as a repeater, the identifier that uniquely identifies the repeater within the particular
subnet, and the number of meters for which it is a repeater. Collectors 116 have stored thereon
all of this same data for all meters 114 that are registered therewith. Thus, collector 116
comprises data identifying all nodes registered therewith as well as data identifying the
registered path by which data is communicated from the collector to each node. Each meter 114
therefore has a designated communications path to the collector that is either a direct path (e.g.,
all level one nodes) or an indirect path through one or more intermediate nodes that serve as
repeaters.
Information is transmitted in this embodiment in the form of packets. For most
network tasks such as, for example, reading meter data, collector 116 communicates with meters
114 in the subnet 120 using point-to-point transmissions. For example, a message or instruction
from collector 116 is routed through the designated set of repeaters to the desired meter 114.
Similarly, a meter 114 communicates with collector 116 through the same set of repeaters, but in
reverse.
In some instances, however, collector 116 may need to quickly communicate
information to all meters 114 located in its subnet 120. Accordingly, collector 116 may issue a
broadcast message that is meant to reach all nodes in the subnet 120. The broadcast message may
be referred to as a “flood broadcast message.” A flood broadcast originates at collector 116 and
propagates through the entire subnet 120 one level at a time. For example, collector 116 may
transmit a flood broadcast to all first level meters 114a. The first level meters 114a that receive
the message pick a random time slot and retransmit the broadcast message to second level meters
114b. Any second level meter 114b can accept the broadcast, thereby providing better coverage
from the collector out to the end point meters. Similarly, the second level meters 114b that
receive the broadcast message pick a random time slot and communicate the broadcast message
to third level meters. This process continues out until the end nodes of the subnet. Thus, a
broadcast message gradually propagates outward from the collector to the nodes of the subnet
120.
The flood broadcast packet header contains information to prevent nodes from
repeating the flood broadcast packet more than once per level. For example, within a flood
broadcast message, a field might exist that indicates to meters/nodes which receive the message,
the level of the subnet the message is located; only nodes at that particular level may re-
broadcast the message to the next level. If the collector broadcasts a flood message with a level
of 1, only level 1 nodes may respond. Prior to re-broadcasting the flood message, the level 1
nodes increment the field to 2 so that only level 2 nodes respond to the broadcast. Information
within the flood broadcast packet header ensures that a flood broadcast will eventually die out.
Generally, a collector 116 issues a flood broadcast several times, e.g. five times,
successively to increase the probability that all meters in the subnet 120 receive the broadcast. A
delay is introduced before each new broadcast to allow the previous broadcast packet time to
propagate through all levels of the subnet.
Meters 114 may have a clock formed therein. However, meters 114 often
undergo power interruptions that can interfere with the operation of any clock therein.
Accordingly, the clocks internal to meters 114 cannot be relied upon to provide an accurate time
reading. Having the correct time is necessary, however, when time of use metering is being
employed. Indeed, in an embodiment, time of use schedule data may also be comprised in the
same broadcast message as the time. Accordingly, collector 116 periodically flood broadcasts the
real time to meters 114 in subnet 120. Meters 114 use the time broadcasts to stay synchronized
with the rest of the subnet 120. In an illustrative embodiment, collector 116 broadcasts the time
every 15 minutes. The broadcasts may be made near the middle of 15 minute clock boundaries
that are used in performing load profiling and time of use (TOU) schedules so as to minimize
time changes near these boundaries. Maintaining time synchronization is important to the proper
operation of the subnet 120. Accordingly, lower priority tasks performed by collector 116 may
be delayed while the time broadcasts are performed.
In an illustrative embodiment, the flood broadcasts transmitting time data may
be repeated, for example, five times, so as to increase the probability that all nodes receive the
time. Furthermore, where time of use schedule data is communicated in the same transmission as
the timing data, the subsequent time transmissions allow a different piece of the time of use
schedule to be transmitted to the nodes.
Exception messages are used in subnet 120 to transmit unexpected events that
occur at meters 114 to collector 116. In an embodiment, the first 4 seconds of every 32-second
period are allocated as an exception window for meters 114 to transmit exception messages.
Meters 114 transmit their exception messages early enough in the exception window so the
message has time to propagate to collector 116 before the end of the exception window.
Collector 116 may process the exceptions after the 4-second exception window. Generally, a
collector 116 acknowledges exception messages, and collector 116 waits until the end of the
exception window to send this acknowledgement.
In an illustrative embodiment, exception messages are configured as one of
three different types of exception messages: local exceptions, which are handled directly by the
collector 116 without intervention from data collection server 206; an immediate exception,
which is generally relayed to data collection server 206 under an expedited schedule; and a daily
exception, which is communicated to the data collection server 206 on a regular schedule.
Exceptions are processed as follows. When an exception is received at collector
116, the collector 116 identifies the type of exception that has been received. If a local exception
has been received, collector 116 takes an action to remedy the problem. For example, when
collector 116 receives an exception requesting a “node scan request” such as discussed below,
collector 116 transmits a command to initiate a scan procedure to the meter 114 from which the
exception was received.
If an immediate exception type has been received, collector 116 makes a record
of the exception. An immediate exception might identify, for example, that there has been a
power outage. Collector 116 may log the receipt of the exception in one or more tables or files.
In an illustrative example, a record of receipt of an immediate exception is made in a table
referred to as the “Immediate Exception Log Table.” Collector 116 then waits a set period of
time before taking further action with respect to the immediate exception. For example, collector
116 may wait 64 seconds. This delay period allows the exception to be corrected before
communicating the exception to the data collection server 206. For example, where a power
outage was the cause of the immediate exception, collector 116 may wait a set period of time to
allow for receipt of a message indicating the power outage has been corrected.
If the exception has not been corrected, collector 116 communicates the
immediate exception to data collection server 206. For example, collector 116 may initiate a
dial-up connection with data collection server 206 and download the exception data. After
reporting an immediate exception to data collection server 206, collector 116 may delay
reporting any additional immediate exceptions for a period of time such as ten minutes. This is to
avoid reporting exceptions from other meters 114 that relate to, or have the same cause as, the
exception that was just reported.
If a daily exception was received, the exception is recorded in a file or a
database table. Generally, daily exceptions are occurrences in the subnet 120 that need to be
reported to data collection server 206, but are not so urgent that they need to be communicated
immediately. For example, when collector 116 registers a new meter 114 in subnet 120, collector
116 records a daily exception identifying that the registration has taken place. In an illustrative
embodiment, the exception is recorded in a database table referred to as the “Daily Exception
Log Table.” Collector 116 communicates the daily exceptions to data collection server 206.
Generally, collector 116 communicates the daily exceptions once every 24 hours.
In the present embodiment, a collector assigns designated communications paths
to meters with bi-directional communication capability, and may change the communication
paths for previously registered meters if conditions warrant. For example, when a collector 116
is initially brought into system 110, it needs to identify and register meters in its subnet 120. A
“node scan” refers to a process of communication between a collector 116 and meters 114
whereby the collector may identify and register new nodes in a subnet 120 and allow previously
registered nodes to switch paths. A collector 116 can implement a node scan on the entire subnet,
referred to as a “full node scan,” or a node scan can be performed on specially identified nodes,
referred to as a “node scan retry.”
A full node scan may be performed, for example, when a collector is first
installed. The collector 116 must identify and register nodes from which it will collect usage
data. The collector 116 initiates a node scan by broadcasting a request, which may be referred to
as a Node Scan Procedure request. Generally, the Node Scan Procedure request directs that all
unregistered meters 114 or nodes that receive the request respond to the collector 116. The
request may comprise information such as the unique address of the collector that initiated the
procedure. The signal by which collector 116 transmits this request may have limited strength
and therefore is detected only at meters 114 that are in proximity of collector 116. Meters 114
that receive the Node Scan Procedure request respond by transmitting their unique identifier as
well as other data.
For each meter from which the collector receives a response to the Node Scan
Procedure request, the collector tries to qualify the communications path to that meter before
registering the meter with the collector. That is, before registering a meter, the collector 116
attempts to determine whether data communications with the meter will be sufficiently reliable.
In one embodiment, the collector 116 determines whether the communication path to a
responding meter is sufficiently reliable by comparing a Received Signal Strength Indication
(RSSI) value (i.e., a measurement of the received radio signal strength) measured with respect to
the received response from the meter to a selected threshold value. For example, the threshold
value may be –60 dBm. RSSI values above this threshold would be deemed sufficiently reliable.
In another embodiment, qualification is performed by transmitting a predetermined number of
additional packets to the meter, such as ten packets, and counting the number of
acknowledgements received back from the meter. If the number of acknowledgments received is
greater than or equal to a selected threshold (e.g., 8 out of 10), then the path is considered to be
reliable. In other embodiments, a combination of the two qualification techniques may be
employed.
If the qualification threshold is not met, the collector 116 may add an entry for
the meter to a “Straggler Table.” The entry includes the meter’s LAN ID, its qualification score
(e.g., 5 out of 10; or its RSSI value), its level (in this case level one) and the unique ID of its
parent (in this case the collector’s ID).
If the qualification threshold is met or exceeded, the collector 116 registers the
node. Registering a meter 114 comprises updating a list of the registered nodes at collector 116.
For example, the list may be updated to identify the meter’s system-wide unique identifier and
the communication path to the node. Collector 116 also records the meter’s level in the subnet
(i.e. whether the meter is a level one node, level two node, etc.), whether the node operates as a
repeater, and if so, the number of meters for which it operates as a repeater. The registration
process further comprises transmitting registration information to the meter 114. For example,
collector 116 forwards to meter 114 an indication that it is registered, the unique identifier of the
collector with which it is registered, the level the meter exists at in the subnet, and the unique
identifier of its parent meter that will serve as a repeater for messages the meter may send to the
collector. In the case of a level one node, the parent is the collector itself. The meter stores this
data and begins to operate as part of the subnet by responding to commands from its collector
116.
Qualification and registration continues for each meter that responds to the
collector’s initial Node Scan Procedure request. The collector 116 may rebroadcast the Node
Scan Procedure additional times so as to insure that all meters 114 that may receive the Node
Scan Procedure have an opportunity for their response to be received and the meter qualified as a
level one node at collector 116.
The node scan process then continues by performing a similar process as that
described above at each of the now registered level one nodes. This process results in the
identification and registration of level two nodes. After the level two nodes are identified, a
similar node scan process is performed at the level two nodes to identify level three nodes, and
so on.
Specifically, to identify and register meters that will become level two meters,
for each level one meter, in succession, the collector 116 transmits a command to the level one
meter, which may be referred to as an “Initiate Node Scan Procedure” command. This command
instructs the level one meter to perform its own node scan process. The request comprises
several data items that the receiving meter may use in completing the node scan. For example,
the request may comprise the number of timeslots available for responding nodes, the unique
address of the collector that initiated the request, and a measure of the reliability of the
communications between the target node and the collector. As described below, the measure of
reliability may be employed during a process for identifying more reliable paths for previously
registered nodes.
The meter that receives the Initiate Node Scan Response request responds by
performing a node scan process similar to that described above. More specifically, the meter
broadcasts a request to which all unregistered nodes may respond. The request comprises the
number of timeslots available for responding nodes (which is used to set the period for the node
to wait for responses), the unique address of the collector that initiated the node scan procedure,
a measure of the reliability of the communications between the sending node and the collector
(which may be used in the process of determining whether a meter’s path may be switched as
described below), the level within the subnet of the node sending the request, and an RSSI
threshold (which may also be used in the process of determining whether a registered meter’s
path may be switched). The meter issuing the node scan request then waits for and receives
responses from unregistered nodes. For each response, the meter stores in memory the unique
identifier of the responding meter. This information is then transmitted to the collector.
For each unregistered meter that responded to the node scan issued by the level
one meter, the collector attempts again to determine the reliability of the communication path to
that meter. In one embodiment, the collector sends a “Qualify Nodes Procedure” command to the
level one node which instructs the level one node to transmit a predetermined number of
additional packets to the potential level two node and to record the number of acknowledgements
received back from the potential level two node. This qualification score (e.g., 8 out of 10) is
then transmitted back to the collector, which again compares the score to a qualification
threshold. In other embodiments, other measures of the communications reliability may be
provided, such as an RSSI value.
If the qualification threshold is not met, then the collector adds an entry for the
node in the Straggler Table, as discussed above. However, if there already is an entry in the
Straggler Table for the node, the collector will update that entry only if the qualification score for
this node scan procedure is better than the recorded qualification score from the prior node scan
that resulted in an entry for the node.
If the qualification threshold is met or exceeded, the collector 116 registers the
node. Again, registering a meter 114 at level two comprises updating a list of the registered
nodes at collector 116. For example, the list may be updated to identify the meter’s unique
identifier and the level of the meter in the subnet. Additionally, the collector’s 116 registration
information is updated to reflect that the meter 114 from which the scan process was initiated is
identified as a repeater (or parent) for the newly registered node. The registration process further
comprises transmitting information to the newly registered meter as well as the meter that will
serve as a repeater for the newly added node. For example, the node that issued the node scan
response request is updated to identify that it operates as a repeater and, if it was previously
registered as a repeater, increments a data item identifying the number of nodes for which it
serves as a repeater. Thereafter, collector 116 forwards to the newly registered meter an
indication that it is registered, an identification of the collector 116 with which it is registered,
the level the meter exists at in the subnet, and the unique identifier of the node that will serve as
its parent, or repeater, when it communicates with the collector 116.
The collector then performs the same qualification procedure for each other
potential level two node that responded to the level one node’s node scan request. Once that
process is completed for the first level one node, the collector initiates the same procedure at
each other level one node until the process of qualifying and registering level two nodes has been
completed at each level one node. Once the node scan procedure has been performed by each
level one node, resulting in a number of level two nodes being registered with the collector, the
collector will then send the Initiate Node Scan Response command to each level two node, in
turn. Each level two node will then perform the same node scan procedure as performed by the
level one nodes, potentially resulting in the registration of a number of level three nodes. The
process is then performed at each successive node, until a maximum number of levels is reached
(e.g., seven levels) or no unregistered nodes are left in the subnet.
It will be appreciated that in the present embodiment, during the qualification
process for a given node at a given level, the collector qualifies the last “hop” only. For example,
if an unregistered node responds to a node scan request from a level four node, and therefore,
becomes a potential level five node, the qualification score for that node is based on the
reliability of communications between the level four node and the potential level five node (i.e.,
packets transmitted by the level four node versus acknowledgments received from the potential
level five node), not based on any measure of the reliability of the communications over the full
path from the collector to the potential level five node. In other embodiments, of course, the
qualification score could be based on the full communication path.
At some point, each meter will have an established communication path to the
collector which will be either a direct path (i.e., level one nodes) or an indirect path through one
or more intermediate nodes that serve as repeaters. If during operation of the network, a meter
registered in this manner fails to perform adequately, it may be assigned a different path or
possibly to a different collector as described below.
As previously mentioned, a full node scan may be performed when a collector
116 is first introduced to a network. At the conclusion of the full node scan, a collector 116 will
have registered a set of meters 114 with which it communicates and reads metering data. Full
node scans might be periodically performed by an installed collector to identify new meters 114
that have been brought on-line since the last node scan and to allow registered meters to switch
to a different path.
In addition to the full node scan, collector 116 may also perform a process of
scanning specific meters 114 in the subnet 120, which is referred to as a “node scan retry.” For
example, collector 116 may issue a specific request to a meter 114 to perform a node scan
outside of a full node scan when on a previous attempt to scan the node, the collector 116 was
unable to confirm that the particular meter 114 received the node scan request. Also, a collector
116 may request a node scan retry of a meter 114 when during the course of a full node scan the
collector 116 was unable to read the node scan data from the meter 114. Similarly, a node scan
retry will be performed when an exception procedure requesting an immediate node scan is
received from a meter 114.
The system 110 also automatically reconfigures to accommodate a new meter
114 that may be added. More particularly, the system identifies that the new meter has begun
operating and identifies a path to a collector 116 that will become responsible for collecting the
metering data. Specifically, the new meter will broadcast an indication that it is unregistered. In
one embodiment, this broadcast might be, for example, embedded in, or relayed as part of a
request for an update of the real time as described above. The broadcast will be received at one
of the registered meters 114 in proximity to the meter that is attempting to register. The
registered meter 114 forwards the time to the meter that is attempting to register. The registered
node also transmits an exception request to its collector 116 requesting that the collector 116
implement a node scan, which presumably will locate and register the new meter. The collector
116 then transmits a request that the registered node perform a node scan. The registered node
will perform the node scan, during which it requests that all unregistered nodes respond.
Presumably, the newly added, unregistered meter will respond to the node scan. When it does,
the collector will then attempt to qualify and then register the new node in the same manner as
described above.
Once a communication path between the collector and a meter is established, the
meter can begin transmitting its meter data to the collector and the collector can transmit data
and instructions to the meter. As mentioned above, data is transmitted in packets. “Outbound”
packets are packets transmitted from the collector to a meter at a given level. In one
embodiment, outbound packets contain the following fields, but other fields may also be
included:
Length – the length of the packet;
SrcAddr – source address – in this case, the ID of the collector;
DestAddr – the LAN ID of the meter to which the packet addressed;
RptPath – the communication path to the destination meter (i.e., the list of
identifiers of each repeater in the path from the collector to the destination
node); and
Data – the payload of the packet.
The packet may also include integrity check information (e.g., CRC), a pad to fill-out unused
portions of the packet and other control information. When the packet is transmitted from the
collector, it will only be forwarded on to the destination meter by those repeater meters whose
identifiers appear in the RptPath field. Other meters that may receive the packet, but that are not
listed in the path identified in the RptPath field will not repeat the packet.
“Inbound” packets are packets transmitted from a meter at a given level to the
collector. In one embodiment, inbound packets contain the following fields, but other fields may
also be included:
Length – the length of the packet;
SrcAddr – source address – the address of the meter that initiated the packet;
DestAddr – the ID of the collector to which the packet is to be transmitted;
RptAddr – the ID of the parent node that serves as the next repeater for the
sending node;
Data – the payload of the packet;
Because each meter knows the identifier of its parent node (i.e., the node in the next lower level
that serves as a repeater for the present node), an inbound packet need only identify who is the
next parent. When a node receives an inbound packet, it checks to see if the RptAddr matches its
own identifier. If not, it discards the packet. If so, it knows that it is supposed to forward the
packet on toward the collector. The node will then replace the RptAddr field with the identifier
of its own parent and will then transmit the packet so that its parent will receive it. This process
will continue through each repeater at each successive level until the packet reaches the
collector.
For example, suppose a meter at level three initiates transmission of a packet
destined for its collector. The level three node will insert in the RptAddr field of the inbound
packet the identifier of the level two node that serves as a repeater for the level three node. The
level three node will then transmit the packet. Several level two nodes may receive the packet,
but only the level two node having an identifier that matches the identifier in the RptAddr field
of the packet will acknowledge it. The other will discard it. When the level two node with the
matching identifier receives the packet, it will replace the RptAddr field of the packet with the
identifier of the level one packet that serves as a repeater for that level two packet, and the level
two packet will then transmit the packet. This time, the level one node having the identifier that
matches the RptAddr field will receive the packet. The level one node will insert the identifier of
the collector in the RptAddr field and will transmit the packet. The collector will then receive the
packet to complete the transmission.
A collector 116 periodically retrieves meter data from the meters that are
registered with it. For example, meter data may be retrieved from a meter every 4 hours. Where
there is a problem with reading the meter data on the regularly scheduled interval, the collector
will try to read the data again before the next regularly scheduled interval. Nevertheless, there
may be instances wherein the collector 116 is unable to read metering data from a particular
meter 114 for a prolonged period of time. The meters 114 store an indication of when they are
read by their collector 116 and keep track of the time since their data has last been collected by
the collector 116. If the length of time since the last reading exceeds a defined threshold, such as
for example, 18 hours, presumably a problem has arisen in the communication path between the
particular meter 114 and the collector 116. Accordingly, the meter 114 changes its status to that
of an unregistered meter and attempts to locate a new path to a collector 116 via the process
described above for a new node. Thus, the exemplary system is operable to reconfigure itself to
address inadequacies in the system.
In some instances, while a collector 116 may be able to retrieve data from a
registered meter 114 occasionally, the level of success in reading the meter may be inadequate.
For example, if a collector 116 attempts to read meter data from a meter 114 every 4 hours but is
able to read the data, for example, only 70 percent of the time or less, it may be desirable to find
a more reliable path for reading the data from that particular meter. Where the frequency of
reading data from a meter 114 falls below a desired success level, the collector 116 transmits a
message to the meter 114 to respond to node scans going forward. The meter 114 remains
registered but will respond to node scans in the same manner as an unregistered node as
described above. In other embodiments, all registered meters may be permitted to respond to
node scans, but a meter will only respond to a node scan if the path to the collector through the
meter that issued the node scan is shorter (i.e., less hops) than the meter’s current path to the
collector. A lesser number of hops is assumed to provide a more reliable communication path
than a longer path. A node scan request always identifies the level of the node that transmits the
request, and using that information, an already registered node that is permitted to respond to
node scans can determine if a potential new path to the collector through the node that issued the
node scan is shorter than the node’s current path to the collector.
If an already registered meter 114 responds to a node scan procedure, the
collector 116 recognizes the response as originating from a registered meter but that by re-
registering the meter with the node that issued the node scan, the collector may be able to switch
the meter to a new, more reliable path. The collector 116 may verify that the RSSI value of the
node scan response exceeds an established threshold. If it does not, the potential new path will be
rejected. However, if the RSSI threshold is met, the collector 116 will request that the node that
issued the node scan perform the qualification process described above (i.e., send a
predetermined number of packets to the node and count the number of acknowledgements
received). If the resulting qualification score satisfies a threshold, then the collector will register
the node with the new path. The registration process comprises updating the collector 116 and
meter 114 with data identifying the new repeater (i.e. the node that issued the node scan) with
which the updated node will now communicate. Additionally, if the repeater has not previously
performed the operation of a repeater, the repeater would need to be updated to identify that it is
a repeater. Likewise, the repeater with which the meter previously communicated is updated to
identify that it is no longer a repeater for the particular meter 114. In other embodiments, the
threshold determination with respect to the RSSI value may be omitted. In such embodiments,
only the qualification of the last “hop” (i.e., sending a predetermined number of packets to the
node and counting the number of acknowledgements received) will be performed to determine
whether to accept or reject the new path.
In some instances, a more reliable communication path for a meter may exist
through a collector other than that with which the meter is registered. A meter may automatically
recognize the existence of the more reliable communication path, switch collectors, and notify
the previous collector that the change has taken place. The process of switching the registration
of a meter from a first collector to a second collector begins when a registered meter 114
receives a node scan request from a collector 116 other than the one with which the meter is
presently registered. Typically, a registered meter 114 does not respond to node scan requests.
However, if the request is likely to result in a more reliable transmission path, even a registered
meter may respond. Accordingly, the meter determines if the new collector offers a potentially
more reliable transmission path. For example, the meter 114 may determine if the path to the
potential new collector 116 comprises fewer hops than the path to the collector with which the
meter is registered. If not, the path may not be more reliable and the meter 114 will not respond
to the node scan. The meter 114 might also determine if the RSSI of the node scan packet
exceeds an RSSI threshold identified in the node scan information. If so, the new collector may
offer a more reliable transmission path for meter data. If not, the transmission path may not be
acceptable and the meter may not respond. Additionally, if the reliability of communication
between the potential new collector and the repeater that would service the meter meets a
threshold established when the repeater was registered with its existing collector, the
communication path to the new collector may be more reliable. If the reliability does not exceed
this threshold, however, the meter 114 does not respond to the node scan.
If it is determined that the path to the new collector may be better than the path
to its existing collector, the meter 114 responds to the node scan. Included in the response is
information regarding any nodes for which the particular meter may operate as a repeater. For
example, the response might identify the number of nodes for which the meter serves as a
repeater.
The collector 116 then determines if it has the capacity to service the meter and
any meters for which it operates as a repeater. If not, the collector 116 does not respond to the
meter that is attempting to change collectors. If, however, the collector 116 determines that it has
capacity to service the meter 114, the collector 116 stores registration information about the
meter 114. The collector 116 then transmits a registration command to meter 114. The meter 114
updates its registration data to identify that it is now registered with the new collector. The
collector 116 then communicates instructions to the meter 114 to initiate a node scan request.
Nodes that are unregistered, or that had previously used meter 114 as a repeater respond to the
request to identify themselves to collector 116. The collector registers these nodes as is described
above in connection with registering new meters/nodes.
Under some circumstances it may be necessary to change a collector. For
example, a collector may be malfunctioning and need to be taken off-line. Accordingly, a new
communication path must be provided for collecting meter data from the meters serviced by the
particular collector. The process of replacing a collector is performed by broadcasting a message
to unregister, usually from a replacement collector, to all of the meters that are registered with
the collector that is being removed from service. In one embodiment, registered meters may be
programmed to only respond to commands from the collector with which they are registered.
Accordingly, the command to unregister may comprise the unique identifier of the collector that
is being replaced. In response to the command to unregister, the meters begin to operate as
unregistered meters and respond to node scan requests. To allow the unregistered command to
propagate through the subnet, when a node receives the command it will not unregister
immediately, but rather remain registered for a defined period, which may be referred to as the
“Time to Live”. During this time to live period, the nodes continue to respond to application
layer and immediate retries allowing the unregistration command to propagate to all nodes in the
subnet. Ultimately, the meters register with the replacement collector using the procedure
described above.
One of collector’s 116 main responsibilities within subnet 120 is to retrieve
metering data from meters 114. In one embodiment, collector 116 has as a goal to obtain at least
one successful read of the metering data per day from each node in its subnet. Collector 116
attempts to retrieve the data from all nodes in its subnet 120 at a configurable periodicity. For
example, collector 116 may be configured to attempt to retrieve metering data from meters 114
in its subnet 120 once every 4 hours. In greater detail, in one embodiment, the data collection
process begins with the collector 116 identifying one of the meters 114 in its subnet 120. For
example, collector 116 may review a list of registered nodes and identify one for reading. The
collector 116 then communicates a command to the particular meter 114 that it forward its
metering data to the collector 116. If the meter reading is successful and the data is received at
collector 116, the collector 116 determines if there are other meters that have not been read
during the present reading session. If so, processing continues. However, if all of the meters 114
in subnet 120 have been read, the collector waits a defined length of time, such as, for example,
4 hours, before attempting another read.
If during a read of a particular meter, the meter data is not received at collector
116, the collector 116 begins a retry procedure wherein it attempts to retry the data read from the
particular meter. Collector 116 continues to attempt to read the data from the node until either
the data is read or the next subnet reading takes place. In an embodiment, collector 116 attempts
to read the data every 60 minutes. Thus, wherein a subnet reading is taken every 4 hours,
collector 116 may issue three retries between subnet readings.
Meters 114 are often two-way meters – i.e. they are operable to both receive and
transmit data. However, one-way meters that are operable only to transmit and not receive data
may also be deployed. Figure 4 is a block diagram illustrating a subnet 401 that includes a
number of one-way meters 451-456. As shown, meters 114a-k are two-way devices. In this
example, the two-way meters 114a-k operate in the exemplary manner described above, such
that each meter has a communication path to the collector 116 that is either a direct path (e.g.,
meters 114a and 114b have a direct path to the collector 116) or an indirect path through one or
more intermediate meters that serve as repeaters. For example, meter 114h has a path to the
collector through, in sequence, intermediate meters 114d and 114b. In this example embodiment,
when a one-way meter (e.g., meter 451) broadcasts its usage data, the data may be received at
one or more two-way meters that are in proximity to the one-way meter (e.g., two-way meters
114f and 114g). In one embodiment, the data from the one-way meter is stored in each two-way
meter that receives it, and the data is designated in those two-way meters as having been
received from the one-way meter. At some point, the data from the one-way meter is
communicated, by each two-way meter that received it, to the collector 116. For example, when
the collector reads the two-way meter data, it recognizes the existence of meter data from the
one-way meter and reads it as well. After the data from the one-way meter has been read, it is
removed from memory.
While the collection of data from one-way meters by the collector has been
described above in the context of a network of two-way meters 114 that operate in the manner
described in connection with the embodiments described above, it is understood that the present
invention is not limited to the particular form of network established and utilized by the meters
114 to transmit data to the collector.
As set forth above, various techniques are disclosed herein for efficient
modification of data in non-volatile memory. A flowchart of an example process for providing
information for modifying data in non-volatile memory is shown in Figure 5A. At operation
510, an update, such as a firmware update, may be generated for a first portion of data, such as
firmware or a portion of firmware. In some cases, the update may be a new version of firmware
that may include, for example, various new and/or improved features in comparison to previous
versions of firmware. The first portion of data may, for example, be stored and executed on a
number of devices that are being updated, which are referred to herein as update devices. As an
example, the update devices may be utility meters that measure, collect and transmit data such as
the example meter devices described in detail above. In some cases, the update devices may
communicate with one or more control devices such as the example collector described in detail
above. The control devices are devices that communicate with and assist in controlling of the
update devices. The update devices may sometimes communicate with control devices using
wireless communication techniques such as the example wireless communication techniques set
forth in detail above. As will be described in detail below, the first portion of data may be stored
at one or more update devices in, for example, flash memory.
At operation 512, one or more modifications to a second portion of data are
determined. The second portion of data may, for example, include data that is used in
combination with the first portion of data. For example, the second portion of data may include
various data items, data structures, values, definitions, parameters, constraints, formats, routines,
codes, tables, objects, files and/or other information that may be used in combination with the
first portion of data. In some cases, the second portion of data may include configuration data
that is used in combination with the first portion of data. Also, in some cases, the second portion
of data may include load profile data such as meter measurements, voltage and wattage values
and the like. As will be described in detail below, the second portion of data may be stored at
one or more update devices in non-volatile memory such as, for example, an EEPROM.
The modifications determined at operation 512 may, for example, include
modifications that assist in allowing the second portion of data to be used in combination with
the first portion of data after application of the update to the first portion of data. For example,
in some cases, one or more previously existing data items may be deleted from the second
portion of data. Also, in some cases, one or more new data items may be inserted into the
second portion of data. Also, in some cases, one or more data items may be copied and/or
moved to different locations within the second portion of data. Also, in some cases, one or more
data items within the second portion of data may be changed. Such changes may include, for
example, changes in format or representation of existing data items within the second portion of
data.
Figure 6 depicts some example modifications to a second portion of data such as
may be determined at operation 512. As shown, Figure 6 includes a pre-modification second
portion of data 620 and a post-modification second portion of data 630. Each of the depicted
data portions 620 and 630 include data ranges 601-606 of arbitrary size and four data tables 610-
613. In pre-modification second portion of data 620, data range 606 includes unused data 614.
By comparing data portions 620 and 630, it can be seen that table 611 had increased in size in
data portion 630 as compared to data portion 620. In particular, table 611 occupies two data
ranges in data portion 630 (ranges 603 and 604) as compared to only a single data range in data
portion 620 (range 603). In addition to the expansion of table 611, table 613 is moved in data
portion 630 from data range 605 to data range 606, while table 612 is moved in data portion 630
from data range 604 to data range 605.
Data structures within a second portion of data, such as table 611, may change
size when, for example, there is a need to increase or decrease the amount of data that is
associated with such a structure. In one particular example, table 611 may store configuration
data associated with relays that are included within a meter. In some cases, a prior firmware
version (used in combination with pre-modification second portion of data 620) could include
configuration data for two relays, while a subsequent firmware version (used in combination
with post-modification second portion of data 630) could include configuration data for four
relays. Thus, the size of table 611 may increase in size in order to accommodate configuration
data for four relays as opposed to two relays.
At operation 514, a set of tasks is generated. In some cases, performing each
task in the set of tasks may result in application of the modifications to the second portion of data
that are determined at operation 512. Each task in the set of tasks may, for example, include
instructions for performing one or more respective modifications to the second portion of data.
The set of tasks may include, for example, one or more memory fill tasks, one or more memory
move tasks, one or more invoke function tasks and/or one or more other tasks. In some cases,
for a particular task, one or more memory addresses may be given, such as a destination memory
address of a copy or fill operation or a memory address of a function to be invoked. Also, in
some cases, for a particular task, additional parameters may be provided, such as values to use
for filling memory, a length of block to be copied and many others. In some cases, the tasks may
be generated based upon detailed knowledge of both pre-modification and post-modification
memory maps associated with the second portion of data.
As an example, the modifications to the second portion of data depicted in
Figure 6 may, in some cases, result in a number of tasks being generated at operation 514. For
example, in post-modification second portion of data 630, table 613 is moved from data range
605 to data range 606. This may cause, for example, a first task to be generated at operation 514
to copy and move data stored in data range 605 to data range 606. Additionally, in post-
modification second portion of data 630, table 612 is moved from data range 604 to data range
605. This may cause, for example, a second task to be generated at operation 514 to copy and
move data stored in data range 604 to data range 605. Furthermore, in post-modification second
portion of data 630, table 611 is expanded from data range 603 to both data ranges 603 and 604.
This may cause, for example, a third task to be generated at operation 514 to fill data range 604
with a particular data value such as all ones or all zeroes. The data value used to fill data range
604 may, in some cases, serve as a placeholder until more pertinent data, such as configuration
data, can be written into the data range 604.
In some cases, it may be necessary to perform tasks in a particular order. For
example, for the first, second and third tasks described in the above paragraph, it may be
necessary to perform the first task first, to perform the second task second and to perform the
third task third. Thus, in some cases, the tasks generated at operation 514 may include or
otherwise be associated with a particular order of operation that specifies in order in which tasks
should be performed relative to one another.
Another example of a task that may be generated at operation 514 is an invoke
function task. One example of an invoke functions task might be to recode a configuration
parameter from packed binary coded decimal (BCD) values to two's complement integer values.
In this case, some example parameters associated with an invoke function task may include a
location of an executable routine in the second portion of data, locations of packed BCD values
to be changed, destination locations in the second portion of data for the resulting two’s
compliment values and the lengths of each.
At operation 516, the update to the first portion of data and the set of tasks are
transmitted to one or more update devices. In some cases, the update devices may include one or
more utility meters such as those described above. Also, in some cases, the update to the first
portion of data and the set of tasks may be transmitted by a control device such as the example
collector described in detail above. In some cases, the update to the first portion of data and the
set of tasks may be transmitted together to a particular update device. For example, the update
and the set of tasks may be transmitted as part of the same transmission or group of related
transmissions. In some other cases, the update to the first portion of data and the set of tasks
may be transmitted separately to a particular update device. In some cases, the update to the first
portion of data and the set of tasks may be transmitted using wireless communications
techniques such as those set forth in detail above with respect to Figures 1-4.
Figure 5B is a flowchart of an example process for modifying data in non-
volatile memory. The operations depicted in Figure 5B may, in some cases, be performed by
each update device to which an update and set of tasks are transmitted at operation 516. For
purposes of simplicity, the operations are described below as being performed by a single update
device. However, this is not intended to preclude the operations depicted in Figure 5B from
being performed by multiple update devices. Referring now to Figure 5B, at operation 518, the
update to the first portion of data and the set of tasks are received by an update device. In some
cases, the update to the first portion of data and the set of tasks may be received together at a
particular update device. For example, the update and the set of tasks may be received as part of
the same transmission or group of related transmissions. In some other cases, the update to the
first portion of data and the set of tasks may be received separately at a particular update device.
At operation 520, the update device applies the update to the first portion of
data. For example, as set forth above, the update may be an update to firmware or a portion of
firmware. The first portion of data may be stored in the update device in a first portion of
memory. The first portion of memory may be, for example, flash memory, and the update may
be applied to the first portion of data by, for example, re-flashing the first portion of memory. It
is noted, however, that the invention is not limited to updating of flash memory. It is further
noted that the invention is not limited to any particular technique for updating of memory. Any
suitable memory update technique may be employed for application of the update to the first
portion of data at operation 520.
At operation 522, the update device stores the set of tasks in a third portion of
memory. Example memory portions of an update device are shown in Figure 7. As shown,
update device 705 includes first portion of memory 711, second portion of memory 712 and third
portion of memory 713. It is noted that, while Figure 7 depicts all three memory portions 711,
712 and 713 as being within update device 705, the three portions of memory 711, 712 and 713
do not necessarily need to be in the same physical device or in the same address space relative to
a particular meter processor. As set forth above, the first portion of data may be stored in first
portion of memory 711, and the update 721 may be applied to the first portion of data in the first
portion of memory 711. As also set forth above, the second portion of data may be stored in the
second portion of memory 712. The second portion of memory may be, for example, non-
volatile memory, such as an EEPROM. As also set forth above, the set of tasks 723 may be
stored in the third portion of memory 713. The third portion of memory may, for example, be
memory that remains intact, at least temporarily, when not powered. This may include, for
example, static random-access memory (SRAM). Storing the set of tasks in memory that
remains intact, at least temporarily, when not powered may be advantageous because, for
example, it may allow the set tasks to remain intact, at least temporarily, after a power failure at
the update device.
Referring back to Figure 5B, at operation 524, the update device modifies the
second portion of data by performing each task in the set of tasks. Also, referring back to Figure
7, a graphical depiction of operation 524 is illustrated in a dashed box below update device 705.
The graphical depiction in the dashed box indicates that the set of tasks 723 are used to convert
pre-modification second portion of data 732A stored in second portion of memory 712 into post-
modification second portion of data 732B stored in second portion of memory 712.
As set forth above, each task in the set of tasks may, for example, include
instructions for performing one or more respective modifications to the second portion of data.
The set of tasks may include, for example, one or more memory fill tasks, one or more memory
move tasks, one or more invoke function tasks and/or one or more other tasks. As also set forth
above, in some cases, a task may include, for example, one or more memory addresses, such as a
destination memory address of a copy or fill operation or a memory address of a function to be
invoked. A task may also include, for example, additional parameters, such as values to use for
filling memory, a length of block to be copied and many others. Some examples of how various
tasks may be employed move and fill memory in the context of an example expansion of a data
table are described in detail above with reference to Figure 6.
In some cases, the set of tasks may be stored in memory and processed as a
tokenized list of tasks. An example task listing 800 is depicted in Figure 8. As shown task
listing 800 includes a task identifier column 802, which identifies a set of tasks including six
tasks (task 811- task 816). As set forth above, in some cases, a set of tasks may have an
associated order of completion for each task in the set of tasks. This may be the order in which
the update device performs and completes the set of tasks. For example, in some cases, the
update device may not begin performance of a subsequently ordered task until each previously
ordered task is completed. The order of completion for a set of tasks may, in some cases, be
received by the update device in combination with the set of tasks and stored by the update
device. As shown in Figure 8, the task listing 800 has an associated order of completion 801, in
which task 811 is first, task 812 is second, task 813 is third, task 814 is fourth, task 815 is fifth
and task 816 is sixth.
In some cases, each task in the set of tasks may have an associated indicator,
maintained by the update device, that indicates whether the task is complete or not complete.
The associated indicator may be, for example, a bit whose value may be changed to indicate
when an associated task has been completed. As shown in task listing 800, each task 811-816
has an associated indicator bit 803. Each associated indicator bit 803 is set to zero when a
respective task is not complete, and each associated indicator bit 803 is changed to a value of one
after a respective task is completed. Figure 8 indicates that tasks 811-813 are complete, while
tasks 814-816 are not complete. In some cases, after a power failure and at the update device,
the update device can resume the modification of the second portion of data once power is
restored by examining information such as a task listing, an associated order of performance, and
an associated completion indicator to determine a next task in the order of performance that is
not yet completed. The update device may then, for example, resume the modification of the
second portion of data with the next task in the order of performance that is not yet completed.
For example, task listing 800 shown in Figure 8 may be resumed after a power restoration by
performing task 814, which is the next task in task order 801 that is not yet completed. This may
be advantageous by, for example, ensuring that previously completed tasks (i.e., tasks 811-813)
will not be repeated after a power failure and restoration at the update device.
In some cases, each task in the set of tasks may be performed and completed in
an atomic manner by the update device. The term atomic, as used herein, means that a particular
task may be either completed or may be interrupted and re-performed from the beginning
without loss or corruption of data. This means that, for example, if a power failure occurs during
a performance of a particular task (i.e., after performance of the task has started but prior to
completion of the task), then, once power is restored at the update device, the performance of the
task may be restarted from the beginning of the task. For example, if data in external EEPROM
areas is to be moved, it may be done to align with that particular device's physical page sizes to
improve the robustness of the overall process. This may be useful, for example, in a scenario in
which a device or component may be written one byte at a time but may only be erased as a page
at a time. In such cases, a page may, for example, only be erased when all of the data within it
has successfully been copied to another page.
Referring back to Figure 5B, after each task in the set of tasks is completed and
the second portion of data is successfully modified, then the set of tasks may be deleted from the
third portion of memory at operation 526.
Accordingly, various techniques are disclosed above for efficient modification
of data in non-volatile memory. In some cases, the disclosed techniques may allow data in non-
volatile memory to be modified without the need to send a copy of an entire pre-modified
version of non-volatile memory from each of one or more update devices to one or more control
devices. Additionally, in some cases, the disclosed techniques may allow data in non-volatile
memory to be modified without the need to send a copy of an entire post-modified version of
non-volatile memory from one or more control devices to each of one or more update devices.
All or portions of the subject matter disclosed herein may be embodied in
hardware, software, or a combination of both. When embodied in software, the methods and
apparatus of the subject matter disclosed herein, or certain aspects or portions thereof, may be
embodied in the form of program code (e.g., computer executable instructions). This program
code may be stored on a computer-readable medium, such as a magnetic, electrical, or optical
storage medium, including without limitation, a floppy diskette, CD-ROM, CD-RW, DVD-
ROM, DVD-RAM, magnetic tape, flash memory, hard disk drive, or any other machine-readable
storage medium, wherein, when the program code is loaded into and executed by a machine,
such as a computer or server, the machine becomes an apparatus for practicing the invention. A
device on which the program code executes will generally include a processor, a storage medium
readable by the processor (including volatile and non-volatile memory and/or storage elements),
at least one input device, and at least one output device. The program code may be implemented
in a high level procedural or object oriented programming language. Alternatively, the program
code can be implemented in an assembly or machine language. In any case, the language may be
a compiled or interpreted language. When implemented on a general-purpose processor, the
program code may combine with the processor to provide a unique apparatus that operates
analogously to specific logic circuits.
While systems and methods have been described and illustrated with reference
to specific embodiments, those skilled in the art will recognize that modification and variations
may be made without departing from the principles described above and set forth in the
following claims. Accordingly, reference should be made to the following claims as describing
the scope of the present invention.
Claims (20)
1. A wireless network comprising: a control device that transmits, to one or more update devices, an update to a first portion of data and a set of tasks for modifying a second portion of data, wherein the modifying comprises at least one of inserting, deleting, rearranging or changing at least part of the second portion of data, wherein the second portion of data is used in combination with the first portion of data, and wherein the modifying assists in allowing the second portion of data to be used in combination with the first portion of data subsequent to application of the update to the first portion of data; and one or more update devices each comprising: a first portion of memory in which the first portion of data is stored; a second portion of memory in which the second portion of data is stored, wherein the second portion of memory is non-volatile memory; and a third portion of memory, wherein each of the one or more update devices receives the update to the first portion of data and the set of tasks for modifying the second portion of data, applies the update to the first portion of data, stores the set of tasks in the third portion of memory and modifies the second portion of data by performing each task in the set of tasks.
2. The wireless network of claim 1, wherein the set of tasks comprises at least one of a memory fill task, a memory move task or an invoke function task.
3. The wireless network of claim 1, wherein each update device performs each task in the set of tasks in an atomic manner.
4. The wireless network of claim 1, wherein each update device maintains, for each task in the set of tasks, an associated indicator that indicates whether the task is complete or not complete.
5. The wireless network of claim 1, wherein each update device stores an order of performance for each task in the set of tasks.
6. The wireless network of claim 5, wherein, after a power failure and power restoration at a first update device, the first update device resumes modifying the second portion of data by performing a next non-completed task as indicated by the order of performance.
7. The wireless network of claim 1, wherein the first portion of memory is flash memory.
8. The wireless network of claim 1, wherein the second portion of memory is an EEPROM.
9. The wireless network of claim 1, wherein the third portion of memory is SRAM.
10. The wireless network of claim 1, wherein at least one of the one or more update devices is a meter.
11. A method for data modification comprising: receiving an update to a first portion of data and a set of tasks for modifying a second portion of data, wherein the first portion of data is stored in a first portion of memory, wherein the second portion of data is stored in a second portion of memory, wherein the second portion of memory is non-volatile, wherein the modifying comprises at least one of inserting, deleting, rearranging or changing at least part of the second portion of data, wherein the second portion of data is used in combination with the first portion of data, and wherein the modifying assists in allowing the second portion of data to be used in combination with the first portion of data subsequent to application of the update to the first portion of data; storing the set of tasks in a third portion of memory; applying the update to the first portion of data; and modifying the second portion of data by performing each task in the set of tasks.
12. The method of claim 11, wherein the set of tasks comprises at least one of a memory fill task, a memory move task or an invoke function task.
13. The method of claim 11, wherein each task in the set of tasks is performed in an atomic manner.
14. The method of claim 11, further comprising maintaining, for each task in the set of tasks, an associated indicator that indicates whether the task is complete or not complete.
15. The method of claim 11, further comprising storing an order of performance for each task in the set of tasks.
16. The method of claim 15, wherein, after a power failure and power restoration, the modifying of the second portion of data is resumed by performing a next non-completed task as indicated by the order of performance.
17. The method of claim 11, wherein the first portion of memory is flash memory.
18. The method of claim 11, wherein the second portion of memory is an EEPROM.
19. The method of claim 11, wherein the third portion of memory is SRAM.
20. A non-transitory processor-readable storage medium having stored thereon instructions that, upon execution by one or more processor, cause the processors to perform operations comprising: receiving an update to a first portion of data and a set of tasks for modifying a second portion of data, wherein the first portion of data is stored in a first portion of memory, wherein the second portion of data is stored in a second portion of memory, wherein the second portion of memory is non-volatile, wherein the modifying comprises at least one of inserting, deleting, rearranging or changing at least part of the second portion of data, wherein the second portion of data is used in combination with the first portion of data, and wherein the modifying assists in allowing the second portion of data to be used in combination with the first portion of data subsequent to application of the update to the first portion of data; storing the set of tasks in a third portion of memory; applying the update to the first portion of data; and modifying the second portion of data by performing each task in the set of tasks.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/339,737 | 2014-07-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
NZ709047A true NZ709047A (en) |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8320302B2 (en) | Over the air microcontroller flash memory updates | |
US8073384B2 (en) | Optimization of redundancy and throughput in an automated meter data collection system using a wireless network | |
AU2010200331B2 (en) | Other protocol message routing over a wireless network of metering devices | |
US8242931B2 (en) | Mobile meter reading for locating stolen utility meters | |
US20110188452A1 (en) | Mesh infrastructure utilizing alternative communication paths | |
US20140167735A1 (en) | Identifying phase connections in an electric distribution system | |
CA2725678C (en) | Safety interlocks for electricity meter control relays | |
US9160682B2 (en) | Wireless network communication nodes with opt out capability | |
US20140161114A1 (en) | Phase detection in mesh network smart grid system | |
US9078050B2 (en) | Techniques for clock recovery in a mobile information collection network following a power outage | |
US20160027516A1 (en) | Efficient modification of data in non-volatile memory | |
US9277297B2 (en) | Test mode support for metering accuracy tests | |
US8972524B2 (en) | Internet protocol message routing over a wireless network of metering devices | |
CA2799753C (en) | Voltage or contact closure sensor | |
NZ709047A (en) | Efficient modification of data in non-volatile memory | |
NZ597784B (en) | Test mode support for metering accuracy tests |