blob: 78cc8f0aac9d20e6f900e68b8a4d8bcfc72adbae [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Target Communication Framework Services - Memory Map</title>
</head>
<body lang='EN-US'>
<h1>Target Communication Framework Services - Memory Map</h1>
<ul>
<li><a href='#VersionHistory'>Version History</a>
<li><a href='#Overview'>Overview</a>
<li><a href='#Cmds'>Commands</a>
<ul>
<li><a href='#CmdGet'>Get</a>
<li><a href='#CmdSet'>Set</a>
</ul>
<li><a href='#Events'>Events</a>
<li><a href='#API'>API</a>
</ul>
<h1>Memory Service</h1>
<h2><a name='VersionHistory'>Version History</a></h2>
<table border=1 cellpadding=8>
<tr>
<th>Version
<th>Date
<th>Change
<tr>
<td>0.0
<td>2012-07-22
<td>Initial documentation based on source code
</table>
<h2><a name='Overview'>Overview</a></h2>
<p>The service provides basic operations to get and set memory mapping on a
target. Command and event parameters are encoded as zero terminated <a
href='TCF Specification.html#JSON'>JSON</a> strings.</p>
<p>The service uses standard format for error reports,
see <a href='TCF Services.html#ErrorFormat'>Error Report Format</a>.</p>
<h2><a name='Cmds'>Commands</a></h2>
<h3><a name='CmdGet'>Get</a></h3>
<pre><b><font face="Courier New" size=2 color=#333399>
C &bull; <i>&lt;token&gt;</i> &bull; MemoryMap &bull; get &bull; <i>&lt;string: context ID&gt;</i> &bull;
</font></b></pre>
<p>The command retrieves memory maps for given context ID.</p>
<p>Reply:</p>
<pre><b><font face="Courier New" size=2 color=#333399>
R &bull; <i>&lt;token&gt;</i> &bull; <i>&lt;error report&gt;</i> &bull; <i>&lt;array of map items&gt;</i> &bull;
<i>&lt;array of map items&gt;</i>
&rArr; null
&rArr; [ <i>&lt;map items list&gt;</i> ]
<i>&lt;map items list&gt;</i>
&rArr; <i>&lt;object: map item properties&gt;</i>
&rArr; <i>&lt;map items list&gt;</i> , <i>&lt;object: map item properties&gt;</i>
</font></b></pre>
<p>Predefined memory map properties are:</p>
<ul>
<li><code><b><font face="Courier New" size=2 color=#333399>"ID" : <i>&lt;string&gt;</i></font></b></code>
- Memory region ID.
<li><code><b><font face="Courier New" size=2 color=#333399>"ContextQuery" : <i>&lt;string&gt;</i></font></b></code>
- Memory region context query.
<li><code><b><font face="Courier New" size=2 color=#333399>"Addr" : <i>&lt;int&gt;</i></font></b></code>
- region address in memory.
<li><code><b><font face="Courier New" size=2 color=#333399>"Size" : <i>&lt;int&gt;</i></font></b></code>
- region size.
<li><code><b><font face="Courier New" size=2 color=#333399>"Offs" : <i>&lt;int&gt;</i></font></b></code>
- Region offset in the file.
<li><code><b><font face="Courier New" size=2 color=#333399>"BSS" : <i>&lt;boolean&gt;</i></font></b></code>
- True if the region represents BSS.
<li><code><b><font face="Courier New" size=2 color=#333399>"Flags" : <i>&lt;int&gt;</i></font></b></code>
- Region memory protection flags, see predefined flags.
<li><code><b><font face="Courier New" size=2 color=#333399>"FileName" : <i>&lt;string&gt;</i></font></b></code>
- Name of the file.
<li><code><b><font face="Courier New" size=2 color=#333399>"SectionName" : <i>&lt;string&gt;</i></font></b></code>
- Name of the object file section.
<p>Predefined flags are:</p>
<ul>
<li><code><b><font face="Courier New" size=2 color=#333399>1</font></b></code>
- Read access is allowed.</li>
<li><code><b><font face="Courier New" size=2 color=#333399>2</font></b></code>
- Write access is allowed.</li>
<li><code><b><font face="Courier New" size=2 color=#333399>4</font></b></code>
- Instruction fetch access is allowed.</li>
</ul>
</ul>
<h3><a name='CmdSet'>Set</a></h3>
<pre><b><font face="Courier New" size=2 color=#333399>
C &bull; <i>&lt;token&gt;</i> &bull; MemoryMap &bull; set &bull; <i>&lt;string: context ID&gt;</i> &bull; <i>&lt;object: map item properties&gt;</i> &bull;
</font></b></pre>
<p>The command sets a memory mapping for context specified by context ID. Map item object uses the same properties as defined in the get command.</p>
<p>Reply:</p>
<pre><b><font face="Courier New" size=2 color=#333399>
R &bull; <i>&lt;token&gt;</i> &bull; <i>&lt;error report&gt;</i> &bull;
</font></b></pre>
<h2><a name='Events'>Events</a></h2>
<p>MemoryMap service broadcasts notification events when memory map items are changed.</p>
<pre><b><font face="Courier New" size=2 color=#333399>
E &bull; MemoryMap &bull; changed &bull; <i>&lt;string: context ID&gt;</i> &bull;
</font></b></pre>
<h2><a name='API'>API</a></h2>
<pre>
<font color=#3F5FBF>/**
* IMemoryMap service provides information about executable modules (files) mapped (loaded) into target memory.
*/</font>
<font color=#7F0055>public interface</font> IMemoryMap <font color=#7F0055>extends</font> IService {
<font color=#7F0055>static final</font> String NAME = "MemoryMap";
<font color=#3F5FBF>/**
* Memory region property names.
*/</font>
<font color=#7F0055>static final</font> String
PROP_ID = "ID", <font color=#3F5FBF>/** String, memory region ID */</font>
PROP_CONTEXT_QUERY = "ContextQuery", <font color=#3F5FBF>/** String, memory region context query, see IContextQuery */</font>
PROP_ADDRESS = "Addr", <font color=#3F5FBF>/** Number, region address in memory */</font>
PROP_SIZE = "Size", <font color=#3F5FBF>/** Number, region size */</font>
PROP_OFFSET = "Offs", <font color=#3F5FBF>/** Number, region offset in the file */</font>
PROP_BSS = "BSS", <font color=#3F5FBF>/** Boolean, true if the region represents BSS */</font>
PROP_FLAGS = "Flags", <font color=#3F5FBF>/** Number, region memory protection flags, see FLAG_* */</font>
PROP_FILE_NAME = "FileName", <font color=#3F5FBF>/** String, name of the file */</font>
PROP_SECTION_NAME = "SectionName"; <font color=#3F5FBF>/** String, name of the object file section */</font>
<font color=#3F5FBF>/**
* Memory region flags.
*/</font>
<font color=#7F0055>static final</font> int
FLAG_READ = 1, <font color=#3F5FBF>/** Read access is allowed */</font>
FLAG_WRITE = 2, <font color=#3F5FBF>/** Write access is allowed */</font>
FLAG_EXECUTE = 4; <font color=#3F5FBF>/** Instruction fetch access is allowed */</font>
<font color=#3F5FBF>/**
* Memory region interface.
*/</font>
<font color=#7F0055>interface</font> MemoryRegion {
<font color=#3F5FBF>/**
* Get region properties. See PROP_* definitions for property names.
* Properties are read only, clients should not try to modify them.
* <font color=#7F9FBF>@return</font> Map of region properties.
*/</font>
Map<String,Object> getProperties();
<font color=#3F5FBF>/**
* Get memory region address.
* Same as getProperties().get(PROP_ADDRESS)
* <font color=#7F9FBF>@return</font> region address.
*/</font>
Number getAddress();
<font color=#3F5FBF>/**
* Get memory region size.
* Same as getProperties().get(PROP_SIZE)
* <font color=#7F9FBF>@return</font> region size.
*/</font>
Number getSize();
<font color=#3F5FBF>/**
* Get memory region file offset.
* Same as getProperties().get(PROP_OFFSET)
* <font color=#7F9FBF>@return</font> file offset.
*/</font>
Number getOffset();
<font color=#3F5FBF>/**
* Check if the region represents BSS - data segment containing
* statically-allocated variables represented solely by zero-valued bits initially.
* Memory for BSS segments is not backed by a file contents.
* Same as getProperties().get(PROP_BSS)
* <font color=#7F9FBF>@return</font> file offset.
*/</font>
boolean isBSS();
<font color=#3F5FBF>/**
* Get memory region flags.
* Same as getProperties().get(PROP_FLAGS)
* <font color=#7F9FBF>@return</font> region flags.
*/</font>
int getFlags();
<font color=#3F5FBF>/**
* Get memory region file name.
* Same as getProperties().get(PROP_FILE_NAME)
* <font color=#7F9FBF>@return</font> file name.
*/</font>
String getFileName();
<font color=#3F5FBF>/**
* Get memory region section name.
* Same as getProperties().get(PROP_SECTION_NAME)
* <font color=#7F9FBF>@return</font> section name.
*/</font>
String getSectionName();
<font color=#3F5FBF>/**
* Get context query that defines scope of the region, see also IContextQuery.
* Same as getProperties().get(PROP_CONTEXT_QUERY)
* Only user-defined regions can have a context query property.
* <font color=#7F9FBF>@return</font> context query expression, or null.
*/</font>
String getContextQuery();
}
<font color=#3F5FBF>/**
* Retrieve memory map for given context ID.
*
* <font color=#7F9FBF>@param</font> id &ndash; context ID.
* <font color=#7F9FBF>@param</font> done &ndash; call back interface called when operation is completed.
* <font color=#7F9FBF>@return</font> &ndash; pending command handle.
*/</font>
IToken get(String id, DoneGet done);
<font color=#3F5FBF>/**
* Client call back interface for get().
*/</font>
<font color=#7F0055>interface</font> DoneGet {
/**
* Called when memory map data retrieval is done.
* <font color=#7F9FBF>@param</font> error &ndash; error description if operation failed, null if succeeded.
* <font color=#7F9FBF>@param</font> map &ndash; memory map data.
*/</font>
<font color=#7F0055>void</font> doneGet(IToken token, Exception error, MemoryRegion[] map);
}
<font color=#3F5FBF>/**
* Set memory map for given context.
* 'id' can be null, in such case scope of each memory region is
* defined by its ContextQuery property.
*
* Using non-null 'id' is deprecated - use ContextQuery instead.
*
* <font color=#7F9FBF>@param</font> id &ndash; symbols context group ID or name.
* <font color=#7F9FBF>@param</font> map &ndash; memory map data.
* <font color=#7F9FBF>@param</font> done &ndash; call back interface called when operation is completed.
* <font color=#7F9FBF>@return</font> &ndash; pending command handle.
*/</font>
IToken set(String id, MemoryRegion[] map, DoneSet done);
<font color=#3F5FBF>/**
* Client call back interface for set().
*/</font>
<font color=#7F0055>interface</font> DoneSet {
/**
* Called when memory map set command is done.
* <font color=#7F9FBF>@param</font> error &ndash; error description if operation failed, null if succeeded.
*/</font>
<font color=#7F0055>void</font> doneSet(IToken token, Exception error);
}
<font color=#3F5FBF>/**
* Add memory map event listener.
* <font color=#7F9FBF>@param</font> listener &ndash; memory map event listener to add.
*/</font>
<font color=#7F0055>void</font> addListener(MemoryMapListener listener);
<font color=#3F5FBF>/**
* Remove memory map event listener.
* <font color=#7F9FBF>@param</font> listener &ndash; memory map event listener to remove.
*/</font>
<font color=#7F0055>void</font> removeListener(MemoryMapListener listener);
<font color=#3F5FBF>/**
* Service events listener interface.
*/</font>
<font color=#7F0055>interface</font> MemoryMapListener {
<font color=#3F5FBF>/**
* Called when context memory map changes.
* <font color=#7F9FBF>@param</font> context_id &ndash; context ID.
*/</font>
<font color=#7F0055>void</font> changed(String context_id);
}
}
</pre>
</body>
</html>