* gdb.texinfo (Packets): Document vFlashErase,
vFlashWrite and vFlashDone packets. (General Query Packets): Document qXfer:memory-map:read. Add a new feature for qXfer:memory-map:read. (Memory map format): New section. (Target Commands): Mention that gdb can write flash.
This commit is contained in:
parent
a76d924dff
commit
68437a39ee
2 changed files with 165 additions and 0 deletions
|
@ -1,3 +1,13 @@
|
|||
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
|
||||
Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* gdb.texinfo (Packets): Document vFlashErase,
|
||||
vFlashWrite and vFlashDone packets.
|
||||
(General Query Packets): Document qXfer:memory-map:read.
|
||||
Add a new feature for qXfer:memory-map:read.
|
||||
(Memory map format): New section.
|
||||
(Target Commands): Mention that gdb can write flash.
|
||||
|
||||
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
|
||||
Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
|
|
|
@ -12291,6 +12291,9 @@ link the program; for other formats, like a.out, the object file format
|
|||
specifies a fixed address.
|
||||
@c FIXME! This would be a good place for an xref to the GNU linker doc.
|
||||
|
||||
Depending on the remote side capabilities, @value{GDBN} may be able to
|
||||
load programs into flash memory.
|
||||
|
||||
@code{load} does not repeat if you press @key{RET} again after using it.
|
||||
@end table
|
||||
|
||||
|
@ -22654,6 +22657,7 @@ Show the current setting of the target wait timeout.
|
|||
* Interrupts::
|
||||
* Examples::
|
||||
* File-I/O remote protocol extension::
|
||||
* Memory map format::
|
||||
@end menu
|
||||
|
||||
@node Overview
|
||||
|
@ -23152,6 +23156,58 @@ command in the @samp{vCont} packet.
|
|||
The @samp{vCont} packet is not supported.
|
||||
@end table
|
||||
|
||||
@item vFlashErase:@var{addr},@var{length}
|
||||
@cindex @samp{vFlashErase} packet
|
||||
Direct the stub to erase @var{length} bytes of flash starting at
|
||||
@var{addr}. The region may enclose any number of flash blocks, but
|
||||
its start and end must fall on block boundaries, as indicated by the
|
||||
flash block size appearing in the memory map (@pxref{Memory map
|
||||
format}). @value{GDBN} groups flash memory programming operations
|
||||
together, and sends a @samp{vFlashDone} request after each group; the
|
||||
stub is allowed to delay erase operation until the @samp{vFlashDone}
|
||||
packet is received.
|
||||
|
||||
Reply:
|
||||
@table @samp
|
||||
@item OK
|
||||
for success
|
||||
@item E @var{NN}
|
||||
for an error
|
||||
@end table
|
||||
|
||||
@item vFlashWrite:@var{addr}:@var{XX@dots{}}
|
||||
@cindex @samp{vFlashWrite} packet
|
||||
Direct the stub to write data to flash address @var{addr}. The data
|
||||
is passed in binary form using the same encoding as for the @samp{X}
|
||||
packet (@pxref{Binary Data}). The memory ranges specified by
|
||||
@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
|
||||
not overlap, and must appear in order of increasing addresses
|
||||
(although @samp{vFlashErase} packets for higher addresses may already
|
||||
have been received; the ordering is guaranteed only between
|
||||
@samp{vFlashWrite} packets). If a packet writes to an address that was
|
||||
neither erased by a preceding @samp{vFlashErase} packet nor by some other
|
||||
target-specific method, the results are unpredictable.
|
||||
|
||||
|
||||
Reply:
|
||||
@table @samp
|
||||
@item OK
|
||||
for success
|
||||
@item E.memtype
|
||||
for vFlashWrite addressing non-flash memory
|
||||
@item E @var{NN}
|
||||
for an error
|
||||
@end table
|
||||
|
||||
@item vFlashDone
|
||||
@cindex @samp{vFlashDone} packet
|
||||
Indicate to the stub that flash programming operation is finished.
|
||||
The stub is permitted to delay or batch the effects of a group of
|
||||
@samp{vFlashErase} and @samp{vFlashWrite} packets until a
|
||||
@samp{vFlashDone} packet is received. The contents of the affected
|
||||
regions of flash memory are unpredictable until the @samp{vFlashDone}
|
||||
request is completed.
|
||||
|
||||
@item X @var{addr},@var{length}:@var{XX@dots{}}
|
||||
@anchor{X packet}
|
||||
@cindex @samp{X} packet
|
||||
|
@ -23694,6 +23750,11 @@ These are the currently defined stub features and their properties:
|
|||
@tab @samp{-}
|
||||
@tab Yes
|
||||
|
||||
@item @samp{qXfer:memory-map:read}
|
||||
@tab No
|
||||
@tab @samp{-}
|
||||
@tab Yes
|
||||
|
||||
@end multitable
|
||||
|
||||
These are the currently defined stub features, in more detail:
|
||||
|
@ -23791,6 +23852,7 @@ packets.)
|
|||
@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
|
||||
@cindex read special object, remote request
|
||||
@cindex @samp{qXfer} packet
|
||||
@anchor{qXfer read}
|
||||
Read uninterpreted bytes from the target's special data area
|
||||
identified by the keyword @var{object}. Request @var{length} bytes
|
||||
starting at @var{offset} bytes into the data. The content and
|
||||
|
@ -23812,6 +23874,17 @@ This packet is not probed by default; the remote stub must request it,
|
|||
by suppling an appropriate @samp{qSupported} response (@pxref{qSupported}).
|
||||
@end table
|
||||
|
||||
@table @samp
|
||||
@item qXfer:memory-map:read::@var{offset},@var{length}
|
||||
@anchor{qXfer memory map read}
|
||||
Access the target's @dfn{memory-map}. @xref{Memory map format}. The
|
||||
annex part of the generic @samp{qXfer} packet must be empty
|
||||
(@pxref{qXfer read}).
|
||||
|
||||
This packet is not probed by default; the remote stub must request it,
|
||||
by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
|
||||
@end table
|
||||
|
||||
Reply:
|
||||
@table @samp
|
||||
@item m @var{data}
|
||||
|
@ -25292,6 +25365,88 @@ host is called:
|
|||
<- @code{T02}
|
||||
@end smallexample
|
||||
|
||||
@node Memory map format
|
||||
@section Memory map format
|
||||
@cindex memory map format
|
||||
|
||||
To be able to write into flash memory, @value{GDBN} needs to obtain a
|
||||
memory map from the target. This section describes the format of the
|
||||
memory map.
|
||||
|
||||
The memory map is obtained using the @samp{qXfer:memory-map:read}
|
||||
(@pxref{qXfer memory map read}) packet and is an XML document that
|
||||
lists memory regions. The top-level structure of the document is shown below:
|
||||
|
||||
@smallexample
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE memory-map
|
||||
PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
|
||||
"http://sourceware.org/gdb/gdb-memory-map.dtd">
|
||||
<memory-map>
|
||||
region...
|
||||
</memory-map>
|
||||
@end smallexample
|
||||
|
||||
Each region can be either:
|
||||
|
||||
@itemize
|
||||
|
||||
@item
|
||||
A region of RAM starting at @var{addr} and extending for @var{length}
|
||||
bytes from there:
|
||||
|
||||
@smallexample
|
||||
<memory type="ram" start="@var{addr}" length="@var{length}"/>
|
||||
@end smallexample
|
||||
|
||||
|
||||
@item
|
||||
A region of read-only memory:
|
||||
|
||||
@smallexample
|
||||
<memory type="rom" start="@var{addr}" length="@var{length}"/>
|
||||
@end smallexample
|
||||
|
||||
|
||||
@item
|
||||
A region of flash memory, with erasure blocks @var{blocksize}
|
||||
bytes in length:
|
||||
|
||||
@smallexample
|
||||
<memory type="flash" start="@var{addr}" length="@var{length}">
|
||||
<property name="blocksize">@var{blocksize}</property>
|
||||
</memory>
|
||||
@end smallexample
|
||||
|
||||
@end itemize
|
||||
|
||||
Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
|
||||
by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
|
||||
packets to write to addresses in such ranges.
|
||||
|
||||
The formal DTD for memory map format is given below:
|
||||
|
||||
@smallexample
|
||||
<!-- ................................................... -->
|
||||
<!-- Memory Map XML DTD ................................ -->
|
||||
<!-- File: memory-map.dtd .............................. -->
|
||||
<!-- .................................... .............. -->
|
||||
<!-- memory-map.dtd -->
|
||||
<!-- memory-map: Root element with versioning -->
|
||||
<!ELEMENT memory-map (memory | property)>
|
||||
<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
|
||||
<!ELEMENT memory (property)>
|
||||
<!-- memory: Specifies a memory region,
|
||||
and its type, or device. -->
|
||||
<!ATTLIST memory type CDATA #REQUIRED
|
||||
start CDATA #REQUIRED
|
||||
length CDATA #REQUIRED
|
||||
device CDATA #IMPLIED>
|
||||
<!-- property: Generic attribute tag -->
|
||||
<!ELEMENT property (#PCDATA | property)*>
|
||||
<!ATTLIST property name CDATA #REQUIRED>
|
||||
@end smallexample
|
||||
|
||||
@include agentexpr.texi
|
||||
|
||||
@include gpl.texi
|
||||
|
|
Loading…
Reference in a new issue