2 System Overview


This chapter describes pROBE+ operation in the standalone mode. For a description of a distributed debug configuration, see the SpOTLIGHT Debug Server User's Manual.

2.1 Operating Environment

The pROBE+ debugger comes as a module you link with the pSOSystem OS. Chapter 4, ``Installation and Configuration," describes the pROBE+ configuration table.

The pROBE+ debugger consists of five individual services:

Of the subcomponents in this list, only the processor services subcomponent is mandatory, but at least one additional subcomponent must also be configured in the pROBE+ configuration table. In addition to the processor services, you must specify either the console interface executive or the remote debug interface executive. The remaining subcomponents are optional. The advantage of having subcomponents is that you save memory on the unused options.

In standalone mode, the pROBE+ debugger accepts and responds to commands through a console port that is normally connected to an ASCII terminal. You must supply character I/O drivers for the port, which is typically a serial port on the target hardware.

Figure 2-1 shows a pROBE+ standalone configuration with an ASCII terminal.

Figure 2-1 pROBE+ Standalone Configuration

2.2 Registers

The pROBE+ debugger uses the following standard names to identify MIPS registers:

MIPS R3041, R3051, R3052:

MIPS R3081

The pROBE+ debugger provides offset registers F0 through F7 to simplify the debugging of relocatable code. Typically, you load an offset register with the starting address of relocatable code or a data segment. A memory location can be referenced as a displacement relative to an offset register, so you do not repeatedly have to calculate addresses.

2.3 Input Conventions

The pROBE+ debugger indicates that it is ready to accept commands by displaying the following prompt:

or, in a multiprocessor system, the prompt:

where n is the local node number.

The following rules apply to all pROBE+ commands:

The pROBE+ debugger keeps a record of the previous command you entered. You can recall the command in one of the following ways:

You can extend the pROBE+ debugger by defining new commands. When the pROBE+ debugger receives a command it does not understand, it automatically passes control to a user-supplied command handler. This feature is described in detail in Section 4.3.12, ``td_urcom.''

2.3.1 Constants

You can enter constants to the pROBE+ debugger in the following forms:

2.3.1.1 Hexadecimal Constants

A hexadecimal constant is a string of one to eight hexadecimal characters. The following are examples:

2.3.1.2 Decimal Constants

A decimal constant is a string of one to ten decimal digits preceded by an ampersand (&). The following are examples:

2.3.1.3 Character Constants

A character constant is a sequence of up to four ASCII characters enclosed in single-quotation marks. Internally, the pROBE+ debugger converts all string constants into 32-bit binary values. Strings with less than four characters are right-justified, with the remaining bytes zero-filled. The following are examples:

2.3.2 Objects

You can specify pSOS+ objects either by name or by ID. A pound sign (#) indicates an ID, otherwise the input expression represents the name. This convention allows names to contain nonprintable characters. For a description of pSOS+ objects, see pSOSystem System Concepts.

Examples:

You should specify the object name or ID wherever the pROBE+ syntax specifies any of the following:

2.3.3 Date and Time

Some pROBE+ commands expect you to enter a date and/or time. A date must have the following format:

An example of a date is 13-AUG-1990. The numbers for day and year are decimal, and all four digits of the year must be entered. The month is always entered by using its standard three-character mnemonic (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, and Dec).

A time specification must have the following format:

An example of a time is 14:12:45. The entry for hours has a 24-hour notation with decimal numbers. The entry for minutes and seconds consists of two digits each from 0 through 59. You can omit the seconds field or enter 0. For example, 14:12 and 14:12:0 are the same.

2.4 Output Conventions

pROBE+ output conventions are similar to input conventions.

For output, the pROBE+ debugger provides a paging system that divides output into pages of 24 lines each. After printing 23 lines, the pROBE+ debugger pauses and displays the following prompt:

If you enter any nonnumeric character, the pROBE+ debugger resumes output and displays another 23 lines before the next pause. If you enter a number (1 through 9), the pROBE+ debugger resumes output and displays that number of lines before the next pause. You can disable paging with the FL command (see Section 3.7.1, ``FL - Set pROBE+ Flags"), in which case output is continuous.

XON/XOFF protocol is also supported. You can suspend transmission of output by pressing [Ctrl-S] and resume it by pressing [Ctrl-Q].

2.4.1 Numbers

Numerical output is always hexadecimal except for the following:

For a disassembled MIPS instruction, constants are hexadecimal, but register names may contain decimal numbers. For example, the "16" in "r16" is decimal. See also Section 3.1.6, ``DI - Disassemble Memory."

2.4.2 Objects

The pROBE+ debugger displays the following for pSOS+ objects:

For a description of pSOS+ objects, see pSOSystem System Concepts.

Before printing the name, the pROBE+ debugger determines whether the name contains nonprintable characters. If so, it prints the name as a 32-bit hexadecimal number, otherwise it prints a character string in single quotation marks. If the object is global, an asterisk (*) appears at the end of the ID. The following are examples of pSOS+ object displays:

Occasionally, in place of an object name and ID, the pROBE+ debugger displays the following:

This indicates that the ID is invalid. An ID can be invalid if an object has been deleted or if an application passes an invalid ID when it makes a service call to the pSOS+ kernel.

2.4.3 Date and Time

Date and time output conventions are the same as for input:

2.5 pROBE+ Flags

The pROBE+ debugger maintains a set of flags that affects its behavior. The initial setting for each flag is user-specified in the configuration table parameter td_flags. After the pROBE+ debugger starts up, flag settings can be examined and/or altered with the FL command. Refer to Chapter 4, ``Installation and Configuration,'' for a description of each flag.

2.6 pROBE+ Interrupt Level

The pROBE+ debugger does not completely disable interrupts while it is running. This is important because, in some real-time applications, certain interrupts must be serviced to maintain system operation. With the pROBE+ debugger, you can control the interrupt level at which it operates so that interrupts can continue to receive servicing during pROBE+ execution. The interrupt levels are (0 or 1).

The pROBE+ debugger executes at a level that is the higher of the pROBE+ interrupt level and the interrupt level of the application at the time of the most recent break. For example, if the pROBE+ interrupt level is 1 and a break occurs in code running at level 0, then the pROBE+ debugger executes at level 1. However, if a break occurs in code running at level 1 and the pROBE+ interrupt level is 0, the pROBE+ debugger executes at level 1.

Do not confuse the pROBE+ interrupt level with the interrupt level of an application. The C0-SR register contains the interrupt enable current [IEc] bit. The C0-SR[IEc] bit indicates whether interrupts are enabled when the application resumes execution. If C0-SR[IEc] is 1, the IL is 0. If C0-SR[IEc] is 0, the IL is 1.

The initial pROBE+ interrupt is specified in the pROBE+ configuration table entry td_flags. After starting the pROBE+ debugger, you can examine and/or change the interrupt with the IL command (see Section 3.7.2, ``IL - Set pROBE+ Interrupt Level").

Ordinarily, you should set the pROBE+ interrupt level to 1. However, certain special conditions may require a lower setting. For example:

2.7 Using the pROBE+ Debugger Before pSOS+ Startup

Typically, the pROBE+ debugger starts before the pSOS+ kernel or any other software components. This initial position of the pROBE+ debugger in the startup sequence allows you to download, set up, and start some or all of the elements in the application. This is particularly useful during preliminary debugging. However, the pROBE+ debugger accepts certain commands and options only after the pSOS+ kernel starts up. This list includes:

In addition, certain optional qualifiers to commands (for example, <task> for PR and DB) are not accepted before the pSOS+ kernel starts up. In such cases, the pROBE+ debugger rejects the command and displays the following error message:

All other commands are permissible both before and after the pSOS+ kernel is started. These commands include memory and register commands, start and resume execution commands, loading commands, and instruction/memory access break commands.





psos_support@isi.com

Copyright © 1996, Integrated Systems, Inc. All rights reserved.