METHOD AND APPARATUS FOR AUTONOMOUS MEMORY USAGE OPTIMIZATION AND DOWNLOADING OF SOFTWARE FEATURES

Abstract: A wireless communication device (102) monitors usage of certain features by a user of the device (202). If a feature is underutilized (204), a user may elect to have the feature deleted from memory (206), freeing the memory space for additional features (208). As an alternative to monitoring usage of certain features of a device, a communication system notifies a user that a feature will be deleted from the device (216). The device then deletes the feature, freeing the memory space for additional features (208). When a new feature is available for the wireless communication device, a message is broadcast to the device notifying users of the availability of the feature (304). If the user desires the new feature, the software code associated with the feature is downloaded to the communication device over the wireless interface (314). The device is then reconfigured to include the new feature for execution (316).

Description: METHOD AND APPARATUS FOR AUTONOMOUS MEMORY USAGE OPTIMIZATION AND DOWNLOADING OF SOFTWARE FEATURES Field of the Invention The present invention relates generally to electronic devices with memory for storing programs and features, and in particular, to a method and apparatus for updating memory usage and features in a wireless electronic device. Background of the Invention Wireless communication devices are known and presently widely used. These devices include pagers, cellular telephones, personal digital assistants and other electronic devices. Generally, wireless communication systems include portable or mobile subscriber units that communicate with fixed-end (i.e., not portable) systems that are geographically distributed or with other mobile subscriber units. Most wireless communication devices presently include a processor or central processing unit and memory. Also, input and output devices are provided for a user interface, for example, a keyboard and a display. The processor on the wireless communication device provides flexibility in that different stored programs are executed by the device to implement various features. The memory provided on wireless communication devices typically includes a non-volatile memory as well as a volatile memory. In general, the non-volatile memory is used to store programs, for example, an operating system and applications and permanent and semi-permanent user data, such as address books, telephone numbers, etc. In general, the volatile memory is used by the processor for temporary storage in the execution of programs. In general, wireless communication devices are sold with a fixed set of stored programs in memory. The device manufacturer loads the stored programs into the device. Usually, only reprogramming by a manufacturer changes the stored programs. This limits the flexibility of the wireless communication device after initial manufacture. In particular, since memory is finite, the number and variety of features sold with a device must be limited. This often requires a user to purchase features that are not desirable and or not used. Moreover, feature updates are limited, since the device must be returned to a manufacturer for reprogramming. One known method for increasing flexibility with communication devices is to supply the wireless communication device with a comprehensive set of features. Then, so-called "flex bits" are included with the device that may be set or reset via a wireless interface. The state of the flex bits determines whether a feature is enabled for use by the wireless communication device. While this solution provides some flexibility in the use of features, all possible features are required to be stored on the device, which is a non-optimal solution for the use of memory. Therefore, a need exists for optimal memory usage and feature expansion in wireless communication devices. __ Brief Description of the Drawings FIG. 1 is a block diagram of a wireless communication system with memory usage optimization and flexibility in accordance with the present invention. FIG. 2 is a flow chart illustrating a method to optimize memory usage in accordance with the present invention. FIG. 3 is a flow chart illustrating a method for downloading features to a wireless communication device in accordance with the present t invention. Detailed Description of the Preferred Embodiments Briefly, a method and apparatus are provided for optimizing memory usage in an electronic device. More specifically, the method and apparatus free up memory space in the electronic device by deleting unused or undesirable features autonomously. First, the features available for use on the device are monitored by the device to determine whether the features are actually utilized by a user. For example, an entry address for a particular feature is monitored by the processor on the device to determine whether the entry address is ever executed, reflecting whether the feature is ever utilized by a user. Preferably, the monitoring occurs over a predetermined period of time. Based on the utilization of the feature, the device determines whether the feature should continue to be made available to a user. This determination is alternatively automatic or performed with confirmation from the user. If the feature should not continue to be available to a user, the stored program code for execution of the feature is automatically deleted from the electronic device, making the space previously occupied by the feature available for use by another feature. As an alternative to monitoring the electronic device to determine whether a feature should be deleted, a fixed- end system requests or initiates the deletion of the feature using an over-the- air interface. In accordance with another aspect of the present invention, a method and apparatus are provided for down loading executable software code to an electronic device using a wireless or over-the-air interface. Preferably, a user is alerted to the availability of a new software feature by a broadcast message from a fixed-end system. If desired, the electronic device receives executable software code via the wireless interface on the device. After the electronic device receives the software, the device is configured to execute the new software code. Where applicable, reconfiguration of the electronic device includes updating a menu in a user interface and updating parameters to execute the new feature. The wireless communication device then executes the downloaded software code. The software code is downloaded into spare memory included with the electronic device or downloaded into memory space made available on the electronic device as a result of memory optimization in accordance with the method and apparatus discussed above. By virtue of the ability to free memory space that is not used and download new features to a wireless communication device, (i.e.. without the need to return the communication device to a manufacturer for reprogramming) features are flexibly updated and use of the communication device is customized and optimized for the user. FIG. 1 is a block diagram of a wireless communication system 100 in accordance with the present invention. System 100 includes a wireless electronic device 102 and a fixed-end system 104. Wireless communication device 102 and fixed-end system 104 communicate with each other via a wireless or over-the-air interface. Though one device 102 and one fixed-end system 104 are shown in FIG. 1 , a plurality of devices 102 and fixed-end systems 104 are generally employed in wireless communication system 100. Wireless communication system 100 is alternatively a wireless telephone system, a paging system, a personal communication system or a combination of these. Fixed-end system 104 includes a transceiver 106 and an antenna 108, which in combination implement an over-the-air or wireless interface for transmitting and receiving messages from devices 102. Fixed-end system 104 includes, or has an interface to, a database 110 for storing a myriad of data, including stored programs for features for devices 102. Preferably, fixed-end system 104 is a processor-based device that uses stored programs to implement protocols for communicating with devices 102. Fixed-end system 104 alternatively has interfaces to a telephone network and/or a data network, for example, the Internet, in accordance with the function of the wireless communication system 100. Wireless communication device 102 includes a processor 112, a memory 114, a wireless interface 116 and an antenna 118. Processor 112 is preferably a microprocessor that executes stored programs according to the function of device 102. Memory 114 is coupled to processor 112 and stores code and data for device 102. Wireless interface 116 is coupled to processor 112 and memory 114. Wireless interface 116 includes a transmitter 120 and a receiver 122. In conjunction with antenna 118, transmitter 120 and receiver 122 implement a wireless interface for over-the-air communications in a manner well known to those of skill in the art. In accordance with the present invention, memory 114 is optimized and updated to improve flexibility of device 102. Memory 114 is partitioned in any suitable manner according to the function of device 102. Preferably, memory 114 includes nonvolatile and volatile components. Most preferably memory 114 includes a code space 124, a user space 126 and random access memory (RAM) 128. Code space 124 is preferably nonvolatile RAM that is updateable, for example, electrically erasable, programmable, read-only memory (EEPROM) or FLASH memory. Code space 124 is used to store executable software for device 102, including an operating system and application code. The operating system and application code implement features for device 102. Preferably, the operating system and application code implement a menu-based user interface for a user to interact with device 102. Typically, a display (not shown) and an input device, such as a keyboard (not shown) are included with device 102 for interaction with a user. User space 126 is preferably updateable, nonvolatile memory, for example, FLASH memory. User space 126 is used to store data that is unique to a particular user of device 102. For example, user space 126 includes an address book, and a list of phone numbers. RAM 128 is preferably volatile RAM that is used for variables and other transient data utilized in the execution of stored programs by processor 112. In prior wireless electronic devices, the memory, analogous to memory 114, is partitioned and loaded during the device manufacturing process. The configuration of the memory is not changed, except if the device is returned to the manufacturer for updating. This fixes the memory available to the processor as well as the features implemented in device. According to the present invention, memory 114 is reconfigured in accordance with use of certain features and updates to the features available for device 102. In particular, the features utilized by a user using device 102 are monitored to determine whether certain features should be deleted to free memory space on device 102. The new features are added to device 102 by updating the executable code on device 102 using wireless interface 116, thereby eliminating the need to return device 102 to a manufacturer. The operations required to implement these features are discussed below with respect to FIGS. 2 and 3. Memory usage is optimized in accordance with the present invention by deleting software code associated with features that are not used or needed by a user. There are three alternatives for determining whether a feature should be removed. First, a user may simply request removal of a particular feature. Second, the communication system may request that a feature be removed from device 102. Third, the device autonomously monitors the usage of features to determine the underutilized features that should be removed. FIG. 2 illustrates the three alternatives, which are discussed below. Step 202 begins the autonomous process for deleting underutilized features to free memory space. Feature utilization is preferably monitored for a predetermined period of time (202). More specifically, processor 112 executes a stored program that monitors an entry address for the executable code associated with the features available on device 102. This is accomplished in any suitable manner, including having a table of entry addresses and associated features that are checked and monitored by processor 112 using a background process. Most preferably, a feature's entry address and exit address are monitored along with the time spent in the feature (as determined by the entry and exit addresses). This information is then stored. The predetermined period of time selected for monitoring feature utilization will vary depending upon device 102 and the functions and features associated therewith. Features may be monitored for hours, days, months or other periods of time. A preferred period of time for monitoring is one to two weeks. After the utilization of selected features is determined (202), features that are not readily utilized are identified as candidates for removal (204). The algorithms selected to determine whether a feature is a candidate for removal will vary. A feature is identified as a candidate for removal based on no utilization or under utilization of the feature. In a preferred embodiment, prior to the actual removal of the code associated with a feature, the user is queried to confirm whether or not a feature should be removed (206). Though optional, this step enhances a user's ability to customize the wireless communication device 102. Of course, if the user does not desire to have the identified feature removed, then no action is taken and monitoring continues. On the other hand, if the user confirms that the feature should be removed, then the software code, menu items and other parameters associated with the feature are removed from memory (208). In a preferred embodiment, updates are performed to the memory to reconfigure partitioning for the operating system such that the memory space freed by the deletion of code and parameters associated with the feature are made available for additional uses (210). Optionally, the fixed-end system is notified when a feature is removed (212). The fixed-end system may use this information to update a database of subscriber features or to adjust billing that is associated with the feature. Preferably, the notification to the fixed-end system is accomplished via the wireless interface on device 102. Where the user requests the removal of a particular feature (214), the software code and menu items associated with the feature are removed (208). No user confirmation is necessary. Removal of the software code and menu items (208) is followed by the reallocation of memory space (210), and optional notification of the removal of features to the fixed-end system (212). For the case where the communication system requests the removal of a feature (216), the user preferably receives a warning indicating that the feature will be removed (218) via wireless interface. Feature removal by the communication system or fixed-end system may be necessitated by a feature being obsolete or no longer supported. Following the warning of imminent removal, the software code, menu items and parameters associated with the feature are removed (208). Removal of the code (208) is again followed by the reallocation of memory space (210) and optional notification of the removal of the feature (212). FIG. 3 is a flow chart illustrating a method for updating features on a wireless communication device by the addition of software code. First, in a typical arrangement, a manufacturer informs a wireless service provider of the availability of a new software feature or update (300). Any suitable form of communication, including electronic communication is used to notify the service provider of the available feature. In conjunction with the notification (300), the manufacturer preferably uploads software code and associated documentation for the new features to a service providers database (302). In this manner, the service provider's database is equipped with the software code needed to update subscriber devices. Distribution of the software to subscribers is preferably initiated by the service provider's fixed-end system broadcasting a message to the wireless devices indicating the availability of a new feature and any associated costs (304). This advantageously reduces the cost associated with individual notification of the availability of a particular feature to each subscriber. Algorithms are preferably employed, including acknowledgement or periodic rebroadcast or even individual messages to subscribers to ensure that subscribers are notified of features available for downloading. Preferably, if the features are optional and not required, subscribers are queried to determine if they desire to have the new feature (306). In some cases demonstrations may be automatically provided to illustrate the desirability of the new feature to subscribers. Device requirements, including memory requirements are alternatively provided to subscribers. If a subscriber does not desire to accept a new feature immediately (308), the subscriber receives an offer to accept the new feature on a trial basis (309), as discussed further below. On the other hand, if the subscriber accepts the new feature (308), then an appropriate time for downloading software code for the new feature may be selected (312). The user may be offered alternative times for download or a specific time for download may be indicated by the system. Preferably the downloading occurs during a time when the wireless communication system is not busy. For example, subscribers may be instructed to leave their wireless communication devices on overnight for downloading during off-hours. At the time selected for download, the wireless communication device receives the software code via the wireless interface (314). Documentation is downloaded if needed. After the software is received, the code is made available for execution in the wireless device (316). In particular, operating system parameters, new menus, and other parameters are updated to facilitate execution of the code and provide a user interface for the new features. After configuration, the software code is executed on the wireless device (318). As an alternative to immediate purchase of the new feature (308), a trial version of the feature is offered to the user for a trial period, for example, 30 days (309). If the user does not accept the trial version, then no further action is taken (310). If the user accepts the trial version, then the fixed-end system or wireless communication device tracks the trial period (320) and confirms purchase or deletion of the feature at the end of the trial period (322). The trial period is tracked using a timer. If the feature is accepted, billing is completed and the feature is enabled for non-trial use (324). If the feature is not accepted, the feature is removed or otherwise made unavailable to the user (326). By virtue of the present invention, memory on a wireless communication device is made available while the device is employed for use. Also, additional features are flexibly added to the wireless communication device without the need for a manufacturer to obtain the device for the update. Advantageously, the operation of the device is enhanced. Whereas the present invention has been described with respect to specific embodiments thereof, it will be understood that various changes and modifications will be suggested to those skilled in the art and it is intended that the invention encompass such changes and modifications as fall within the scope of the appended claims.

Claims: Claims 1. A method for optimizing memory usage in an electronic device, the method comprising the steps of: A) monitoring use of at least one feature by a user of the electronic device to determine the at least one feature's utilization; B) determining based on the at least one feature's utilization whether the at least one feature stored in a memory in the electronic device should continue to be available to the user; and C) deleting the at least one feature from the memory if the at least one feature should not continue to be available to the user. 2. The method of claim 1 further comprising the step of: D) if the at least one feature is deleted, making a space occupied by the at least one feature in the memory available for use by another feature. 3. The method of claim 1 wherein step B further comprises: B1) determining whether the at least one feature has been utilized by the user during a predetermined time; and B2) if the at least one feature has not been utilized by the user during the predetermined time, then determining whether the at least one feature should continue to be available to the user. 4. The method of claim 3 wherein step B1 further comprises determining whether a processor in the electronic device has accessed an entry address for the at least one feature. 5. The method of claim 1 wherein the electronic device is at least one of a pager, wireless telephone and personal digital assistant. 6. An electronic device comprising: a processor; and a memory coupled to the processor that stores a plurality of software code associated with a plurality of features; wherein the processor: monitors use of a plurality of features by a user of the electronic device to determine a feature utilization; determines based on the feature utilization whether a feature of the plurality of features should continue to be available to the user; and deletes software code associated with the feature from the memory if the feature should not continue to be available to the user. 7. The device of claim 6 wherein the processor makes a space occupied in the memory by the software code associated with the feature available for use by another feature, if the feature is deleted. 8. The device of claim 6 wherein the processor determines whether the feature of the plurality of features should continue to be available to the user by: determining whether the feature has been utilized by the user during a predetermined time; and if the feature has not been utilized by the user during the predetermined time, then determining whether the feature should continue to be available to the user. 9. The device of claim 8 wherein the processor determines whether the user has utilized the feature by determining whether a processor in the electronic device has accessed an entry address for the feature. 10. The device of claim 6 wherein the electronic device is at least one of a pager, a wireless telephone, and a personal digital assistant. 11. A method for downloading software to a wireless communication device, the method comprising the steps of: A) receiving software code via an over-the-air interface; and B) executing the software code. 12. The method of claim 11 wherein step A further comprises the steps of: A1 ) alerting a user via a message sent over the over-the-air interface of availability of the software code for downloading; and A2) confirming the user is willing to accept the software code. 13. The method of claim 11 wherein step A further comprises the steps of: A1 ) alerting a plurality of users via a broadcast message sent over the over-the-air interface of availability of the software code for downloading; and A2) confirming that a user of the wireless communication device is willing to accept the software code. 14. The method of claim 11 wherein step B further comprises the step of updating a user interface to allow execution of the software code. 15. The method of claim 11 wherein step A further comprises receiving the software code at a predetermined time. 16. The method of claim 15 wherein step A further comprises the user scheduling the predetermined time. 17. The method of claim 12 wherein step A1 further comprises alerting the user of a cost associated with the software code. 18. The method of claim 13 wherein step A1 further comprises alerting the plurality of users of a cost associated with the software code. 19. A wireless communication device comprising: a processor; a memory coupled to the processor; an over-the-air interface coupled to the processor for communicating data; wherein software code is received over the over-the-air interface and the processor executes the software received via the over-the-air interface. 20. The device of claim 19 wherein prior to receiving the software code over the over-the-air interface, a message is received over the over-the-air interface that alerts the user to the availability of the software code for downloading and the processor request confirmation that the user is willing to accept the software code for downloading.

Inventors: DIAZ RAFAEL J, DIAZ, RAFAEL, J.
Applicants: MOTOROLA INC, MOTOROLA INC.
Application year: 2001
Main classification: G06F
IPC codes: G06F9