Line 522... |
Line 522... |
Steve Tjiang, John Newlin, and Scott Foehner.
|
Steve Tjiang, John Newlin, and Scott Foehner.
|
|
|
Michael Eager and staff of Xilinx, Inc., contributed support for the
|
Michael Eager and staff of Xilinx, Inc., contributed support for the
|
Xilinx MicroBlaze architecture.
|
Xilinx MicroBlaze architecture.
|
|
|
|
The original port to the OpenRISC 1000 is believed to be due to
|
|
Alessandro Forin and Per Bothner. More recent ports have been the work
|
|
of Jeremy Bennett.
|
|
|
@node Sample Session
|
@node Sample Session
|
@chapter A Sample @value{GDBN} Session
|
@chapter A Sample @value{GDBN} Session
|
|
|
You can use this manual at your leisure to read all about @value{GDBN}.
|
You can use this manual at your leisure to read all about @value{GDBN}.
|
However, a handful of commands are enough to get started using the
|
However, a handful of commands are enough to get started using the
|
Line 18306... |
Line 18310... |
|
|
@node OpenRISC 1000
|
@node OpenRISC 1000
|
@subsection OpenRISC 1000
|
@subsection OpenRISC 1000
|
@cindex OpenRISC 1000
|
@cindex OpenRISC 1000
|
|
|
@cindex or1k boards
|
Previous versions of @value{GDBN} supported remote connection via a
|
See OR1k Architecture document (@uref{www.opencores.org}) for more information
|
proprietary JTAG protocol using the @samp{target jtag} command. Support
|
about platform and commands.
|
for this has now been dropped.
|
|
|
|
|
@table @code
|
@table @code
|
|
|
@kindex target jtag
|
@kindex target remote
|
@item target jtag jtag://@var{host}:@var{port}
|
@item target remote
|
|
|
|
This is now the only way to connect to a remote OpenRISC 1000
|
|
target. This is supported by @dfn{Or1ksim}, the OpenRISC 1000
|
|
architectural simulator, and Verilator and Icarus Verilog
|
|
simulations. @dfn{Remote serial protocol} servers are also available to
|
|
drive various hardware implementations via JTAG.
|
Connects to remote JTAG server.
|
Connects to remote JTAG server.
|
JTAG remote server can be either an or1ksim or JTAG server,
|
|
connected via parallel port to the board.
|
|
|
|
Example: @code{target jtag jtag://localhost:9999}
|
Example: @code{target remote :51000}
|
|
|
|
@kindex target sim
|
|
@item target sim
|
|
|
@kindex or1ksim
|
@dfn{Or1ksim}, the OpenRISC 1000 architectural simulator is now
|
@item or1ksim @var{command}
|
incorporated within @value{GDBN} as a simulator target. It is started
|
If connected to @code{or1ksim} OpenRISC 1000 Architectural
|
in quiet mode with 8M of memory starting at address 0. It is possible
|
Simulator, proprietary commands can be executed.
|
to pass arguments to extend this configuration using the @samp{-f}
|
|
option to @samp{target sim}. However for more complex use, the user is
|
|
advised to run @dfn{Or1ksim} separately, with its own configuration
|
|
file, and connect using @samp{target remote}
|
|
|
@kindex info or1k spr
|
Example: @code{target sim}
|
|
|
|
@kindex info spr
|
@item info or1k spr
|
@item info or1k spr
|
Displays spr groups.
|
Displays groups.
|
|
|
@item info or1k spr @var{group}
|
@item info spr @var{group}
|
@itemx info or1k spr @var{groupno}
|
@itemx info spr @var{groupno}
|
Displays register names in selected group.
|
Displays register names in selected group.
|
|
|
@item info or1k spr @var{group} @var{register}
|
@item info spr @var{group} @var{register}
|
@itemx info or1k spr @var{register}
|
@itemx info spr @var{register}
|
@itemx info or1k spr @var{groupno} @var{registerno}
|
@itemx info spr @var{groupno} @var{registerno}
|
@itemx info or1k spr @var{registerno}
|
@itemx info spr @var{registerno}
|
Shows information about specified spr register.
|
Shows information about specified spr register.
|
|
|
|
Example: @code{info spr DRR}
|
|
|
|
@code{DEBUG.DRR = SPR6_21 = 0 (0x0)}
|
|
|
@kindex spr
|
@kindex spr
|
@item spr @var{group} @var{register} @var{value}
|
@item spr @var{group} @var{register} @var{value}
|
@itemx spr @var{register @var{value}}
|
@itemx spr @var{register @var{value}}
|
@itemx spr @var{groupno} @var{registerno @var{value}}
|
@itemx spr @var{groupno} @var{registerno @var{value}}
|
@itemx spr @var{registerno @var{value}}
|
@itemx spr @var{registerno @var{value}}
|
Writes @var{value} to specified spr register.
|
Writes @var{value} to specified spr register.
|
@end table
|
|
|
|
Some implementations of OpenRISC 1000 Architecture also have hardware trace.
|
Example: spr PICMR 0x24
|
It is very similar to @value{GDBN} trace, except it does not interfere with normal
|
|
program execution and is thus much faster. Hardware breakpoints/watchpoint
|
|
triggers can be set using:
|
|
@table @code
|
|
@item $LEA/$LDATA
|
|
Load effective address/data
|
|
@item $SEA/$SDATA
|
|
Store effective address/data
|
|
@item $AEA/$ADATA
|
|
Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
|
|
@item $FETCH
|
|
Fetch data
|
|
@end table
|
@end table
|
|
|
When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
|
The use of @samp{info} and @samp{spr} commands is anachronistic. At
|
@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
|
some time in the future they will be replaced by @samp{show spr} and
|
|
@samp{set spr}.
|
@code{htrace} commands:
|
|
@cindex OpenRISC 1000 htrace
|
|
@table @code
|
|
@kindex hwatch
|
|
@item hwatch @var{conditional}
|
|
Set hardware watchpoint on combination of Load/Store Effective Address(es)
|
|
or Data. For example:
|
|
|
|
@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
|
|
|
|
@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
|
|
|
|
@kindex htrace
|
There are some known problems with the current implementation
|
@item htrace info
|
@cindex OpenRISC 1000 known problems
|
Display information about current HW trace configuration.
|
|
|
|
@item htrace trigger @var{conditional}
|
@enumerate
|
Set starting criteria for HW trace.
|
|
|
|
@item htrace qualifier @var{conditional}
|
|
Set acquisition qualifier for HW trace.
|
|
|
|
@item htrace stop @var{conditional}
|
|
Set HW trace stopping criteria.
|
|
|
|
@item htrace record [@var{data}]*
|
|
Selects the data to be recorded, when qualifier is met and HW trace was
|
|
triggered.
|
|
|
|
@item htrace enable
|
|
@itemx htrace disable
|
|
Enables/disables the HW trace.
|
|
|
|
@item htrace rewind [@var{filename}]
|
|
Clears currently recorded trace data.
|
|
|
|
If filename is specified, new trace file is made and any newly collected data
|
|
will be written there.
|
|
|
|
@item htrace print [@var{start} [@var{len}]]
|
|
Prints trace buffer, using current record configuration.
|
|
|
|
@item htrace mode continuous
|
@item
|
Set continuous trace mode.
|
@cindex OpenRISC 1000 known problems, hardware breakpoints and watchpoints
|
|
Some OpenRISC 1000 targets support hardware breakpoints and watchpoints.
|
|
Consult the target documentation for details. @value{GDBN} is not
|
|
perfect in handling of watchpoints. It is possible to allocate hardware
|
|
watchpoints and not discover until running that sufficient watchpoints
|
|
are not available. It is also possible that GDB will report watchpoints
|
|
being hit spuriously. This can be down to the assembly code having
|
|
additional memory accesses that are not obviously reflected in the
|
|
source code.
|
|
|
|
@item
|
|
@cindex OpenRISC 1000 known problems, architectural compatability
|
|
The OpenRISC 1000 architecture has evolved since the first port of @value{GDBN}. In particular the structure of the Unit Present register has
|
|
changed and the CPU Configuration register has been added. The port of
|
|
@value{GDBN} version @value{GDBVN} uses the @emph{current}
|
|
specification of the OpenRISC 1000.
|
|
|
@item htrace mode suspend
|
@end enumerate
|
Set suspend trace mode.
|
|
|
|
@end table
|
@cindex Bugs, reporting
|
|
@cindex Reporting bugs
|
|
Reports of bugs are much welcomed. Please report problems through the
|
|
OpenRISC tracker at @uref{http://opencores.org/openrisc,downloads}.
|
|
|
@node PowerPC Embedded
|
@node PowerPC Embedded
|
@subsection PowerPC Embedded
|
@subsection PowerPC Embedded
|
|
|
@cindex DVC register
|
@cindex DVC register
|