Embedded code memory size reduction in asynchronous mode transfer devices6480891Abstract A system for reducing the memory requirements of an ATM device utilizing one or more temporary code uploads to bring needed portions of application code into the memory of the ATM embedded system on a temporary basis. The present invention functions to divide the code necessary for operation of the ATM device into two categories: (1) application code that is seldom used or code used only once and (2) all other application code. The application code that is seldom used or used only once is removed from the memory of the ATM embedded system and placed in a software storage device external to the system. This serves to significantly reduce the memory requirements of the ATM device, by as much as 40% in come cases depending on the size of the application code portions. Claims What is claimed is: Description FIELD OF THE INVENTION
Term Definition
ANSI American National Standards Institute
ATM Asynchronous Transfer Mode
CCITT Comite Consulatif International Telegraphique et
Telephonique
EEPROM Electrically Erasable Programmable Read Only Memory
EPROM Erasable Programmable Read Only Memory
FDDI Fiber Distributed Data Interface
ITU International Telecommunications Union
LAN Local Area Network
LMA Local Management and Administration
NVRAM Non-Volatile Random Access Memory
PC Personal Computer
RAM Random Access Memory
ROM Read Only Memory
SNMP Simple Network Management Protocol
TCP/IP Transport Control Protocol/Internet Protocol
UNI User to Network Interface
WAN Wide Area Network
General Description The present invention is a system for reducing the memory requirements of an ATM device by utilizing one or more temporary code uploads to bring needed portions of application code into memory of the ATM embedded system on a temporary basis. The present invention functions to divide the application software code necessary for operation of the ATM device into at least two categories: (1) application code that is seldom used or code used only once and (2) all other application code. The application code that is seldom used or used only once is removed from the memory of the ATM embedded system and placed in a device external to the system. This serves to significantly reduce the memory requirements of the ATM device, by as mcuh as 30% in come cases depending on the size of the various application code portions. Examples of seldom used or only once used software include configuration conversion software for version updating; local management software (excluding SNMP software); and debugging and testing software. A block diagram illustrating a first embodiment of an ATM embedded system and software server of the present invention is shown in FIG. 2. In this first embodiment, the seldom or once only used application software for the ATM embedded system 22 is stored on a software server 24. The plurality of application code portions 30 are stored in the memory of the software server 24. The ATM embedded system 22 comprises a volatile memory portion 26, e.g., RAM, and a non-volatile memory portion 28, e.g., NVRAM, EEPROM, etc. The RAM portion 26 stores the frequently used application code and associated data for the normal execution of the ATM system. The NVRAM portion 28 functions to store the frequently used application code and device configuration. Note that the application code may be stored in compressed form in the NVRAM to save memory space. A management and control device 20 that functions to perform local management and administration (LMA) is coupled to the ATM embedded system 22 for maintenance and administrative purposes. In operation, the management device 20 generates and sends a request to the ATM embedded system 22 which processes the request in accordance thereto. The request may require the execution of code that is not present in the system 22 if the request is for seldom performed functions such as device configuration conversion. In response to the request, the ATM device 22 generates and sends an application code request to the software server 24. The software server 24 is accessible to the ATM device via a communication network such as a LAN, WAN, Internet, etc. In response to the code request, the software server responds with the requested code portion 30 and uploads it to the ATM device 22. All the necessary software required to fulfill the request is sent to and installed in the RAM memory of the ATM embedded system. The ATM device 22 receives the application code portion and places it in its RAM memory for immediate execution. Once execution is complete, the ATM device generates and sends a response to the management device 20. Optionally, once execution is complete, the application code portion that was temporarily uploaded and installed in the ATM device can be deleted or kept in memory for a predetermined period of time, to satisfy requests that may arrive in the near future. A flow diagram illustrating the temporary code upload method of the present invention is shown in FIG. 3. In the first step, the embedded system receives the request generated by the LMA or management device (step 90). In response thereto, the ATM embedded system determines that the request received requires one or more application code portions that are not currently present in its memory (step 92). The embedded system generates and sends an application code request to the external software server (step 94). In response thereto, the software server uploads one or more application code portions to the embedded system (step 96). Once the embedded system receives the application code portions, it installs the software in its RAM and begins execution of the code (step 98). As a result of the completion of the operation, the embedded system generates and sends a response back to the LMA device (step 100). In implementing the above method, a list of the various requests can be determined and coded as external functions. These functions are compiled separately and stored as external files on the software server. During the linking stage, references to these external functions are resolved formally via the use of empty function stubs. Another implementation approach is based on an algorithm for starting operation of the embedded system and various software services, i.e., the software server. At the time of system start-up, the embedded system searches and attempts to find the host which responds to a `request to bind` message. To search for the host, any of the well known network protocols can be used including but not limited to TCP/IP, IPX/SPX, NetBios, etc. The configuration information containing names of the software server(s) is used during the binding process of the embedded system. An exchange of the function name list is made after establishing a connection between the ATM embedded system and the software server. After the exchange occurs, the ATM embedded system and the software server send `keep alive` messages (packets) to each other or use one of the well known protocol services for monitoring of the connection. If the connection fails, the embedded system attempts to either re-establish connection to the software server or attempts to find other software servers from the software server configuration list. Note that the software server nearest the ATM embedded system does not necessarily have to maintain all the necessary code functions required by all systems stored in its local storage. A plurality of software servers can be connected and linked together. Thus, application code requests may be redirected from one software server to another. As stated above, the ATM embedded system functions to detect a request from the LMA device that requires application code that is stored externally. The global resource name can be used to send a code request to the nearest software server. The embedded system generates and sends a response to the LMA only after receiving and executing the missing application code. A second embodiment of the present invention simplifies the system by implementing the software server functions and the LMA functions within the same device. A block diagram illustrating a second embodiment of an ATM embedded system and combination management device and software server of the present invention is shown in FIG. 4. In this second embodiment, the LMA management/control device and the software server are implemented in the same module (device) 40. Note that in this and all the other embodiments, the LMA device and the software server can be implemented on a personal computer (PC) or equivalent. In operation, the LMA/control system and software server 40 generates a request to the ATM embedded system 42. The embedded system 42, in turn, detects that the necessary software code is not present in the system and thus generates a code request that it sends to the software server module 40. The software server sends the requested application code portion to the embedded system 42. The application code is then installed on the embedded system and executed and a response generated which is sent back to the LMA/control device 40. In a third embodiment, the software server function is distributed over multiple devices. In other words, the application code that is seldom used or used once is stored on one or more machines. A block diagram illustrating a third embodiment of an ATM embedded system and combination management device and software server of the present invention is shown in FIG. 5. As an example, only two software servers are shown, one stand alone server 50 and a second software server combined with the LMA/control device 52. The request, code request, code upload and response interaction between the LMA/software server 52 and the ATM embedded system 54 function similarly to that of the second embodiment of FIG. 4, with one difference. The difference being that the code request from the ATM embedded system 54 may trigger a code request to be generated and sent by the LMA/control device 52 to a software server 50 that is external to itself. The software server 50 responds to the code request with the requested application code portion and sends it or uploads it to the LMA/control device 52. Once received, the LMA/control device forwards the application code request to the ATM embedded system 54 for execution thereon. An illustrative example of the temporary code upload method of the present invention will now be presented within the context of a software upgrade procedure that is performed on an ATM embedded device, e.g., a switch. A block diagram illustrating an example of the second embodiment of the present invention in more detail is shown in FIG. 6. The LMA device/software server 60 is coupled to the ATM embedded system 66. The memory of the software server 60 comprises the entire application code 62 for the frequently used portions of the embedded device and a plurality of seldom or once only used code portions 64, one of which is shown that functions to convert device configuration data from an outdated version to the current version. The memory of the ATM embedded system 66 comprises a volatile (RAM) portion 68 containing application code 70 and data 72 and a non-volatile (NVRAM) portion 74 containing application 76 (possibly in compressed format), a loader 78 and device configuration data 80. Normally, upon start up of the ATM embedded device, the loader is read from NVRAM into RAM and executed. The loader functions to read the application code from NVRAM 74, decompress it if necessary, and write it into the RAM 68. In this example, the application software 76 within the ATM embedded system 66 is to be upgraded to a new version. The image of the configuration data in the device configuration portion 80 of the NVRAM is dependent on the software version currently in use. An application program is used to convert the old image, i.e., flash image, to the new one. This application software, however, is used only once during the lifetime of the ATM device. In operation, a network administrator or other personnel triggers an upgrade of the application code 76 in the NVRAM portion 74 of the ATM device 66. The application code 62 of the new version resides on the software server 60. The new version of software is uploaded and installed in the application code 76 of the NVRAM. When the device is rebooted, the loader 78 reads the code image into RAM and execution begins. The code detects that a new version of the software is running since the version stamp of the device configuration 80 corresponds to an older version. The software thus detects that an old flash image is stored in NVRAM and, since the conversion code is not in the ATM device, it generates and sends a conversion code request to the software server 60. In this example, the software server is the same machine, i.e., PC, as the LMA device. In response to the code request, the software server 60 uploads the conversion code function 64 to the ATM device 66. The conversion application code functions to update the NVRAM 74, e.g., flash memory, in accordance with the current software version. Once the conversion is complete, the external conversion software function is deleted from RAM memory thus permitting the space to be used for other purposes. Using the temporary code upload method of the present invention, memory requirements for code storage can be decreased, depending on the system, from 20 to 40% while preserving the original functionality. The memory freed up can be dynamically reorganized and utilized for other purposes such as to improve the efficiency of the embedded system without incurring cost increases or the requirement for additional resources. In an alternative embodiment, overlay techniques, well known to those skilled in the software arts, can also be used to externally store application code software functions that are seldom used or used once in the ATM device. Using this technique, only one of the multiple overlays making up the software application is present in memory at any one time. In response to requests from the LMA or other device, the ATM device requests different overlays from the software server. The appropriate overlay is uploaded to the ATM device and execution continues and a response is generated and sent back to the LMA device. While the invention has been described with respect to a limited number of embodiments, it will be appreciated that many variations, modifications and other applications of the invention may be made.
|
Same subclass Same class Consider this |
||||||||||
