<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>/assign element</title>
<title>CMSIS-Zone (Preview): /assign element</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-Zone (Preview)
   &#160;<span id="projectnumber">Version 0.0.1</span>
   </div>
   <div id="projectbrief">System Resource Management</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('format_assign.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">/assign element </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The <b>assign</b> element defines the resources used by a zone.</p>
<p><b>Example</b> </p>
<div class="fragment"><div class="line">&lt;zones&gt;</div>
<div class="line">  &lt;pzone name=<span class="stringliteral">&quot;App&quot;</span> Dname=<span class="stringliteral">&quot;ARM32CM4128x&quot;</span> Pname=<span class="stringliteral">&quot;Cortex-M4&quot;</span>&gt;</div>
<div class="line">    &lt;assign name=<span class="stringliteral">&quot;SHARED&quot;</span> as=<span class="stringliteral">&quot;SRAM&quot;</span> access=<span class="stringliteral">&quot;rwu&quot;</span>&gt;</div>
<div class="line">      &lt;capture symbol=<span class="stringliteral">&quot;.bss.shared&quot;</span>/&gt;</div>
<div class="line">      &lt;capture symbol=<span class="stringliteral">&quot;.data.shared&quot;</span>/&gt;</div>
<div class="line">      :</div>
<div class="line">    &lt;/assign&gt;</div>
<div class="line">    &lt;assign name=<span class="stringliteral">&quot;ADC0&quot;</span>             access=<span class="stringliteral">&quot;rw&quot;</span> /&gt;</div>
<div class="line">    :</div>
<div class="line">  &lt;/pzone&gt;</div>
<div class="line">  :</div>
<div class="line">&lt;/zones&gt;</div>
</div><!-- fragment --><p><b>Schema Description</b></p>
<table  class="cmtable" summary="Element: Assign">
<tr>
<th>Parent Element </th><th colspan="3">Element Chain  </th></tr>
<tr>
<td><a class="el" href="format_pzone.html">pzone</a> </td><td colspan="3"><a class="el" href="format_pzone.html">/pzone element</a>  </td></tr>
<tr>
<th>Attributes </th><th>Description </th><th>Type </th><th>Use  </th></tr>
<tr>
<td>name </td><td>The name of a resource (mapped to the processor) to be used by this zone. </td><td>xs:string </td><td>required  </td></tr>
<tr>
<td>as </td><td>The name of the mapping (alias) to be used to address the referenced resource. </td><td>xs:string </td><td>optional  </td></tr>
<tr>
<td>access </td><td>Additional access attributes to be used. </td><td>xs:string </td><td>optional  </td></tr>
<tr>
<td>info </td><td>Brief description of the resource assignment. </td><td>xs:string </td><td>optional  </td></tr>
<tr>
<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence  </th></tr>
<tr>
<td><a class="el" href="format_capture.html">/capture element</a> </td><td>Linker usage </td><td>complexType </td><td>0..*  </td></tr>
</table>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="XML_Format.html">Zone Description Format</a></li><li class="navelem"><a class="el" href="format_system.html">/system element</a></li><li class="navelem"><a class="el" href="format_zones.html">/zones element</a></li><li class="navelem"><a class="el" href="format_pzone.html">/pzone element</a></li><li class="navelem"><a class="el" href="format_xzone.html">/xzone element</a></li>
    <li class="footer">Generated on Wed Aug 1 2018 17:12:47 for CMSIS-Zone (Preview) by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
	-->
	</li>
  </ul>
</div>
</body>
</html>
