Files
bootloader/doc/host_html/structhab__ivt.html
László Monda e6c1fce5b4 Add KBOOT.
2016-08-10 01:45:15 +02:00

290 lines
14 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.11"/>
<title>Kinetis Bootloader Host: hab_ivt_t Struct Reference</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="navtreedata.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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.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="nxp_logo_small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Kinetis Bootloader Host
&#160;<span id="projectnumber">2.0.0</span>
</div>
<div id="projectbrief">Host Tools for Kinetis devices</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<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>Introduction</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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 id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></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('structhab__ivt.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)">
</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="#pub-attribs">Public Attributes</a> &#124;
<a href="structhab__ivt-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">hab_ivt_t Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="_i_v_t_data_source_8h_source.html">IVTDataSource.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Collaboration diagram for hab_ivt_t:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structhab__ivt__coll__graph.svg" width="90" height="127"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a1b7fc9e9d52309f56b57a9543349bf00"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structhab__hdr__t.html">hab_hdr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#a1b7fc9e9d52309f56b57a9543349bf00">hdr</a></td></tr>
<tr class="separator:a1b7fc9e9d52309f56b57a9543349bf00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc055b3b0f6aa49f14f48333bf331982"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#afc055b3b0f6aa49f14f48333bf331982">entry</a></td></tr>
<tr class="separator:afc055b3b0f6aa49f14f48333bf331982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b496edf283c9d3b3b2397e6fd4a8db7"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#a6b496edf283c9d3b3b2397e6fd4a8db7">reserved1</a></td></tr>
<tr class="separator:a6b496edf283c9d3b3b2397e6fd4a8db7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af15467ad5c571cb1989439c412b85a71"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#af15467ad5c571cb1989439c412b85a71">dcd</a></td></tr>
<tr class="separator:af15467ad5c571cb1989439c412b85a71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7d705aa6b9f376da4b45dc2aee99112"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#ad7d705aa6b9f376da4b45dc2aee99112">boot_data</a></td></tr>
<tr class="separator:ad7d705aa6b9f376da4b45dc2aee99112"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38ad470926876c372e91f4212360338d"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#a38ad470926876c372e91f4212360338d">self</a></td></tr>
<tr class="separator:a38ad470926876c372e91f4212360338d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a117eb7ff63a99d084b07d2fcce5ff1f1"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#a117eb7ff63a99d084b07d2fcce5ff1f1">csf</a></td></tr>
<tr class="separator:a117eb7ff63a99d084b07d2fcce5ff1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c8ce15b7dd410f382d19515d51d471e"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhab__ivt.html#a2c8ce15b7dd410f382d19515d51d471e">reserved2</a></td></tr>
<tr class="separator:a2c8ce15b7dd410f382d19515d51d471e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>ivt structure</p>
<dl class="section user"><dt>Format</dt><dd></dd></dl>
<p>An ivt consists of a <a class="el" href="structhab__ivt.html#a1b7fc9e9d52309f56b57a9543349bf00">hdr</a> followed by a list of addresses as described further below.</p>
<dl class="section warning"><dt>Warning</dt><dd>The <em>entry</em> address may not be NULL.</dd>
<dd>
On an IC not configured as #HAB_CFG_CLOSED, the <em>csf</em> address may be NULL. If it is not NULL, the <a class="el" href="structhab__ivt.html#a117eb7ff63a99d084b07d2fcce5ff1f1">csf</a> will be processed, but any failures should be non-fatal.</dd>
<dd>
On an IC configured as #HAB_CFG_CLOSED, the <em>csf</em> address may not be NULL, and <a class="el" href="structhab__ivt.html#a117eb7ff63a99d084b07d2fcce5ff1f1">csf</a> failures are typically fatal.</dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>The Boot Data located using the <em>boot_data</em> field is interpreted by the HAB caller in a boot-mode specific manner. This may be used by the boot ROM as to determine the load address and boot device configuration for images loaded from block devices (see ref_rug for details).</dd>
<dd>
All addresses given in the IVT, including the Boot Data (if present) are those for the final load location.</dd></dl>
<p><a class="anchor" id="ila"></a> </p><dl class="section user"><dt>Initial load addresses</dt><dd></dd></dl>
<p>The <em>self</em> field is used to calculate addresses in boot modes where an initial portion of the image is loaded to an initial location. In such cases, the IVT, Boot Data (if present) and DCD (if present) are used in configuring the IC and loading the full image to its final location. Only the IVT, Boot Data (if present) and DCD (if present) are required to be within the initial image portion.</p>
<p>The method for calculating an initial load address for the DCD is illustrated in the following C fragment. Similar calculations apply to other fields.</p>
<pre class="fragment"> hab_ivt_t* ivt_initial = &lt;initial IVT load address&gt;;
const void* dcd_initial = ivt_initial-&gt;dcd;
if (ivt_initial-&gt;dcd != NULL)
dcd_initial = (const uint8_t*)ivt_initial
+ (ivt_initial-&gt;dcd - ivt_initial-&gt;self)
</pre><dl class="section note"><dt>Note</dt><dd>The void* types in this structure have been changed to uint32_t so that this code will work correctly when compiled on a 64-bit host. Otherwise the structure would come out incorrect.</dd></dl>
<p>ivt type </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ad7d705aa6b9f376da4b45dc2aee99112"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::boot_data</td>
</tr>
</table>
</div><div class="memdoc">
<p>Absolute address of the Boot Data: may be NULL, but not interpreted any further by HAB </p>
</div>
</div>
<a class="anchor" id="a117eb7ff63a99d084b07d2fcce5ff1f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::csf</td>
</tr>
</table>
</div><div class="memdoc">
<p>Absolute address of the image CSF. </p>
</div>
</div>
<a class="anchor" id="af15467ad5c571cb1989439c412b85a71"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::dcd</td>
</tr>
</table>
</div><div class="memdoc">
<p>Absolute address of the image DCD: may be NULL. </p>
</div>
</div>
<a class="anchor" id="afc055b3b0f6aa49f14f48333bf331982"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::entry</td>
</tr>
</table>
</div><div class="memdoc">
<p>Absolute address of the first instruction to execute from the image </p>
</div>
</div>
<a class="anchor" id="a1b7fc9e9d52309f56b57a9543349bf00"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structhab__hdr__t.html">hab_hdr_t</a> hab_ivt_t::hdr</td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="structhab__ivt.html#a1b7fc9e9d52309f56b57a9543349bf00">hdr</a> with tag #HAB_TAG_IVT, length and HAB version fields (see data) </p>
</div>
</div>
<a class="anchor" id="a6b496edf283c9d3b3b2397e6fd4a8db7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::reserved1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserved in this version of HAB: should be NULL. </p>
</div>
</div>
<a class="anchor" id="a2c8ce15b7dd410f382d19515d51d471e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::reserved2</td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserved in this version of HAB: should be zero. </p>
</div>
</div>
<a class="anchor" id="a38ad470926876c372e91f4212360338d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t hab_ivt_t::self</td>
</tr>
</table>
</div><div class="memdoc">
<p>Absolute address of the IVT. </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_i_v_t_data_source_8h_source.html">IVTDataSource.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="structhab__ivt.html">hab_ivt</a></li>
<li class="footer">Generated on Mon Mar 7 2016 16:49:51 for Kinetis Bootloader Host by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>