<!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>NXP LPC55S69</title>
<title>CMSIS-Zone (Preview): NXP LPC55S69</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.9.2</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('zTELPC55.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">NXP LPC55S69 </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This single processor demo application shows how to do the <a class="el" href="UseCases.html#UseCase_TrustZone">TrustZone Partitioning</a>. It is split into a secure and non-secure part. Using CMSIS-Zone, it generates:</p>
<ul>
<li>A header file that contains #defines to control the various linker scatter files (and might be used in other parts of the application).</li>
<li>Memory protection controller (MPC) setup.</li>
<li>Peripheral protection controller (PPC) and related interrupt setup.</li>
<li>Secure attribution unit (SAU) setup.</li>
</ul>
<p>The application itself shows how to implement calls between the secure and the non-secure part.</p>
<h1><a class="anchor" id="zTELPC55_Eclipse"></a>
Using the CMSIS-Zone project</h1>
<ul>
<li><a class="el" href="zTExamples.html#zTExImport">Import</a> the project "Examples\LPC55S69\Zone" into the CMSIS-Zone utility</li>
<li><a class="el" href="zTUI.html#zTProjEx">Open</a> the LPC55S69.azone file</li>
<li><a class="el" href="zTUIGenerate.html">Generate</a> the related output files</li>
</ul>
<p>The LPC55S69.azone file of that project has the following configuration settings:</p>
<ul>
<li><a class="el" href="zTUIZonePart.html#zTUICreate">Added the zones</a> <code>hello_world_s</code> and <code>hello_worls_ns</code> </li>
<li><a class="el" href="zTUIMemPerRes.html#zTUIMemAdd">Created the memory regions</a> <code>CODE_NS</code>, <code>Config</code>, <code>CODE_S</code>, <code>Veneer</code>, <code>DATA_NS</code>, and <code>DATA_S</code> </li>
<li>Selected various memory regions and peripherals for using in the different zones.</li>
</ul>
<div class="image">
<img src="lpc55_zones.png" alt="lpc55_zones.png"/>
</div>
<p>The zones use different Flash and SRAM regions for code and data, but share Flash configuration registers. Peripherals, such as the system and IO configuration, as well as an UART are available in the secure world only. To generate the output, click on the <a class="el" href="zTUIGenerate.html">Generate</a> button in the Zone Editor tool bar. This creates the following files in the <code>ftl_gen</code> directory:</p>
<table class="doxtable">
<tr>
<th align="left">Template File </th><th align="left">Generated File </th><th align="left">Description  </th></tr>
<tr>
<td align="left">dump_fzone.txt.ftl </td><td align="left">dump_fzone.txt </td><td align="left">Contains the complete model </td></tr>
<tr>
<td align="left">helper.ftlinc </td><td align="left">N/A </td><td align="left">Helper template file with FTL functions. </td></tr>
<tr>
<td align="left">mem_layout.h.ftl </td><td align="left">mem_layout.h </td><td align="left">Header file that contains the memory region definitions, for example for the linker scatter file. </td></tr>
<tr>
<td align="left">scatter_ns.sct.ftl </td><td align="left">scatter_ns.sct </td><td align="left">Example scatter file for the non-secure zone (currently not used in MDK). </td></tr>
<tr>
<td align="left">scatter_s.sct.ftl </td><td align="left">scatter_s.sct </td><td align="left">Example scatter file for the secure zone (currently not used in MDK). </td></tr>
<tr>
<td align="left">tzm_config_mpc.c.ftl </td><td align="left">tzm_config_mpc.c </td><td align="left">Setup of the memory protection controller (MPC). </td></tr>
<tr>
<td align="left">tzm_config_ppc.c.ftl </td><td align="left">tzm_config_ppc.c </td><td align="left">Setup of the peripheral protection controller (PPC). </td></tr>
<tr>
<td align="left">tzm_config_sau.c.ftl </td><td align="left">tzm_config_sau.c </td><td align="left">Configuration of the secure attribution unit (SAU) and the NVIC interrupt assignment. </td></tr>
</table>
<p>These files can be used in any IDE to create the final application. In the following, the usage in Arm Keil MDK is described.</p>
<h1><a class="anchor" id="zTELPC55_MDK"></a>
Using the MDK project</h1>
<p>The example project can be loaded, built and debugged in µVision by performing the following steps:</p>
<ol type="1">
<li>Navigate to Examples/LPC55S69/MDK</li>
<li>Open the multi-project workspace hello_world.uvmpw</li>
<li>Optional: Update the generated files by executing the copy_gen.bat scripts in hello_world_s\mdk and hello_world_ns\mdk folders.</li>
<li>Run the batch build in MDK. Both projects, hello_world_s and hello_world_ns need to be compiled in order.</li>
<li>Set hello_world_s as active project.</li>
<li>Connect the LPC55S69-EVK using a Micro-USB cable at Debug Link (P6).</li>
<li>Open <b>Options for Target - Debug</b> and make sure that the CMSIS-DAP ARMv8-M Debugger is selected and the LPC-LINK2 is used.</li>
<li>Optional: Open a serial terminal program (i.e. PuTTY) on the virtual serial port provided in parallel to the debugger (e.g. USB Serial Device). Configure the port to 115200/8N1.</li>
<li>Launch a debug session and watch the serial console output: <div class="image">
<img src="hello_world_output.png" alt="hello_world_output.png"/>
</div>
</li>
</ol>
<h1><a class="anchor" id="zTELPC55_MDK_Setup"></a>
MDK project setup</h1>
<p>The multiproject workspace contains the secure <code>hello_world_s</code> project and the non-secure <code>hello_world_ns</code> project:</p>
<div class="image">
<img src="hello_world_proj_window.png" alt="hello_world_proj_window.png"/>
</div>
<p>The projects use the files generated in CMSIS-Zone as follows:</p>
<table class="doxtable">
<tr>
<th align="left">File </th><th align="left">Used in </th><th align="left">Description  </th></tr>
<tr>
<td align="left">mem_layout.h </td><td align="left">hello_world_s, hello_world_ns </td><td align="left">Input for the scatter files. </td></tr>
<tr>
<td align="left">tzm_config_mpc.c </td><td align="left">hello_world_s </td><td align="left">Functions called from tzm_config.c </td></tr>
<tr>
<td align="left">tzm_config_ppc.c </td><td align="left">hello_world_s </td><td align="left">Functions called from tzm_config.c </td></tr>
<tr>
<td align="left">tzm_config_sau.c </td><td align="left">hello_world_s </td><td align="left">Functions called from tzm_config.c </td></tr>
</table>
<p>The scatter files <code>hello_world_s.sct</code> and <code>hello_world_ns.sct</code> are based on the original scatter files from NXP and are using a preinclude to mem_layout.h to get the information about the different memory regions.</p>
<dl class="section note"><dt>Note</dt><dd>If you want to learn more about the general project layout for an Armv8-M project using TrustZone, refer to <a href="https://www.keil.com/appnotes/docs/apnt_291.asp" target="_blank">Application Note 291</a>.</dd></dl>
<h2><a class="anchor" id="zTELPC55_hwsScatter"></a>
hello_world_s.sct</h2>
<p>As explained previously, the #defines in <code>mem_layout.h</code> can be used to create generic scatter files that are easy to update once changes in the CMSIS-Zone project happen. Using the <b>mem_layout.h</b> file from CMSIS-Zone, the following scatter file is used in the secure <code>hello_world</code> project:</p>
<div class="fragment"><div class="line">; Use Arm compiler 6 to pre-process the scatter file and pull in the defines from the mem_layout.h file:</div>
<div class="line"><span class="preprocessor">#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m33 -I../ -xc</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="preprocessor">#include &quot;mem_layout.h&quot;</span></div>
<div class="line"> </div>
<div class="line">; *------- &lt;&lt;&lt; Use Configuration Wizard in Context Menu &gt;&gt;&gt; ------------------</div>
<div class="line"> </div>
<div class="line">;&lt;h&gt; Stack Configuration</div>
<div class="line">;  &lt;o&gt; Stack Size (in Bytes) &lt;0x0-0xFFFFFFFF:8&gt;</div>
<div class="line">;&lt;/h&gt;</div>
<div class="line"><span class="preprocessor">#define STACK_SIZE 0x400</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line">;&lt;h&gt; Heap Configuration</div>
<div class="line">;  &lt;o&gt; Heap Size (in Bytes) &lt;0x0-0xFFFFFFFF:8&gt;</div>
<div class="line">;&lt;/h&gt;</div>
<div class="line"><span class="preprocessor">#define HEAP_SIZE 0xC00</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line">; *-------------- &lt;&lt;&lt; end of configuration section &gt;&gt;&gt; -----------------------</div>
<div class="line"></div>
<div class="line">LR_CODE_S REGION_CODE_S_START REGION_CODE_S_SIZE {</div>
<div class="line">  ER_CODE_S REGION_CODE_S_START REGION_CODE_S_SIZE {</div>
<div class="line">          (RESET,+FIRST)</div>
<div class="line">      (InRoot$$Sections)</div>
<div class="line">    .ANY (+RO, +XO)</div>
<div class="line">  }</div>
<div class="line">  RW_DATA_S REGION_DATA_S_START REGION_DATA_S_SIZE-HEAP_SIZE-STACK_SIZE {</div>
<div class="line">    .ANY (+RW +ZI)</div>
<div class="line">  }</div>
<div class="line"><span class="preprocessor">#if HEAP_SIZE&gt;0</span></div>
<div class="line"><span class="preprocessor"></span>  ARM_LIB_HEAP REGION_DATA_S_START+REGION_DATA_S_SIZE-HEAP_SIZE-STACK_SIZE EMPTY HEAP_SIZE {</div>
<div class="line">  }</div>
<div class="line"><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#if STACK_SIZE&gt;0</span></div>
<div class="line"><span class="preprocessor"></span>  ARM_LIB_STACK REGION_DATA_S_START+REGION_DATA_S_SIZE-STACK_SIZE EMPTY STACK_SIZE {</div>
<div class="line">  }</div>
<div class="line"><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span>}</div>
<div class="line">LR_VENEER REGION_VENEER_START REGION_VENEER_SIZE {</div>
<div class="line">  ER_VENEER REGION_VENEER_START REGION_VENEER_SIZE {</div>
<div class="line">         (Veneer$$CMSE)</div>
<div class="line">  }</div>
<div class="line">}</div>
</div><!-- fragment --><h2><a class="anchor" id="zTELPC55_TZSetup"></a>
TrustZone Setup at Startup</h2>
<p>During the system initialization, the function <b>SystemInitHook</b> is called. This is used when application specific code needs to be called as close to the reset entry as possible. In this example, this function calls <b>BOARD_InitTrustZone</b>, which calls the three TZM_Config_* functions:</p>
<div class="image">
<img src="lpc55_system_startup.png" alt="lpc55_system_startup.png"/>
</div>
 </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="zoneToolUsage.html">CMSIS-Zone Utility</a></li><li class="navelem"><a class="el" href="zTExamples.html">Examples</a></li>
    <li class="footer">Generated on Wed Jul 10 2019 15:21:06 for CMSIS-Zone (Preview) Version 0.9.2 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>
