824 lines
53 KiB
HTML
824 lines
53 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.6"/>
|
|
<title>Kinetis SDK v.2.0 API Reference Manual: TRNG: True Random Number Generator</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">Kinetis SDK v.2.0 API Reference Manual
|
|
 <span id="projectnumber">Rev. 0</span>
|
|
</div>
|
|
<div id="projectbrief">Freescale Semiconductor, Inc.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.6 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>API 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('group__trng__driver.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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </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> |
|
|
<a href="#nested-classes">Data Structures</a> |
|
|
<a href="#enum-members">Enumerations</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">TRNG: True Random Number Generator</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
|
|
<p>The Kinetis SDK provides the peripheral driver for the True Random Number Generator (TRNG) module of Kinetis devices.</p>
|
|
<p>The True Random Number Generator is hardware accelerator module that generates a 512-bit entropy as needed by an entropy consuming module or by other post processing functions. A typical entropy consumer is a pseudo random number generator (PRNG) which can be implemented to achieve both true randomness and cryptographic strength random numbers using the TRNG output as its entropy seed. The entropy generated by a TRNG is intended for direct use by functions that generate secret keys, per-message secrets, random challenges, and other similar quantities used in cryptographic algorithms.</p>
|
|
<h1><a class="anchor" id="TRNGInit"></a>
|
|
TRNG Initialization</h1>
|
|
<ol>
|
|
<li>
|
|
Define the TRNG user configuration structure. Use TRNG_InitUserConfigDefault() function to set it to default TRNG configuration values. </li>
|
|
<li>
|
|
Initialize the TRNG module, call the <a class="el" href="group__trng__driver.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a> function and pass the user configuration structure. This function automatically enables the TRNG module and its clock. After that, the TRNG is enabled and the entropy generation starts working. </li>
|
|
<li>
|
|
To disable the TRNG module, call the <a class="el" href="group__trng__driver.html#gacdcc7542e374e611c888008a227b878c" title="Shuts down the TRNG. ">TRNG_Deinit()</a> function. </li>
|
|
</ol>
|
|
<h1><a class="anchor" id="RdTRNG"></a>
|
|
Get random data from TRNG</h1>
|
|
<ol>
|
|
<li>
|
|
<a class="el" href="group__trng__driver.html#gaac12716aedb0b05e8be3e96433c8ad56" title="Gets random data. ">TRNG_GetRandomData()</a> function gets random data from the TRNG module. </li>
|
|
</ol>
|
|
<p>This example code shows how to initialize and get random data from the TRNG driver:</p>
|
|
<div class="fragment"><div class="line">{</div>
|
|
<div class="line"> trng_user_config_t trngConfig;</div>
|
|
<div class="line"> status_t status;</div>
|
|
<div class="line"> uint32_t data;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Initialize TRNG configuration structure to default.</span></div>
|
|
<div class="line"><span class="comment"> TRNG_InitUserConfigDefault(&trngConfig);</span></div>
|
|
<div class="line"><span class="comment"></span></div>
|
|
<div class="line"><span class="comment"> /* Initialize TRNG </span></div>
|
|
<div class="line"><span class="comment"> status = TRNG_Init(TRNG0, &trngConfig);</span></div>
|
|
<div class="line"><span class="comment"></span></div>
|
|
<div class="line"><span class="comment"> if (status == kStatus_Success)</span></div>
|
|
<div class="line"><span class="comment"> {</span></div>
|
|
<div class="line"><span class="comment"> /* Read Random data</span></div>
|
|
<div class="line"><span class="comment"> if((status = TRNG_GetRandomData(TRNG0, data, sizeof(data))) == kStatus_TRNG_Success)</span></div>
|
|
<div class="line"><span class="comment"> {</span></div>
|
|
<div class="line"><span class="comment"> /* Print data</span></div>
|
|
<div class="line"><span class="comment"> PRINTF("Random = 0x%X\r\n", i, data );</span></div>
|
|
<div class="line"><span class="comment"></span></div>
|
|
<div class="line"><span class="comment"> PRINTF("Succeed.\r\n");</span></div>
|
|
<div class="line"><span class="comment"> }</span></div>
|
|
<div class="line"><span class="comment"> else</span></div>
|
|
<div class="line"><span class="comment"> {</span></div>
|
|
<div class="line"><span class="comment"> PRINTF("TRNG failed! (0x%x)\r\n", status);</span></div>
|
|
<div class="line"><span class="comment"> }</span></div>
|
|
<div class="line"><span class="comment"></span></div>
|
|
<div class="line"><span class="comment"> /* Deinitialize TRNG</span></div>
|
|
<div class="line"><span class="comment"> TRNG_Deinit(TRNG0);</span></div>
|
|
<div class="line"><span class="comment"> }</span></div>
|
|
<div class="line"><span class="comment"> else</span></div>
|
|
<div class="line"><span class="comment"> {</span></div>
|
|
<div class="line"><span class="comment"> PRINTF("TRNG initialization failed!\r\n");</span></div>
|
|
<div class="line"><span class="comment"> }</span></div>
|
|
<div class="line"><span class="comment">}</span></div>
|
|
</div><!-- fragment --> <table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
|
|
Files</h2></td></tr>
|
|
<tr class="memitem:fsl__trng_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="fsl__trng_8h.html">fsl_trng.h</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Data Structures</h2></td></tr>
|
|
<tr class="memitem:structtrng__statistical__check__limit__t"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a></td></tr>
|
|
<tr class="memdesc:structtrng__statistical__check__limit__t"><td class="mdescLeft"> </td><td class="mdescRight">Data structure for definition of statistical check limits. <a href="group__trng__driver.html#structtrng__statistical__check__limit__t">More...</a><br/></td></tr>
|
|
<tr class="separator:structtrng__statistical__check__limit__t"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:structtrng__config__t"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#structtrng__config__t">trng_config_t</a></td></tr>
|
|
<tr class="memdesc:structtrng__config__t"><td class="mdescLeft"> </td><td class="mdescRight">Data structure for the TRNG initialization. <a href="group__trng__driver.html#structtrng__config__t">More...</a><br/></td></tr>
|
|
<tr class="separator:structtrng__config__t"><td class="memSeparator" colspan="2"> </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:ga6743806ab1ae5e2511aed3f8a30814c8"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ga6743806ab1ae5e2511aed3f8a30814c8">trng_sample_mode_t</a> { <br/>
|
|
  <a class="el" href="group__trng__driver.html#gga6743806ab1ae5e2511aed3f8a30814c8af9f812a5ba8dddf6800fe42db487f5e7">kTRNG_SampleModeVonNeumann</a> = 0U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#gga6743806ab1ae5e2511aed3f8a30814c8a2411d65d49169b9244b0c975442ff898">kTRNG_SampleModeRaw</a> = 1U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#gga6743806ab1ae5e2511aed3f8a30814c8a12725a856bdf7ea64e16156fc1f6792c">kTRNG_SampleModeVonNeumannRaw</a>
|
|
<br/>
|
|
}</td></tr>
|
|
<tr class="memdesc:ga6743806ab1ae5e2511aed3f8a30814c8"><td class="mdescLeft"> </td><td class="mdescRight">TRNG sample mode. <a href="group__trng__driver.html#ga6743806ab1ae5e2511aed3f8a30814c8">More...</a><br/></td></tr>
|
|
<tr class="separator:ga6743806ab1ae5e2511aed3f8a30814c8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga20c19c3f8b8f14572d91b034cd8f8387"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ga20c19c3f8b8f14572d91b034cd8f8387">trng_clock_mode_t</a> { <br/>
|
|
  <a class="el" href="group__trng__driver.html#gga20c19c3f8b8f14572d91b034cd8f8387a10eb7dda9879280deaab08f87158ebbc">kTRNG_ClockModeRingOscillator</a> = 0U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#gga20c19c3f8b8f14572d91b034cd8f8387a066582671741cf64617d6cde5d929937">kTRNG_ClockModeSystem</a> = 1U
|
|
<br/>
|
|
}</td></tr>
|
|
<tr class="memdesc:ga20c19c3f8b8f14572d91b034cd8f8387"><td class="mdescLeft"> </td><td class="mdescRight">TRNG clock mode. <a href="group__trng__driver.html#ga20c19c3f8b8f14572d91b034cd8f8387">More...</a><br/></td></tr>
|
|
<tr class="separator:ga20c19c3f8b8f14572d91b034cd8f8387"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaaa7094b265c437185a9ba211962ae925"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#gaaa7094b265c437185a9ba211962ae925">trng_ring_osc_div_t</a> { <br/>
|
|
  <a class="el" href="group__trng__driver.html#ggaaa7094b265c437185a9ba211962ae925a557465d3f4d88b544fcf818085032b51">kTRNG_RingOscDiv0</a> = 0U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#ggaaa7094b265c437185a9ba211962ae925af420c1e0c4bd6a0a181464866ae70764">kTRNG_RingOscDiv2</a> = 1U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#ggaaa7094b265c437185a9ba211962ae925ad03f20e54add497bca2cab5084e409d8">kTRNG_RingOscDiv4</a> = 2U,
|
|
<br/>
|
|
  <a class="el" href="group__trng__driver.html#ggaaa7094b265c437185a9ba211962ae925a207ca5ecd9403ce8299085a1bf2f9ca2">kTRNG_RingOscDiv8</a> = 3U
|
|
<br/>
|
|
}</td></tr>
|
|
<tr class="memdesc:gaaa7094b265c437185a9ba211962ae925"><td class="mdescLeft"> </td><td class="mdescRight">TRNG ring oscillator divide. <a href="group__trng__driver.html#gaaa7094b265c437185a9ba211962ae925">More...</a><br/></td></tr>
|
|
<tr class="separator:gaaa7094b265c437185a9ba211962ae925"><td class="memSeparator" colspan="2"> </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:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="memItemLeft" align="right" valign="top">status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ga3f90793dd83a0ac2249fdcb8fa762c6a">TRNG_GetDefaultConfig</a> (<a class="el" href="group__trng__driver.html#structtrng__config__t">trng_config_t</a> *userConfig)</td></tr>
|
|
<tr class="memdesc:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="mdescLeft"> </td><td class="mdescRight">Initializes user configuration structure to default. <a href="#ga3f90793dd83a0ac2249fdcb8fa762c6a">More...</a><br/></td></tr>
|
|
<tr class="separator:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaefef4539a93045832f10d28f094d26ea"><td class="memItemLeft" align="right" valign="top">status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#gaefef4539a93045832f10d28f094d26ea">TRNG_Init</a> (TRNG_Type *base, const <a class="el" href="group__trng__driver.html#structtrng__config__t">trng_config_t</a> *userConfig)</td></tr>
|
|
<tr class="memdesc:gaefef4539a93045832f10d28f094d26ea"><td class="mdescLeft"> </td><td class="mdescRight">Initializes the TRNG. <a href="#gaefef4539a93045832f10d28f094d26ea">More...</a><br/></td></tr>
|
|
<tr class="separator:gaefef4539a93045832f10d28f094d26ea"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gacdcc7542e374e611c888008a227b878c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#gacdcc7542e374e611c888008a227b878c">TRNG_Deinit</a> (TRNG_Type *base)</td></tr>
|
|
<tr class="memdesc:gacdcc7542e374e611c888008a227b878c"><td class="mdescLeft"> </td><td class="mdescRight">Shuts down the TRNG. <a href="#gacdcc7542e374e611c888008a227b878c">More...</a><br/></td></tr>
|
|
<tr class="separator:gacdcc7542e374e611c888008a227b878c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaac12716aedb0b05e8be3e96433c8ad56"><td class="memItemLeft" align="right" valign="top">status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#gaac12716aedb0b05e8be3e96433c8ad56">TRNG_GetRandomData</a> (TRNG_Type *base, void *data, size_t dataSize)</td></tr>
|
|
<tr class="memdesc:gaac12716aedb0b05e8be3e96433c8ad56"><td class="mdescLeft"> </td><td class="mdescRight">Gets random data. <a href="#gaac12716aedb0b05e8be3e96433c8ad56">More...</a><br/></td></tr>
|
|
<tr class="separator:gaac12716aedb0b05e8be3e96433c8ad56"><td class="memSeparator" colspan="2"> </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:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ga0d809ab2bf96ed21a28c531679c1cffe">FSL_TRNG_DRIVER_VERSION</a>   (<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td></tr>
|
|
<tr class="memdesc:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="mdescLeft"> </td><td class="mdescRight">TRNG driver version 2.0.0. <a href="#ga0d809ab2bf96ed21a28c531679c1cffe">More...</a><br/></td></tr>
|
|
<tr class="separator:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
|
|
<a name="structtrng__statistical__check__limit__t" id="structtrng__statistical__check__limit__t"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct trng_statistical_check_limit_t</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<div class="textblock"><p>Used by <a class="el" href="group__trng__driver.html#structtrng__config__t" title="Data structure for the TRNG initialization. ">trng_config_t</a>. </p>
|
|
</div><table class="memberdecls">
|
|
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
|
|
<tr class="memitem:a8ab9b19ce415bf6823de58a1bbf6cb66"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a8ab9b19ce415bf6823de58a1bbf6cb66">maximum</a></td></tr>
|
|
<tr class="memdesc:a8ab9b19ce415bf6823de58a1bbf6cb66"><td class="mdescLeft"> </td><td class="mdescRight">Maximum limit. <a href="#a8ab9b19ce415bf6823de58a1bbf6cb66">More...</a><br/></td></tr>
|
|
<tr class="separator:a8ab9b19ce415bf6823de58a1bbf6cb66"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa3400c3e1329406d70f62165f8e4c4f0"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#aa3400c3e1329406d70f62165f8e4c4f0">minimum</a></td></tr>
|
|
<tr class="memdesc:aa3400c3e1329406d70f62165f8e4c4f0"><td class="mdescLeft"> </td><td class="mdescRight">Minimum limit. <a href="#aa3400c3e1329406d70f62165f8e4c4f0">More...</a><br/></td></tr>
|
|
<tr class="separator:aa3400c3e1329406d70f62165f8e4c4f0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h4 class="groupheader">Field Documentation</h4>
|
|
<a class="anchor" id="a8ab9b19ce415bf6823de58a1bbf6cb66"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint32_t trng_statistical_check_limit_t::maximum</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa3400c3e1329406d70f62165f8e4c4f0"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint32_t trng_statistical_check_limit_t::minimum</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a name="structtrng__config__t" id="structtrng__config__t"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct trng_config_t</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<div class="textblock"><p>This structure initializes the TRNG by calling the the <a class="el" href="group__trng__driver.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a> function. It contains all TRNG configurations. </p>
|
|
</div><table class="memberdecls">
|
|
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
|
|
<tr class="memitem:a5350c101fa633dcebef81476a2ca81b2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a5350c101fa633dcebef81476a2ca81b2">lock</a></td></tr>
|
|
<tr class="memdesc:a5350c101fa633dcebef81476a2ca81b2"><td class="mdescLeft"> </td><td class="mdescRight">Disable programmability of TRNG registers. <a href="#a5350c101fa633dcebef81476a2ca81b2">More...</a><br/></td></tr>
|
|
<tr class="separator:a5350c101fa633dcebef81476a2ca81b2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2f0603394bb7074023fe0f42b36cd235"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#ga20c19c3f8b8f14572d91b034cd8f8387">trng_clock_mode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a2f0603394bb7074023fe0f42b36cd235">clockMode</a></td></tr>
|
|
<tr class="memdesc:a2f0603394bb7074023fe0f42b36cd235"><td class="mdescLeft"> </td><td class="mdescRight">Clock mode used to operate TRNG. <a href="#a2f0603394bb7074023fe0f42b36cd235">More...</a><br/></td></tr>
|
|
<tr class="separator:a2f0603394bb7074023fe0f42b36cd235"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a14de599122f62cc47ab0beed10940e06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#gaaa7094b265c437185a9ba211962ae925">trng_ring_osc_div_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a14de599122f62cc47ab0beed10940e06">ringOscDiv</a></td></tr>
|
|
<tr class="memdesc:a14de599122f62cc47ab0beed10940e06"><td class="mdescLeft"> </td><td class="mdescRight">Ring oscillator divide used by TRNG. <a href="#a14de599122f62cc47ab0beed10940e06">More...</a><br/></td></tr>
|
|
<tr class="separator:a14de599122f62cc47ab0beed10940e06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac0d23238419cd87722c357754bdffc5c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#ga6743806ab1ae5e2511aed3f8a30814c8">trng_sample_mode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ac0d23238419cd87722c357754bdffc5c">sampleMode</a></td></tr>
|
|
<tr class="memdesc:ac0d23238419cd87722c357754bdffc5c"><td class="mdescLeft"> </td><td class="mdescRight">Sample mode of the TRNG ring oscillator. <a href="#ac0d23238419cd87722c357754bdffc5c">More...</a><br/></td></tr>
|
|
<tr class="separator:ac0d23238419cd87722c357754bdffc5c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aad6e0857e5ce9f472da8d40a1c1c3638"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#aad6e0857e5ce9f472da8d40a1c1c3638">entropyDelay</a></td></tr>
|
|
<tr class="memdesc:aad6e0857e5ce9f472da8d40a1c1c3638"><td class="mdescLeft"> </td><td class="mdescRight">Entropy Delay. <a href="#aad6e0857e5ce9f472da8d40a1c1c3638">More...</a><br/></td></tr>
|
|
<tr class="separator:aad6e0857e5ce9f472da8d40a1c1c3638"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a63ad878804f8ce9c1a6c68ec51c45f21"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a63ad878804f8ce9c1a6c68ec51c45f21">sampleSize</a></td></tr>
|
|
<tr class="memdesc:a63ad878804f8ce9c1a6c68ec51c45f21"><td class="mdescLeft"> </td><td class="mdescRight">Sample Size. <a href="#a63ad878804f8ce9c1a6c68ec51c45f21">More...</a><br/></td></tr>
|
|
<tr class="separator:a63ad878804f8ce9c1a6c68ec51c45f21"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa13e97aea012bac044c8b468b96a346a"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#aa13e97aea012bac044c8b468b96a346a">sparseBitLimit</a></td></tr>
|
|
<tr class="memdesc:aa13e97aea012bac044c8b468b96a346a"><td class="mdescLeft"> </td><td class="mdescRight">Sparse Bit Limit which defines the maximum number of consecutive samples that may be discarded before an error is generated. <a href="#aa13e97aea012bac044c8b468b96a346a">More...</a><br/></td></tr>
|
|
<tr class="separator:aa13e97aea012bac044c8b468b96a346a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3a5a504af9df6ac82e14c1a50c018986"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a3a5a504af9df6ac82e14c1a50c018986">retryCount</a></td></tr>
|
|
<tr class="memdesc:a3a5a504af9df6ac82e14c1a50c018986"><td class="mdescLeft"> </td><td class="mdescRight">Retry count. <a href="#a3a5a504af9df6ac82e14c1a50c018986">More...</a><br/></td></tr>
|
|
<tr class="separator:a3a5a504af9df6ac82e14c1a50c018986"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8931a55ae0023f04ac89d136047493b6"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a8931a55ae0023f04ac89d136047493b6">longRunMaxLimit</a></td></tr>
|
|
<tr class="memdesc:a8931a55ae0023f04ac89d136047493b6"><td class="mdescLeft"> </td><td class="mdescRight">Largest allowable number of consecutive samples of all 1, or all 0, that is allowed during the Entropy generation. <a href="#a8931a55ae0023f04ac89d136047493b6">More...</a><br/></td></tr>
|
|
<tr class="separator:a8931a55ae0023f04ac89d136047493b6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac3e3d53ec411f36076baa8a602ea7e1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#ac3e3d53ec411f36076baa8a602ea7e1e">monobitLimit</a></td></tr>
|
|
<tr class="memdesc:ac3e3d53ec411f36076baa8a602ea7e1e"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of ones/zero detected during entropy generation. <a href="#ac3e3d53ec411f36076baa8a602ea7e1e">More...</a><br/></td></tr>
|
|
<tr class="separator:ac3e3d53ec411f36076baa8a602ea7e1e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a690b392b63f4ed4dabe11f42339d2ca6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a690b392b63f4ed4dabe11f42339d2ca6">runBit1Limit</a></td></tr>
|
|
<tr class="memdesc:a690b392b63f4ed4dabe11f42339d2ca6"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 1 detected during entropy generation. <a href="#a690b392b63f4ed4dabe11f42339d2ca6">More...</a><br/></td></tr>
|
|
<tr class="separator:a690b392b63f4ed4dabe11f42339d2ca6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7c457b56026bf08724e4dfb0e9347ced"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a7c457b56026bf08724e4dfb0e9347ced">runBit2Limit</a></td></tr>
|
|
<tr class="memdesc:a7c457b56026bf08724e4dfb0e9347ced"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 2 detected during entropy generation. <a href="#a7c457b56026bf08724e4dfb0e9347ced">More...</a><br/></td></tr>
|
|
<tr class="separator:a7c457b56026bf08724e4dfb0e9347ced"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a03cfe0feba7d20ef1bb67b6d774f689a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a03cfe0feba7d20ef1bb67b6d774f689a">runBit3Limit</a></td></tr>
|
|
<tr class="memdesc:a03cfe0feba7d20ef1bb67b6d774f689a"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 3 detected during entropy generation. <a href="#a03cfe0feba7d20ef1bb67b6d774f689a">More...</a><br/></td></tr>
|
|
<tr class="separator:a03cfe0feba7d20ef1bb67b6d774f689a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aeb24ae2dc10008e0093887501f653019"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#aeb24ae2dc10008e0093887501f653019">runBit4Limit</a></td></tr>
|
|
<tr class="memdesc:aeb24ae2dc10008e0093887501f653019"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 4 detected during entropy generation. <a href="#aeb24ae2dc10008e0093887501f653019">More...</a><br/></td></tr>
|
|
<tr class="separator:aeb24ae2dc10008e0093887501f653019"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a64f977e88bb179f321bf325b016b6df7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a64f977e88bb179f321bf325b016b6df7">runBit5Limit</a></td></tr>
|
|
<tr class="memdesc:a64f977e88bb179f321bf325b016b6df7"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 5 detected during entropy generation. <a href="#a64f977e88bb179f321bf325b016b6df7">More...</a><br/></td></tr>
|
|
<tr class="separator:a64f977e88bb179f321bf325b016b6df7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1ef1a1672daaeb22f465f1400ac4e33a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a1ef1a1672daaeb22f465f1400ac4e33a">runBit6PlusLimit</a></td></tr>
|
|
<tr class="memdesc:a1ef1a1672daaeb22f465f1400ac4e33a"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 6 or more detected during entropy generation. <a href="#a1ef1a1672daaeb22f465f1400ac4e33a">More...</a><br/></td></tr>
|
|
<tr class="separator:a1ef1a1672daaeb22f465f1400ac4e33a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa5c11626ca0892f8be5e88a39892b518"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#aa5c11626ca0892f8be5e88a39892b518">pokerLimit</a></td></tr>
|
|
<tr class="memdesc:aa5c11626ca0892f8be5e88a39892b518"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of "Poker Test". <a href="#aa5c11626ca0892f8be5e88a39892b518">More...</a><br/></td></tr>
|
|
<tr class="separator:aa5c11626ca0892f8be5e88a39892b518"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a75840750418fdffabbae7ba0d66709d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__trng__driver.html#a75840750418fdffabbae7ba0d66709d6">frequencyCountLimit</a></td></tr>
|
|
<tr class="memdesc:a75840750418fdffabbae7ba0d66709d6"><td class="mdescLeft"> </td><td class="mdescRight">Maximum and minimum limits for statistical check of entropy sample frequency count. <a href="#a75840750418fdffabbae7ba0d66709d6">More...</a><br/></td></tr>
|
|
<tr class="separator:a75840750418fdffabbae7ba0d66709d6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h4 class="groupheader">Field Documentation</h4>
|
|
<a class="anchor" id="a5350c101fa633dcebef81476a2ca81b2"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool trng_config_t::lock</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a2f0603394bb7074023fe0f42b36cd235"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#ga20c19c3f8b8f14572d91b034cd8f8387">trng_clock_mode_t</a> trng_config_t::clockMode</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a14de599122f62cc47ab0beed10940e06"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#gaaa7094b265c437185a9ba211962ae925">trng_ring_osc_div_t</a> trng_config_t::ringOscDiv</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ac0d23238419cd87722c357754bdffc5c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#ga6743806ab1ae5e2511aed3f8a30814c8">trng_sample_mode_t</a> trng_config_t::sampleMode</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aad6e0857e5ce9f472da8d40a1c1c3638"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint16_t trng_config_t::entropyDelay</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Defines the length (in system clocks) of each Entropy sample taken. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a63ad878804f8ce9c1a6c68ec51c45f21"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint16_t trng_config_t::sampleSize</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Defines the total number of Entropy samples that will be taken during Entropy generation. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa13e97aea012bac044c8b468b96a346a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint16_t trng_config_t::sparseBitLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This limit is used only for During Von Neumann sampling (enabled by TRNG_HAL_SetSampleMode()). Samples are discarded if two consecutive raw samples are both 0 or both 1. If this discarding occurs for a long period of time, it indicates that there is insufficient Entropy. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a3a5a504af9df6ac82e14c1a50c018986"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t trng_config_t::retryCount</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>It defines the number of times a statistical check may fails during the TRNG Entropy Generation before generating an error. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a8931a55ae0023f04ac89d136047493b6"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t trng_config_t::longRunMaxLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ac3e3d53ec411f36076baa8a602ea7e1e"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::monobitLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a690b392b63f4ed4dabe11f42339d2ca6"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit1Limit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a7c457b56026bf08724e4dfb0e9347ced"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit2Limit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a03cfe0feba7d20ef1bb67b6d774f689a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit3Limit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aeb24ae2dc10008e0093887501f653019"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit4Limit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a64f977e88bb179f321bf325b016b6df7"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit5Limit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a1ef1a1672daaeb22f465f1400ac4e33a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::runBit6PlusLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa5c11626ca0892f8be5e88a39892b518"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::pokerLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a75840750418fdffabbae7ba0d66709d6"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__trng__driver.html#structtrng__statistical__check__limit__t">trng_statistical_check_limit_t</a> trng_config_t::frequencyCountLimit</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a class="anchor" id="ga0d809ab2bf96ed21a28c531679c1cffe"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define FSL_TRNG_DRIVER_VERSION   (<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Enumeration Type Documentation</h2>
|
|
<a class="anchor" id="ga6743806ab1ae5e2511aed3f8a30814c8"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum <a class="el" href="group__trng__driver.html#ga6743806ab1ae5e2511aed3f8a30814c8">trng_sample_mode_t</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Used by <a class="el" href="group__trng__driver.html#structtrng__config__t" title="Data structure for the TRNG initialization. ">trng_config_t</a>. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga6743806ab1ae5e2511aed3f8a30814c8af9f812a5ba8dddf6800fe42db487f5e7"></a>kTRNG_SampleModeVonNeumann</em> </td><td class="fielddoc">
|
|
<p>Use Von Neumann data into both Entropy shifter and Statistical Checker. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="gga6743806ab1ae5e2511aed3f8a30814c8a2411d65d49169b9244b0c975442ff898"></a>kTRNG_SampleModeRaw</em> </td><td class="fielddoc">
|
|
<p>Use raw data into both Entropy shifter and Statistical Checker. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="gga6743806ab1ae5e2511aed3f8a30814c8a12725a856bdf7ea64e16156fc1f6792c"></a>kTRNG_SampleModeVonNeumannRaw</em> </td><td class="fielddoc">
|
|
<p>Use Von Neumann data into Entropy shifter. </p>
|
|
<p>Use raw data into Statistical Checker. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga20c19c3f8b8f14572d91b034cd8f8387"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum <a class="el" href="group__trng__driver.html#ga20c19c3f8b8f14572d91b034cd8f8387">trng_clock_mode_t</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Used by <a class="el" href="group__trng__driver.html#structtrng__config__t" title="Data structure for the TRNG initialization. ">trng_config_t</a>. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga20c19c3f8b8f14572d91b034cd8f8387a10eb7dda9879280deaab08f87158ebbc"></a>kTRNG_ClockModeRingOscillator</em> </td><td class="fielddoc">
|
|
<p>Ring oscillator is used to operate the TRNG (default). </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="gga20c19c3f8b8f14572d91b034cd8f8387a066582671741cf64617d6cde5d929937"></a>kTRNG_ClockModeSystem</em> </td><td class="fielddoc">
|
|
<p>System clock is used to operate the TRNG. </p>
|
|
<p>This is for test use only, and indeterminate results may occur. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gaaa7094b265c437185a9ba211962ae925"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum <a class="el" href="group__trng__driver.html#gaaa7094b265c437185a9ba211962ae925">trng_ring_osc_div_t</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Used by <a class="el" href="group__trng__driver.html#structtrng__config__t" title="Data structure for the TRNG initialization. ">trng_config_t</a>. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggaaa7094b265c437185a9ba211962ae925a557465d3f4d88b544fcf818085032b51"></a>kTRNG_RingOscDiv0</em> </td><td class="fielddoc">
|
|
<p>Ring oscillator with no divide (default). </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="ggaaa7094b265c437185a9ba211962ae925af420c1e0c4bd6a0a181464866ae70764"></a>kTRNG_RingOscDiv2</em> </td><td class="fielddoc">
|
|
<p>Ring oscillator divided-by-2. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="ggaaa7094b265c437185a9ba211962ae925ad03f20e54add497bca2cab5084e409d8"></a>kTRNG_RingOscDiv4</em> </td><td class="fielddoc">
|
|
<p>Ring oscillator divided-by-4. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><em><a class="anchor" id="ggaaa7094b265c437185a9ba211962ae925a207ca5ecd9403ce8299085a1bf2f9ca2"></a>kTRNG_RingOscDiv8</em> </td><td class="fielddoc">
|
|
<p>Ring oscillator divided-by-8. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a class="anchor" id="ga3f90793dd83a0ac2249fdcb8fa762c6a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">status_t TRNG_GetDefaultConfig </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__trng__driver.html#structtrng__config__t">trng_config_t</a> * </td>
|
|
<td class="paramname"><em>userConfig</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function initializes the configure structure to default value. the default value are: </p>
|
|
<div class="fragment"><div class="line">user_config->lock = 0;</div>
|
|
<div class="line">user_config->clockMode = <a class="code" href="group__trng__driver.html#gga20c19c3f8b8f14572d91b034cd8f8387a10eb7dda9879280deaab08f87158ebbc">kTRNG_ClockModeRingOscillator</a>;</div>
|
|
<div class="line">user_config->ringOscDiv = <a class="code" href="group__trng__driver.html#ggaaa7094b265c437185a9ba211962ae925a557465d3f4d88b544fcf818085032b51">kTRNG_RingOscDiv0</a>; Or to other kTRNG_RingOscDiv[2|8] depending on platform.</div>
|
|
<div class="line">user_config->sampleMode = <a class="code" href="group__trng__driver.html#gga6743806ab1ae5e2511aed3f8a30814c8a2411d65d49169b9244b0c975442ff898">kTRNG_SampleModeRaw</a>;</div>
|
|
<div class="line">user_config->entropyDelay = 3200;</div>
|
|
<div class="line">user_config->sampleSize = 2500;</div>
|
|
<div class="line">user_config->sparseBitLimit = TRNG_USER_CONFIG_DEFAULT_SPARSE_BIT_LIMIT;</div>
|
|
<div class="line">user_config->retryCount = 63;</div>
|
|
<div class="line">user_config->longRunMaxLimit = 34;</div>
|
|
<div class="line">user_config->monobitLimit.maximum = 1384;</div>
|
|
<div class="line">user_config->monobitLimit.minimum = 1116;</div>
|
|
<div class="line">user_config->runBit1Limit.maximum = 405;</div>
|
|
<div class="line">user_config->runBit1Limit.minimum = 227;</div>
|
|
<div class="line">user_config->runBit2Limit.maximum = 220;</div>
|
|
<div class="line">user_config->runBit2Limit.minimum = 98;</div>
|
|
<div class="line">user_config->runBit3Limit.maximum = 125;</div>
|
|
<div class="line">user_config->runBit3Limit.minimum = 37;</div>
|
|
<div class="line">user_config->runBit4Limit.maximum = 75;</div>
|
|
<div class="line">user_config->runBit4Limit.minimum = 11;</div>
|
|
<div class="line">user_config->runBit5Limit.maximum = 47;</div>
|
|
<div class="line">user_config->runBit5Limit.minimum = 1;</div>
|
|
<div class="line">user_config->runBit6PlusLimit.maximum = 47;</div>
|
|
<div class="line">user_config->runBit6PlusLimit.minimum = 1;</div>
|
|
<div class="line">user_config->pokerLimit.maximum = 26912;</div>
|
|
<div class="line">user_config->pokerLimit.minimum = 24445;</div>
|
|
<div class="line">user_config->frequencyCountLimit.maximum = 25600;</div>
|
|
<div class="line">user_config->frequencyCountLimit.minimum = 1600;</div>
|
|
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">user_config</td><td>User configuration structure. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>If successful, returns the kStatus_TRNG_Success. Otherwise, it returns an error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gaefef4539a93045832f10d28f094d26ea"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">status_t TRNG_Init </td>
|
|
<td>(</td>
|
|
<td class="paramtype">TRNG_Type * </td>
|
|
<td class="paramname"><em>base</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="group__trng__driver.html#structtrng__config__t">trng_config_t</a> * </td>
|
|
<td class="paramname"><em>userConfig</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function initializes the TRNG. When called, the TRNG entropy generation starts immediately.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>TRNG base address </td></tr>
|
|
<tr><td class="paramname">userConfig</td><td>Pointer to initialize configuration structure. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>If successful, returns the kStatus_TRNG_Success. Otherwise, it returns an error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gacdcc7542e374e611c888008a227b878c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void TRNG_Deinit </td>
|
|
<td>(</td>
|
|
<td class="paramtype">TRNG_Type * </td>
|
|
<td class="paramname"><em>base</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function shuts down the TRNG.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>TRNG base address </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gaac12716aedb0b05e8be3e96433c8ad56"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">status_t TRNG_GetRandomData </td>
|
|
<td>(</td>
|
|
<td class="paramtype">TRNG_Type * </td>
|
|
<td class="paramname"><em>base</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"><em>data</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>dataSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function gets random data from the TRNG.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>TRNG base address </td></tr>
|
|
<tr><td class="paramname">data</td><td>Pointer address used to store random data </td></tr>
|
|
<tr><td class="paramname">dataSize</td><td>Size of the buffer pointed by the data parameter </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>random data </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">© 2016 NXP Semiconductors. All rights reserved.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|