MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00263.html

1218 lines
69 KiB
HTML

<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: PRINCE: PRINCE bus crypto engine</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</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: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<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><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</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('a00263.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>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><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="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">PRINCE: PRINCE bus crypto engine</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The MCUXpresso SDK provides a peripheral driver for the PRINCE bus crypto engine module of MCUXpresso SDK devices.</p>
<p>..</p>
<p>This example code shows how to use the PRINCE driver.</p>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/driver_examples/prince </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gadce343aecc3bcb85e396d05009df5e8b"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00258.html#ga6bfd6dd9281cf1736444d3d68194fe89">_skboot_status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gadce343aecc3bcb85e396d05009df5e8b">skboot_status_t</a></td></tr>
<tr class="memdesc:gadce343aecc3bcb85e396d05009df5e8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Secure status enumeration. <a href="#gadce343aecc3bcb85e396d05009df5e8b">More...</a><br/></td></tr>
<tr class="separator:gadce343aecc3bcb85e396d05009df5e8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f4c9d3b6f3a135c023af31b8accfade"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00258.html#ga8024cd1ee84b0c45ac510441f2f6d188">_secure_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga7f4c9d3b6f3a135c023af31b8accfade">secure_bool_t</a></td></tr>
<tr class="memdesc:ga7f4c9d3b6f3a135c023af31b8accfade"><td class="mdescLeft">&#160;</td><td class="mdescRight">Secure boolean enumeration. <a href="#ga7f4c9d3b6f3a135c023af31b8accfade">More...</a><br/></td></tr>
<tr class="separator:ga7f4c9d3b6f3a135c023af31b8accfade"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2c8f81ee7fddaf875dbdc63362335642"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00263.html#gad01a08e1051617f71dde87e50cdbe922">_prince_region</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a></td></tr>
<tr class="memdesc:ga2c8f81ee7fddaf875dbdc63362335642"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince region. <a href="#ga2c8f81ee7fddaf875dbdc63362335642">More...</a><br/></td></tr>
<tr class="separator:ga2c8f81ee7fddaf875dbdc63362335642"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga020af08db8885fd16060442d3e74b0f1"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00263.html#gafd62bfa8d72d164e2abb572ffdde8c34">_prince_lock</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga020af08db8885fd16060442d3e74b0f1">prince_lock_t</a></td></tr>
<tr class="memdesc:ga020af08db8885fd16060442d3e74b0f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince lock. <a href="#ga020af08db8885fd16060442d3e74b0f1">More...</a><br/></td></tr>
<tr class="separator:ga020af08db8885fd16060442d3e74b0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41d48c71d98a829eb258de65623922bc"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00263.html#ga34867ff858eeee0fb6f93cae8ddd30ab">_prince_flags</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga41d48c71d98a829eb258de65623922bc">prince_flags_t</a></td></tr>
<tr class="memdesc:ga41d48c71d98a829eb258de65623922bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince flag. <a href="#ga41d48c71d98a829eb258de65623922bc">More...</a><br/></td></tr>
<tr class="separator:ga41d48c71d98a829eb258de65623922bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga6bfd6dd9281cf1736444d3d68194fe89"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga6bfd6dd9281cf1736444d3d68194fe89">_skboot_status</a> { <br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a9f0ca718735dd60c0f6e2e103615f9bc">kStatus_SKBOOT_Success</a> = 0x5ac3c35au,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a905a486e12679a5223f9824de2fa272d">kStatus_SKBOOT_Fail</a> = 0xc35ac35au,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89ab7b21bcc121baaaf6a76bfe7f090912c">kStatus_SKBOOT_InvalidArgument</a> = 0xc35a5ac3u,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a7ca4bc728877b1f6c23e7dcbfa3ccf91">kStatus_SKBOOT_KeyStoreMarkerInvalid</a> = 0xc3c35a5au,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89ab100a53cab34959974f0d3c042e005d7">kStatus_SKBOOT_HashcryptFinishedWithStatusSuccess</a>,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a6b11be0c36b45ecfb11fe44b35ec78d6">kStatus_SKBOOT_HashcryptFinishedWithStatusFail</a>,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a9f0ca718735dd60c0f6e2e103615f9bc">kStatus_SKBOOT_Success</a> = 0x5ac3c35au,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a905a486e12679a5223f9824de2fa272d">kStatus_SKBOOT_Fail</a> = 0xc35ac35au,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89ab7b21bcc121baaaf6a76bfe7f090912c">kStatus_SKBOOT_InvalidArgument</a> = 0xc35a5ac3u,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga6bfd6dd9281cf1736444d3d68194fe89a7ca4bc728877b1f6c23e7dcbfa3ccf91">kStatus_SKBOOT_KeyStoreMarkerInvalid</a> = 0xc3c35a5au
<br/>
}</td></tr>
<tr class="memdesc:ga6bfd6dd9281cf1736444d3d68194fe89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Secure status enumeration. <a href="a00263.html#ga6bfd6dd9281cf1736444d3d68194fe89">More...</a><br/></td></tr>
<tr class="separator:ga6bfd6dd9281cf1736444d3d68194fe89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8024cd1ee84b0c45ac510441f2f6d188"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga8024cd1ee84b0c45ac510441f2f6d188">_secure_bool</a> { <br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188ad932c3b671bfe67c51f03e11c721baea">kSECURE_TRUE</a> = 0xc33cc33cU,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188aea4739fe46439345f5ed79f9474de365">kSECURE_FALSE</a> = 0x5aa55aa5U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188a7e7eede8a248707a5dfc155eccd0933e">kSECURE_CALLPROTECT_SECURITY_FLAGS</a> = 0xc33c5aa5U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188a8056add926dd6c6d8627382268749c7f">kSECURE_CALLPROTECT_IS_APP_READY</a> = 0x5aa5c33cU,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188aae494aba45c6e0f724cea838d36b7df1">kSECURE_TRACKER_VERIFIED</a> = 0x55aacc33U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188ad932c3b671bfe67c51f03e11c721baea">kSECURE_TRUE</a> = 0xc33cc33cU,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga8024cd1ee84b0c45ac510441f2f6d188aea4739fe46439345f5ed79f9474de365">kSECURE_FALSE</a> = 0x5aa55aa5U
<br/>
}</td></tr>
<tr class="memdesc:ga8024cd1ee84b0c45ac510441f2f6d188"><td class="mdescLeft">&#160;</td><td class="mdescRight">Secure boolean enumeration. <a href="a00263.html#ga8024cd1ee84b0c45ac510441f2f6d188">More...</a><br/></td></tr>
<tr class="separator:ga8024cd1ee84b0c45ac510441f2f6d188"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad01a08e1051617f71dde87e50cdbe922"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gad01a08e1051617f71dde87e50cdbe922">_prince_region</a> { <br/>
&#160;&#160;<a class="el" href="a00263.html#ggad01a08e1051617f71dde87e50cdbe922a89467100c770a25302e05b041eba4e52">kPRINCE_Region0</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#ggad01a08e1051617f71dde87e50cdbe922a057ad5eec5c4b09a79de0bc6877fd16b">kPRINCE_Region1</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#ggad01a08e1051617f71dde87e50cdbe922a7e44df1294a574caf2910ecf1a150c99">kPRINCE_Region2</a> = 2U
<br/>
}</td></tr>
<tr class="memdesc:gad01a08e1051617f71dde87e50cdbe922"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince region. <a href="a00263.html#gad01a08e1051617f71dde87e50cdbe922">More...</a><br/></td></tr>
<tr class="separator:gad01a08e1051617f71dde87e50cdbe922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafd62bfa8d72d164e2abb572ffdde8c34"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gafd62bfa8d72d164e2abb572ffdde8c34">_prince_lock</a> { <br/>
&#160;&#160;<a class="el" href="a00263.html#ggafd62bfa8d72d164e2abb572ffdde8c34a5fb668f900aa651456d0c3a8ebccd76f">kPRINCE_Region0Lock</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#ggafd62bfa8d72d164e2abb572ffdde8c34a32c92567d8c7ce1ff9af62618549410f">kPRINCE_Region1Lock</a> = 2U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#ggafd62bfa8d72d164e2abb572ffdde8c34af3c51db871ae83594413db97af2f6a50">kPRINCE_Region2Lock</a> = 4U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#ggafd62bfa8d72d164e2abb572ffdde8c34a6649bd9411c74c780495deb4b02372bb">kPRINCE_MaskLock</a> = 256U
<br/>
}</td></tr>
<tr class="memdesc:gafd62bfa8d72d164e2abb572ffdde8c34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince lock. <a href="a00263.html#gafd62bfa8d72d164e2abb572ffdde8c34">More...</a><br/></td></tr>
<tr class="separator:gafd62bfa8d72d164e2abb572ffdde8c34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga34867ff858eeee0fb6f93cae8ddd30ab"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga34867ff858eeee0fb6f93cae8ddd30ab">_prince_flags</a> { <br/>
&#160;&#160;<a class="el" href="a00263.html#gga34867ff858eeee0fb6f93cae8ddd30aba443c0c7714efb7203adecc6fc13baa75">kPRINCE_Flag_None</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga34867ff858eeee0fb6f93cae8ddd30abac5aeb76ead3f1b5892729c19a9daa2bc">kPRINCE_Flag_EraseCheck</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00263.html#gga34867ff858eeee0fb6f93cae8ddd30aba2671cd003f4caf92bd38b083f57a3e18">kPRINCE_Flag_WriteCheck</a> = 2U
<br/>
}</td></tr>
<tr class="memdesc:ga34867ff858eeee0fb6f93cae8ddd30ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prince flag. <a href="a00263.html#ga34867ff858eeee0fb6f93cae8ddd30ab">More...</a><br/></td></tr>
<tr class="separator:ga34867ff858eeee0fb6f93cae8ddd30ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga012d073141b3bf223bd6c1e48af22c4f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga012d073141b3bf223bd6c1e48af22c4f">PRINCE_EncryptEnable</a> (PRINCE_Type *base)</td></tr>
<tr class="memdesc:ga012d073141b3bf223bd6c1e48af22c4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable data encryption. <a href="#ga012d073141b3bf223bd6c1e48af22c4f">More...</a><br/></td></tr>
<tr class="separator:ga012d073141b3bf223bd6c1e48af22c4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf44097c4ed21bd37abf7ffbe075fc171"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gaf44097c4ed21bd37abf7ffbe075fc171">PRINCE_EncryptDisable</a> (PRINCE_Type *base)</td></tr>
<tr class="memdesc:gaf44097c4ed21bd37abf7ffbe075fc171"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable data encryption. <a href="#gaf44097c4ed21bd37abf7ffbe075fc171">More...</a><br/></td></tr>
<tr class="separator:gaf44097c4ed21bd37abf7ffbe075fc171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa5b795d6f65ed1df5dcd70b5d4375a39"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gaa5b795d6f65ed1df5dcd70b5d4375a39">PRINCE_IsEncryptEnable</a> (PRINCE_Type *base)</td></tr>
<tr class="memdesc:gaa5b795d6f65ed1df5dcd70b5d4375a39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is Enable data encryption. <a href="#gaa5b795d6f65ed1df5dcd70b5d4375a39">More...</a><br/></td></tr>
<tr class="separator:gaa5b795d6f65ed1df5dcd70b5d4375a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4904f98e5a882ecda2208c7f90c4dbda"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga4904f98e5a882ecda2208c7f90c4dbda">PRINCE_SetMask</a> (PRINCE_Type *base, uint64_t mask)</td></tr>
<tr class="memdesc:ga4904f98e5a882ecda2208c7f90c4dbda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets PRINCE data mask. <a href="#ga4904f98e5a882ecda2208c7f90c4dbda">More...</a><br/></td></tr>
<tr class="separator:ga4904f98e5a882ecda2208c7f90c4dbda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac544ff0e4122eb82b5dd75511ba60b7b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gac544ff0e4122eb82b5dd75511ba60b7b">PRINCE_SetLock</a> (PRINCE_Type *base, uint32_t lock)</td></tr>
<tr class="memdesc:gac544ff0e4122eb82b5dd75511ba60b7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Locks access for specified region registers or data mask register. <a href="#gac544ff0e4122eb82b5dd75511ba60b7b">More...</a><br/></td></tr>
<tr class="separator:gac544ff0e4122eb82b5dd75511ba60b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a2729eb0dc7b4947e6fb3889954b747"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga4a2729eb0dc7b4947e6fb3889954b747">PRINCE_GenNewIV</a> (<a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint8_t *iv_code, bool store, <a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *flash_context)</td></tr>
<tr class="memdesc:ga4a2729eb0dc7b4947e6fb3889954b747"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate new IV code. <a href="#ga4a2729eb0dc7b4947e6fb3889954b747">More...</a><br/></td></tr>
<tr class="separator:ga4a2729eb0dc7b4947e6fb3889954b747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3ca75aa388ef08703c2742d536c9a12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gaf3ca75aa388ef08703c2742d536c9a12">PRINCE_LoadIV</a> (<a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint8_t *iv_code)</td></tr>
<tr class="memdesc:gaf3ca75aa388ef08703c2742d536c9a12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load IV code. <a href="#gaf3ca75aa388ef08703c2742d536c9a12">More...</a><br/></td></tr>
<tr class="separator:gaf3ca75aa388ef08703c2742d536c9a12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1534f13254c974845e4c423438ba1807"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga1534f13254c974845e4c423438ba1807">PRINCE_SetEncryptForAddressRange</a> (<a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint32_t start_address, uint32_t length, <a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *flash_context, bool regenerate_iv)</td></tr>
<tr class="memdesc:ga1534f13254c974845e4c423438ba1807"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow encryption/decryption for specified address range. <a href="#ga1534f13254c974845e4c423438ba1807">More...</a><br/></td></tr>
<tr class="separator:ga1534f13254c974845e4c423438ba1807"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a56193c3c6b4c5bf9d2e8db4f2fac67"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga3a56193c3c6b4c5bf9d2e8db4f2fac67">PRINCE_GetRegionSREnable</a> (PRINCE_Type *base, <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint32_t *sr_enable)</td></tr>
<tr class="memdesc:ga3a56193c3c6b4c5bf9d2e8db4f2fac67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the PRINCE Sub-Region Enable register. <a href="#ga3a56193c3c6b4c5bf9d2e8db4f2fac67">More...</a><br/></td></tr>
<tr class="separator:ga3a56193c3c6b4c5bf9d2e8db4f2fac67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab91f6cbf43885c0aa52fa2e3bce11bd3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gab91f6cbf43885c0aa52fa2e3bce11bd3">PRINCE_GetRegionBaseAddress</a> (PRINCE_Type *base, <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint32_t *region_base_addr)</td></tr>
<tr class="memdesc:gab91f6cbf43885c0aa52fa2e3bce11bd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the PRINCE region base address register. <a href="#gab91f6cbf43885c0aa52fa2e3bce11bd3">More...</a><br/></td></tr>
<tr class="separator:gab91f6cbf43885c0aa52fa2e3bce11bd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4bf7dcb9492f71faf07514208a87b9e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga4bf7dcb9492f71faf07514208a87b9e0">PRINCE_SetRegionIV</a> (PRINCE_Type *base, <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, const uint8_t iv[8])</td></tr>
<tr class="memdesc:ga4bf7dcb9492f71faf07514208a87b9e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the PRINCE region IV. <a href="#ga4bf7dcb9492f71faf07514208a87b9e0">More...</a><br/></td></tr>
<tr class="separator:ga4bf7dcb9492f71faf07514208a87b9e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf0904acdadda6fca3269e5877c87551"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gabf0904acdadda6fca3269e5877c87551">PRINCE_SetRegionBaseAddress</a> (PRINCE_Type *base, <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint32_t region_base_addr)</td></tr>
<tr class="memdesc:gabf0904acdadda6fca3269e5877c87551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the PRINCE region base address. <a href="#gabf0904acdadda6fca3269e5877c87551">More...</a><br/></td></tr>
<tr class="separator:gabf0904acdadda6fca3269e5877c87551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac6e5b480af24714f93bbce6869717e49"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gac6e5b480af24714f93bbce6869717e49">PRINCE_SetRegionSREnable</a> (PRINCE_Type *base, <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a> region, uint32_t sr_enable)</td></tr>
<tr class="memdesc:gac6e5b480af24714f93bbce6869717e49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the PRINCE Sub-Region Enable register. <a href="#gac6e5b480af24714f93bbce6869717e49">More...</a><br/></td></tr>
<tr class="separator:gac6e5b480af24714f93bbce6869717e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9654c231f2c2ffedb040ae6a58e852f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga9654c231f2c2ffedb040ae6a58e852f0">PRINCE_FlashEraseWithChecker</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint32_t start, uint32_t lengthInBytes, uint32_t key)</td></tr>
<tr class="memdesc:ga9654c231f2c2ffedb040ae6a58e852f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erases the flash sectors encompassed by parameters passed into function. <a href="#ga9654c231f2c2ffedb040ae6a58e852f0">More...</a><br/></td></tr>
<tr class="separator:ga9654c231f2c2ffedb040ae6a58e852f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad23b7d061a751d875ad1b62880289405"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#gad23b7d061a751d875ad1b62880289405">PRINCE_FlashProgramWithChecker</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint32_t start, uint8_t *src, uint32_t lengthInBytes)</td></tr>
<tr class="memdesc:gad23b7d061a751d875ad1b62880289405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Programs flash with data at locations passed in through parameters. <a href="#gad23b7d061a751d875ad1b62880289405">More...</a><br/></td></tr>
<tr class="separator:gad23b7d061a751d875ad1b62880289405"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Driver version</h2></td></tr>
<tr class="memitem:ga1993ff9c17c8366b721d2588e40df3a8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#ga1993ff9c17c8366b721d2588e40df3a8">FSL_PRINCE_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 6, 0))</td></tr>
<tr class="memdesc:ga1993ff9c17c8366b721d2588e40df3a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">PRINCE driver version 2.6.0. <a href="#ga1993ff9c17c8366b721d2588e40df3a8">More...</a><br/></td></tr>
<tr class="separator:ga1993ff9c17c8366b721d2588e40df3a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga1993ff9c17c8366b721d2588e40df3a8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_PRINCE_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 6, 0))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Current version: 2.6.0</p>
<p>Change log:</p>
<ul>
<li>Version 2.0.0<ul>
<li>Initial version.</li>
</ul>
</li>
<li>Version 2.1.0<ul>
<li>Update for the A1 rev. of LPC55Sxx serie.</li>
</ul>
</li>
<li>Version 2.2.0<ul>
<li>Add runtime checking of the A0 and A1 rev. of LPC55Sxx serie to support both silicone revisions.</li>
</ul>
</li>
<li>Version 2.3.0<ul>
<li>Add support for LPC55S1x and LPC55S2x series</li>
</ul>
</li>
<li>Version 2.3.0<ul>
<li>Fix MISRA-2012 issues.</li>
</ul>
</li>
<li>Version 2.3.1<ul>
<li>Add support for LPC55S0x series</li>
</ul>
</li>
<li>Version 2.3.2<ul>
<li>Fix documentation of enumeration. Extend PRINCE example.</li>
</ul>
</li>
<li>Version 2.4.0<ul>
<li>Add support for LPC55S3x series</li>
</ul>
</li>
<li>Version 2.5.0<ul>
<li>Add PRINCE_Config() and PRINCE_Reconfig() features.</li>
</ul>
</li>
<li>Version 2.5.1<ul>
<li>Fix build error due to renamed symbols</li>
</ul>
</li>
<li>Version 2.6.0<ul>
<li>Renamed CSS to ELS </li>
</ul>
</li>
</ul>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gadce343aecc3bcb85e396d05009df5e8b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00258.html#ga6bfd6dd9281cf1736444d3d68194fe89">_skboot_status</a> <a class="el" href="a00258.html#gadce343aecc3bcb85e396d05009df5e8b">skboot_status_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga7f4c9d3b6f3a135c023af31b8accfade"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00258.html#ga8024cd1ee84b0c45ac510441f2f6d188">_secure_bool</a> <a class="el" href="a00258.html#ga7f4c9d3b6f3a135c023af31b8accfade">secure_bool_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga2c8f81ee7fddaf875dbdc63362335642"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00263.html#gad01a08e1051617f71dde87e50cdbe922">_prince_region</a> <a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga020af08db8885fd16060442d3e74b0f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00263.html#gafd62bfa8d72d164e2abb572ffdde8c34">_prince_lock</a> <a class="el" href="a00263.html#ga020af08db8885fd16060442d3e74b0f1">prince_lock_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga41d48c71d98a829eb258de65623922bc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00263.html#ga34867ff858eeee0fb6f93cae8ddd30ab">_prince_flags</a> <a class="el" href="a00263.html#ga41d48c71d98a829eb258de65623922bc">prince_flags_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga6bfd6dd9281cf1736444d3d68194fe89"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00258.html#ga6bfd6dd9281cf1736444d3d68194fe89">_skboot_status</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a9f0ca718735dd60c0f6e2e103615f9bc"></a>kStatus_SKBOOT_Success</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return success status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a905a486e12679a5223f9824de2fa272d"></a>kStatus_SKBOOT_Fail</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return fail status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89ab7b21bcc121baaaf6a76bfe7f090912c"></a>kStatus_SKBOOT_InvalidArgument</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return invalid argument status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a7ca4bc728877b1f6c23e7dcbfa3ccf91"></a>kStatus_SKBOOT_KeyStoreMarkerInvalid</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return Keystore invalid Marker status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89ab100a53cab34959974f0d3c042e005d7"></a>kStatus_SKBOOT_HashcryptFinishedWithStatusSuccess</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return Hashcrypt finished with the success status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a6b11be0c36b45ecfb11fe44b35ec78d6"></a>kStatus_SKBOOT_HashcryptFinishedWithStatusFail</em>&nbsp;</td><td class="fielddoc">
<p>SKBOOT return Hashcrypt finished with the fail status. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a9f0ca718735dd60c0f6e2e103615f9bc"></a>kStatus_SKBOOT_Success</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Success. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a905a486e12679a5223f9824de2fa272d"></a>kStatus_SKBOOT_Fail</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Fail. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89ab7b21bcc121baaaf6a76bfe7f090912c"></a>kStatus_SKBOOT_InvalidArgument</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Invalid argument. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6bfd6dd9281cf1736444d3d68194fe89a7ca4bc728877b1f6c23e7dcbfa3ccf91"></a>kStatus_SKBOOT_KeyStoreMarkerInvalid</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Invalid marker. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga8024cd1ee84b0c45ac510441f2f6d188"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00258.html#ga8024cd1ee84b0c45ac510441f2f6d188">_secure_bool</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188ad932c3b671bfe67c51f03e11c721baea"></a>kSECURE_TRUE</em>&nbsp;</td><td class="fielddoc">
<p>Secure true flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188aea4739fe46439345f5ed79f9474de365"></a>kSECURE_FALSE</em>&nbsp;</td><td class="fielddoc">
<p>Secure false flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188a7e7eede8a248707a5dfc155eccd0933e"></a>kSECURE_CALLPROTECT_SECURITY_FLAGS</em>&nbsp;</td><td class="fielddoc">
<p>Secure call protect the security flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188a8056add926dd6c6d8627382268749c7f"></a>kSECURE_CALLPROTECT_IS_APP_READY</em>&nbsp;</td><td class="fielddoc">
<p>Secure call protect the app is ready flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188aae494aba45c6e0f724cea838d36b7df1"></a>kSECURE_TRACKER_VERIFIED</em>&nbsp;</td><td class="fielddoc">
<p>Secure tracker verified flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188ad932c3b671bfe67c51f03e11c721baea"></a>kSECURE_TRUE</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE true. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8024cd1ee84b0c45ac510441f2f6d188aea4739fe46439345f5ed79f9474de365"></a>kSECURE_FALSE</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE false. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gad01a08e1051617f71dde87e50cdbe922"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00263.html#gad01a08e1051617f71dde87e50cdbe922">_prince_region</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggad01a08e1051617f71dde87e50cdbe922a89467100c770a25302e05b041eba4e52"></a>kPRINCE_Region0</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 0. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad01a08e1051617f71dde87e50cdbe922a057ad5eec5c4b09a79de0bc6877fd16b"></a>kPRINCE_Region1</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 1. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad01a08e1051617f71dde87e50cdbe922a7e44df1294a574caf2910ecf1a150c99"></a>kPRINCE_Region2</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 2. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gafd62bfa8d72d164e2abb572ffdde8c34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00263.html#gafd62bfa8d72d164e2abb572ffdde8c34">_prince_lock</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggafd62bfa8d72d164e2abb572ffdde8c34a5fb668f900aa651456d0c3a8ebccd76f"></a>kPRINCE_Region0Lock</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 0 lock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafd62bfa8d72d164e2abb572ffdde8c34a32c92567d8c7ce1ff9af62618549410f"></a>kPRINCE_Region1Lock</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 1 lock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafd62bfa8d72d164e2abb572ffdde8c34af3c51db871ae83594413db97af2f6a50"></a>kPRINCE_Region2Lock</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE region 2 lock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafd62bfa8d72d164e2abb572ffdde8c34a6649bd9411c74c780495deb4b02372bb"></a>kPRINCE_MaskLock</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE mask register lock. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga34867ff858eeee0fb6f93cae8ddd30ab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00263.html#ga34867ff858eeee0fb6f93cae8ddd30ab">_prince_flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga34867ff858eeee0fb6f93cae8ddd30aba443c0c7714efb7203adecc6fc13baa75"></a>kPRINCE_Flag_None</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Flag None. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga34867ff858eeee0fb6f93cae8ddd30abac5aeb76ead3f1b5892729c19a9daa2bc"></a>kPRINCE_Flag_EraseCheck</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Flag Erase check. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga34867ff858eeee0fb6f93cae8ddd30aba2671cd003f4caf92bd38b083f57a3e18"></a>kPRINCE_Flag_WriteCheck</em>&nbsp;</td><td class="fielddoc">
<p>PRINCE Flag Write check. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga012d073141b3bf223bd6c1e48af22c4f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PRINCE_EncryptEnable </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables PRINCE on-the-fly data encryption.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf44097c4ed21bd37abf7ffbe075fc171"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PRINCE_EncryptDisable </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function disables PRINCE on-the-fly data encryption.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa5b795d6f65ed1df5dcd70b5d4375a39"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool PRINCE_IsEncryptEnable </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function test if PRINCE on-the-fly data encryption is enabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if enabled, false if not </dd></dl>
</div>
</div>
<a class="anchor" id="ga4904f98e5a882ecda2208c7f90c4dbda"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PRINCE_SetMask </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function sets the PRINCE mask that is used to mask decrypted data.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">mask</td><td>64-bit data mask value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac544ff0e4122eb82b5dd75511ba60b7b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PRINCE_SetLock </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>lock</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function sets lock on specified region registers or mask register.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">lock</td><td>registers to lock. This is a logical OR of members of the enumeration <a class="el" href="a00263.html#ga020af08db8885fd16060442d3e74b0f1" title="Prince lock. ">prince_lock_t</a> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4a2729eb0dc7b4947e6fb3889954b747"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_GenNewIV </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>iv_code</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>store</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *&#160;</td>
<td class="paramname"><em>flash_context</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function generates new IV code and stores it into the persistent memory. Ensure about 800 bytes free space on the stack when calling this routine with the store parameter set to true!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">region</td><td>PRINCE region index. </td></tr>
<tr><td class="paramname">iv_code</td><td>IV code pointer used for storing the newly generated 52 bytes long IV code. </td></tr>
<tr><td class="paramname">store</td><td>flag to allow storing the newly generated IV code into the persistent memory (FFR). </td></tr>
<tr><td class="paramname">flash_context</td><td>pointer to the flash driver context structure.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_Success upon success </dd>
<dd>
kStatus_Fail otherwise, kStatus_Fail is also returned if the key code for the particular PRINCE region is not present in the keystore (though new IV code has been provided) </dd></dl>
</div>
</div>
<a class="anchor" id="gaf3ca75aa388ef08703c2742d536c9a12"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_LoadIV </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>iv_code</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables IV code loading into the PRINCE bus encryption engine.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">region</td><td>PRINCE region index. </td></tr>
<tr><td class="paramname">iv_code</td><td>IV code pointer used for passing the IV code.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_Success upon success </dd>
<dd>
kStatus_Fail otherwise </dd></dl>
</div>
</div>
<a class="anchor" id="ga1534f13254c974845e4c423438ba1807"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_SetEncryptForAddressRange </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>start_address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *&#160;</td>
<td class="paramname"><em>flash_context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>regenerate_iv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function sets the encryption/decryption for specified address range. The SR mask value for the selected Prince region is calculated from provided start_address and length parameters. This calculated value is OR'ed with the actual SR mask value and stored into the PRINCE SR_ENABLE register and also into the persistent memory (FFR) to be used after the device reset. It is possible to define several nonadjacent encrypted areas within one Prince region when calling this function repeatedly. If the length parameter is set to 0, the SR mask value is set to 0 and thus the encryption/decryption for the whole selected Prince region is disabled. Ensure about 800 bytes free space on the stack when calling this routine!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">region</td><td>PRINCE region index. </td></tr>
<tr><td class="paramname">start_address</td><td>start address of the area to be encrypted/decrypted. </td></tr>
<tr><td class="paramname">length</td><td>length of the area to be encrypted/decrypted. </td></tr>
<tr><td class="paramname">flash_context</td><td>pointer to the flash driver context structure. </td></tr>
<tr><td class="paramname">regenerate_iv</td><td>flag to allow IV code regenerating, storing into the persistent memory (FFR) and loading into the PRINCE engine</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_Success upon success </dd>
<dd>
kStatus_Fail otherwise </dd></dl>
</div>
</div>
<a class="anchor" id="ga3a56193c3c6b4c5bf9d2e8db4f2fac67"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_GetRegionSREnable </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>sr_enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function gets PRINCE SR_ENABLE register.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">region</td><td>PRINCE region index. </td></tr>
<tr><td class="paramname">sr_enable</td><td>Sub-Region Enable register pointer.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_Success upon success </dd>
<dd>
kStatus_InvalidArgument </dd></dl>
</div>
</div>
<a class="anchor" id="gab91f6cbf43885c0aa52fa2e3bce11bd3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_GetRegionBaseAddress </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>region_base_addr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function gets PRINCE BASE_ADDR register.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">region</td><td>PRINCE region index. </td></tr>
<tr><td class="paramname">region_base_addr</td><td>Region base address pointer.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_Success upon success </dd>
<dd>
kStatus_InvalidArgument </dd></dl>
</div>
</div>
<a class="anchor" id="ga4bf7dcb9492f71faf07514208a87b9e0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_SetRegionIV </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[8]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function sets specified AES IV for the given region.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">region</td><td>Selection of the PRINCE region to be configured. </td></tr>
<tr><td class="paramname">iv</td><td>64-bit AES IV in little-endian byte order. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabf0904acdadda6fca3269e5877c87551"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_SetRegionBaseAddress </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>region_base_addr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function configures PRINCE region base address.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">region</td><td>Selection of the PRINCE region to be configured. </td></tr>
<tr><td class="paramname">region_base_addr</td><td>Base Address for region. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac6e5b480af24714f93bbce6869717e49"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_SetRegionSREnable </td>
<td>(</td>
<td class="paramtype">PRINCE_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00263.html#ga2c8f81ee7fddaf875dbdc63362335642">prince_region_t</a>&#160;</td>
<td class="paramname"><em>region</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>sr_enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function configures PRINCE SR_ENABLE register.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>PRINCE peripheral address. </td></tr>
<tr><td class="paramname">region</td><td>Selection of the PRINCE region to be configured. </td></tr>
<tr><td class="paramname">sr_enable</td><td>Sub-Region Enable register value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9654c231f2c2ffedb040ae6a58e852f0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_FlashEraseWithChecker </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>lengthInBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>key</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function erases the appropriate number of flash sectors based on the desired start address and length. It deals with the flash erase function complenentary to the standard erase API of the IAP1 driver. This implementation additionally checks if the whole encrypted PRINCE subregions are erased at once to avoid secrets revealing. The checker implementation is limited to one contiguous PRINCE-controlled memory area.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>The pointer to the flash driver context structure. </td></tr>
<tr><td class="paramname">start</td><td>The start address of the desired flash memory to be erased. The start address needs to be prince-sburegion-aligned. </td></tr>
<tr><td class="paramname">lengthInBytes</td><td>The length, given in bytes (not words or long-words) to be erased. Must be prince-sburegion-size-aligned. </td></tr>
<tr><td class="paramname">key</td><td>The value used to validate all flash erase APIs.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a> API was executed successfully. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a> An invalid argument is provided. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a098148af25679d78133103cace7580ea" title="Parameter is not aligned with the specified baseline. ">kStatus_FLASH_AlignmentError</a> The parameter is not aligned with the specified baseline. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2acc367a368270606eae83264f59b55211" title="Address is out of range. ">kStatus_FLASH_AddressError</a> The address is out of range. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a9741e88e6013710b11b81e2af7071a92" title="API erase key is invalid. ">kStatus_FLASH_EraseKeyError</a> The API erase key is invalid. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a> Run-time error during the command execution. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ab032e11743a3397f9c81afac3faa9c25" title="Flash API is not supported. ">kStatus_FLASH_CommandNotSupported</a> Flash API is not supported. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ae61db800e78c6aa18cb5ecafe60058fc" title="A correctable or uncorrectable error during command execution. ">kStatus_FLASH_EccError</a> A correctable or uncorrectable error during command execution. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ac3c5247a67d36e5b3c28c586f964dfa5" title="Encrypted flash subregions are not erased at once. ">kStatus_FLASH_EncryptedRegionsEraseNotDoneAtOnce</a> Encrypted flash subregions are not erased at once. </dd></dl>
</div>
</div>
<a class="anchor" id="gad23b7d061a751d875ad1b62880289405"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> PRINCE_FlashProgramWithChecker </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>lengthInBytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function programs the flash memory with the desired data for a given flash area as determined by the start address and the length. It deals with the flash program function complenentary to the standard program API of the IAP1 driver. This implementation additionally checks if the whole PRINCE subregions are programmed at once to avoid secrets revealing. The checker implementation is limited to one contiguous PRINCE-controlled memory area.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>The pointer to the flash driver context structure. </td></tr>
<tr><td class="paramname">start</td><td>The start address of the desired flash memory to be programmed. Must be prince-sburegion-aligned. </td></tr>
<tr><td class="paramname">src</td><td>A pointer to the source buffer of data that is to be programmed into the flash. </td></tr>
<tr><td class="paramname">lengthInBytes</td><td>The length, given in bytes (not words or long-words), to be programmed. Must be prince-sburegion-size-aligned.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a> API was executed successfully. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a> An invalid argument is provided. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a098148af25679d78133103cace7580ea" title="Parameter is not aligned with the specified baseline. ">kStatus_FLASH_AlignmentError</a> Parameter is not aligned with the specified baseline. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2acc367a368270606eae83264f59b55211" title="Address is out of range. ">kStatus_FLASH_AddressError</a> Address is out of range. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ab9e32512512c1ea1508bc2832f2bd528" title="Invalid instruction codes and out-of bound addresses. ">kStatus_FLASH_AccessError</a> Invalid instruction codes and out-of bounds addresses. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a> Run-time error during the command execution. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a> Run-time error during the command execution. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ab032e11743a3397f9c81afac3faa9c25" title="Flash API is not supported. ">kStatus_FLASH_CommandNotSupported</a> Flash API is not supported. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2ae61db800e78c6aa18cb5ecafe60058fc" title="A correctable or uncorrectable error during command execution. ">kStatus_FLASH_EccError</a> A correctable or uncorrectable error during command execution. </dd>
<dd>
<a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a6735801bd1fbd61f7d96a07c2c2f9a76" title="Error size. ">kStatus_FLASH_SizeError</a> Encrypted flash subregions are not programmed at once. </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>