US5740351A - Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter - Google Patents

Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter Download PDF

Info

Publication number
US5740351A
US5740351A US08/527,463 US52746395A US5740351A US 5740351 A US5740351 A US 5740351A US 52746395 A US52746395 A US 52746395A US 5740351 A US5740351 A US 5740351A
Authority
US
United States
Prior art keywords
program
rom
extensible
cco
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/527,463
Inventor
Philip S. Kasten
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lucent Technologies Inc filed Critical Lucent Technologies Inc
Priority to US08/527,463 priority Critical patent/US5740351A/en
Application granted granted Critical
Publication of US5740351A publication Critical patent/US5740351A/en
Assigned to THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT reassignment THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT CONDITIONAL ASSIGNMENT OF AND SECURITY INTEREST IN PATENT RIGHTS Assignors: LUCENT TECHNOLOGIES INC. (DE CORPORATION)
Assigned to LUCENT TECHNOLOGIES INC. reassignment LUCENT TECHNOLOGIES INC. TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Assignors: JPMORGAN CHASE BANK, N.A. (FORMERLY KNOWN AS THE CHASE MANHATTAN BANK), AS ADMINISTRATIVE AGENT
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Definitions

  • This invention relates to debugging and/or modifying of software systems and, more particularly, to debugging and/or modifying of read-only-memory (ROM)-based Embedded Software Systems.
  • ROM read-only-memory
  • the system has a built-in monitor/debugger--one that is general purpose but allows only for hexadecimal data dumping, single stepping, etc. and has no knowledge of the data structures and/or architecture of the software system. If the embedded test/debug software proves to be inadequate, a new software load must be built with added functionality and reloaded into the system. Such an approach is often time consuming and costly.
  • ROM-based embedded software systems are overcome, in accordance with the principles of the invention, by advantageously employing an extensible interpreter and inserting requests for "Customizable Call-Outs" (CCOs) throughout the ROM-based embedded software.
  • CCOs Customerizable Call-Outs
  • the ROM-based embedded software system can easily be directly enhanced, i.e., extended, on-site at run time to provide virtually limitless new functionality via extension.
  • Advantages of the invention are that the ROM-based embedded system software does not need to be rebuilt or reloaded, and the functionality of the debugging/modifying software is decided at the time of detecting a problem and/or of providing a modification, not before.
  • the extensible interpreter in accordance with the invention, the extension to the ROM-based embedded software is implemented, i.e., written and loaded, in the system directly without the need for or use of an additional external computer platform or compiler.
  • FIG. 1 shows, in simplified form, a system arrangement employing the invention
  • FIG. 2 is a flowchart illustrating the operation of the invention.
  • FIG. 3 illustrates a modification to a FORTH kernel employed in an exemplary embodiment of the invention.
  • FIG. 1 shows, in simplified form, system 100 including an embodiment of the invention.
  • system 100 includes random-access-memory CRAM) 101, read-only-memory (ROM) 102, Extensible Interpreter 103, microprocessor 104 and so-called "dumb" terminal 105.
  • Extensible Interpreter 103 is employed to implement the invention and is shown as residing both in RAM 101 and ROM 102.
  • An Extensible Interpreter which may be used as 103 in this implementation of the invention is a modified Forth-83 Standard implementation of the Forth programming language, as described below.
  • the Forth programming language is well known, see for example the book entitled “Starting Forth", Leo Brodie, Prentice Hall, Inc., 1981.
  • System 100 represented in this embodiment is an embedded software system--its primary system software is fixed in ROM 102. Note that although this embodiment of the invention is described in the context of a single program, it is to be understood that the principles of the invention are equally applicable to a software architecture composed of a multitasking operating system and a multitude of tasks.
  • FIG. 2 illustrates, in simplified fashion, the operational aspects of the invention.
  • ROM 102 is shown to include the embedded fixed equipment system program 201, and portions of extensible interpreter 103, namely, modified Forth kernel 205 and defined CCO "y"(DATA) 207.
  • RAM 201 also includes portions of extensible interpreter 103, in this example, defined CCOs "x"(DATA) 206, "w"(DATA) 209 and "z”(DATA) 210. It is noted that the notation "x"(DATA) is used to indicate a call to a logical function "x", passing to it some (possibly no) parameters.
  • Fixed equipment system program (hereafter "fixed program") 201 includes "normal” operation steps of the fixed program and includes steps to effect the principles of the invention by causing attempts to invoke so-called “Customizable Call-Outs” (CCO).
  • CCO Customerizable Call-Outs
  • operation 1, step 202, operation 2, step 203 through operation N step 214 are the so-called "normal operation steps”.
  • request for CCO "x"(DATA) 204 is included in fixed program 201, in accordance with the principles of the invention, and a request for CCO "x"(DATA) 204. It is noted that although only one CCO request is shown in fixed program 291 in this example, any number of requests for CCOs can be inserted at desired locations as determined by the implementor.
  • step 208 can execute any desired number of operations, for example, operation 3A (211), operation 3B (212) or operation 3C (213).
  • Operation 3B (212) may in this example, be the operation in fixed program 201, which would be effected if CCO "x"(DATA) 204 was not defined.
  • operation 3A (211) or operation 3C (213) could be executed if CCO "x"(DATA) 206 in RAM 101 is defined and returns certain result values, as will be described below.
  • "x"(DATA) 206 is present in RAM 101. Since “x"(DATA) 206 exists, it is executed in RAM 101, and can set result values. Subsequently, control is returned to modified Forth kernel 205 which then, in turn, returns to fixed program 201, specifically, step 208. If, for example, "x"(DATA) did not exist, either in RAM 101 or ROM 102, control would be returned to the fixed program 201 and therein via step 208 to execute the "normal" fixed program operation, for example, operation 3B (212). Details of modified Forth kernel 205 and its operation are described below in relation to FIG. 3.
  • CCOs there may be any number, (including 0) of CCOs actually defined; some CCOs may be in ROM 101, as is “y"(DATA) 207 and some may be in RAM 101, as for example, "x"(DATA) 206, "w”(DATA) 209 and “z”(DATA) 210. Additionally, it should be noted that there will most likely be at least one CCO defined in fixed program 201, for example, "y"(DATA) 207. This at least one defined CCO is to be used to allow a user to interact with extensible interpreter 193, allowing for the definition of CCOs based in RAM 101 via modified Forth kernel 205. The extensible interpreter 103 allows for the direct, on-site implementation of CCOs, thereby providing unlimited new functionality via extension of fixed program 201, without the need of additional external computer platforms and/or compilers.
  • FIG. 3 is a simplified flow chart illustrating the operational steps of modified Forth kernel 205 of FIG. 2.
  • modified Forth kernel 205 is entered via CCO request for "x"(DATA) 204 of FIG. 2.
  • the Forth kernel may also be invoked via terminal 105 (FIG. 1).
  • conditional branch point 301 tests to determine whether Forth was invoked from the CCO. If the test result is no, step 302 causes the arrangement to perform normal Forth interaction with the user via terminal 105. This interaction allows a user, among other things, to define CCOs written in the Forth language to extend the extensible interpreter 103 in RAM 101.
  • test result in step 301 is yes, Forth was invoked from CCO "x"(DATA) 204 and conditional branch point 304 tests to determine if the CCO is defined. If the test result in step 304 is no, the CCO is not (yet) defined and step 305 indicates that a result value of "NOT FOUND" is returned to fixed program 201 and specifically, step 208. As indicated above, since the CCO is not defined, fixed program 201 will effect its so-called "normal” program step, in this example, operation 3B (212). If the test result in step 304 is yes, step 306 clears any prior result. Thereafter, step 307 executes the particular CCO.
  • CCO "x"(DATA) 206 in RAM 102 The CCO can set a result value which may be used by the invoking fixed program allowing for execution conditional on result step 208. Once executed, control is returned to step 307 and thereafter, to step 208 in fixed program 201 (FIG. 2). Execution conditional based on result step 208 is effective to execute any number of operations, depending on the operations defined in "x"(DATA) 206. In this example, either of operations 3A (211) or 3C (213). After performing the particular defined operations, the fixed program may be entered at another operational step, also defined in the particular CCO.
  • the particular program defined in a particular CCO is a user-entered Forth program; as such, it is fully customizable at the desired time of entering it while the equipment system software is running without the need of additional external computing platforms and/or compilers.
  • Customizable Call-Outs provide, in accordance with the principles of the invention, a more convenient, feasible .and time/cost effective method of validation. Specific functions would each invoke a unique CCO. Normally, these CCOs would not be defined, allowing the fixed program to run without any impact on its performance. Should a time arise when it is desirable to introduce validation of the parameters of one or more functions, those CCOs would be defined at that time (while the product is still operative and running the fixed program).
  • the CCOs to perform the desired validations are added as needed, they can operate in a much more intelligent and well defined manner than if such validation procedures were inserted in the fixed program 201 during the initial development.
  • the validation process added by a CCO can provide for this.
  • Such insight into bugs in software is difficult to have when developing the original program; indeed, if such were the case, the bug wouldn't be there in the first place.
  • Another powerful capability introduced by this invention is the ability to define software breakpoints. For example, if the developer wished to have the above system stop executing all but a Forth-based debugger, if parameter 2 is too large, the following CCO could be defined:

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

Debugging and/or modifying of ROM-based embedded software systems is realized by advantageously employing an extensible interpreter and inserting requests for "Customizable Call-Outs" (CCOs) throughout the ROM-based embedded software. Then, the ROM-based embedded software system can easily be directly enhanced, i.e., extended, at run time to provide virtually limitless new functionality. Advantages of the invention are that the ROM-based embedded system software does not need to be rebuilt or reloaded, and the functionality of the debugging/modifying software is decided at the time of detecting a problem and/or of providing a modification, not before. By employing the extensible interpreter, the extension to the ROM-based embedded software is implemented, i.e., written and loaded, in the system directly, without the need for or use of an additional external computer platform or compiler.

Description

This application is a continuation of application Ser. No. 07/968,024, filed on Oct. 29, 1992, now abandoned.
TECHNICAL FIELD
This invention relates to debugging and/or modifying of software systems and, more particularly, to debugging and/or modifying of read-only-memory (ROM)-based Embedded Software Systems.
BACKGROUND OF THE INVENTION
Debugging and/or modifying of ROM-based Embedded Software Systems is often difficult. Once a system is operating out of ROM, its program is fixed. When a problem arises, a developer and/or debugger often needs to rely on special external hardware and software to determine the cause of the problem, or must rely on some predetermined test software that is also embedded into the system. The problems with the first approach are numerous: the external equipment is usually not available at the equipment site where the problem has occurred; external equipment is costly, etc. The problems with the latter approach are also numerous: embedded test/debugging code is only anticipatory in nature (a developer can only guess, at the time of the development, what the monitor/debug software should do); embedded test/debug code takes up space in the product. Many times, the system has a built-in monitor/debugger--one that is general purpose but allows only for hexadecimal data dumping, single stepping, etc. and has no knowledge of the data structures and/or architecture of the software system. If the embedded test/debug software proves to be inadequate, a new software load must be built with added functionality and reloaded into the system. Such an approach is often time consuming and costly.
One known arrangement for dynamic alteration of firmware programs in ROM-based systems is disclosed in U.S. Pat. No. 4,607,332, issued on Aug. 19, 1986 to E. S. Goldberg. However, this arrangement requires the use of external computing platforms and/or compilers to implement a suitable software replacement for the ROM-based embedded software to be modified. Consequently, the developer/debugger needs to have access to such additional computing and compiling equipment which may not be available at the site where the ROM-based embedded software system resides.
SUMMARY OF THE INVENTION
The problems of prior known debugging/modifying software systems for so-called ROM-based embedded software systems are overcome, in accordance with the principles of the invention, by advantageously employing an extensible interpreter and inserting requests for "Customizable Call-Outs" (CCOs) throughout the ROM-based embedded software. Then, the ROM-based embedded software system can easily be directly enhanced, i.e., extended, on-site at run time to provide virtually limitless new functionality via extension. Advantages of the invention are that the ROM-based embedded system software does not need to be rebuilt or reloaded, and the functionality of the debugging/modifying software is decided at the time of detecting a problem and/or of providing a modification, not before. Additionally, by employing the extensible interpreter, in accordance with the invention, the extension to the ROM-based embedded software is implemented, i.e., written and loaded, in the system directly without the need for or use of an additional external computer platform or compiler.
BRIEF DESCRIPTION OF THE DRAWING
In the drawing:
FIG. 1 shows, in simplified form, a system arrangement employing the invention;
FIG. 2 is a flowchart illustrating the operation of the invention; and
FIG. 3 illustrates a modification to a FORTH kernel employed in an exemplary embodiment of the invention.
DETAILED DESCRIPTION
FIG. 1 shows, in simplified form, system 100 including an embodiment of the invention. Specifically, system 100 includes random-access-memory CRAM) 101, read-only-memory (ROM) 102, Extensible Interpreter 103, microprocessor 104 and so-called "dumb" terminal 105. Note that Extensible Interpreter 103 is employed to implement the invention and is shown as residing both in RAM 101 and ROM 102. An Extensible Interpreter which may be used as 103 in this implementation of the invention is a modified Forth-83 Standard implementation of the Forth programming language, as described below. The Forth programming language is well known, see for example the book entitled "Starting Forth", Leo Brodie, Prentice Hall, Inc., 1981. System 100 represented in this embodiment is an embedded software system--its primary system software is fixed in ROM 102. Note that although this embodiment of the invention is described in the context of a single program, it is to be understood that the principles of the invention are equally applicable to a software architecture composed of a multitasking operating system and a multitude of tasks.
FIG. 2 illustrates, in simplified fashion, the operational aspects of the invention. Specifically, ROM 102 is shown to include the embedded fixed equipment system program 201, and portions of extensible interpreter 103, namely, modified Forth kernel 205 and defined CCO "y"(DATA) 207. RAM 201 also includes portions of extensible interpreter 103, in this example, defined CCOs "x"(DATA) 206, "w"(DATA) 209 and "z"(DATA) 210. It is noted that the notation "x"(DATA) is used to indicate a call to a logical function "x", passing to it some (possibly no) parameters.
Fixed equipment system program (hereafter "fixed program") 201 includes "normal" operation steps of the fixed program and includes steps to effect the principles of the invention by causing attempts to invoke so-called "Customizable Call-Outs" (CCO). For example, operation 1, step 202, operation 2, step 203 through operation N step 214 are the so-called "normal operation steps". Also included in fixed program 201, in accordance with the principles of the invention, is a request for CCO "x"(DATA) 204. It is noted that although only one CCO request is shown in fixed program 291 in this example, any number of requests for CCOs can be inserted at desired locations as determined by the implementor. Also included in fixed program 201 is an execution conditional based on result step 208, which execution of is dependent on the result of the particular CCO that is being attempted to be invoked. Dependent on the CCO being in existence and invoked, step 208 can execute any desired number of operations, for example, operation 3A (211), operation 3B (212) or operation 3C (213). Operation 3B (212) may in this example, be the operation in fixed program 201, which would be effected if CCO "x"(DATA) 204 was not defined. Similarly, either operation 3A (211) or operation 3C (213) could be executed if CCO "x"(DATA) 206 in RAM 101 is defined and returns certain result values, as will be described below. It will be apparent that any number of program steps may be defined by a particular CCO and that the fixed program 201 may be re-entered at any specifically defined program step. It should be noted that when fixed program 201 is being written, it is most likely unknown what function "x"(DATA) will provide; indeed, "x"(DATA) may not even be in existence. Fixed program 201 only has this so-called "hook", i.e., request for CCO "x"(DATA) 204 in place. When request for. CCO "x"(DATA) 204 is entered in fixed program 201, extensible interpreter 103 and therein modified Forth kernel 205 determines, in accordance with the principles of the invention, if CCO "x"(DATA) exists (either in RAM 101 or ROM 102). In this example, "x"(DATA) 206 is present in RAM 101. Since "x"(DATA) 206 exists, it is executed in RAM 101, and can set result values. Subsequently, control is returned to modified Forth kernel 205 which then, in turn, returns to fixed program 201, specifically, step 208. If, for example, "x"(DATA) did not exist, either in RAM 101 or ROM 102, control would be returned to the fixed program 201 and therein via step 208 to execute the "normal" fixed program operation, for example, operation 3B (212). Details of modified Forth kernel 205 and its operation are described below in relation to FIG. 3. It is noted that at any instant in time, there may be any number, (including 0) of CCOs actually defined; some CCOs may be in ROM 101, as is "y"(DATA) 207 and some may be in RAM 101, as for example, "x"(DATA) 206, "w"(DATA) 209 and "z"(DATA) 210. Additionally, it should be noted that there will most likely be at least one CCO defined in fixed program 201, for example, "y"(DATA) 207. This at least one defined CCO is to be used to allow a user to interact with extensible interpreter 193, allowing for the definition of CCOs based in RAM 101 via modified Forth kernel 205. The extensible interpreter 103 allows for the direct, on-site implementation of CCOs, thereby providing unlimited new functionality via extension of fixed program 201, without the need of additional external computer platforms and/or compilers.
FIG. 3 is a simplified flow chart illustrating the operational steps of modified Forth kernel 205 of FIG. 2. Again, as indicated above, the Forth programming language is well-known in the art. It is noted in this example that modified Forth kernel 205 is entered via CCO request for "x"(DATA) 204 of FIG. 2. However, the Forth kernel may also be invoked via terminal 105 (FIG. 1). Accordingly, conditional branch point 301 tests to determine whether Forth was invoked from the CCO. If the test result is no, step 302 causes the arrangement to perform normal Forth interaction with the user via terminal 105. This interaction allows a user, among other things, to define CCOs written in the Forth language to extend the extensible interpreter 103 in RAM 101. If the test result in step 301 is yes, Forth was invoked from CCO "x"(DATA) 204 and conditional branch point 304 tests to determine if the CCO is defined. If the test result in step 304 is no, the CCO is not (yet) defined and step 305 indicates that a result value of "NOT FOUND" is returned to fixed program 201 and specifically, step 208. As indicated above, since the CCO is not defined, fixed program 201 will effect its so-called "normal" program step, in this example, operation 3B (212). If the test result in step 304 is yes, step 306 clears any prior result. Thereafter, step 307 executes the particular CCO. (In this example, CCO "x"(DATA) 206 in RAM 102.) The CCO can set a result value which may be used by the invoking fixed program allowing for execution conditional on result step 208. Once executed, control is returned to step 307 and thereafter, to step 208 in fixed program 201 (FIG. 2). Execution conditional based on result step 208 is effective to execute any number of operations, depending on the operations defined in "x"(DATA) 206. In this example, either of operations 3A (211) or 3C (213). After performing the particular defined operations, the fixed program may be entered at another operational step, also defined in the particular CCO. Again, it should be noted that the particular program defined in a particular CCO is a user-entered Forth program; as such, it is fully customizable at the desired time of entering it while the equipment system software is running without the need of additional external computing platforms and/or compilers.
Briefly, in the following example, it is noted that in procedural program languages such as the well-known C programming language, programs are composed of a series of functions, each possibly being called with arguments or parameters. Validation of these parameters in some cases is non-trivial and may be very time consuming. Therefore, it is often undesirable to have all of the functions each perform its own validation of its input parameters since such validation will possibly impact system performance and most often, have the result of indicating that the parameters are valid. In other words, with parameter validation built into the program, the validation algorithms will be running all the time, although it is very likely that the parameters are valid. However, without employing such parameter validation, it is difficult to quickly identify when and how parameters are being passed in the program incorrectly. In the past, embedded systems software that contained no validation algorithm would need to be rebuilt and reloaded into the particular equipment once such validation algorithms were added. Customizable Call-Outs (CCOs) provide, in accordance with the principles of the invention, a more convenient, feasible .and time/cost effective method of validation. Specific functions would each invoke a unique CCO. Normally, these CCOs would not be defined, allowing the fixed program to run without any impact on its performance. Should a time arise when it is desirable to introduce validation of the parameters of one or more functions, those CCOs would be defined at that time (while the product is still operative and running the fixed program).
Additionally, since the CCOs to perform the desired validations are added as needed, they can operate in a much more intelligent and well defined manner than if such validation procedures were inserted in the fixed program 201 during the initial development. By way of example, if it is found that every fifth time a certain function's parameter is passed with a value of 10 and the parameter should really have a value of 12, the validation process added by a CCO can provide for this. Such insight into bugs in software is difficult to have when developing the original program; indeed, if such were the case, the bug wouldn't be there in the first place. After the system is debugged employing the CCOs in operations of the invention, and the fixes have been proven, then a single rebuild and reload of the equipment fixed program 201 is all that is required.
The following is a C-language source code implementation of the above example.
__________________________________________________________________________
/* Simple example of a C function using a CCO for input parameter         
validation */                                                             
int Simple function(param1, param2) long param1; long param2; {           
 struct {long *p1; long *p2} params;                                      
 params.p1=&param1;                                                       
 params.p2=&param2;                                                       
 CCO("validation",&params);                                               
 do.sub.-- more.sub.-- stuff( );/*                                        
  .                                                                       
  .                                                                       
  . */}                                                                   
__________________________________________________________________________
The following is the definition of a CCO in the Forth-language for the above example.
(Simple example of a Forth program implementing the above "validation" CCO)
______________________________________                                    
variable count                                                            
: validation                                                              
param1 )                                                                  
(have the value 10, change it to the value 12).                           
 @ 10 = if                                                                
  1 count +| count @ 4 = if                                               
   12 get.sub.-- CCO.sub.-- data @ |                                      
   ( ) count |                                                            
   then                                                                   
  then                                                                    
 get.sub.-- CCO.sub.-- data 4 + @ ( Check param2. If its value is greater 
than 20, )                                                                
( print an error message. )                                               
 @ 20 > if                                                                
  ."Parameter 2 is too big|" CR                                           
  then ;                                                                  
______________________________________                                    
Another powerful capability introduced by this invention is the ability to define software breakpoints. For example, if the developer wished to have the above system stop executing all but a Forth-based debugger, if parameter 2 is too large, the following CCO could be defined:
______________________________________                                    
: validation                                                              
 get.sub.-- CCO.sub.-- data 4 + @ ( Check param2. If its value is greater 
than 20, )                                                                
( perform a software breakpoint. )                                        
 @ 20 > if                                                                
  ."**breakpoint" abort                                                   
  then ;                                                                  
______________________________________                                    
In the above example, the well defined Forth word "abort" is used to implement the breakpoint.
It is important to stress that the complexity of the CCO is NOT in the original equipment system software and is NOT built into the equipment system software embedded in ROM 102. The CCOs are added only at run time, only when necessary, only with the functionality needed to implement the desired task and without the need for an additional external computer platform and/or compiler.
The above-described arrangements are, of course, merely illustrative of the principles of the invention. Other arrangements may be devised by those skilled in the art without departing from the spirit or scope of the invention.

Claims (10)

I claim:
1. A method for dynamically modifying a read-only-memory "ROM"-based embedded software system, said system including a ROM for storing a fixed equipment system program and a Random Access Memory (RAM) for storing data, said method comprising the steps of:
executing the fixed equipment system program, said fixed equipment system program including at least one request for a Customized Call-Out (CCO) from the ROM-based embedded software system; and
invoking at least one dynamic extension to the fixed equipment system program by
(1) transferring control of the ROM-based software system from said fixed equipment system program to an extensible interpreter program embedded in the ROM by executing the request for a Customizable Call-Out (CCO) during said executing step and, upon executing the request for a Customizable Call-Out (CCO), passing the identity of the CCO to the extensible interpreter program, and
(2) executing the identified CCO by the extensible interpreter program to allow modification in the RAM of the capabilities of the ROM-based embedded software system in accordance with the identified CCO.
2. The invention as defined in claim 1 wherein said extensible interpreter program is further employed to directly execute a CCO request without the need for an additional external computer platform and/or compiler.
3. The invention as defined in claim 1, wherein each said request for a CCO defines a software breakpoint in the fixed equipment software program.
4. The invention as defined in claim 3 wherein said extensible interpreter program is implemented in Forth program language.
5. In an equipment arrangement including a read-only-memory (ROM), a random-access-memory (RAM), a microprocessor and a terminal wherein requests for Customizable Call-Outs (CCOs) are inserted at strategic locations in a fixed equipment ROM software program of a ROM-based embedded software system, a method for dynamically modifying the ROM-based software system comprising the steps of,
(1) requesting a CCO during the execution of the fixed equipment software program and upon executing the request for the CCO in the fixed equipment software program, transferring control of the ROM based software system from the fixed equipment software program to an extensible interpreter program embedded in the ROM and passing to the extensible interpreter program the identity of the requested CCO,
(2) determining via the extensible interpreter program if the identified CCO is implemented,
(3) proceeding to step (4) if the identified CCO is implemented, otherwise returning control of the ROM-based software system to the fixed equipment software program, and
(4) executing the identified CCO by the extensible interpreter program so that the capabilities of the ROM-based software system may be modified in the RAM in accordance with the implementation of the identified CCO.
6. The invention as defined in claim 5 wherein said extensible interpreter program resides in the ROM and in the RAM.
7. The invention as defined in claim 6 wherein there is a CCO in the non-interpretive ROM-based embedded software system for enabling interaction with the extensible interpreter program via the microprocessor and terminal in order to implement directly at least one new CCOs to extend the extensible interpreter program in the RAM, i.e., the at least one new CCOs is implemented in the RAM via the extensible interpreter program, without the need of an additional external computer platform and/or compiler.
8. The invention as defined in claim 7, wherein said extensible interpreter program can invoke said one or more new CCOs upon corresponding requests for CCOs being executed in the fixed equipment software program and the identities of those one or more new CCOs being transferred to the extensible interpreter program.
9. The invention as defined in claim 8, wherein said extensible interpreter program is further employed to implement software breakpoints in the fixed equipment software program.
10. The invention as defined in claim 9 wherein said extensible interpreter program is implemented in Forth program language.
US08/527,463 1992-10-29 1995-09-13 Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter Expired - Lifetime US5740351A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/527,463 US5740351A (en) 1992-10-29 1995-09-13 Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US96802492A 1992-10-29 1992-10-29
US08/527,463 US5740351A (en) 1992-10-29 1995-09-13 Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US96802492A Continuation 1992-10-29 1992-10-29

Publications (1)

Publication Number Publication Date
US5740351A true US5740351A (en) 1998-04-14

Family

ID=25513605

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/527,463 Expired - Lifetime US5740351A (en) 1992-10-29 1995-09-13 Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter

Country Status (4)

Country Link
US (1) US5740351A (en)
EP (1) EP0595540A1 (en)
JP (1) JPH0773032A (en)
CA (1) CA2101716A1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754891B1 (en) 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US20050183069A1 (en) * 2004-02-18 2005-08-18 Cepulis Darren J. ROM-embedded debugging of computer
US20050216904A1 (en) * 2004-03-29 2005-09-29 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US20050245248A1 (en) * 2001-07-26 2005-11-03 Gowri Rajaram System and method for field diagnosis of wireless communications device system software
US20090119656A1 (en) * 2007-11-02 2009-05-07 Munir Cochinwala Method and system for policy enabled programming
US20090241094A1 (en) * 2008-03-20 2009-09-24 Sap Ag Execution of Program Code Having Language-Level Integration of Program Models
US20110231827A1 (en) * 2010-03-22 2011-09-22 Kilbane Stephen M Methods and apparatus for debugging programs in shared memory
US8117587B1 (en) 2008-06-03 2012-02-14 Richard Paul Testardi Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems
US20210200542A1 (en) * 2019-12-31 2021-07-01 Proton World International N.V. Embedded system
US20210200543A1 (en) * 2019-12-31 2021-07-01 Proton World International N.V. Embedded system

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896535A (en) * 1996-08-20 1999-04-20 Telefonaktiebolaget L M Ericsson (Publ) Method and system for testing computer system software
JPH10214203A (en) * 1997-01-29 1998-08-11 Nec Corp Information processor
JP2001184203A (en) 1999-12-24 2001-07-06 Matsushita Electric Ind Co Ltd Program correcting device
US8539469B2 (en) 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US7559058B2 (en) 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4312066A (en) * 1979-12-28 1982-01-19 International Business Machines Corporation Diagnostic/debug machine architecture
US4589068A (en) * 1983-10-03 1986-05-13 Digital Equipment Corporation Segmented debugger
US4719564A (en) * 1984-12-10 1988-01-12 Nec Corportion Interpreter linkage system for linking extension interpreters to a basic interpreter
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4312066A (en) * 1979-12-28 1982-01-19 International Business Machines Corporation Diagnostic/debug machine architecture
US4589068A (en) * 1983-10-03 1986-05-13 Digital Equipment Corporation Segmented debugger
US4719564A (en) * 1984-12-10 1988-01-12 Nec Corportion Interpreter linkage system for linking extension interpreters to a basic interpreter
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
European Search Report, dated Dec. 30, 1993, regarding EPO Application Number EP 93 30 8344. *
IBM Technical Disclosure Bulletin, vol. 28, No. 6, p. 2637, dated Nov. 1985, entitled "Realtime debugging operation".
IBM Technical Disclosure Bulletin, vol. 28, No. 6, p. 2637, dated Nov. 1985, entitled Realtime debugging operation . *
Patent No. 4,607,332, filed on Jan. 14, 1983 and issued on Aug. 19, 1986 to Edward S. Goldberg. Class: 364/300. *
Software Practice & Experience, vol. 20, No. 5, May 1990, entitled "A Symbolic Debugger for Real-Time Embedded Ada Software", by Dan Lyttle et al.
Software Practice & Experience, vol. 20, No. 5, May 1990, entitled A Symbolic Debugger for Real Time Embedded Ada Software , by Dan Lyttle et al. *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754891B1 (en) 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US20050245248A1 (en) * 2001-07-26 2005-11-03 Gowri Rajaram System and method for field diagnosis of wireless communications device system software
US8032865B2 (en) * 2001-07-26 2011-10-04 Kyocera Corporation System and method for field diagnosis of wireless communications device system software
US20050183069A1 (en) * 2004-02-18 2005-08-18 Cepulis Darren J. ROM-embedded debugging of computer
US7404178B2 (en) * 2004-02-18 2008-07-22 Hewlett-Packard Development Company, L.P. ROM-embedded debugging of computer
US20050216904A1 (en) * 2004-03-29 2005-09-29 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US7546596B2 (en) 2004-03-29 2009-06-09 International Business Machines Corporation Non-disruptive method, system and program product for overlaying a first software module with a second software module
US8448159B2 (en) 2007-11-02 2013-05-21 Tti Inventions C Llc Method and system for policy enabled programming
US20090119656A1 (en) * 2007-11-02 2009-05-07 Munir Cochinwala Method and system for policy enabled programming
US20090241094A1 (en) * 2008-03-20 2009-09-24 Sap Ag Execution of Program Code Having Language-Level Integration of Program Models
US8863115B2 (en) * 2008-03-20 2014-10-14 Sap Ag Execution of program code having language-level integration of program models
US8117587B1 (en) 2008-06-03 2012-02-14 Richard Paul Testardi Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems
US8806446B2 (en) 2010-03-22 2014-08-12 Analog Devices, Inc. Methods and apparatus for debugging programs in shared memory
US20110231827A1 (en) * 2010-03-22 2011-09-22 Kilbane Stephen M Methods and apparatus for debugging programs in shared memory
US20210200542A1 (en) * 2019-12-31 2021-07-01 Proton World International N.V. Embedded system
US20210200543A1 (en) * 2019-12-31 2021-07-01 Proton World International N.V. Embedded system
CN113064638A (en) * 2019-12-31 2021-07-02 意法半导体(鲁塞)公司 Embedded system
US11714643B2 (en) * 2019-12-31 2023-08-01 Proton World International N.V. Embedded system
US11720358B2 (en) * 2019-12-31 2023-08-08 Proton World International N.V. Embedded system
US20230342149A1 (en) * 2019-12-31 2023-10-26 Proton World International N.V. Embedded system

Also Published As

Publication number Publication date
JPH0773032A (en) 1995-03-17
CA2101716A1 (en) 1994-04-30
EP0595540A1 (en) 1994-05-04

Similar Documents

Publication Publication Date Title
US5740351A (en) Apparatus and method for debugging/modifying ROM-based software systems employing and extensible interpreter
CN108345542B (en) Method and device for processing exception in application program
US6289446B1 (en) Exception handling utilizing call instruction with context information
US6718485B1 (en) Software emulating hardware for analyzing memory references of a computer program
US5583988A (en) Method and apparatus for providing runtime checking features in a compiled programming development environment
US7761855B2 (en) Computer program product and system for altering execution flow of a computer program
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US5621886A (en) Method and apparatus for providing efficient software debugging
US6141794A (en) System and method for synchronizing access to shared variables in a virtual machine in a digital computer system
US6163858A (en) Diagnostic methodology for debugging integrated software
US20040205720A1 (en) Augmenting debuggers
US5970245A (en) Method for debugging shared procedures contained in dynamic link library files
US6901583B1 (en) Method for testing of a software emulator while executing the software emulator on a target machine architecture
US9639343B2 (en) Method for altering execution of a program, debugger, and computer-readable medium
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
JPH0748182B2 (en) Program error detection method
Chiba et al. Using HotSwap for implementing dynamic AOP systems
CN111880804A (en) Application program code processing method and device
US7028294B2 (en) Linking of applications into devices having overlays and shadow memories
Hanson Event associations in SNOBOL4 for program debugging
US5388263A (en) Procedure state descriptor system for digital data processors
EP0801348A1 (en) Method of monitoring the operation of a computer
US11256479B2 (en) Dynamic updates in an interactive programming environment
Lawall et al. Tarantula: Killing driver bugs before they hatch
CN111984329A (en) Standardized boot software generation and execution method and system

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT, TEX

Free format text: CONDITIONAL ASSIGNMENT OF AND SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:LUCENT TECHNOLOGIES INC. (DE CORPORATION);REEL/FRAME:011722/0048

Effective date: 20010222

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: LUCENT TECHNOLOGIES INC., NEW JERSEY

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:JPMORGAN CHASE BANK, N.A. (FORMERLY KNOWN AS THE CHASE MANHATTAN BANK), AS ADMINISTRATIVE AGENT;REEL/FRAME:018584/0446

Effective date: 20061130

FPAY Fee payment

Year of fee payment: 12