[Not Applicable]
[Not Applicable]
Electronic devices, such as mobile phones and personal digital assistants (PDA's), often contain firmware and/or application software that are either provided by the manufacturers of the electronic devices, by telecommunication carriers, or by third parties. These firmware and application software often contain bugs. New versions of firmware and software are periodically released to fix the bugs and/or to introduce new features.
Generating update packages in an efficient mode when at least a portion of the firmware and/or software to be updated is compressed and/or encrypted is a complex and challenging process. Updating code in electronic devices when the code to be updated is compressed and/or encrypted is also a challenging task.
Update programs, code, or functions employed to update the firmware and/or software components in electronic devices may also need to be changed, modified, and/or updated. However, portions or blocks of the information being updated may not fit into the memory available in the electronic device during an update. Changes to firmware and/or software components may need to be performed in a fault tolerant mode, however a fault tolerant update may be difficult to implement.
Electronic devices may employ non-volatile memory to store code and/or data. Sometimes, more than one type of memory device may be employed. Updating code and/or data distributed across multiple memory devices and memory device types may be difficult, especially, if the memory devices are produced by different manufacturers.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.
Aspects of the present invention may be found in a method of updating compressed information in an electronic device. The method may comprise decompressing at least one block of information to be updated, updating at least a portion of decompressed contents of the at least one block of information, and compressing the updated contents of the at least one block of information.
In an embodiment according to the present invention, the method may further comprise retrieving and updating one block at a time.
In an embodiment according to the present invention, the method may further comprise retrieving a plurality of blocks and updating one block at a time.
In an embodiment according to the present invention, the method may further comprise backing up the at least one block of information during an update.
In an embodiment according to the present invention, backing up the at least one block of information may comprise storing a compressed version of the at least block of information being updated.
In an embodiment according to the present invention, backing up the at least one block of information may comprise storing a decompressed updated version of the at least one block of information.
In an embodiment according to the present invention, updating at least a portion of decompressed contents of the at least one block of information may comprise overwriting at least a portion of the contents of the at least one block of information with updated information.
In an embodiment according to the present invention, updating at least a portion of decompressed contents of the at least one block of information may comprise modifying at least a portion of the contents of the at least one block of information with updated information.
In an embodiment according to the present invention, updating at least a portion of decompressed contents of the at least one block of information may comprise using a set of executable instructions to convert the at least a portion of decompressed contents to an updated contents.
In an embodiment according to the present invention, decompressing at least one block of information to be updated may comprise adjusting one of a size or length of the block of information during decompression.
In an embodiment according to the present invention, compressing the updated contents of the at least one block of information may comprise adjusting one of a size or length of the block of information during compression.
Aspects of the present invention may be found in a method of fault tolerant updating of compressed information in an electronic device. The method may comprise decompressing contents of at least one block of information to be updated, temporarily storing the at least one block of information, and compressing contents the at least one block of information after the contents have been updated.
In an embodiment according to the present invention, temporarily storing the at least one block of information may comprise storing the at least one block of information in compressed form before being updated.
In an embodiment according to the present invention, temporarily storing the at least one block of information may comprise storing the at least one block of information after contents of the at least one block of information have been updated.
In an embodiment according to the present invention, the method may further comprise updating at least a portion of one block of information one block at a time.
In an embodiment according to the present invention, updating at least a portion of one block of information may comprise updating decompressed contents of the at least one block of information by overwriting at least a portion of the decompressed contents of the at least one block of information with updated information.
In an embodiment according to the present invention, updating at least a portion of one block of information may comprise updating decompressed contents of the at least one block of information by modifying at least a portion of the decompressed contents of the at least one block of information with updated information.
In an embodiment according to the present invention, updating at least a portion of one block of information comprises updating decompressed contents of the at least one block of information by converting at least a portion of decompressed contents of the at least one block of information to an updated contents using a set of executable instructions.
In an embodiment according to the present invention, decompressing at least one block of information to be updated may comprise adjusting one of a size or length of the block of information during decompression.
In an embodiment according to the present invention, compressing the updated contents of the at least one block of information may comprise adjusting one of a size or length of the block of information during compression.
Aspects of the present invention may be found in a system for updating compressed information. The system may comprise at least one electronic device comprising compressed information and an update generator for generating updates for updating the compressed information resident in the at least one electronic device in a fault tolerant manner.
In an embodiment according to the present invention, the electronic device may comprise a compressed section of non-volatile memory. The compressed section may comprise at least one of compressed data and compressed code.
In an embodiment according to the present invention, the electronic device may comprise one of a unitary decompression/compression engine and a separate decompression engine and a separate compression engine.
In an embodiment according to the present invention, the electronic device may comprise a back-up non-volatile storage for ensuring continuity of an update procedure and preventing loss of information. At least one block of information may be stored in the back-up non-volatile storage during the update procedure.
In an embodiment according to the present invention, the electronic device may comprise random access memory for performing an update on decompressed blocks of information.
In an embodiment according to the present invention, the electronic device may comprise a non-volatile memory adapted to contain blocks of information comprising one of a uniform size and a uniform length.
In an embodiment according to the present invention, the electronic device may comprise a random access memory adapted to contain blocks of information comprising one of a variable size and a variable length.
In an embodiment according to the present invention, the electronic device comprises one of a unitary ciphering/deciphering engine and a separate ciphering engine and a separate deciphering engine.
These and other advantages, aspects, and novel features of the present invention, as well as details of illustrated embodiments, thereof, will be more fully understood from the following description and drawings.
Electronic devices may be adapted to access servers to retrieve update information for updating electronic devices. An electronic device may be, for example, a mobile electronic device having software/firmware, such as, mobile cellular phone handsets, personal digital assistants (PDA's), pagers, MP3 players, digital cameras, etc. Update information may comprise information that modifies or changes firmware and/or software components installed in the electronic device. Update information may also add new services to the electronic device, as desired by a service provider, device manufacturer, or an end-user.
Aspects of the present invention may be found in a fault tolerant method of updating a compressed information file. The compressed information file may be stored in compressed form in a non-volatile memory device, for example, a flash memory device. The compressed information file may comprise code and/or data. The memory may be erased before reprogramming. The memory may be overwritten, without being erased, during updating and/or reprogramming.
In an embodiment according to the present invention, a fault tolerant method may comprise preventing loss of information, in the event that power failure occurs, during a reprogramming event. In an embodiment according to the present invention, a fault tolerant method may comprise ensuring continuity of an updating and/or reprogramming procedure, in the event that power failure occurs, during the updating and/or reprogramming procedure.
Information, residing in the electronic devices to be updated, may comprise code and/or data. The code and/or data may be organized/arranged in units or blocks of information. The blocks of information may also be called compressed units/blocks and update units/blocks herein. In an embodiment according to the present invention, the size of a particular memory block in non-volatile memory may be fixed and may be a parameter of a manufacturer's hardware configuration of an electronic device. In an embodiment according to the present invention, the size of a particular memory block usable for updating may be variable according to the demands placed upon the memory during a processing event.
In an embodiment according to the present invention, a compressed unit/block may comprise a set of compressed code/data. In an embodiment according to the present invention, compression and decompression of the code/data may be performed independently, for example, one block or unit at a time. In an embodiment according to the present invention, several or all of the blocks may be compressed and decompressed simultaneously. The size of a compressed unit/block may be arranged according to particular electronic device memory constraints. The electronic device memory may be arranged as a single block of memory or a plurality of memory sub-blocks.
In an embodiment according to the present invention, an update unit/block may comprise a logical block of memory in random access memory (RAM). When a compressed unit/block is decompressed from non-volatile memory (NVM) into RAM, the block may be designated an update unit/block because the decompressed block may be changed, modified, overwritten, and/or updated.
In an embodiment according to the present invention, an update generator may be adapted to generate an update unit/block or a set comprising a plurality of update unit/blocks for use in updating one of firmware and/or software in electronic devices. Each update unit/block may have the same or a different size or length, i.e., the amount of decompressed information resident in each update unit/block may vary from block to block. Each compressed block may comprise a uniform length. Each update unit/block may have a variable size or length.
An update package may comprise a firmware/software update that may be used to modify or change a version of a particular firmware/software, for example, upgrading to a newer version. The information in the update package may comprise, for example, a set of executable instructions for converting a first version of firmware/software (“code”) to a second version of code. In an embodiment according to the present invention, an update package may also add new services to the electronic device or delete services, as desired by the service provider or an end-user. An update package may also be referred to in abbreviated form herein as an update.
In an embodiment according to the present invention, the electronic device may comprise an update generator. The update generator may be adapted to process (i.e., update) update units/blocks. In an embodiment according to the present invention, updating update units/blocks may comprise overwriting the decompressed information resident in the update units/blocks with new or different (updated) information.
In an embodiment according to the present invention, the update generator may be adapted to process (i.e., update) update units/blocks comprising a plurality of non-uniform (i.e., variable) sizes. The ability of the update generator to process (i.e., update) update units/blocks is not hampered by update units/blocks comprising variable amounts of decompressed information (i.e., those having variable size or length).
In an embodiment according to the present invention, the update generator may also be adapted to determine different split boundaries between individual update units/blocks. For example, a different split boundary may be employed after the update units/blocks have been updated in order to permit the variable-sized updated blocks to be compressed into blocks of fixed size for storage in the NVM. The size may be fixed in accordance with electronic device specifications or by the non-volatile memory device specifications.
In
The electronic device network, for example, mobile handset network 105, may also comprise an update store 153 operatively connected to the update generator 155. The update store 153 may be adapted to serve as a repository for one or a plurality of partially or wholly generated updates. The electronic device network, for example, mobile handset network 105, may also comprise a delivery server 145 adapted to dispense generated updates via a communication link 199 to a plurality of electronic devices, for example, mobile handset 107. The delivery server 145 may be operatively connected to the update store 153 and therefore also to the update generator 155 according to an embodiment of the present invention.
The operative connections between update generator 155, the update store 153, and the delivery server 145 illustrated in
In an embodiment according to the present invention, an electronic device, for example, mobile handset 107 may be adapted to retrieve generated updates from the delivery server 145 to update firmware 117 and/or software components resident in the electronic device. In an embodiment according to the present invention, at least a portion of firmware 117 and/or software components resident in the electronic device may be compressed and/or encrypted.
In an embodiment according to the present invention, compression algorithms may be installed in the electronic devices, for example, mobile handset 107. The installed compression algorithms may be implemented in hardware in an embodiment according to the present invention. The installed compression algorithms may be implemented in firmware 117 and/or software components in another embodiment according to the present invention.
In an embodiment according to the present invention, the compression algorithms may be employed to decompress compressed code and/or compressed data segments that may be stored in the compressed data section 143 and the compressed code section 141, respectively, in a compressed section 137. The decompressed code and/or data segments may be updated in RAM 125 using updates downloaded or otherwise transferred to the electronic device, for example, mobile handset 107. Once the decompressed code is updated, (e.g., updates may be performed in a fault tolerant mode), the code may be compressed again and stored in non-volatile memory in the electronic device.
In an embodiment according to the present invention, fault tolerant updating of firmware 117 and/or software components comprising compressed code and/or compressed data segments may be conducted in the electronic device, for example, mobile handset 107. A fault tolerant update agent, for example, update agent 113, may be employed to update the firmware 117 and/or software components in electronic devices, for example, mobile handset 107.
In an embodiment according to the present invention, the compression and decompression algorithms may be embedded in a compression engine accessible by the update generator. In an embodiment according to the present invention, the compression engine may comprise a software engine accessible by the update generator.
In an embodiment according to the present invention, electronic devices, for example, mobile handset 107, may comprise compression and decompression components 135, an update download client 121, a security services component 123, and a compressed section 137. The compressed section 137 may at least comprise a compressed data section 143 and a compressed code section 141. The compressed section may comprise non-volatile memory. The electronic devices, for example, mobile handset 107, may also comprise a provisioned data component 129. The provisioned data component 129 may at least comprise an update agent (UA) provisioning information section 131 and a number assignment module (NAM) 133.
In an embodiment according to the present invention, the electronic devices, for example, mobile handset 107 may also comprise an operating system (OS) 119, firmware 117, update agent 113, and an update application (UA) loader 127. The update agent 113 may be capable of employing the compression and decompression components 135 to update the firmware 117 and/or software component in the electronic devices, for example, mobile handset 107.
In an embodiment according to the present invention, at least a portion of the firmware 117 and/or software components may be compressed and reside in the compressed section 137, that may comprise a non-volatile memory. In an embodiment according to the present invention, the update agent 113 may be capable of conducting fault-tolerant updates.
In an embodiment according to the present invention, the update agent 113 may comprise an update core engine (not shown in
In an embodiment according to the present invention, the update generator 155 may be capable of processing an old memory image and a new memory image of electronic device firmware 117 and/or software components in creating an update. At least a portion of the firmware 117 and/or software components may be compressed employing compression techniques, ciphered employing ciphering techniques, and encrypted employing encryption techniques. At least a portion of the firmware 117 and/or software components may be decompressed employing decompression techniques, deciphered employing deciphering techniques, and decrypted employing decryption techniques. The compression techniques employed in the electronic device network and the electronic devices themselves may comprise, for example, zip, gzip, winzip, LZ compression, etc., for example.
In an embodiment according to the present invention, the compression/decompression engine 157 in update generator 155 may decompress the compressed data and/or compressed code in both the old memory image and the new memory image to generate an update usable to update a current memory image of the electronic devices, for example, mobile handset 107.
In an embodiment according to the present invention, electronic devices, for example, mobile handset 107 may comprise and employ NAND-type non-volatile memory 152 (that may also be referred to as NAND-flash memory) to store data and/or code. The NAND-type non-volatile memory may be used to back up information (as a backup resource) currently being updated to ensure fault tolerant updating, i.e., avoiding loss of information and ensuring continuity of an update in the event a power failure should occur during the update procedure. The stored data and/or code may be decompressed by the compression and decompression component 135 in the electronic device, for example mobile handset 107.
In an embodiment according to the present invention, updating the code/data in the NAND-type memory 152 by update agent 113 may require retrieving components (code and/or data) one block at a time. By backing up a single block of information (code and/or data) at a time, continuity of an update in the event of a power failure during the update may be ensured. Additionally, by backing up a single block of information (code and/or data) at a time, loss of information may be avoided. In an embodiment according to the present invention, the retrieved components may also be decompressed one block at a time during retrieval.
In an embodiment according to the present invention, a block of code/data in the NAND-type memory 152 may be decompressed to restore the code/data in the blocks while updating a current block in RAM 125. In an embodiment according to the present invention, the current block in the RAM 125 may be updated in fault tolerant mode. In an embodiment according to the present invention, the updated block may be written back into the NAND-type memory 152 for subsequent restoration.
In an embodiment according to the present invention, a working bank of memory in the RAM 125 may be expanded beyond one block in length. A decompressed current block from the NAND-type memory 152 may occupy more than one block in RAM 125. After update completion, the decompressed code/data in the working block may be written back into the current block in NAND-type memory 152.
An update agent, for example, update agent 113 illustrated in
In an embodiment according to the present invention, the plurality of update blocks 213 of code/data may be updated to create the plurality of updated blocks 215 of code/data, one block at a time. In another embodiment according to the present invention, all of the plurality of update blocks 213 of code/data may be simultaneously updated by a plurality of updates, creating the plurality of updated blocks 215 of code/data. After update completion, the updated blocks 215 of code/data may be compressed into second compressed units 217 (for example, CU x, CU a, . . . , CU f) and may be copied into non-volatile memory 277.
In an embodiment according to the present invention, an update generator, for example, update generator 155 illustrated in
In an embodiment according to the present invention, firmware and/or software components resident in electronic devices may be updated. In prior art electronic devices, when/if a power failure occurs during an update of an electronic device, the potential exists for information (code/data) to be lost or misplaced in the electronic device. Information residing in RAM, for example, may be particularly vulnerable because information in RAM is lost when power to the RAM is interrupted. Information residing in a non-volatile memory when/if a power failure occurs may be safely retained. However, upon power-up, the electronic device may not be able to locate, properly address, and/or identify the stored information, rendering the stored information unusable. The loss of information during an update may damage the electronic device and/or render the electronic device inoperable. In an embodiment according to the present invention, loss of update information may be prevented, by employing the fault tolerant updating method set forth herein.
Referring to
The decompressed blocks 313 may be retrieved, for example, one block at a time, from the RAM 388 and placed in a first working buffer 369 of variable length. In the first working buffer 369, the update block 313 may be updated. In an embodiment according to the present invention, updating may comprise overwriting/modifying the entire contents of the update block 313 in the first working buffer 369 with different/updated information. In an embodiment according to the present invention, updating may comprise overwriting a portion of the contents of the update block 313 in the first working buffer 369 with different/updated information.
After the update block 313 has been updated, a back-up copy of the updated block may be compressed from the first working buffer 369 to a second working buffer 366. The first working buffer 369 may comprise blocks having varying lengths to facilitate updating. The second working buffer 366 may comprise blocks having uniform lengths corresponding to the uniform length of blocks in the non-volatile memory device, for example, NVM 377. The contents of the first working buffer 369 may be compressed into the second working buffer 366, and subsequently into the back-up NVM 363. By saving the compressed update block in the back-up NVM 363, should a power failure occur, the electronic device, upon re-boot and restart, may continue the update without loss of information and/or continuity. The update may resume where the update was abruptly interrupted by the power failure.
The updated block 315 may also be compressed from the first working buffer 369 into RAM 388. The updated block 315 may also be stored in NVM 377. A previous block, for example block 317 in NVM 377 may be overwritten with the compressed updated block of information.
Aspects of the present invention may be found in avoiding loss of information and ensuring continuity of an update procedure when performing updates of firmware and/or software components in electronic devices by backing up an updated block of information in a fault tolerant manner. Updates may be performed on update blocks, for example, 499, 488, and 455, and each update block may be updated independent of other update blocks, i.e., each update block may receive different update information than any other update block. An update block, for example, 499, 488, and 455, may be reconstructed, in the event of update interruption due to a power failure, for example, by evaluating the stored corresponding compressed block stored in backup source 464, for example, or by evaluating information stored where the update block originated (for example, in non-volatile memory).
Storing (backing-up) a compressed block corresponding to a current working update block during the update procedure in backup source 464, for example, may ensure that loss of information is avoided. Therefore, a fault tolerant update may comprise safeguarding update information (the compressed block stored in backup source 464) so that a current working block (the block being updated) may be reconstructed should a power failure occur during the update.
Aspects of the present invention may be found in a method of performing a fault tolerant update on an information file (e.g., code/data) in an electronic device. In an embodiment according to the present invention, an information file (i.e., block of information) may be stored in compressed form in non-volatile memory 477, for example, in an electronic device while the decompressed information file (i.e., block of information) is being updated in RAM, for example, RAM 388 illustrated in
In an embodiment according to the present invention, when a compressed block of information is decompressed out of NVM 411 into RAM, for example, RAM 388 illustrated in
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
The present application makes reference to, claims priority to, and the benefit of U.S. Provisional Patent Application 60/523,402 entitled “MOBILE HANDSET NETWORK WITH SUPPORT FOR COMPRESSION AND DECOMPRESSION IN THE MOBILE HANDSET”, filed Nov. 19, 2003, the complete subject matter of which is hereby incorporated herein by reference in its entirety. The present application makes reference to U.S. Provisional Patent Application 60/491,831 entitled “MOBILE HANDSET NETWORK WITH SUPPORT FOR COMPRESSION AND DECOMPRESSION IN THE MOBILE HANDSET AND GENERATOR”, filed Jul. 31, 2003, the complete subject matter of which is hereby incorporated herein by reference in its entirety. The present application also hereby incorporates herein by reference in its entirety, the complete subject matter of PCT Application having publication number WO 02/41147 A1 and PCT application number PCT/US01/44034, filed on Nov. 19, 2001. The present application also hereby incorporates herein by reference in its entirety, the complete subject matter of U.S. Provisional Patent Application 60/249,606 filed on Nov. 17, 2000. The present application also hereby incorporates herein by reference in its entirety, the complete subject matter of U.S. Provisional Patent Application 60/422,048, filed Oct. 29, 2002.
Number | Name | Date | Kind |
---|---|---|---|
5084816 | Boese et al. | Jan 1992 | A |
5261055 | Moran et al. | Nov 1993 | A |
5442771 | Filepp et al. | Aug 1995 | A |
5455576 | Clark et al. | Oct 1995 | A |
5479637 | Lisimaque et al. | Dec 1995 | A |
5537483 | Stapleton et al. | Jul 1996 | A |
5579522 | Christeson et al. | Nov 1996 | A |
5596738 | Pope | Jan 1997 | A |
5598534 | Haas | Jan 1997 | A |
5600844 | Shaw et al. | Feb 1997 | A |
5608910 | Shimakura | Mar 1997 | A |
5623604 | Russell et al. | Apr 1997 | A |
5666293 | Metz et al. | Sep 1997 | A |
5699548 | Choudhury et al. | Dec 1997 | A |
5752039 | Tanimura | May 1998 | A |
5778440 | Yiu et al. | Jul 1998 | A |
5790974 | Tognazzini | Aug 1998 | A |
5878256 | Bealkowski et al. | Mar 1999 | A |
5903669 | Hirabayashi | May 1999 | A |
5913021 | Masubuchi | Jun 1999 | A |
5960445 | Tamori et al. | Sep 1999 | A |
5968182 | Chen et al. | Oct 1999 | A |
5974312 | Hayes et al. | Oct 1999 | A |
5983289 | Ishikawa et al. | Nov 1999 | A |
6009497 | Wells et al. | Dec 1999 | A |
6018747 | Burns et al. | Jan 2000 | A |
6038636 | Brown, III et al. | Mar 2000 | A |
6064814 | Capriles et al. | May 2000 | A |
6073206 | Piwonka et al. | Jun 2000 | A |
6073214 | Fawcett | Jun 2000 | A |
6088759 | Hasbun et al. | Jul 2000 | A |
6104506 | Hirokawa | Aug 2000 | A |
6105063 | Hayes, Jr. | Aug 2000 | A |
6112024 | Almond et al. | Aug 2000 | A |
6112197 | Chatterjee et al. | Aug 2000 | A |
6126327 | Bi et al. | Oct 2000 | A |
6128695 | Estakhri et al. | Oct 2000 | A |
6138249 | Nolet | Oct 2000 | A |
6157559 | Yoo | Dec 2000 | A |
6163274 | Lindgren | Dec 2000 | A |
6198946 | Shin et al. | Mar 2001 | B1 |
6199204 | Donohue | Mar 2001 | B1 |
6209127 | Mori et al. | Mar 2001 | B1 |
6279153 | Bi et al. | Aug 2001 | B1 |
6301710 | Fujiwara | Oct 2001 | B1 |
6311322 | Ikeda et al. | Oct 2001 | B1 |
6334212 | Nakajima | Dec 2001 | B1 |
6343379 | Ozawa et al. | Jan 2002 | B1 |
6381740 | Miller et al. | Apr 2002 | B1 |
6408434 | Fujiwara | Jun 2002 | B1 |
6434695 | Esfahani et al. | Aug 2002 | B1 |
6438585 | Mousseau et al. | Aug 2002 | B2 |
6442358 | Regelsberger et al. | Aug 2002 | B1 |
6452602 | Morein | Sep 2002 | B1 |
6467087 | Yang | Oct 2002 | B1 |
6526574 | Jones | Feb 2003 | B1 |
6615038 | Moles et al. | Sep 2003 | B1 |
6615404 | Garfunkel et al. | Sep 2003 | B1 |
6647480 | Bolan et al. | Nov 2003 | B1 |
6668336 | Lasser | Dec 2003 | B2 |
6725056 | Moles et al. | Apr 2004 | B1 |
6725392 | Frey et al. | Apr 2004 | B1 |
6832373 | O'Neill | Dec 2004 | B2 |
6836657 | Ji et al. | Dec 2004 | B2 |
6845434 | Lin | Jan 2005 | B2 |
6892207 | McKay et al. | May 2005 | B2 |
6907478 | Li et al. | Jun 2005 | B2 |
6925467 | Gu et al. | Aug 2005 | B2 |
6928108 | Nelson et al. | Aug 2005 | B2 |
6970917 | Kushwaha et al. | Nov 2005 | B1 |
6988182 | Teachman et al. | Jan 2006 | B2 |
7082549 | Rao et al. | Jul 2006 | B2 |
20010029178 | Criss et al. | Oct 2001 | A1 |
20010047363 | Peng | Nov 2001 | A1 |
20010048728 | Peng | Dec 2001 | A1 |
20020069259 | Kushwaha et al. | Jun 2002 | A1 |
20020072359 | Moles et al. | Jun 2002 | A1 |
20020078209 | Peng | Jun 2002 | A1 |
20020112046 | Kuchwaha et al. | Aug 2002 | A1 |
20020112047 | Kuchwaha et al. | Aug 2002 | A1 |
20020116261 | Moskowitz et al. | Aug 2002 | A1 |
20020131404 | Mehta et al. | Sep 2002 | A1 |
20020144005 | Mae et al. | Oct 2002 | A1 |
20020152005 | Bagnordi | Oct 2002 | A1 |
20020156863 | Peng | Oct 2002 | A1 |
20020157090 | Anton, Jr. | Oct 2002 | A1 |
20030023964 | Rajaram et al. | Jan 2003 | A1 |
20030027563 | Herle et al. | Feb 2003 | A1 |
20030033599 | Rajaram et al. | Feb 2003 | A1 |
20030037075 | Hannigan et al. | Feb 2003 | A1 |
20030061384 | Nakatani | Mar 2003 | A1 |
20030074658 | Kim | Apr 2003 | A1 |
20030084435 | Messer et al. | May 2003 | A1 |
20030095648 | Kaib et al. | May 2003 | A1 |
20030121032 | Cho et al. | Jun 2003 | A1 |
20030162533 | Moles et al. | Aug 2003 | A1 |
20030186689 | Herle et al. | Oct 2003 | A1 |
20030198292 | Gold | Oct 2003 | A1 |
20040015952 | Lajoie et al. | Jan 2004 | A1 |
20040031031 | Rudelic | Feb 2004 | A1 |
20040034853 | Gibbons et al. | Feb 2004 | A1 |
20040054995 | Lee | Mar 2004 | A1 |
20040111723 | Moles et al. | Jun 2004 | A1 |
20040117785 | Kincaid | Jun 2004 | A1 |
20040133887 | Herle et al. | Jul 2004 | A1 |
20040152455 | Herle | Aug 2004 | A1 |
20040210608 | Lee et al. | Oct 2004 | A1 |
20040250294 | Kim | Dec 2004 | A1 |
20040261072 | Herle | Dec 2004 | A1 |
20040261073 | Herle et al. | Dec 2004 | A1 |
20050060699 | Kim et al. | Mar 2005 | A1 |
20050097544 | Kim | May 2005 | A1 |
20050138232 | Tamura et al. | Jun 2005 | A1 |
20050144609 | Rothman et al. | Jun 2005 | A1 |
20050144612 | Wang et al. | Jun 2005 | A1 |
20050160195 | Bruner et al. | Jul 2005 | A1 |
20050216902 | Schaefer | Sep 2005 | A1 |
20050216903 | Schaefer | Sep 2005 | A1 |
20060190939 | Chen et al. | Aug 2006 | A1 |
Number | Date | Country |
---|---|---|
2339923 | Mar 2000 | CA |
0717353 | Jun 1996 | EP |
7-160490 | Jun 1995 | JP |
7-219780 | Aug 1995 | JP |
8202626 | Aug 1996 | JP |
8-255104 | Oct 1996 | JP |
11-003223 | Jan 1999 | JP |
11-272454 | Oct 1999 | JP |
11-345127 | Dec 1999 | JP |
2002-0034228 | May 2000 | KR |
2001-0100328 | Nov 2001 | KR |
Number | Date | Country | |
---|---|---|---|
60491831 | Jul 2003 | US | |
60523402 | Nov 2003 | US |