Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: 78cc8f0aac9d20e6f900e68b8a4d8bcfc72adbae (plain) (tree)




















































































































































































































































































































                                                                                                                                                           
<!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>

Back to the top