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

769 lines
46 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: IAP_FFR Driver</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('a00257.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="#files">Files</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">IAP_FFR Driver<div class="ingroups"><a class="el" href="a00018.html">IAP: In Application Programming Driver</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:a00183"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00183.html">fsl_iap_ffr.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga4ed9b60ad7a3c8d6f78c75f9b3613b9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga4ed9b60ad7a3c8d6f78c75f9b3613b9c">ALIGN_DOWN</a>(x, a)&#160;&#160;&#160;((x) &amp; (uint32_t)(-((int32_t)(a))))</td></tr>
<tr class="memdesc:ga4ed9b60ad7a3c8d6f78c75f9b3613b9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alignment(down) utility. <a href="#ga4ed9b60ad7a3c8d6f78c75f9b3613b9c">More...</a><br/></td></tr>
<tr class="separator:ga4ed9b60ad7a3c8d6f78c75f9b3613b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb65d4847594b25424eb2a304e7741c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gafb65d4847594b25424eb2a304e7741c1">ALIGN_UP</a>(x, a)&#160;&#160;&#160;(-((int32_t)((uint32_t)(-((int32_t)(x))) &amp; (uint32_t)(-((int32_t)(a))))))</td></tr>
<tr class="memdesc:gafb65d4847594b25424eb2a304e7741c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alignment(up) utility. <a href="#gafb65d4847594b25424eb2a304e7741c1">More...</a><br/></td></tr>
<tr class="separator:gafb65d4847594b25424eb2a304e7741c1"><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:gad92b1372c5bc035453fa48f984390fc0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gad92b1372c5bc035453fa48f984390fc0">_flash_ffr_page_offset</a> { <br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a271dcd25d510b0675423b6318be9853e">kFfrPageOffset_CFPA</a> = 0,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a22341016413e1e3815ace7e8942778a3">kFfrPageOffset_CFPA_Scratch</a> = 0,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a5d4e6f4436be68037728829b3a9308cb">kFfrPageOffset_CFPA_Cfg</a> = 1,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a13ddda6601ebfc07033f288be61b0a72">kFfrPageOffset_CFPA_CfgPong</a> = 2,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a18563f263bad1be93c8b207e97d1c097">kFfrPageOffset_CMPA</a> = 3,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0ad4bc2448974c630cc2ef281c5cb8d7ad">kFfrPageOffset_CMPA_Cfg</a> = 3,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a22f9b4d2cc123b32f4880cb61be445bf">kFfrPageOffset_CMPA_Key</a> = 4,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a133034caad00a4cb79f9b84ea4bb23d8">kFfrPageOffset_NMPA</a> = 7,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0aaa2937dadcb5eefa986acc7a2f8251d6">kFfrPageOffset_NMPA_Romcp</a> = 7,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a1c3b0aabdee4f83355d026438845e385">kFfrPageOffset_NMPA_Repair</a> = 9,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0a03541bc398e73d948ad6cc327b77b58f">kFfrPageOffset_NMPA_Cfg</a> = 15,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad92b1372c5bc035453fa48f984390fc0ad5675bda23bfdf55c62b7841305823a2">kFfrPageOffset_NMPA_End</a> = 16
<br/>
}</td></tr>
<tr class="memdesc:gad92b1372c5bc035453fa48f984390fc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">flash ffr page offset. <a href="a00257.html#gad92b1372c5bc035453fa48f984390fc0">More...</a><br/></td></tr>
<tr class="separator:gad92b1372c5bc035453fa48f984390fc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad7ea5aae2ba99036a41833e39aa9b5b2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gad7ea5aae2ba99036a41833e39aa9b5b2">_flash_ffr_page_num</a> { <br/>
&#160;&#160;<a class="el" href="a00257.html#ggad7ea5aae2ba99036a41833e39aa9b5b2a635e3cbd22e7ef5ea2618893807458ff">kFfrPageNum_CFPA</a> = 3,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad7ea5aae2ba99036a41833e39aa9b5b2a42b101dd079d4c95954450e6e20011e9">kFfrPageNum_CMPA</a> = 4,
<br/>
&#160;&#160;<a class="el" href="a00257.html#ggad7ea5aae2ba99036a41833e39aa9b5b2ada384d61135a1c0f758b44b3911f627e">kFfrPageNum_NMPA</a> = 10
<br/>
}</td></tr>
<tr class="memdesc:gad7ea5aae2ba99036a41833e39aa9b5b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">flash ffr page number. <a href="a00257.html#gad7ea5aae2ba99036a41833e39aa9b5b2">More...</a><br/></td></tr>
<tr class="separator:gad7ea5aae2ba99036a41833e39aa9b5b2"><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>
Flash IFR version</h2></td></tr>
<tr class="memitem:ga845e6c40adbfe3dc8557e4679ddcb7d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga845e6c40adbfe3dc8557e4679ddcb7d0">FSL_FLASH_IFR_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 1, 0))</td></tr>
<tr class="memdesc:ga845e6c40adbfe3dc8557e4679ddcb7d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash IFR driver version for SDK. <a href="#ga845e6c40adbfe3dc8557e4679ddcb7d0">More...</a><br/></td></tr>
<tr class="separator:ga845e6c40adbfe3dc8557e4679ddcb7d0"><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>
FFR APIs</h2></td></tr>
<tr class="memitem:ga7b56fef8de27afe297156498580cceca"><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="a00257.html#ga7b56fef8de27afe297156498580cceca">FFR_Init</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config)</td></tr>
<tr class="memdesc:ga7b56fef8de27afe297156498580cceca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the global FFR properties structure members. <a href="#ga7b56fef8de27afe297156498580cceca">More...</a><br/></td></tr>
<tr class="separator:ga7b56fef8de27afe297156498580cceca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadbd9ee976de906fb3ede6653f6532e9b"><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="a00257.html#gadbd9ee976de906fb3ede6653f6532e9b">FFR_Lock_All</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config)</td></tr>
<tr class="memdesc:gadbd9ee976de906fb3ede6653f6532e9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable firewall for all flash banks. <a href="#gadbd9ee976de906fb3ede6653f6532e9b">More...</a><br/></td></tr>
<tr class="separator:gadbd9ee976de906fb3ede6653f6532e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa2d51fa7d9c0bfad8c0c8b53cb9225a"><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="a00257.html#gafa2d51fa7d9c0bfad8c0c8b53cb9225a">FFR_InfieldPageWrite</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *page_data, uint32_t valid_len)</td></tr>
<tr class="memdesc:gafa2d51fa7d9c0bfad8c0c8b53cb9225a"><td class="mdescLeft">&#160;</td><td class="mdescRight">APIs to access CFPA pages. <a href="#gafa2d51fa7d9c0bfad8c0c8b53cb9225a">More...</a><br/></td></tr>
<tr class="separator:gafa2d51fa7d9c0bfad8c0c8b53cb9225a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga344a9e9dce0e044d464525827c3e9d60"><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="a00257.html#ga344a9e9dce0e044d464525827c3e9d60">FFR_GetCustomerInfieldData</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *pData, uint32_t offset, uint32_t len)</td></tr>
<tr class="memdesc:ga344a9e9dce0e044d464525827c3e9d60"><td class="mdescLeft">&#160;</td><td class="mdescRight">APIs to access CFPA pages. <a href="#ga344a9e9dce0e044d464525827c3e9d60">More...</a><br/></td></tr>
<tr class="separator:ga344a9e9dce0e044d464525827c3e9d60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4f98ace034c9f023f38c88ed9b75ba0"><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="a00257.html#gac4f98ace034c9f023f38c88ed9b75ba0">FFR_CustFactoryPageWrite</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *page_data, bool seal_part)</td></tr>
<tr class="memdesc:gac4f98ace034c9f023f38c88ed9b75ba0"><td class="mdescLeft">&#160;</td><td class="mdescRight">APIs to access CMPA pages. <a href="#gac4f98ace034c9f023f38c88ed9b75ba0">More...</a><br/></td></tr>
<tr class="separator:gac4f98ace034c9f023f38c88ed9b75ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaa7529a6cb8acdc13e0434ad307e3118"><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="a00257.html#gaaa7529a6cb8acdc13e0434ad307e3118">FFR_GetCustomerData</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *pData, uint32_t offset, uint32_t len)</td></tr>
<tr class="memdesc:gaaa7529a6cb8acdc13e0434ad307e3118"><td class="mdescLeft">&#160;</td><td class="mdescRight">APIs to access CMPA page. <a href="#gaaa7529a6cb8acdc13e0434ad307e3118">More...</a><br/></td></tr>
<tr class="separator:gaaa7529a6cb8acdc13e0434ad307e3118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54d9b77246367ec8834a0f1edc121afb"><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="a00257.html#ga54d9b77246367ec8834a0f1edc121afb">FFR_GetUUID</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *uuid)</td></tr>
<tr class="memdesc:ga54d9b77246367ec8834a0f1edc121afb"><td class="mdescLeft">&#160;</td><td class="mdescRight">APIs to access CMPA page. <a href="#ga54d9b77246367ec8834a0f1edc121afb">More...</a><br/></td></tr>
<tr class="separator:ga54d9b77246367ec8834a0f1edc121afb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf9775a49e91c05d4897f053d339edb65"><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="a00257.html#gaf9775a49e91c05d4897f053d339edb65">FFR_KeystoreWrite</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, ffr_key_store_t *pKeyStore)</td></tr>
<tr class="memdesc:gaf9775a49e91c05d4897f053d339edb65"><td class="mdescLeft">&#160;</td><td class="mdescRight">This routine writes the 3 pages allocated for Key store data,. <a href="#gaf9775a49e91c05d4897f053d339edb65">More...</a><br/></td></tr>
<tr class="separator:gaf9775a49e91c05d4897f053d339edb65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf171386e49f62e3c05f20a222051e888"><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="a00257.html#gaf171386e49f62e3c05f20a222051e888">FFR_KeystoreGetAC</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *pActivationCode)</td></tr>
<tr class="memdesc:gaf171386e49f62e3c05f20a222051e888"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get/Read Key store code routines. <a href="#gaf171386e49f62e3c05f20a222051e888">More...</a><br/></td></tr>
<tr class="separator:gaf171386e49f62e3c05f20a222051e888"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf4e591fef5230912f7c1a13b4dca81a"><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="a00257.html#gabf4e591fef5230912f7c1a13b4dca81a">FFR_KeystoreGetKC</a> (<a class="el" href="a00018.html#ga0dfc969e6f9e17c17e60d823565141a5">flash_config_t</a> *config, uint8_t *pKeyCode, ffr_key_type_t keyIndex)</td></tr>
<tr class="memdesc:gabf4e591fef5230912f7c1a13b4dca81a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get/Read Key store code routines. <a href="#gabf4e591fef5230912f7c1a13b4dca81a">More...</a><br/></td></tr>
<tr class="separator:gabf4e591fef5230912f7c1a13b4dca81a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga845e6c40adbfe3dc8557e4679ddcb7d0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_FLASH_IFR_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 1, 0))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Version 2.1.0. </p>
</div>
</div>
<a class="anchor" id="ga4ed9b60ad7a3c8d6f78c75f9b3613b9c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALIGN_DOWN</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">x, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">a&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;((x) &amp; (uint32_t)(-((int32_t)(a))))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gafb65d4847594b25424eb2a304e7741c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALIGN_UP</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">x, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">a&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;(-((int32_t)((uint32_t)(-((int32_t)(x))) &amp; (uint32_t)(-((int32_t)(a))))))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gad92b1372c5bc035453fa48f984390fc0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00257.html#gad92b1372c5bc035453fa48f984390fc0">_flash_ffr_page_offset</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="ggad92b1372c5bc035453fa48f984390fc0a271dcd25d510b0675423b6318be9853e"></a>kFfrPageOffset_CFPA</em>&nbsp;</td><td class="fielddoc">
<p>Customer In-Field programmed area. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a22341016413e1e3815ace7e8942778a3"></a>kFfrPageOffset_CFPA_Scratch</em>&nbsp;</td><td class="fielddoc">
<p>CFPA Scratch page. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a5d4e6f4436be68037728829b3a9308cb"></a>kFfrPageOffset_CFPA_Cfg</em>&nbsp;</td><td class="fielddoc">
<p>CFPA Configuration area (Ping page) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a13ddda6601ebfc07033f288be61b0a72"></a>kFfrPageOffset_CFPA_CfgPong</em>&nbsp;</td><td class="fielddoc">
<p>Same as CFPA page (Pong page) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a18563f263bad1be93c8b207e97d1c097"></a>kFfrPageOffset_CMPA</em>&nbsp;</td><td class="fielddoc">
<p>Customer Manufacturing programmed area. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0ad4bc2448974c630cc2ef281c5cb8d7ad"></a>kFfrPageOffset_CMPA_Cfg</em>&nbsp;</td><td class="fielddoc">
<p>CMPA Configuration area (Part of CMPA) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a22f9b4d2cc123b32f4880cb61be445bf"></a>kFfrPageOffset_CMPA_Key</em>&nbsp;</td><td class="fielddoc">
<p>Key Store area (Part of CMPA) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a133034caad00a4cb79f9b84ea4bb23d8"></a>kFfrPageOffset_NMPA</em>&nbsp;</td><td class="fielddoc">
<p>NXP Manufacturing programmed area. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0aaa2937dadcb5eefa986acc7a2f8251d6"></a>kFfrPageOffset_NMPA_Romcp</em>&nbsp;</td><td class="fielddoc">
<p>ROM patch area (Part of NMPA) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a1c3b0aabdee4f83355d026438845e385"></a>kFfrPageOffset_NMPA_Repair</em>&nbsp;</td><td class="fielddoc">
<p>Repair area (Part of NMPA) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0a03541bc398e73d948ad6cc327b77b58f"></a>kFfrPageOffset_NMPA_Cfg</em>&nbsp;</td><td class="fielddoc">
<p>NMPA configuration area (Part of NMPA) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad92b1372c5bc035453fa48f984390fc0ad5675bda23bfdf55c62b7841305823a2"></a>kFfrPageOffset_NMPA_End</em>&nbsp;</td><td class="fielddoc">
<p>Reserved (Part of NMPA) </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gad7ea5aae2ba99036a41833e39aa9b5b2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00257.html#gad7ea5aae2ba99036a41833e39aa9b5b2">_flash_ffr_page_num</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="ggad7ea5aae2ba99036a41833e39aa9b5b2a635e3cbd22e7ef5ea2618893807458ff"></a>kFfrPageNum_CFPA</em>&nbsp;</td><td class="fielddoc">
<p>Customer In-Field programmed area. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad7ea5aae2ba99036a41833e39aa9b5b2a42b101dd079d4c95954450e6e20011e9"></a>kFfrPageNum_CMPA</em>&nbsp;</td><td class="fielddoc">
<p>Customer Manufacturing programmed area. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad7ea5aae2ba99036a41833e39aa9b5b2ada384d61135a1c0f758b44b3911f627e"></a>kFfrPageNum_NMPA</em>&nbsp;</td><td class="fielddoc">
<p>NXP Manufacturing programmed area. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga7b56fef8de27afe297156498580cceca"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_Init </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><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>API was executed successfully. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>An invalid argument is provided. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gadbd9ee976de906fb3ede6653f6532e9b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_Lock_All </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><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>CFPA, CMPA, and NMPA flash areas region will be locked, After this function executed; Unless the board is reset again.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>An invalid argument is provided. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>An invalid argument is provided. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafa2d51fa7d9c0bfad8c0c8b53cb9225a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_InfieldPageWrite </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">uint8_t *&#160;</td>
<td class="paramname"><em>page_data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>valid_len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This routine will erase CFPA and program the CFPA page with passed data.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state. </td></tr>
<tr><td class="paramname">page_data</td><td>A pointer to the source buffer of data that is to be programmed into the CFPA. </td></tr>
<tr><td class="paramname">valid_len</td><td>The length, given in bytes, to be programmed.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>The desire page-data were programed successfully into CFPA. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>An invalid argument is provided. </td></tr>
<tr><td class="paramname">kStatus_FTFx_AddressError</td><td>Address is out of range. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a8707630df501c47bcd6e4783f3219f93" title="The FFR bank region is locked. ">kStatus_FLASH_FfrBankIsLocked</a></td><td>The CFPA was locked. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aee06c15421a173764c51130b365a5db0" title="CFPA page version is out of date. ">kStatus_FLASH_OutOfDateCfpaPage</a></td><td>It is not newest CFPA page. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga344a9e9dce0e044d464525827c3e9d60"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_GetCustomerInfieldData </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">uint8_t *&#160;</td>
<td class="paramname"><em>pData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic read function, used by customer to read data stored in 'Customer In-field Page'.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state. </td></tr>
<tr><td class="paramname">pData</td><td>A pointer to the dest buffer of data that is to be read from 'Customer In-field Page'. </td></tr>
<tr><td class="paramname">offset</td><td>An offset from the 'Customer In-field Page' start address. </td></tr>
<tr><td class="paramname">len</td><td>The length, given in bytes, to be read.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>Get data from 'Customer In-field Page'. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>An invalid argument is provided. </td></tr>
<tr><td class="paramname">kStatus_FTFx_AddressError</td><td>Address is out of range. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a></td><td>access error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac4f98ace034c9f023f38c88ed9b75ba0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_CustFactoryPageWrite </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">uint8_t *&#160;</td>
<td class="paramname"><em>page_data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>seal_part</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This routine will erase "customer factory page" and program the page with passed data. If 'seal_part' parameter is TRUE then the routine will compute SHA256 hash of the page contents and then programs the pages. 1.During development customer code uses this API with 'seal_part' set to FALSE. 2.During manufacturing this parameter should be set to TRUE to seal the part from further modifications 3.This routine checks if the page is sealed or not. A page is said to be sealed if the SHA256 value in the page has non-zero value. On boot ROM locks the firewall for the region if hash is programmed anyways. So, write/erase commands will fail eventually.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state. </td></tr>
<tr><td class="paramname">page_data</td><td>A pointer to the source buffer of data that is to be programmed into the "customer factory page". </td></tr>
<tr><td class="paramname">seal_part</td><td>Set fasle for During development customer code.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>The desire page-data were programed successfully into CMPA. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>Parameter is not aligned with the specified baseline. </td></tr>
<tr><td class="paramname">kStatus_FTFx_AddressError</td><td>Address is out of range. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a></td><td>access error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaa7529a6cb8acdc13e0434ad307e3118"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_GetCustomerData </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">uint8_t *&#160;</td>
<td class="paramname"><em>pData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read data stored in 'Customer Factory CFG Page'.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state. </td></tr>
<tr><td class="paramname">pData</td><td>A pointer to the dest buffer of data that is to be read from the Customer Factory CFG Page. </td></tr>
<tr><td class="paramname">offset</td><td>Address offset relative to the CMPA area. </td></tr>
<tr><td class="paramname">len</td><td>The length, given in bytes to be read.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>Get data from 'Customer Factory CFG Page'. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>Parameter is not aligned with the specified baseline. </td></tr>
<tr><td class="paramname">kStatus_FTFx_AddressError</td><td>Address is out of range. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a></td><td>access error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga54d9b77246367ec8834a0f1edc121afb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_GetUUID </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">uint8_t *&#160;</td>
<td class="paramname"><em>uuid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>1.SW should use this API routine to get the UUID of the chip. 2.Calling routine should pass a pointer to buffer which can hold 128-bit value. </p>
</div>
</div>
<a class="anchor" id="gaf9775a49e91c05d4897f053d339edb65"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_KeystoreWrite </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">ffr_key_store_t *&#160;</td>
<td class="paramname"><em>pKeyStore</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>1.Used during manufacturing. Should write pages when 'customer factory page' is not in sealed state. 2.Optional routines to set individual data members (activation code, key codes etc) to construct the key store structure in RAM before committing it to IFR/FFR.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>A pointer to the storage for the driver runtime state. </td></tr>
<tr><td class="paramname">pKeyStore</td><td>A Pointer to the 3 pages allocated for Key store data. that will be written to 'customer factory page'.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2aacee5186bbe9db2e091dc5c36531cd7c" title="API is executed successfully. ">kStatus_FLASH_Success</a></td><td>The key were programed successfully into FFR. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a85c375f1213ec36dd2cf60e8d9851867" title="Invalid argument. ">kStatus_FLASH_InvalidArgument</a></td><td>Parameter is not aligned with the specified baseline. </td></tr>
<tr><td class="paramname">kStatus_FTFx_AddressError</td><td>Address is out of range. </td></tr>
<tr><td class="paramname"><a class="el" href="a00018.html#ggaa4639fd4d4503c0dec9925f749d308b2a42567b719be83f23619c498da80643ed" title="Run-time error during command execution. ">kStatus_FLASH_CommandFailure</a></td><td>access error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf171386e49f62e3c05f20a222051e888"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_KeystoreGetAC </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">uint8_t *&#160;</td>
<td class="paramname"><em>pActivationCode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<ol type="1">
<li>Calling code should pass buffer pointer which can hold activation code 1192 bytes.</li>
<li>Check if flash aperture is small or regular and read the data appropriately. </li>
</ol>
</div>
</div>
<a class="anchor" id="gabf4e591fef5230912f7c1a13b4dca81a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> FFR_KeystoreGetKC </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">uint8_t *&#160;</td>
<td class="paramname"><em>pKeyCode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ffr_key_type_t&#160;</td>
<td class="paramname"><em>keyIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<ol type="1">
<li>Calling code should pass buffer pointer which can hold key code 52 bytes.</li>
<li>Check if flash aperture is small or regular and read the data appropriately.</li>
<li>keyIndex specifies which key code is read. </li>
</ol>
</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>