diff options
Diffstat (limited to 'docs/Pack')
168 files changed, 21768 insertions, 0 deletions
diff --git a/docs/Pack/html/BSPBundleDisplay.png b/docs/Pack/html/BSPBundleDisplay.png Binary files differnew file mode 100644 index 0000000..ce1bed1 --- /dev/null +++ b/docs/Pack/html/BSPBundleDisplay.png diff --git a/docs/Pack/html/BasicDFPDisplay.png b/docs/Pack/html/BasicDFPDisplay.png Binary files differnew file mode 100644 index 0000000..5132c22 --- /dev/null +++ b/docs/Pack/html/BasicDFPDisplay.png diff --git a/docs/Pack/html/BoardsSectionMCB1500.png b/docs/Pack/html/BoardsSectionMCB1500.png Binary files differnew file mode 100644 index 0000000..e49e80f --- /dev/null +++ b/docs/Pack/html/BoardsSectionMCB1500.png diff --git a/docs/Pack/html/CMSIS_Logo_Final.png b/docs/Pack/html/CMSIS_Logo_Final.png Binary files differnew file mode 100644 index 0000000..2056b7e --- /dev/null +++ b/docs/Pack/html/CMSIS_Logo_Final.png diff --git a/docs/Pack/html/CodeVerify.png b/docs/Pack/html/CodeVerify.png Binary files differnew file mode 100644 index 0000000..448b40e --- /dev/null +++ b/docs/Pack/html/CodeVerify.png diff --git a/docs/Pack/html/ComponentDisplay.png b/docs/Pack/html/ComponentDisplay.png Binary files differnew file mode 100644 index 0000000..db55d44 --- /dev/null +++ b/docs/Pack/html/ComponentDisplay.png diff --git a/docs/Pack/html/Component_Instances.png b/docs/Pack/html/Component_Instances.png Binary files differnew file mode 100644 index 0000000..8ecdc33 --- /dev/null +++ b/docs/Pack/html/Component_Instances.png diff --git a/docs/Pack/html/ConditionsDisplay.png b/docs/Pack/html/ConditionsDisplay.png Binary files differnew file mode 100644 index 0000000..0821348 --- /dev/null +++ b/docs/Pack/html/ConditionsDisplay.png diff --git a/docs/Pack/html/DFPFlow.png b/docs/Pack/html/DFPFlow.png Binary files differnew file mode 100644 index 0000000..8f88570 --- /dev/null +++ b/docs/Pack/html/DFPFlow.png diff --git a/docs/Pack/html/DebugConnect.png b/docs/Pack/html/DebugConnect.png Binary files differnew file mode 100644 index 0000000..656edd3 --- /dev/null +++ b/docs/Pack/html/DebugConnect.png diff --git a/docs/Pack/html/DebugDisconnect.png b/docs/Pack/html/DebugDisconnect.png Binary files differnew file mode 100644 index 0000000..5a59438 --- /dev/null +++ b/docs/Pack/html/DebugDisconnect.png diff --git a/docs/Pack/html/DevBoardDisplay.png b/docs/Pack/html/DevBoardDisplay.png Binary files differnew file mode 100644 index 0000000..f769e4e --- /dev/null +++ b/docs/Pack/html/DevBoardDisplay.png diff --git a/docs/Pack/html/DeviceDatabase2.png b/docs/Pack/html/DeviceDatabase2.png Binary files differnew file mode 100644 index 0000000..9c6f51c --- /dev/null +++ b/docs/Pack/html/DeviceDatabase2.png diff --git a/docs/Pack/html/ExampleDisplay.png b/docs/Pack/html/ExampleDisplay.png Binary files differnew file mode 100644 index 0000000..e078c58 --- /dev/null +++ b/docs/Pack/html/ExampleDisplay.png diff --git a/docs/Pack/html/FPADisplay.png b/docs/Pack/html/FPADisplay.png Binary files differnew file mode 100644 index 0000000..79a98ef --- /dev/null +++ b/docs/Pack/html/FPADisplay.png diff --git a/docs/Pack/html/FPATargetOptions.png b/docs/Pack/html/FPATargetOptions.png Binary files differnew file mode 100644 index 0000000..f7b121f --- /dev/null +++ b/docs/Pack/html/FPATargetOptions.png diff --git a/docs/Pack/html/FlashErase.png b/docs/Pack/html/FlashErase.png Binary files differnew file mode 100644 index 0000000..6198045 --- /dev/null +++ b/docs/Pack/html/FlashErase.png diff --git a/docs/Pack/html/FlashProgram.png b/docs/Pack/html/FlashProgram.png Binary files differnew file mode 100644 index 0000000..da7d37d --- /dev/null +++ b/docs/Pack/html/FlashProgram.png diff --git a/docs/Pack/html/FlashVerify.png b/docs/Pack/html/FlashVerify.png Binary files differnew file mode 100644 index 0000000..3dc1955 --- /dev/null +++ b/docs/Pack/html/FlashVerify.png diff --git a/docs/Pack/html/LocalInstallation.png b/docs/Pack/html/LocalInstallation.png Binary files differnew file mode 100644 index 0000000..373ecde --- /dev/null +++ b/docs/Pack/html/LocalInstallation.png diff --git a/docs/Pack/html/MVCM3SpecTable.png b/docs/Pack/html/MVCM3SpecTable.png Binary files differnew file mode 100644 index 0000000..2ade29a --- /dev/null +++ b/docs/Pack/html/MVCM3SpecTable.png diff --git a/docs/Pack/html/PDSC_Example_bottom.png b/docs/Pack/html/PDSC_Example_bottom.png Binary files differnew file mode 100644 index 0000000..5325685 --- /dev/null +++ b/docs/Pack/html/PDSC_Example_bottom.png diff --git a/docs/Pack/html/PDSC_Example_top.png b/docs/Pack/html/PDSC_Example_top.png Binary files differnew file mode 100644 index 0000000..defa79f --- /dev/null +++ b/docs/Pack/html/PDSC_Example_top.png diff --git a/docs/Pack/html/PackCreateSteps.png b/docs/Pack/html/PackCreateSteps.png Binary files differnew file mode 100644 index 0000000..9c4861d --- /dev/null +++ b/docs/Pack/html/PackCreateSteps.png diff --git a/docs/Pack/html/RTX_Conf_CM_Wizard_View.png b/docs/Pack/html/RTX_Conf_CM_Wizard_View.png Binary files differnew file mode 100644 index 0000000..0e00c41 --- /dev/null +++ b/docs/Pack/html/RTX_Conf_CM_Wizard_View.png diff --git a/docs/Pack/html/Reset.png b/docs/Pack/html/Reset.png Binary files differnew file mode 100644 index 0000000..585f140 --- /dev/null +++ b/docs/Pack/html/Reset.png diff --git a/docs/Pack/html/SPVariants_small.png b/docs/Pack/html/SPVariants_small.png Binary files differnew file mode 100644 index 0000000..2b4f5ba --- /dev/null +++ b/docs/Pack/html/SPVariants_small.png diff --git a/docs/Pack/html/SVDFlow.png b/docs/Pack/html/SVDFlow.png Binary files differnew file mode 100644 index 0000000..1c141db --- /dev/null +++ b/docs/Pack/html/SVDFlow.png diff --git a/docs/Pack/html/SVDIncluded.png b/docs/Pack/html/SVDIncluded.png Binary files differnew file mode 100644 index 0000000..7faac32 --- /dev/null +++ b/docs/Pack/html/SVDIncluded.png diff --git a/docs/Pack/html/StartupSystemFilesAdded.png b/docs/Pack/html/StartupSystemFilesAdded.png Binary files differnew file mode 100644 index 0000000..3a7f890 --- /dev/null +++ b/docs/Pack/html/StartupSystemFilesAdded.png diff --git a/docs/Pack/html/SystemStartupFiles.png b/docs/Pack/html/SystemStartupFiles.png Binary files differnew file mode 100644 index 0000000..07accb1 --- /dev/null +++ b/docs/Pack/html/SystemStartupFiles.png diff --git a/docs/Pack/html/UserCodeTemplatesDisplay.png b/docs/Pack/html/UserCodeTemplatesDisplay.png Binary files differnew file mode 100644 index 0000000..96371d9 --- /dev/null +++ b/docs/Pack/html/UserCodeTemplatesDisplay.png diff --git a/docs/Pack/html/VariantDisplay.png b/docs/Pack/html/VariantDisplay.png Binary files differnew file mode 100644 index 0000000..7c08d5e --- /dev/null +++ b/docs/Pack/html/VariantDisplay.png diff --git a/docs/Pack/html/WebInstallation.png b/docs/Pack/html/WebInstallation.png Binary files differnew file mode 100644 index 0000000..a2f1722 --- /dev/null +++ b/docs/Pack/html/WebInstallation.png diff --git a/docs/Pack/html/algorithmFunc.html b/docs/Pack/html/algorithmFunc.html new file mode 100644 index 0000000..5a23864 --- /dev/null +++ b/docs/Pack/html/algorithmFunc.html @@ -0,0 +1,438 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Algorithm Functions</title> +<title>CMSIS-Pack: Algorithm Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('algorithmFunc.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Algorithm Functions </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Blank Check</p> +<p>The following functions are available for creating new Flash programming algorithms: </p> +<table class="doxtable"> +<tr> +<th>Function Name </th><th>Indication </th><th>Description </th></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#BlankCheck">BlankCheck</a> </td><td>optional </td><td>Check and compare patterns. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#EraseChip">EraseChip</a> </td><td>optional </td><td>Delete entire Flash memory content. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#EraseSector">EraseSector</a> </td><td>mandatory </td><td>Delete Flash memory content of a specific sector. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#Init">Init</a> </td><td>mandatory </td><td>Initialize and prepare device for Flash programming. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#ProgramPage">ProgramPage</a> </td><td>mandatory </td><td>Write the application into the Flash memory. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#UnInit">UnInit</a> </td><td>mandatory </td><td>De-initialize the microcontroller after one of the Flash programming steps. </td></tr> +<tr> +<td><a class="el" href="algorithmFunc.html#Verify">Verify</a> </td><td>optional </td><td>Compare Flash memory content with the program code. </td></tr> +</table> +<p>The following diagrams show how the functions of the <b>Flash Programming Algorithms</b> are executed by a development tool.</p> +<p>The <b>Flash Erase</b> sequence is executed to erase the Flash content.</p> +<div class="image"> +<img src="FlashErase.png" alt="FlashErase.png"/> +<div class="caption"> +Flash Erase</div></div> +<p> The <b>Flash Program</b> sequence is executed to program the Flash memory.</p> +<div class="image"> +<img src="FlashProgram.png" alt="FlashProgram.png"/> +<div class="caption"> +Flash Program</div></div> +<p> The <b>Flash Verify</b> sequence is executed to verify the content after flash programming.</p> +<div class="image"> +<img src="FlashVerify.png" alt="FlashVerify.png"/> +<div class="caption"> +Flash Verify</div></div> + <p> </p> +<hr/> +<h1><a class="anchor" id="BlankCheck"></a> +BlankCheck</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> BlankCheck (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> pat);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">adr</td><td>Block start address </td></tr> + <tr><td class="paramname">sz</td><td>Block size in bytes </td></tr> + <tr><td class="paramname">pat</td><td>Pattern to compare </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 when the block content is equal to the pattern pat.</li> +<li>1 when the block content differs from the pattern pat.</li> +</ul> +</dd></dl> +<p>The function <b>BlankCheck</b> can be used to check whether the specified block is empty, or whether the content is equal to a specific pattern defined in the argument <em>pat</em>.</p> +<p>The argument <em>adr</em> specifies the start address of the block that is to be verified.</p> +<p>The argument <em>sz</em> specifies the size of the block that is to be verified.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> BlankCheck (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> pat) {</div> +<div class="line"> </div> +<div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i, j, k;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Recalculate address for External SDRAM addresses</span></div> +<div class="line"> <span class="keywordflow">if</span> (adr >= SDRAM_START)</div> +<div class="line"> adr = adr - SDRAM_START + USER_OFFSET;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">for</span> (i = 0; i < sz; i += 256) {</div> +<div class="line"> <span class="comment">// Read 256 bytes</span></div> +<div class="line"> ReadPage_HW (adr+i, 256, &rd_buf[0]);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Determine size to compare</span></div> +<div class="line"> <span class="keywordflow">if</span> ((sz-i) >= 256) k = 256;</div> +<div class="line"> <span class="keywordflow">else</span> k = (sz-i);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Check up to 256 bytes if equal to pattern "pat"</span></div> +<div class="line"> <span class="keywordflow">for</span> (j = 0; j < k; j++)</div> +<div class="line"> <span class="keywordflow">if</span> (rd_buf[j] != pat) <span class="keywordflow">return</span> (1); <span class="comment">// Memory is not blank</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0); <span class="comment">// Memory is blank</span></div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="EraseChip"></a> +EraseChip</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> EraseChip (<span class="keywordtype">void</span>);</div> +</div><!-- fragment --> <dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 on success.</li> +<li>1 on failure.</li> +</ul> +</dd></dl> +<p>The function <b>EraseChip</b> deletes the content of the entire Flash memory. It is invoked whenever the uVision menu <b>Flash</b> - <b>Erase</b> is used, or whenever an attempt is made to download the program to Flash and the option <b>Erase Full Chip</b> has been set in the <b>Flash Download Setup</b> dialog. If this function is missing in the Flash Programming Algorithm, the <a class="el" href="algorithmFunc.html#EraseSector">EraseSector</a> function is executed until the entire content of the Flash memory area has been deleted.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> EraseChip (<span class="keywordtype">void</span>) {</div> +<div class="line"> </div> +<div class="line"> FLASH->CR |= FLASH_MER; <span class="comment">// Mass Erase Enabled</span></div> +<div class="line"> FLASH->CR |= FLASH_STRT; <span class="comment">// Start Erase</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">while</span> (FLASH->SR & FLASH_BSY) {</div> +<div class="line"> IWDG->KR = 0xAAAA; <span class="comment">// Reload IWDG</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> FLASH->CR &= ~FLASH_MER; <span class="comment">// Mass Erase Disabled</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0); <span class="comment">// Done</span></div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="EraseSector"></a> +EraseSector</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> EraseSector (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">adr</td><td>Sector address </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 on success.</li> +<li>1 on failure.</li> +</ul> +</dd></dl> +<p>The function <b>EraseSector</b> deletes the content of the sector starting at the address specified by the argument <em>adr</em>. The function is invoked whenever the uVision menu <b>Flash</b> - <b>Erase</b> is used, or whenever an attempt is made to download the program to Flash and the option <b>Erase Sectors</b> has been set in the <b>Flash Download Setup</b> dialog.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> EraseSector (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr) {</div> +<div class="line"> </div> +<div class="line"> FLASH->CR |= FLASH_PER; <span class="comment">// Page Erase Enabled</span></div> +<div class="line"> FLASH->AR = adr; <span class="comment">// Page Address</span></div> +<div class="line"> FLASH->CR |= FLASH_STRT; <span class="comment">// Start Erase</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">while</span> (FLASH->SR & FLASH_BSY) {</div> +<div class="line"> IWDG->KR = 0xAAAA; <span class="comment">// Reload IWDG</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> FLASH->CR &= ~FLASH_PER; <span class="comment">// Page Erase Disabled</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0); <span class="comment">// Done</span></div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="Init"></a> +Init</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> Init (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> clk, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fnc);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">adr</td><td>Device base address </td></tr> + <tr><td class="paramname">clk</td><td>Clock frequency (Hz) </td></tr> + <tr><td class="paramname">fnc</td><td>Function code </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 on success.</li> +<li>1 on failure.</li> +</ul> +</dd></dl> +<p>The function <b>Init</b> initializes the microcontroller for Flash programming. It is invoked whenever an attempt is made to download the program to Flash.</p> +<p>The argument <em>adr</em> specifies the base address of the device.</p> +<p>The argument <em>clk</em> specifies the clock frequency for prgramming the device.</p> +<p>The argument <em>fnc</em> is a number:</p> +<ul> +<li>1 stands for Erase.</li> +<li>2 stands for Program.</li> +<li>3 stands for Verify.</li> +</ul> +<p>Thus, different initialization sections can be implemented for each individual Flash programming step.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> Init (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> clk, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fnc) {</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Zero Wait State</span></div> +<div class="line"> FLASH->ACR = 0x00000000;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Unlock Flash</span></div> +<div class="line"> FLASH->KEYR = FLASH_KEY1;</div> +<div class="line"> FLASH->KEYR = FLASH_KEY2;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Test if IWDG is running (IWDG in HW mode)</span></div> +<div class="line"> <span class="keywordflow">if</span> ((FLASH->OBR & 0x04) == 0x00) {</div> +<div class="line"> <span class="comment">// Set IWDG time out to ~32.768 second</span></div> +<div class="line"> IWDG->KR = 0x5555; <span class="comment">// Enable write access to IWDG_PR and IWDG_RLR</span></div> +<div class="line"> IWDG->PR = 0x06; <span class="comment">// Set prescaler to 256</span></div> +<div class="line"> IWDG->RLR = 4095; <span class="comment">// Set reload value to 4095</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0);</div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="ProgramPage"></a> +ProgramPage</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> ProgramPage (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">adr</td><td>Page start address </td></tr> + <tr><td class="paramname">sz</td><td>Page size </td></tr> + <tr><td class="paramname">buf</td><td>Data to be written </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 on success.</li> +<li>1 on failure.</li> +</ul> +</dd></dl> +<p>The function <b>ProgramPage</b> is used to write code into the Flash memory. It is invoked whenever an attempt is made to download a program to Flash.</p> +<p>The argument <em>adr</em> specifies the start address of the page that is to be programmed.</p> +<p>The argument <em>sz</em> specifies the size of the page that is to be programmed.</p> +<p>The argument <em>buf</em> points to the buffer containing the data to be programmed.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> ProgramPage (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf) {</div> +<div class="line"> </div> +<div class="line"> sz = (sz + 1) & ~1; <span class="comment">// Adjust size for Half Words</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">while</span> (sz) {</div> +<div class="line"> </div> +<div class="line"> FLASH->CR |= FLASH_PG; <span class="comment">// Programming Enabled</span></div> +<div class="line"> </div> +<div class="line"> M16(adr) = *((<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *)buf); <span class="comment">// Program Half Word</span></div> +<div class="line"> <span class="keywordflow">while</span> (FLASH->SR & FLASH_BSY);</div> +<div class="line"> </div> +<div class="line"> FLASH->CR &= ~FLASH_PG; <span class="comment">// Programming Disabled</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Check for Errors</span></div> +<div class="line"> <span class="keywordflow">if</span> (FLASH->SR & (FLASH_PGERR | FLASH_WRPRTERR)) {</div> +<div class="line"> FLASH->SR |= FLASH_PGERR | FLASH_WRPRTERR;</div> +<div class="line"> <span class="keywordflow">return</span> (1); <span class="comment">// Failed</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Go to next Half Word</span></div> +<div class="line"> adr += 2;</div> +<div class="line"> buf += 2;</div> +<div class="line"> sz -= 2;</div> +<div class="line"> </div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0); <span class="comment">// Done</span></div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="UnInit"></a> +UnInit</h1> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> UnInit (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fnc);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">fnc</td><td>Function code </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>0 on success.</li> +<li>1 on failure.</li> +</ul> +</dd></dl> +<p>The function <b>UnInit</b> de-initializes the microcontroller and is invoked at the end of an erasing, programming, or verifying step.</p> +<p>The argument <em>fnc</em> is a number:</p> +<ul> +<li>1 stands for Erase.</li> +<li>2 stands for Program.</li> +<li>3 stands for Verify.</li> +</ul> +<p>Thus, different de-initialization sections can be implemented for each individual Flash programming step.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> UnInit (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fnc) {</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Lock Flash</span></div> +<div class="line"> FLASH->CR |= FLASH_LOCK;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (0);</div> +<div class="line">}</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="Verify"></a> +Verify</h1> +<div class="fragment"><div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Verify (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf);</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">adr</td><td>Start address </td></tr> + <tr><td class="paramname">sz</td><td>Size in bytes </td></tr> + <tr><td class="paramname">buf</td><td>Data to be compared </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status information:<ul> +<li>the sum of (adr+sz) - on success.</li> +<li>any other number - on failure, and represents the failing address.</li> +</ul> +</dd></dl> +<p>The function <b>Verify</b> compares the content of the Flash memory with the program code <em>*buf</em>.</p> +<p>The argument <em>adr</em> specifies the start address for the verification.</p> +<p>The argument <em>sz</em> specifies the size of the verification.</p> +<p>The argument <em>buf</em> points to the buffer containing the data to be verified.</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Verify (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> adr, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf) {</div> +<div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i, adr_dest, in_page_ofs;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (adr < block_size) { <span class="comment">// Verifying 2-nd level bootloader data</span></div> +<div class="line"> adr_dest = adr + page_usr_size; <span class="comment">// skip page 0 of block 0</span></div> +<div class="line"> } <span class="keywordflow">else</span> { <span class="comment">// Verifying program data</span></div> +<div class="line"> FindBlock(adr, 0);</div> +<div class="line"> adr_dest = nand_block_offset + (adr & (block_size-1));</div> +<div class="line"> }</div> +<div class="line"> in_page_ofs = adr_dest & (page_usr_size-1);</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (ReadPage_HW(adr_dest, page_usr_size, data_buf)) <span class="keywordflow">return</span> (1);</div> +<div class="line"> <span class="keywordflow">for</span> (i=0; i<sz; i++)</div> +<div class="line"> <span class="keywordflow">if</span> (buf[i] != data_buf[i+in_page_ofs])</div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">return</span> (adr+i);</div> +<div class="line">}</div> +</div><!-- fragment --> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="flashAlgorithm.html">Flash Programming</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/bc_s.png b/docs/Pack/html/bc_s.png Binary files differnew file mode 100644 index 0000000..224b29a --- /dev/null +++ b/docs/Pack/html/bc_s.png diff --git a/docs/Pack/html/bdwn.png b/docs/Pack/html/bdwn.png Binary files differnew file mode 100644 index 0000000..940a0b9 --- /dev/null +++ b/docs/Pack/html/bdwn.png diff --git a/docs/Pack/html/closed.png b/docs/Pack/html/closed.png Binary files differnew file mode 100644 index 0000000..98cc2c9 --- /dev/null +++ b/docs/Pack/html/closed.png diff --git a/docs/Pack/html/cmsis.css b/docs/Pack/html/cmsis.css new file mode 100644 index 0000000..bba1010 --- /dev/null +++ b/docs/Pack/html/cmsis.css @@ -0,0 +1,1282 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* CMSIS styles */ + +.style1 { + text-align: center; +} +.style2 { + color: #0000FF; + font-weight: normal; +} +.style3 { + text-align: left; +} +.style4 { + color: #008000; +} +.style5 { + color: #0000FF; +} +.style6 { + color: #000000; + font-style:italic; +} +.mand { + color: #0000FF; +} +.opt { + color: #008000; +} +.cond { + color: #990000; +} + +.choice +{ + background-color:#F7F9D0; +} +.seq +{ + background-color:#C9DECB; +} +.group1 +{ + background-color:#F8F1F1; +} +.group2 +{ + background-color:#DCEDEA; +} + + +ul ul { + list-style-type: disc; +} + +ul ul ul { + list-style-type: disc; +} + +ul.hierarchy { + color: green; +} + +em { + color: #000000; + font-style:italic; +} + + + +/* CMSIS Tables */ +table.cmtab1 { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; + text-align: justify; + width:70%; +} + +th.cmtab1 { + background: #EBEFF6; + font-weight: bold; + height: 28px; +} + +td.cmtab1 { + padding:1px; + text-align: left; +} + +table.cmtable { + border-collapse:collapse; + text-align: justify; +} + +table.cmtable td, table.cmtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.cmtable th { + background-color: #EBEFF6; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +td.MonoTxt { + font-family:"Arial monospaced for SAP"; +} + +td.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.h2 +{ + font-size: 120%; + font-weight: bold; +} + +div.new +{ + background-color:#ccffcc; /* light green */ +} + +div.mod +{ + background-color:#ffe6cc; /* light amber */ +} + +div.del +{ + background-color:#ffcccc; /* light red */ +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3A568E; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4464A5; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9AAED5; + color: #ffffff; + border: 1px double #849CCC; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FBFCFD; + border: 1px solid #C3CFE6; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; +} + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C3CFE6; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C3CFE6; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EDF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9AAED5; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A2B4D8; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4769AD; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C3CFE6; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4464A5; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4464A5; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 0px 6px 0px; + color: #233456; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #708CC4; + border-top:1px solid #5072B7; + border-left:1px solid #5072B7; + border-right:1px solid #C3CFE6; + border-bottom:1px solid #C3CFE6; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3A568E; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #293C63; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2B4069; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #EBEFF6; + color: #000000; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A7B8DA; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A7B8DA; + border-bottom: 1px solid #A7B8DA; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A7B8DA; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + font-size: 90%; + color: #233456; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A7B8DA; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#889FCE; + border:solid 1px #C1CDE5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#344D7E; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6583BF; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#344D7E; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C3CFE6; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5072B7; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #8EA4D0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#314877; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D7DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4464A5; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/Pack/html/component_files.png b/docs/Pack/html/component_files.png Binary files differnew file mode 100644 index 0000000..5d8c3d4 --- /dev/null +++ b/docs/Pack/html/component_files.png diff --git a/docs/Pack/html/configWizard.html b/docs/Pack/html/configWizard.html new file mode 100644 index 0000000..7352e6c --- /dev/null +++ b/docs/Pack/html/configWizard.html @@ -0,0 +1,471 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Configuration Wizard Annotations</title> +<title>CMSIS-Pack: Configuration Wizard Annotations</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('configWizard.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Configuration Wizard Annotations </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h1><a class="anchor" id="configWizard_annotations"></a> +Annotation Rules</h1> +<p><b>Configuration Wizard Annotations</b> consist of annotation items and annotation modifiers. They create GUI-like elements in IDEs for configuration files (see <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>). Using a GUI-like approach makes it easier for the user to check and adapt configuration files to the application needs. The following rules apply:</p> +<ul> +<li>The Configuration Wizard section must begin within the first 100 lines of code and must start with the following comment line: <div class="fragment"><div class="line"><span class="comment">// <<< Use Configuration Wizard in Context Menu >>></span></div> +</div><!-- fragment --></li> +<li>The Configuration Wizard section can end with the following optional comment: <div class="fragment"><div class="line"><span class="comment">// <<< end of configuration section >>></span></div> +</div><!-- fragment --></li> +<li>Annotations are written as comments in the code. Each annotation line must start with a double forward slash (//).</li> +<li>By default, the next code symbol that follows the annotation is modified.</li> +<li>Items marked with * in the table below can be followed by a skip-value. A skip-value omits a number of code symbols (see <em>skip example</em> in table). This overwrites the previous rule.</li> +<li>A descriptive text can be added to items. This text is displayed on screen (see table).</li> +<li>Whitespace characters are ignored in annotation items or annotation modifiers (text excluded).</li> +<li>You must not use < or > within configuration wizard lines other than for enclosing annotation items.</li> +</ul> +<p>The following table lists the Configuration Wizard Annotations:</p> +<table class="cmtable" summary="Annotations Tab"> +<tr> +<th>Item </th><th>Text </th><th>Description </th></tr> +<tr> +<td><h> </td><td>yes </td><td>Heading. Creates a header section. All items and options enclosed by <h> and </h> belong to one group and can be expanded. This entry makes no changes to code symbols. It is just used to group other items and modifiers. <br/> + Excerpt from the <a class="el" href="configWizard.html#configWizard_codeExample">Code Example</a> <div class="fragment"><div class="line"><span class="comment">// <h>Thread Configuration -- header without checkbox to group other items</span></div> +<div class="line"><span class="comment">// ...</span></div> +<div class="line"><span class="comment">// </h></span></div> +</div><!-- fragment --> Is the header entry as shown in <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>. </td></tr> +<tr> +<td><e><sup>*</sup> </td><td>yes </td><td>Heading with enable. Creates a header section with a checkbox to enabled or disabled all items and options enclosed by <e> and </e>. Excerpt from the <a class="el" href="configWizard.html#configWizard_codeExample">Code Example</a>. <div class="fragment"><div class="line"><span class="comment">// <e>Round-Robin Thread switching -- header with checkbox</span></div> +<div class="line"><span class="comment">// ===============================</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// <i> Enables Round-Robin Thread switching. -- tooltip information for the header</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_ROBIN</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ROBIN 1 -- this value is set through the checkbox</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span><span class="comment">// <o>Round-Robin Timeout [ticks] <1-1000></span></div> +<div class="line"><span class="comment">// <i> Defines how long a thread will execute before a thread switch.</span></div> +<div class="line"><span class="comment">// <i> Default: 5</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_ROBINTOUT</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ROBINTOUT 5</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor">// </e></span></div> +</div><!-- fragment --> The entry <code><e>Round-Robin Thread switching ... </e></code> sets OS_ROBIN to <span class="XML-Token">1</span> (checkbox enabled) or <span class="XML-Token">0</span> (checkbox disabled) and encloses the <em>OS_ROBINTOUT</em> (Round-Robin Timeout) setting. See screen outcome in <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>. </td></tr> +<tr> +<td><e.<em>i</em>><sup>*</sup> </td><td>yes </td><td>Heading with Enable: modifies a specific bit (<em>i</em>) (example: <e.4> - changes bit 4 of a value). <div class="fragment"><div class="line"><span class="comment">// <e.4>Serial Number</span></div> +<div class="line"><span class="comment">// <i>Enable Serial Number String.</span></div> +<div class="line"><span class="comment">// <i>If disabled, Serial Number String will not be assigned to USB Device.</span></div> +<div class="line"><span class="preprocessor">#define USBD0_STR_DESC_SER_EN 1</span></div> +</div><!-- fragment --> The example creates the heading <span class="XML-Token">Serial Number</span> and a checkbox to set the value. If enabled, then bit 4 of <span class="XML-Token">USBD0_STR_DESC_SER_EN</span> is set. </td></tr> +<tr> +<td></h>, </e>, or </c> </td><td>yes </td><td>Heading, Enable, or Comment end. </td></tr> +<tr> +<td><n> </td><td>yes </td><td>Notification text displayed <div class="fragment"><div class="line"><span class="comment">// <n> This is shown as plain text</span></div> +</div><!-- fragment --> </td></tr> +<tr> +<td><i> </td><td>yes </td><td>Tooltip help for previous item. <div class="fragment"><div class="line"><span class="comment">// <i>This is shown as a tooltip when hovering over a text.</span></div> +</div><!-- fragment --> Many examples in this table have tooltip examples. </td></tr> +<tr> +<td><c><sup>*</sup> </td><td>yes </td><td>Code enable: creates a checkbox to uncomment or comment code. All lines, including those with white spaces, get commented with double slashes (//) at the first found character when you disable the checkbox. <div class="fragment"><div class="line"><span class="comment">// <c1> Comment sequence block until block end when disabled</span></div> +<div class="line"><span class="comment">//<i> This may carry the block's description</span></div> +<div class="line"></div> +<div class="line">foo</div> +<div class="line"></div> +<div class="line">+bar</div> +<div class="line"></div> +<div class="line">-xFoo</div> +<div class="line"><span class="comment">// </c></span></div> +</div><!-- fragment --> In this example, the item is enabled, so that the sequence block is not commented. </td></tr> +<tr> +<td><!c><sup>*</sup> </td><td>yes </td><td>Code disable: creates a checkbox to comment or uncomment code. All lines, including those with white spaces, get commented with double slashes (//) at the first found character when you enable the checkbox. <div class="fragment"><div class="line"><span class="comment">// <!c1> Comment sequence block until block end when enabled</span></div> +<div class="line"><span class="comment">//<i> This may carry the block's description</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">//foo</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">//+bar</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">//-xFoo</span></div> +<div class="line"><span class="comment">// </c></span></div> +</div><!-- fragment --> In this example, the item is enabled, so that the sequence block is commented. </td></tr> +<tr> +<td><q><sup>*</sup> </td><td>yes </td><td>Option for bit values which can be set via a checkbox. <div class="fragment"><div class="line"><span class="comment">// <h> Chip-select control</span></div> +<div class="line"><span class="comment">// <q> ASYNCWAIT: Wait signal during asynchronous transfer</span></div> +<div class="line"><span class="comment">// <i> Enables the FSMC to use the wait signal even during an asynchronous protocol.</span></div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"><span class="preprocessor">#define RTE_FSMC_BCR1_ASYNCWAIT 0 -- this is changed via a checkbox</span></div> +</div><!-- fragment --> </td></tr> +<tr> +<td><o><sup>*</sup> </td><td>yes </td><td>Option with selection or number entry. <div class="fragment"><div class="line"><span class="comment">// <o>Round-Robin Timeout [ticks] <1-1000> -- text displayed on screen. Range of [ticks] is [1..1000] </span></div> +<div class="line"><span class="comment">// <i> Defines how long a thread will execute before a thread switch. -- tooltip info</span></div> +<div class="line"><span class="comment">// <i> Default: 5 -- tooltip info. Both displayed in one tooltip.</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_ROBINTOUT</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ROBINTOUT 5</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor">// </e></span></div> +</div><!-- fragment --> The example creates an option with the text <span class="XML-Token">Round-Robin Timeout [ticks]</span> and a field to enter values that can range between {1..1000]. </td></tr> +<tr> +<td><o <em>key-identifier</em>><sup>* (new!)</sup> </td><td>yes </td><td><p class="starttd">Option with identifier selection replacing the identifier after the specified key-identifier: </p> +<div class="fragment"><div class="line"><span class="comment">// <o TIMESTAMP_SRC>Time Stamp Source</span></div> +<div class="line"><span class="comment">// <dwt=> DWT Cycle Counter</span></div> +<div class="line"><span class="comment">// <systick=> SysTick</span></div> +<div class="line"><span class="comment">// <user=> User Timer </span></div> +<div class="line"><span class="comment">// <i>Selects source for 32-bit time stamp</span></div> +<div class="line"><span class="preprocessor">#define TIMESTAMP_SRC dwt</span></div> +</div><!-- fragment --><p> The example creates an option with the text <span class="XML-Token">Time Stamp Source</span> and a drop down-list showing the text items <span class="XML-Token">DWT Cycle Counter</span>, <span class="XML-Token">SysTick</span> and <span class="XML-Token">User Timer</span>. The corresponding identifier within the tag <...=> will be used for replacement.</p> +<p class="endtd">Use case for an assignment of an enumeration to a variable: </p> +<div class="fragment"><div class="line"><span class="comment">// <o redPortMode> Red port mode </span></div> +<div class="line"><span class="comment">// <OutPushPull_GPIO=> PushPull</span></div> +<div class="line"><span class="comment">// <OutOpenDrain_GPIO=> OpenDrain</span></div> +<div class="line"><span class="comment">// <i>Selects GPIO output</span></div> +<div class="line">ledConf.redPortMode = OutOpenDrain_GPIO;</div> +</div><!-- fragment --><p> The example creates an option with the text <span class="XML-Token">Red port mode</span> and a drop down-list showing the text items <span class="XML-Token">PushPull</span> and <span class="XML-Token">OpenDrain</span>. The corresponding identifier <span class="XML-Token">OutPushPull_GPIO</span> or <span class="XML-Token">OutOpenDrain_GPIO</span> will be used to replace the identifier after the key-identifier <span class="XML-Token">redPortMode</span>. </p> +</td></tr> +<tr> +<td><o.<em>i</em>><sup>*</sup> </td><td>yes </td><td>Modify a single bit (example: <e.4> - modifies bit 4). <div class="fragment"><div class="line"><span class="comment">// <o.4> <o.0>High-speed</span></div> +<div class="line"><span class="comment">// <i>Enable High-speed functionality (if device supports it).</span></div> +<div class="line"><span class="preprocessor">#define USBD0_HS 0</span></div> +</div><!-- fragment --> The example creates a heading with the text <span class="XML-Token">High-speed</span> and a checkbox. If enabled, then bit 4 of <span class="XML-Token">USBD0_HS</span> is set. </td></tr> +<tr> +<td><o.<em>x</em>..<em>y</em>><sup>*</sup> </td><td>yes </td><td>Modify a range of bits. (example: <o.4..5> - bit 4 to 5). <div class="fragment"><div class="line"><span class="comment">// <h>String Settings</span></div> +<div class="line"><span class="comment">// <i>These settings are used to create the String Descriptor.</span></div> +<div class="line"><span class="comment">// <o.0..15>Language ID <0x0000-0xFCFF></span></div> +<div class="line"><span class="comment">// <i>English (United States) = 0x0409.</span></div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"><span class="preprocessor">#define USBD0_STR_DESC_LANGID 0x0409</span></div> +</div><!-- fragment --> This example creates an expandable header with the text <span class="XML-Token">String Settings</span> and an option <span class="XML-Token">Language ID</span>. The range of values is set to <span class="XML-Token"><0x0000-0xFCFF></span>. Users can enter a value from within that range. The option changes the bits <span class="XML-Token">0..15</span>. </td></tr> +<tr> +<td><s><sup>*</sup> </td><td>yes </td><td>Option with ASCII string entry. <div class="fragment"><div class="line"><span class="comment">// <s>Manufacturer String</span></div> +<div class="line"><span class="comment">// <i>String Descriptor describing Manufacturer.</span></div> +<div class="line"><span class="preprocessor">#define USBD0_STR_DESC_MAN L"Keil Software"</span></div> +</div><!-- fragment --> Displays an option with the text <span class="XML-Token">Manufacturer String</span> and creates a field in which the user can enter a text. The size of the string is not limited. </td></tr> +<tr> +<td><s.<em>i</em>><sup>*</sup> </td><td>yes </td><td>Option with ASCII string entry and a size limit of <em>i</em> characters. <div class="fragment"><div class="line"><span class="comment">// <s.126>Manufacturer String</span></div> +<div class="line"><span class="comment">// <i>String Descriptor describing Manufacturer.</span></div> +<div class="line"><span class="preprocessor">#define USBD0_STR_DESC_MAN L"Keil Software"</span></div> +</div><!-- fragment --> The example sets a size limit of 126 character. Default string is "Keil Software". </td></tr> +<tr> +<td><em>skip example</em> <br/> + <q<em>i></em>; <br/> + <o<em>i></em>; <o<em>i</em>.<em>x></em>; <br/> + <s<em>i></em>; <s<em>i</em>.<em>x></em> </td><td>yes </td><td>Skip <em>i</em> items. Can be applied to all annotation items marked with a * in this table. <div class="fragment"><div class="line"><span class="comment">// <o2>Skip 2 and modify the third item after this entry <1-9></span></div> +<div class="line"><span class="preprocessor">#define VALUE1 1000</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define VALUE2 2000</span></div> +<div class="line"><span class="preprocessor">#define MODIFY_THIS 3000</span></div> +</div><!-- fragment --> The example skips 2 items and modifies the third. </td></tr> +<tr> +<th>Modifier </th><th>  </th><th>Description </th></tr> +<tr> +<td><0-31> </td><td>no </td><td>Value range for option fields. </td></tr> +<tr> +<td><0-100:10> </td><td>no </td><td>Value range for option fields with step 10. </td></tr> +<tr> +<td><0x40-0x1000:0x10> </td><td>no </td><td>Value range in hex format and step 10. </td></tr> +<tr> +<td><<em>value</em>=> </td><td>yes </td><td>Creates a drop down-list and displays the <em><b>text</b></em>. <em><b>value</b></em> is written to the next item. Excerpt from the <a class="el" href="configWizard.html#configWizard_codeExample">Code Example</a>. <div class="fragment"><div class="line"><span class="comment">// <o>Timer Thread Priority -- creates a drop-down with the list below.</span></div> +<div class="line"><span class="comment">// <1=> Low</span></div> +<div class="line"><span class="comment">// <2=> Below Normal <3=> Normal <4=> Above Normal</span></div> +<div class="line"><span class="comment">// <5=> High</span></div> +<div class="line"><span class="comment">// <6=> Realtime (highest)</span></div> +<div class="line"><span class="comment">// <i> Defines priority for Timer Thread -- tooltip info</span></div> +<div class="line"><span class="comment">// <i> Default: High -- tooltip info</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TIMERPRIO</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_TIMERPRIO 5</span></div> +<div class="line"><span class="preprocessor">#endif</span></div> +</div><!-- fragment --> In this example, the screen would show the option <span class="XML-Token">Timer Thread Priority</span>. The field Value would display the text <span class="XML-Token">High</span>. OS_TIMERPRIO is set to <span class="XML-Token">5</span>. When clicking on the field, a drop-down would show all options. See <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>. </td></tr> +<tr> +<td><<em>identifier</em>=> </td><td>yes </td><td>Creates a drop down-list and displays the <em><b>text</b></em> following the definition of the identifiers <span class="XML-Token">dwt</span>, <span class="XML-Token">systick</span> and <span class="XML-Token">user</span>. Note that this must only be used in the context of <o key-identifier>! The <em><b>identifier</b></em> corresponding to the selected text replaces the identifier following the key-identifier specified by the <o ...> tag. <div class="fragment"><div class="line"><span class="comment">// <o TIMESTAMP_SRC>Time Stamp Source</span></div> +<div class="line"><span class="comment">// <dwt=> DWT Cycle Counter</span></div> +<div class="line"><span class="comment">// <systick=> SysTick</span></div> +<div class="line"><span class="comment">// <user=> User Timer </span></div> +<div class="line"><span class="comment">// <i>Selects source for 32-bit time stamp</span></div> +<div class="line"><span class="preprocessor">#define TIMESTAMP_SRC dwt</span></div> +</div><!-- fragment --> In this example, the screen would show the option <span class="XML-Token">Time Stamp Source</span>. The field value would display the text <span class="XML-Token">DWT Cycle Counter</span>. TIMESTAMP_SRC is set to <span class="XML-Token">dwt</span>. When clicking on the field, a drop-down would show all options. See <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>. </td></tr> +<tr> +<td><#+1>   <#-1><br/> + <#*8>   <#/3> </td><td>no </td><td>Modifies the entered or displayed value according to the operator (add, sub, mul, div). The changed value is set for the code symbol. <br/> + Excerpt from <a class="el" href="configWizard.html#configWizard_codeExample">Code Example</a>. <div class="fragment"><div class="line"><span class="comment">// <o>Default Thread stack size [bytes] <64-4096:8><#/4></span></div> +<div class="line"><span class="comment">// <i> Defines default stack size for threads with osThreadDef stacksz = 0</span></div> +<div class="line"><span class="comment">// <i> Default: 200</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_STKSIZE</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_STKSIZE 50</span></div> +<div class="line"><span class="preprocessor">#endif</span></div> +</div><!-- fragment --> The option <em>Default Thread stack size [bytes]</em> accepts values in the range <span class="XML-Token">[64..4096]</span>. The value (here <span class="XML-Token">200</span>) set in the field is divided by <span class="XML-Token">4</span> (<#/4>) . The result of the division (200/4) is put into the code symbol <em>OS_STKSIZE</em>, which was set to <span class="XML-Token">50</span>. The screen will display the number <span class="XML-Token">200</span>. See <a class="el" href="configWizard.html#configWizard_display">Tool-specific display</a>. </td></tr> +</table> +<h1><a class="anchor" id="configWizard_codeExample"></a> +Code Example</h1> +<p>You can copy the code into a C-file and check the outcome in the uVision Editor.</p> +<div class="fragment"><div class="line"><span class="comment">//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// <h>Thread Configuration</span></div> +<div class="line"><span class="comment">// =======================</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// <o>Number of concurrent running threads <0-250></span></div> +<div class="line"><span class="comment">// <i> Defines max. number of threads that will run at the same time.</span></div> +<div class="line"><span class="comment">// <i> Default: 6</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TASKCNT</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TASKCNT 6</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Default Thread stack size [bytes] <64-4096:8><#/4></span></div> +<div class="line"><span class="comment">// <i> Defines default stack size for threads with osThreadDef stacksz = 0</span></div> +<div class="line"><span class="comment">// <i> Default: 200</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_STKSIZE</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_STKSIZE 50</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Main Thread stack size [bytes] <64-32768:8><#/4></span></div> +<div class="line"><span class="comment">// <i> Defines stack size for main thread.</span></div> +<div class="line"><span class="comment">// <i> Default: 200</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_MAINSTKSIZE</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_MAINSTKSIZE 50</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Number of threads with user-provided stack size <0-250></span></div> +<div class="line"><span class="comment">// <i> Defines the number of threads with user-provided stack size.</span></div> +<div class="line"><span class="comment">// <i> Default: 0</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_PRIVCNT</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_PRIVCNT 0</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Total stack size [bytes] for threads with user-provided stack size <0-1048576:8><#/4></span></div> +<div class="line"><span class="comment">// <i> Defines the combined stack size for threads with user-provided stack size.</span></div> +<div class="line"><span class="comment">// <i> Default: 0</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_PRIVSTKSIZE</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_PRIVSTKSIZE 0</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <q>Check for stack overflow</span></div> +<div class="line"><span class="comment">// <i> Includes the stack checking code for stack overflow.</span></div> +<div class="line"><span class="comment">// <i> Note that additional code reduces the Kernel performance.</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_STKCHECK</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_STKCHECK 1</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Processor mode for thread execution </span></div> +<div class="line"><span class="comment">// <0=> Unprivileged mode </span></div> +<div class="line"><span class="comment">// <1=> Privileged mode</span></div> +<div class="line"><span class="comment">// <i> Default: Privileged mode</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_RUNPRIV</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_RUNPRIV 1</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"></div> +<div class="line"><span class="comment">// <h>RTX Kernel Timer Tick Configuration</span></div> +<div class="line"><span class="comment">// ======================================</span></div> +<div class="line"><span class="comment">// <q> Use Cortex-M SysTick timer as RTX Kernel Timer</span></div> +<div class="line"><span class="comment">// <i> Use the Cortex-M SysTick timer as a time-base for RTX.</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_SYSTICK</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_SYSTICK 1</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span><span class="comment">//</span></div> +<div class="line"><span class="comment">// <o>Timer clock value [Hz] <1-1000000000></span></div> +<div class="line"><span class="comment">// <i> Defines the timer clock value.</span></div> +<div class="line"><span class="comment">// <i> Default: 12000000 (12MHz)</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_CLOCK</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_CLOCK 12000000</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Timer tick value [us] <1-1000000></span></div> +<div class="line"><span class="comment">// <i> Defines the timer tick value.</span></div> +<div class="line"><span class="comment">// <i> Default: 1000 (1ms)</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TICK</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TICK 1000</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"></div> +<div class="line"><span class="comment">// <h>System Configuration</span></div> +<div class="line"><span class="comment">// =======================</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// <e>Round-Robin Thread switching</span></div> +<div class="line"><span class="comment">// ===============================</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// <i> Enables Round-Robin Thread switching.</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_ROBIN</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_ROBIN 1</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Round-Robin Timeout [ticks] <1-1000></span></div> +<div class="line"><span class="comment">// <i> Defines how long a thread will execute before a thread switch.</span></div> +<div class="line"><span class="comment">// <i> Default: 5</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_ROBINTOUT</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_ROBINTOUT 5</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// </e></span></div> +<div class="line"></div> +<div class="line"><span class="comment">// <e>User Timers</span></div> +<div class="line"><span class="comment">// ==============</span></div> +<div class="line"><span class="comment">// <i> Enables user Timers</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TIMERS</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERS 1</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Timer Thread Priority</span></div> +<div class="line"><span class="comment">// <1=> Low</span></div> +<div class="line"><span class="comment">// <2=> Below Normal <3=> Normal <4=> Above Normal</span></div> +<div class="line"><span class="comment">// <5=> High</span></div> +<div class="line"><span class="comment">// <6=> Realtime (highest)</span></div> +<div class="line"><span class="comment">// <i> Defines priority for Timer Thread</span></div> +<div class="line"><span class="comment">// <i> Default: High</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TIMERPRIO</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERPRIO 5</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Timer Thread stack size [bytes] <64-4096:8><#/4></span></div> +<div class="line"><span class="comment">// <i> Defines stack size for Timer thread.</span></div> +<div class="line"><span class="comment">// <i> Default: 200</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TIMERSTKSZ</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERSTKSZ 50</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// <o>Timer Callback Queue size <1-32></span></div> +<div class="line"><span class="comment">// <i> Number of concurrent active timer callback functions.</span></div> +<div class="line"><span class="comment">// <i> Default: 4</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_TIMERCBQS</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERCBQS 4</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// </e></span></div> +<div class="line"></div> +<div class="line"><span class="comment">// <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries</span></div> +<div class="line"><span class="comment">// <12=> 12 entries <16=> 16 entries</span></div> +<div class="line"><span class="comment">// <24=> 24 entries <32=> 32 entries</span></div> +<div class="line"><span class="comment">// <48=> 48 entries <64=> 64 entries</span></div> +<div class="line"><span class="comment">// <96=> 96 entries</span></div> +<div class="line"><span class="comment">// <i> ISR functions store requests to this buffer,</span></div> +<div class="line"><span class="comment">// <i> when they are called from the interrupt handler.</span></div> +<div class="line"><span class="comment">// <i> Default: 16 entries</span></div> +<div class="line"><span class="preprocessor">#ifndef OS_FIFOSZ</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_FIFOSZ 16</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"></div> +<div class="line"><span class="comment">//------------- <<< end of configuration section >>> -----------------------</span></div> +</div><!-- fragment --><h1><a class="anchor" id="configWizard_display"></a> +Tool-specific display</h1> +<p>It is left to the development tool to interpret and display Configuration Wizard Annotations. The uVision IDE displays the code above in the following way:</p> +<div class="image"> +<img src="RTX_Conf_CM_Wizard_View.png" alt="RTX_Conf_CM_Wizard_View.png"/> +<div class="caption"> +Configuration Wizard Display</div></div> +<p> <b>Where</b></p> +<p><em>Option</em> are device properties, which can be represented in a tree structure. Each item can have an explanatory tooltip.</p> +<p><em>Value</em> sets the option value. Can contain controls to encapsulate data in predefined drop-down lists. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/coresight_setup.html b/docs/Pack/html/coresight_setup.html new file mode 100644 index 0000000..f1a8733 --- /dev/null +++ b/docs/Pack/html/coresight_setup.html @@ -0,0 +1,132 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Debug Setup with CMSIS-Pack</title> +<title>CMSIS-Pack: Debug Setup with CMSIS-Pack</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('coresight_setup.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Debug Setup with CMSIS-Pack </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>CMSIS-Pack offers two ways to simplify the debug setup:</p> +<ul> +<li>A <a class="el" href="debug_description.html">Debug Description</a> declares a set of standardized debug and trace methods are automatically executed by the debugger. Implementation-specific steps can be described using an XML syntax. This concept is easy to implement for basic chip configurations that mostly rely on a standard implementation of the CoreSight architecture. Most single-core devices should be able to be specified completely with debug descriptions.</li> +<li>For more complex topologies and multi-core devices, a <a class="el" href="sdf_pg.html">System Description File</a> helps debuggers to connect to the target and access all available cores via trace. An SDF file is more complex (although also specified in XML), but is also more flexible with regards to the underlying debug architecture. </li> +</ul> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/coresight_setup.js b/docs/Pack/html/coresight_setup.js new file mode 100644 index 0000000..48f3476 --- /dev/null +++ b/docs/Pack/html/coresight_setup.js @@ -0,0 +1,36 @@ +var coresight_setup = +[ + [ "Debug Description", "debug_description.html", [ + [ "Concept", "debug_description.html#das_concept", null ], + [ "Debug description elements", "debug_description.html#das_elements", null ], + [ "Debug access sequences", "debug_description.html#pdsc_SequenceNameEnum_pg", null ], + [ "Usage of debug access sequences", "debug_description.html#usage_of_sequences", null ], + [ "Default debug access sequences", "debug_description.html#default_sequences", [ + [ "DebugPortSetup", "debug_description.html#debugPortSetup", null ], + [ "DebugPortStart", "debug_description.html#debugPortStart", null ], + [ "DebugPortStop", "debug_description.html#debugPortStop", null ], + [ "DebugCoreStart", "debug_description.html#debugCoreStart", null ], + [ "DebugCoreStop", "debug_description.html#debugCoreStop", null ], + [ "ResetSystem", "debug_description.html#resetSystem", null ], + [ "ResetProcessor", "debug_description.html#resetProcessor", null ], + [ "ResetHardware", "debug_description.html#resetHardware", null ], + [ "ResetHardwareAssert", "debug_description.html#resetHardwareAssert", null ], + [ "ResetHardwareDeassert", "debug_description.html#resetHardwareDeassert", null ], + [ "ResetCatchSet", "debug_description.html#resetCatchSet", null ], + [ "ResetCatchClear", "debug_description.html#resetCatchClear", null ] + ] ], + [ "Examples of non-standard debug access sequences", "debug_description.html#nonstdExamples", [ + [ "TraceStart", "debug_description.html#traceStart", null ], + [ "DebugDeviceUnlock", "debug_description.html#debugDeviceUnlock", null ], + [ "User-defined hardware reset sequence", "debug_description.html#hwReset", null ], + [ "Calling sequences in a control block", "debug_description.html#sequenceExample", null ] + ] ], + [ "Writing debug access sequences", "debug_description.html#writing_sequences", [ + [ "Debug access syntax rules", "debug_description.html#DebugSyntaxRules", null ], + [ "Expression rules", "debug_description.html#ExpressionType", null ], + [ "Debug access functions", "debug_description.html#DebugFunctions", null ], + [ "Debug access variables", "debug_description.html#DebugVars", null ], + [ "Using external tools", "debug_description.html#externalTools", null ] + ] ] + ] ] +];
\ No newline at end of file diff --git a/docs/Pack/html/cp_Editors.html b/docs/Pack/html/cp_Editors.html new file mode 100644 index 0000000..eb62eb2 --- /dev/null +++ b/docs/Pack/html/cp_Editors.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>XML Editors</title> +<title>CMSIS-Pack: XML Editors</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cp_Editors.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">XML Editors </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Some text editors are capable of verifying XML code against a schema file. This is helpful to identify syntactical or structural problems in a PDSC or SVD file early in the development process. Useful editors are:</p> +<ul> +<li><a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a></li> +<li><a href="http://www.visualstudio.com/" target="_blank">Visual Studio (Express)</a></li> +</ul> +<p>Usually, the XML file that is to be validated and its corresponding schema file need to reside in the same directory. The CMSIS-Pack schema file <b>Pack.xsd</b> and the CMSIS-SVD schema file <b>CMSIS-SVD.xsd</b> are available in the directory <b>.\CMSIS\Utilities</b> of the <b>ARM::CMSIS</b> Pack. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="createPackUtil.html">Utilities for Creating Packs</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/cp_Packs.html b/docs/Pack/html/cp_Packs.html new file mode 100644 index 0000000..d730a8f --- /dev/null +++ b/docs/Pack/html/cp_Packs.html @@ -0,0 +1,236 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Software Packs Overview</title> +<title>CMSIS-Pack: Software Packs Overview</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cp_Packs.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Software Packs Overview </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The <b>CMSIS-Pack</b> format is used to deliver a Software Pack and is aimed to be scalable for future requirements. It provides a management process and supports a tool independent distribution for:</p> +<ul> +<li><a class="el" href="createPack_DFP.html">Device Support</a> for tool chains and software applications to target a specific device:<ul> +<li>Information about the processor and it's features.</li> +<li>C and assembly files for the device startup and access to the memory mapped peripheral registers.</li> +<li>Parameters, technical information, and data sheets about the device family and the specific devices.</li> +<li>Device description and available peripherals.</li> +<li>Memory layout of internal and external RAM and ROM address ranges.</li> +<li><a class="el" href="flashAlgorithm.html">Flash algorithms</a> for programming the device.</li> +<li>Debug and trace configurations as well as System View Description files for device specific display of the memory mapped peripheral registers.</li> +</ul> +</li> +<li><a class="el" href="createPackBoard.html">Board Support</a> for rapid development in the prototyping stage:<ul> +<li>Information about the development board and it's features.</li> +<li>Parameters, technical information, and data sheets about the board, the mounted microcontroller and peripheral devices.</li> +<li>Drivers for on-board peripheral devices</li> +</ul> +</li> +<li><a class="el" href="cp_SWComponents.html">Software Components</a> simplify the re-use of software and the management of 3rd party software. They contain:<ul> +<li>A collection of source modules, header and <a class="el" href="configWizard.html">configuration files</a> as well as libraries.</li> +<li>Documentation of the software, including features and APIs.</li> +</ul> +</li> +<li><a class="el" href="cp_SWComponents.html#cp_API">Application Programming Interfaces</a> specify one or more APIs for <a class="el" href="cp_SWComponents.html#cp_Components">software components</a> that are part of another <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><a class="el" href="cp_SWComponents.html#cp_Examples">Example Projects</a> can be used as a reference and starting point for similar applications. They contain:<ul> +<li>Fully defined application projects that work out of the box in the specified build and debug environments.</li> +<li>Documentation about the purpose of the example, how to build, configure and execute the application.</li> +</ul> +</li> +<li><a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> help to understand the basic concepts of a software component better and to give the user a good starting point for implementing his application.</li> +</ul> +<h1><a class="anchor" id="PackFilenames"></a> +Pack Conventions</h1> +<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> is a collection of files located in directories that are archived in a file with the extension *.pack using the standard <a href="http://en.wikipedia.org/wiki/Zip_%28file_format%29" target="_blank">ZIP file format</a>. The Pack Description file (PDSC) with the file extension *.pdsc contains the <a class="el" href="packFormat.html">meta information</a>, describing the content of a pack based on <a href="https://en.wikipedia.org/wiki/XML" target="_blank">XML</a>. The PDSC file must be:</p> +<ul> +<li>included in the <a class="el" href="cp_SWComponents.html">Software Pack</a></li> +<li>located in the base folder of the archive</li> +<li>compliant with the <a class="el" href="cp_SWComponents.html">Software Pack</a> file <a class="el" href="cp_Packs.html#pack_filename">naming convention</a></li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>The <em>base folder</em> is defined to be the root folder './' of a zip archive and it is imperative that the whole <a class="el" href="cp_SWComponents.html">Software Pack</a> only contains a single PDSC file.</li> +<li>Future tools shall support this case: if the PDSC file is located in an immediate subdirectory, then the subdirectory becomes the base folder. The <a class="el" href="cp_SWComponents.html">Software Pack</a> is installed as if the subdirectory does not exist. All files and directories located in the root folder are ignored and do not get installed.</li> +</ul> +</dd></dl> +<h2><a class="anchor" id="pack_filename"></a> +Pack File Name</h2> +<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> must have a unique filename. Therefore it is constructed from vendor, packname and version and the file extension *.pack.</p> +<p><b><vendor>.<name>.<version>.pack</b>.</p> +<p>Where:</p> +<ul> +<li><b><vendor></b> is the name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b><name></b> is the name of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. All packs that are published by a vendor must have a unique packname.</li> +<li><b><release version="X.Y.Z"></b>specifies the <a class="el" href="pdsc_package_pg.html#VersionType">version number</a> of the release for the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b>.pack</b> is the file extension identifying a <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>The XML elements <b><vendor></b>, <b><name></b>, and the version attribute of the <b><release></b> are specified in the <a class="el" href="packFormat.html#Filenames">PDSC</a> file. PDSC, Pack filenames are case sensitive and need to match exactly.</li> +<li><b><vendor></b> and <b><name></b> <em>must</em> <em>not</em> contain spaces.</li> +<li>The PDSC file needs to reside in the base folder of the Pack. All file references are relative to the location of the PDSC file.</li> +</ul> +</dd></dl> +<h2><a class="anchor" id="pack_Cclass"></a> +Software Component Cclasses</h2> +<p>If you add a software component in the PDSC file, you have to specify a component class (CClass), component group (Cgroup), and the component's version number (Cversion). For more information refer to <a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a>.</p> +<p>If applicable, try to map the <b>Cclass</b> of your software component to one of the following predefined or already well established classes:</p> +<ul> +<li>Board Support: Generic interfaces for evaluation and development boards</li> +<li>CMSIS: <em>Cortex Microcontroller Software Interface Standard</em> components</li> +<li>CMSIS Driver: Unified device drivers compliant to the CMSIS-Driver specification</li> +<li>Compiler: Arm Compiler software extensions</li> +<li>Data Exchange: Software components for data exchange</li> +<li>Device: Startup and system setup components</li> +<li>File System*: File drive support and file system</li> +<li>Graphics*: Graphical libraries for user interfaces</li> +<li>Network*: Network stack using Internet protocols</li> +<li>RTOS*: Real-time operating systems</li> +<li>Safety: Components for testing application software against safety standards</li> +<li>Security*: Encryption for secure communication or storage</li> +<li>USB*: Universal Serial Bus stack</li> +<li>Wireless*: Communication stacks such as Bluetooth, WiFi, and ZigBee</li> +</ul> +<p>Classes with a * should always be used together with a <a class="el" href="pdsc_components_pg.html#Component_Bundle">bundle</a> to avoid conflicts with other software components.</p> +<p>If you wish to standardize a new Cclass, please send an inquiry to <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a> or raise an issue on the public <a href="https://github.com/ARM-software/CMSIS_5/issues">CMSIS GitHub development repository</a>.</p> +<h1><a class="anchor" id="cp_PackSteps"></a> +Steps to Create a Pack</h1> +<p>The following image shows the basic steps that are required to create a Software Pack:</p> +<div class="image"> +<img src="PackCreateSteps.png" alt="PackCreateSteps.png"/> +</div> +<ol type="1"> +<li><b>Produce input:</b> Create the files that will be delivered with the Pack.</li> +<li><b>Organize files:</b> Use directories to separate the content of the Pack.</li> +<li><b>Create PDSC file:</b> The XML based PDSC file can be created using any text editor. Editors that can validate XML code against a schema file help to find bugs early in the Pack development stage.</li> +<li><b>Generate Pack:</b> Any compression tool supporting the ZIP format can be used to create a Pack file. <a class="el" href="packChk.html">packChk.exe</a> is helpful for the validation of the contents of a Pack.</li> +</ol> +<p>The following pages will show how to create a Software Pack from scratch. The page <a class="el" href="cp_SWComponents.html">Pack with Software Components</a> will start with a simple Pack containing only the PDSC file and a single software component and will then explain further elements of a Pack in more detail. The page <a class="el" href="createPack_DFP.html">Pack with Device Support</a> adds information on the additional requirements that a DFP has, while <a class="el" href="createPackBoard.html">Pack with Board Support</a> will elaborate on the content specific to a BSP.</p> +<h1><a class="anchor" id="PackTutorials"></a> +Pack Tutorial</h1> +<p>The <b>ARM::CMSIS</b> Pack contains tutorials that are explained on the following pages. In the <b>\CMSIS\Pack\Tutorials</b> directory the following three ZIP files are available: </p> +<table class="doxtable"> +<tr> +<th>ZIP File </th><th>Documentation </th></tr> +<tr> +<td>Pack_with_Software_Components.zip </td><td><a class="el" href="cp_SWComponents.html">Pack with Software Components</a> </td></tr> +<tr> +<td>Pack_with_Device_Support.zip </td><td><a class="el" href="createPack_DFP.html">Pack with Device Support</a> </td></tr> +<tr> +<td>Pack_with_Board_Support.zip </td><td><a class="el" href="createPackBoard.html">Pack with Board Support</a> </td></tr> +</table> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/cp_SWComponents.html b/docs/Pack/html/cp_SWComponents.html new file mode 100644 index 0000000..0783053 --- /dev/null +++ b/docs/Pack/html/cp_SWComponents.html @@ -0,0 +1,538 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Pack with Software Components</title> +<title>CMSIS-Pack: Pack with Software Components</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cp_SWComponents.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Pack with Software Components </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>This section is a tutorial that explains how to create a Software Pack. Initially, a Software Pack with a simple PDSC file is created that contains only one software component. This Software Pack is then extended to show the various features for describing software components.</p> +<p><b>Preparations</b></p> +<ol type="1"> +<li>Create a working directory on you PC, for example <b>C:\temp\working</b>.</li> +<li>Go to the directory <b>\CMSIS\Pack\Tutorials</b> available in the <b>ARM::CMSIS</b> Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below <b>C:\Keil_v5\ARM\Pack\ARM\CMSIS\<em>version</em></b>.</li> +<li>Open the file <b>Pack_with_Software_Components.zip</b>.</li> +<li>Copy the <em>content</em> of the ZIP file's <b>01_Create_PDSC</b> directory into your working directory.</li> +<li>Make sure that files/directories are not write protected (remove read-only flag).</li> +<li>Copy from the directory <b>\CMSIS\Utilities</b> available in the <b>ARM::CMSIS</b> Pack installation the following files into your working directory:<ul> +<li>PackChk.exe</li> +<li>PACK.xsd</li> +</ul> +</li> +</ol> +<h1><a class="anchor" id="cp_CreatePDSC"></a> +Create PDSC File</h1> +<ol> +<li> +<p class="startli">Open the file <b>vendor.pack_name.pdsc</b> in an editor and change it like this: </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span>?></div> +<div class="line"><<span class="keyword">package </span>schemaVersion="1.4" xmlns:xs="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd"></span></div> +<div class="line"> <vendor>MyVendor</vendor></div> +<div class="line"> <name>MyPack</name></div> +<div class="line"> <description>Internal Software Pack</description></div> +<div class="line"> <url></url></div> +<div class="line"> <supportContact></supportContact></div> +<div class="line"> <license>Docs/license.txt</license></div> +</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>All code examples in this and the following sections can be found in the <code>snippets.xml</code> file in the <b>01_Create_PDSC</b> directory.</dd></dl> +<p>A PDSC file starts with information on the XML version and the encoding. The <a class="el" href="pdsc_package_pg.html"><package></a> element declares the version of the schema file and the XSD file that is used to validate the PDSC file (hence the copy of the PACK.xsd file into the working directory):</p> +<ul> +<li><a class="el" href="pdsc_package_pg.html#element_package"><name></a> specifies the name of the Pack and <em>must</em> <em>not</em> contain spaces. <b>Example:</b> <code>MyPack</code> and <code>My_Pack</code> are ok, <code>My</code> <code>Pack</code> is not ok.</li> +<li><a class="el" href="pdsc_package_pg.html#element_package"><description></a> describes the Pack in a few words</li> +<li><a class="el" href="pdsc_package_pg.html#element_package"><vendor></a> states the name of the Pack's vendor and <em>must</em> <em>not</em> contain spaces. <b>Example:</b> <code>ACMECorp</code> and <code>ACME_Corp</code> are OK, <code>ACME</code> <code>Corporation</code> is not OK.</li> +<li><a class="el" href="pdsc_package_pg.html#element_package"><url></a> defines the download URL of the Pack (may be left empty) <dl class="section note"><dt>Note</dt><dd><ul> +<li>In this tutorial, the URL is not specified. This means that the Pack will be marked in Pack Installer as <b>Offline</b> and needs to be updated manually. To resolve this issue, it is possible to specify the file "download" location using a <a href="https://en.wikipedia.org/wiki/File_URI_scheme" target="_blank">file URI</a>. For Windows users, this would look like the following: <pre class="fragment"> <url>file:///c:/temp/working</url></pre></li> +<li>It is important to understand how the <url> element works. If you specify a URL, for example <a href="http://www.keil.com/pack/" target="_blank">http://www.keil.com/pack</a>, then you have to make the PDSC file and the corresponding Pack file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:<br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.pdsc" target="_blank">http://www.keil.com/pack/ARM.CMSIS.pdsc</a> and <br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.4.3.0.pack" target="_blank">http://www.keil.com/pack/ARM.CMSIS.4.3.0.pack</a> and <br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.4.2.0.pack" target="_blank">http://www.keil.com/pack/ARM.CMSIS.4.2.0.pack</a> and ... <br/> + At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.</li> +</ul> +</dd></dl> +</li> +<li><a class="el" href="pdsc_package_pg.html#element_package"><supportContact></a> may provide an email address or web page URL for Pack specific questions/problems</li> +<li><a class="el" href="pdsc_package_pg.html#element_package"><license></a> links to an optional license file that will be shown during the installation of the Pack. The installation in development tools will abort if the license agreement is not accepted. </li> +</ul> +</li> +<li> +<p class="startli">Add release information and keywords: </p> +<div class="fragment"><div class="line"><releases></div> +<div class="line"> <release version=<span class="stringliteral">"1.0.0"</span> date=<span class="stringliteral">"2015-03-09"</span>></div> +<div class="line"> Initial version</div> +<div class="line"> </release></div> +<div class="line"></releases></div> +<div class="line"> </div> +<div class="line"><keywords></div> +<div class="line"> <keyword>MyVendor</keyword></div> +<div class="line"> <keyword>My Software Component</keyword></div> +<div class="line"></keywords></div> +</div><!-- fragment --><p> The information from the <a class="el" href="element_releases.html"><releases></a> section will be used for:</p> +<ul> +<li>Determining the Pack version (required for the file name of the Pack file)</li> +<li>Display of release information</li> +</ul> +<p class="endli"><a class="el" href="element_keywords.html"><keywords></a> may be used for better visibility for search engines. </p> +</li> +<li> +Add a <a class="el" href="pdsc_components_pg.html"><components></a> section with the following: <div class="fragment"><div class="line"><components></div> +<div class="line"> <component Cclass=<span class="stringliteral">"MyClass"</span> Cgroup=<span class="stringliteral">"MyGroup"</span> Csub=<span class="stringliteral">"MySubGroup"</span> Cversion=<span class="stringliteral">"1.0.0"</span>></div> +<div class="line"> <description>MySWComp</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/MySWComp.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/header_mylib.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/config/config_mylib.h"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/mylib_one.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/mylib_two.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"></components></div> +</div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>If you are using a header file with the attribute <span class="XML-Token">config</span>, save it in a separate directory from all other header files as in this example. Configuration files are copied into the project folder and are adopted specifically for that project but chances are that due to the include path search order of the compiler, the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).</dd></dl> +More information on <b><components></b> will be given in section <a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a>. Save the file and close your editor. In the next section, the generation of a Pack will be explained in detail. </li> +</ol> +<h1><a class="anchor" id="cp_GeneratePack"></a> +Generate a Pack</h1> +<ol> +<li> +Rename the file <b>vendor.pack_name.pdsc</b> to <b>MyVendor.MyPack.pdsc</b>. </li> +<li> +Open the batch file <b>gen_pack.bat</b> from your working directory in a text editor. Check if the following line of code reflects your setup: <div class="fragment"><div class="line"><span class="stringliteral">"C:\Program Files\7-Zip\7z.exe"</span> a %PackName% Files -tzip</div> +</div><!-- fragment --> If you do not have <a href="http://www.7-zip.org/" target="_blank">7-Zip</a> installed on your PC, you can specify any other ZIP tool that supports command line calls. In that case you have to adapt the command line arguments accordingly. </li> +<li> +Having saved <b>gen_pack.bat</b>, you can execute it either by double-clicking or by using the command line which is recommended to see the output of PackChk.exe (open a command window at the location of the files and enter <code>gen_pack.bat</code>). The batch file will:<ul> +<li>Check the availability of the PDSC file</li> +<li>Copy the PDSC file to the <b>Files</b> directory</li> +<li>Run PackChk.exe on the <b>Files</b> directory<br/> +</li> +<li>Create a Pack file in the working directory. It will be called <b>MyVendor.MyPack.1.0.0.pack</b>. </li> +</ul> +</li> +<li> +<p class="startli">Install the Pack by double-clicking it. Depending on the development software that is used, the display of the Pack contents may differ:</p> +<div class="image"> +<img src="simplepack_rte.png" alt="simplepack_rte.png"/> +<div class="caption"> +MyClass:MyGroup:MySubGroup shown in development tool</div></div> + </li> +</ol> +<h1><a class="anchor" id="cp_Components"></a> +Software Components</h1> +<p>A component lists the files that belong to it and that are relevant for a project. The component itself or each individual file may refer to a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> that must resolve to true; if it is false, the component or file is not applicable in the given context.</p> +<p>Each software components must have the following attributes that are used to identify the component:</p> +<ul> +<li>Component Class (<code>Cclass</code>): examples are <b>CMSIS</b>, <b>Device</b>, <b>File</b> <b>System</b> </li> +<li>Component Group (<code>Cgroup</code>): examples are <b>CMSIS:RTOS</b>, <b>Device:Startup</b>, <b>File</b> <b>System:CORE</b> </li> +<li>Component Version (<code>Cversion</code>): the version number of the software component.</li> +</ul> +<p>Optionally, a software component may have additional attributes:</p> +<ul> +<li>Component Sub-Group (<code>Csub</code>): examples are <b>CMSIS:RTOS:MyRTOS</b>, <b>Device:Driver</b> <b>USBD:Full-speed</b> </li> +<li>Component Variant (<code>Cvariant</code>): a variant of the software component.</li> +<li>Component Vendor (<code>Cvendor</code>): the supplier of the software component.</li> +</ul> +<p>The <code>Cclass</code>, <code>Cgroup</code>, <code>Csub</code>, <code>Cvariant</code> and <code>Cversion</code> attributes are used together with the vendor specified by the Pack to identify a component. A component vendor must ensure that the combination <code>Cclass</code>, <code>Cgroup</code>, <code>Csub</code> and <code>Cversion</code> is unique and not used by multiple components within the same Pack.</p> +<p>For a list of established Cclasses, refer to <a class="el" href="cp_Packs.html#pack_Cclass">Software Component Cclasses</a>.</p> +<p>In case multiple interdependent components (belonging to the same <code>Cclass</code>) form part of a solution, these can be grouped in a so called <a class="el" href="cp_SWComponents.html#cp_Bundles">bundle</a>.</p> +<p>Use the following syntax to reference to software components and APIs:<br/> +<b><Vendor>::<Cclass>:<Cgroup>:<Csub></b></p> +<p><b>Examples:</b> </p> +<ul> +<li><b>::CMSIS:RTOS (API)</b> - the CMSIS-RTOS API.</li> +<li><b>ARM::CMSIS:DSP</b> - the CMSIS-DSP Library.</li> +<li><b>::File System:Drive:NOR</b> - the NOR Flash Drive of a file system.</li> +</ul> +<p>Here is an example for the display of software components in a development tool:</p> +<div class="image"> +<img src="ComponentDisplay.png" alt="ComponentDisplay.png"/> +<div class="caption"> +Display of a software component in development tools</div></div> + <h2>Software Component Files </h2> +<p>Each software component consists of a certain number of files. Each file has at least the following attributes:</p> +<ul> +<li><code>name:</code> File path, file name, and file extension in the format path/name.extension. The file path is relative to the root directory of the Pack.</li> +<li><code>category:</code> Defines the purpose of the file. Select the predefined value as listed in the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Categories</a>.</li> +</ul> +<p>Optionally, every file may have the following attributes:</p> +<ul> +<li><code>attr:</code> Defines the special use and handling of a file. Select a predefined value as defined in the table <a class="el" href="pdsc_components_pg.html#FileAttributeEnum">File Attributes</a>.</li> +<li><code>condition:</code> Enter the identifier (attribute <em><b>id</b></em>) of a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a>. The element is used if the condition resolves to <span class="XML-Token">true</span>.</li> +<li><code>select:</code> Brief description and purpose of the file. The <b><em>select</em></b> attribute is <b>required</b> when <b><em>attr</em></b> is set to <span class="XML-Token">template</span> or <span class="XML-Token">interface</span>. When multiple template files of a component have the same <b><em>select</em></b> string, they are treated as a single selectable template. This way, multiple template or interface files can be bundled.</li> +<li><code>src:</code> Path information. The path is specified relative to the Pack Description File (PDSC).</li> +<li><code>version:</code> File-specific version information. This is used particularly for files copied into the project workspace. Before a file gets copied, a version check avoids unnecessary copy actions. If a file does not have a version, then the component version is used.</li> +</ul> +<h1><a class="anchor" id="cp_Conditions"></a> +Conditions</h1> +<p>A condition describes dependencies on:</p> +<ul> +<li>a specific device</li> +<li>a certain processor</li> +<li>tool attributes</li> +<li>the presence of other components</li> +</ul> +<p>Conditions are used to define <b>AND/OR</b> rules that make components conditional and therefore only available under certain circumstances, for example for specific devices or processors. Conditions are also used to express dependencies between software components.</p> +<p>Each condition has an <b>id</b> that is unique within the scope of a the PDSC file. An id can be referenced in the <code>condition</code> attribute of components, APIs, examples, files and other conditions. All attributes set in a <b>accept</b>, <b>require</b>, or <b>deny</b> element must resolve to true for the element to become true. A condition becomes true when:</p> +<ul> +<li>At least one <b>accept</b> element is true, <em>AND</em> </li> +<li>all <b>require</b> elements are true, <em>AND</em> </li> +<li>no <b>deny</b> element is true.</li> +</ul> +<p>If a condition resolves to false during processing, the respective element will be ignored.</p> +<p>Let's modify the example from the <a class="el" href="cp_SWComponents.html#cp_CreatePDSC">Create PDSC File</a> section by adding the requirement for a CMSIS-RTOS and libraries that are specific to a certain Cortex-M class core:</p> +<ul> +<li><code>mylib_cm0.lib</code> for use with a Cortex-M0 and Cortex-M0+ processor</li> +<li><code>mylib_cm3.lib</code> for use with a Cortex-M3 processor</li> +<li><code>mylib_cm4.lib</code> for use with a Cortex-M4 or Cortex-M7 processor</li> +</ul> +<p>Copy the <em>content</em> of the <b>02_Conditions</b> directory of the <b>Pack_with_Software_Components.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add a <a class="el" href="pdsc_conditions_pg.html"><conditions></a> section with the following: <div class="fragment"><div class="line"><conditions> </div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"ARM Compiler"</span>></div> +<div class="line"> <require Tcompiler=<span class="stringliteral">"ARMCC"</span>/></div> +<div class="line"> </condition></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CM0"</span>></div> +<div class="line"> <description>Cortex-M0 based device</description></div> +<div class="line"> <require condition=<span class="stringliteral">"ARM Compiler"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M0"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M0+"</span>/></div> +<div class="line"> </condition></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CM3"</span>></div> +<div class="line"> <description>Cortex-M3 based device</description></div> +<div class="line"> <require condition=<span class="stringliteral">"ARM Compiler"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M3"</span>/></div> +<div class="line"> </condition></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CM4_CM7"</span>></div> +<div class="line"> <description>Cortex-M4 based device</description></div> +<div class="line"> <require condition=<span class="stringliteral">"ARM Compiler"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M4"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M7"</span>/></div> +<div class="line"> </condition></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CMSIS Core with RTOS"</span>></div> +<div class="line"> <description>CMSIS Core with RTOS <span class="keywordflow">for</span> Cortex-M processor</description></div> +<div class="line"> <accept condition=<span class="stringliteral">"CM0"</span>/></div> +<div class="line"> <accept condition=<span class="stringliteral">"CM3"</span>/></div> +<div class="line"> <accept condition=<span class="stringliteral">"CM4_CM7"</span>/></div> +<div class="line"> <require Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <require Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"RTOS"</span>/></div> +<div class="line"> </condition></div> +<div class="line"></conditions></div> +</div><!-- fragment --> </li> +<li> +Change the first line of the already existing <b>component</b> by adding the condition and increasing the version number of the component: <div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"MyClass"</span> Cgroup=<span class="stringliteral">"MyGroup"</span> Csub=<span class="stringliteral">"MySubGroup"</span> Cversion=<span class="stringliteral">"1.0.1"</span> condition=<span class="stringliteral">"CMSIS Core with RTOS"</span>></div> +</div><!-- fragment --> </li> +<li> +Add the following code to the already existing <b>component</b>: <div class="fragment"><div class="line"><file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM0"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm0.lib"</span>/></div> +<div class="line"><file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM3"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm3.lib"</span>/></div> +<div class="line"><file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM4_CM7"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm4.lib"</span>/></div> +</div><!-- fragment --> Note that library files should always have a condition with regards to a specific C/C++ compiler. To accomplish this, each processor condition has the additional requirement for the Arm C/C++ compiler. </li> +<li> +Add a new version number to the header of the PDSC file so that a Pack with a new version number will be created: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.1"</span>></div> +<div class="line"> Conditions added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.0.</p> +<div class="image"> +<img src="ConditionsDisplay.png" alt="ConditionsDisplay.png"/> +<div class="caption"> +Display of conditionally added files for a Cortex-M3 device in development tools</div></div> + </li> +</ol> +<dl class="section note"><dt>Note</dt><dd>PackChk.exe will will now display an <b>M362</b> warning: <div class="fragment"><div class="line"> WARNING M362: (Line 80)</div> +<div class="line"> Not all Component Dependencies <span class="keywordflow">for</span> <span class="stringliteral">'Cclass=MyClass, Cgroup=MyGroup, Csub=MySubGroup, Cversion=1.0.1, Capiversion='</span> can be resolved.</div> +<div class="line">M502: RTE Model reports: #error 511: MyVendor::MyClass:MyGroup:MySubGroup : Additional software components required</div> +<div class="line">M504: RTE Model reports: MISSING: -- require CMSIS:CORE</div> +<div class="line">M504: RTE Model reports: MISSING: -- require CMSIS:RTOS</div> +</div><!-- fragment --> This is because it cannot resolve and check dependencies on components that are not part of this Pack (in this case the CMSIS components CORE and RTOS). You can either safely ignore these warnings or include the ARM.CMSIS.pdsc in the checking process, so that the correctness of the references to the CMSIS pack can be validated. <div class="fragment"><div class="line">PackChk.exe <InFile.pdsc> -i <path to installed CMSIS pack>\ARM.CMSIS.pdsc</div> +</div><!-- fragment --></dd></dl> +<h1><a class="anchor" id="cp_Variants"></a> +Variants</h1> +<p>Software components may have <b>variants</b>, for example:</p> +<ul> +<li>Debug version with or release version without diagnostic output</li> +<li>Long/short file names</li> +<li>Fast/slow modes</li> +</ul> +<p>Variants are mutually exclusive (only one variant can be chosen at a time). <code>Cvariant</code> is an optional part of the component ID. The variant specifier is a brief string (e.g. <code>release</code>, <code>debug</code>).</p> +<dl class="section note"><dt>Note</dt><dd>Version management relies on variants to <b>remain unchanged between versions</b>.</dd></dl> +<p>The following example introduces a new component to the Pack in two variants: <code>debug</code> and <code>release</code>. Copy the <em>content</em> of the <b>03_Variants</b> directory of the <b>Pack_with_Software_Components.zip</b> file to the <b>Files</b> directory in your working environment. </p> +<ol> +<li> +Add the following lines to the <b>components</b> section in your PDSC file: <div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"MyVariant"</span> Cgroup=<span class="stringliteral">"MyGroup"</span> Cvariant=<span class="stringliteral">"Release"</span> Cversion=<span class="stringliteral">"1.0.2"</span> condition=<span class="stringliteral">"CMSIS Core with RTOS"</span>></div> +<div class="line"> <description>Release version of MyVariant</description></div> +<div class="line"> <RTE_Components_h></div> +<div class="line"> <!-- the following content goes into file <span class="stringliteral">'RTE_Components.h'</span> --></div> +<div class="line"> #define RTE_MyVariant_Release <span class="comment">/* MyVariant Release Version */</span></div> +<div class="line"> </RTE_Components_h></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/MySWComp.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/header_mylib.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/config/config_mylib.h"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/mylib_one.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/mylib_two.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM0"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm0.lib"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM3"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm3.lib"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM4_CM7"</span> name=<span class="stringliteral">"MySWComp/Lib/mylib_cm4.lib"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +<div class="line"><component Cclass=<span class="stringliteral">"MyVariant"</span> Cgroup=<span class="stringliteral">"MyGroup"</span> Cvariant=<span class="stringliteral">"Debug"</span> Cversion=<span class="stringliteral">"1.0.2"</span> condition=<span class="stringliteral">"CMSIS Core with RTOS"</span>></div> +<div class="line"> <description>Debug version of MyVariant</description></div> +<div class="line"> <RTE_Components_h></div> +<div class="line"> <!-- the following content goes into file <span class="stringliteral">'RTE_Components.h'</span> --></div> +<div class="line"> #define RTE_MyVariant_Debug <span class="comment">/* MyVariant Debug Version */</span></div> +<div class="line"> </RTE_Components_h></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/MySWComp.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/header_mylib.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/config/debug_config_mylib.h"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/debug_mylib_one.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/debug_mylib_two.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM0"</span> name=<span class="stringliteral">"MySWComp/Lib/debug_mylib_cm0.lib"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM3"</span> name=<span class="stringliteral">"MySWComp/Lib/debug_mylib_cm3.lib"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"library"</span> condition=<span class="stringliteral">"CM4_CM7"</span> name=<span class="stringliteral">"MySWComp/Lib/debug_mylib_cm4.lib"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +</div><!-- fragment --> </li> +<li> +Add a new revision to reflect the changes in a newly generated Pack: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.2"</span>></div> +<div class="line"> Variants introduced</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.1.</p> +<div class="image"> +<img src="VariantDisplay.png" alt="VariantDisplay.png"/> +<div class="caption"> +Display of MyVariant in development tools</div></div> + </li> +</ol> +<h1><a class="anchor" id="cp_RTEComponents_h"></a> +RTE_Components.h</h1> +<p>Sometimes, software components need to know of other components. Depending on the availability or configuration of another component, certain settings may be required. A distinct header file is available to make components aware of each other: <b>RTE_Components.h</b>. To add a line of C code to this header file, simply add this to your component:</p> +<pre class="fragment"><RTE_Components_h> + #define RTE_MyVariant_Debug /* MyVariant Debug Version */ +</RTE_Components_h> +</pre><p> The <code>#define</code> can be checked by other components in a project.</p> +<dl class="section note"><dt>Note</dt><dd>The RTE_components.h file needs to be included somewhere in your source files. Refer to <a class="el" href="pdsc_components_pg.html#RTE_Components_h">RTE_Components.h</a> for more information.</dd></dl> +<h1><a class="anchor" id="cp_Bundles"></a> +Bundles</h1> +<p>A bundle is basically a variant on the <code>Cclass</code> level. It specifies the attributes <code>Cclass</code>, <code>Cversion</code> and optionally <code>Cgroup</code> and <code>Cvendor</code> for a collection of interdependent components. Components within a bundle inherit the attributes set by the bundle and must not set these attributes again. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a <code>Cclass</code> from different solutions. In addition to components, a bundle has the mandatory elements <code>description</code> and <code>doc</code> (for documentation).</p> +<p>An example of a <b>bundle</b> is shown in the <a class="el" href="createPackBoard.html#cp_BundleExample">Create a BSP Bundle</a> section where the bundle is used to deliver board support files for a certain development platform.</p> +<h1><a class="anchor" id="cp_Instances"></a> +Instances</h1> +<p>Some <a class="el" href="pdsc_components_pg.html">software components</a> allow several instances. This is useful if more than one peripheral can be connected.</p> +<ol> +<li> +Adding the information about a maximum number of instances is easy. Change the first component (::MyClass:MyGroup:MySub) as follows: <div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"MyClass"</span> Cgroup=<span class="stringliteral">"MyGroup"</span> Csub=<span class="stringliteral">"MySubGroup"</span> Cversion=<span class="stringliteral">"1.0.3"</span> condition=<span class="stringliteral">"CMSIS Core with RTOS"</span> maxInstances=<span class="stringliteral">"3"</span>></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.3"</span>></div> +<div class="line"> Maximum number of instances specified</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.2. When selecting a certain number of instances of the component, causes the development tool to copy the required configuration files multiple times into the project. This ensures that each component instance can be configured separately.</p> +<div class="image"> +<img src="maxInstancesDisplay.png" alt="maxInstancesDisplay.png"/> +<div class="caption"> +Display of component instances in development tools</div></div> + </li> +</ol> +<h1><a class="anchor" id="cp_API"></a> +API Interface</h1> +<p>An <a class="el" href="pdsc_apis_pg.html">API</a> is a special form of a software component that only defines a C/C++ Application Programming Interface (API). An API does not contain the actual implementation (usually provided by source code or library files) and cannot be selected in a development tool. One example is the CMSIS-RTOS API, which is specified as part of CMSIS. However, the actual RTOS implementation is provided by different vendors. An API consists of a name, a brief description as well as one or more header files, and a document containing a detailed specification of the API.</p> +<p>Copy the <em>content</em> of the <b>05_APIs</b> directory of the <b>Pack_with_Software_Components.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add a <a class="el" href="pdsc_apis_pg.html"><apis></a> section with the following: <div class="fragment"><div class="line"><api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"MyAPI"</span> exclusive=<span class="stringliteral">"0"</span>></div> +<div class="line"> <description>API <span class="keywordflow">for</span> MyAPI</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/API/MyAPI.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"API/Include/MyAPI.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </api></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.4"</span>></div> +<div class="line"> MyAPI added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.3. Most likely, you will see none as APIs are not selectable and are thus not displayed in the tools. </li> +</ol> +<h1><a class="anchor" id="cp_CodeTemplates"></a> +User Code Templates</h1> +<p>User code templates provide a quick start for implementing an application. To add user code templates, add source files with the attribute <code>attr=“template”</code> in a <code><component></code>. The <code>select</code> attribute is used to identify template files. Template files with the same <code>select</code> attribute will be added to a project simultaneously.</p> +<p>Copy the <em>content</em> of the <b>06_User_Code_Templates</b> directory of the <b>Pack_with_Software_Components.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add the following code to both variants (<code>debug</code> and <code>release</code>) of the ::MyVariant:MyGroup component: <div class="fragment"><div class="line"><file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Templates/mylib_template1.c"</span> attr=<span class="stringliteral">"template"</span> select=<span class="stringliteral">"Easy Template"</span>/></div> +<div class="line"><file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Templates/mylib_template2.c"</span> attr=<span class="stringliteral">"template"</span> select=<span class="stringliteral">"Complex Template"</span>/></div> +<div class="line"><file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Templates/mylib_template3.c"</span> attr=<span class="stringliteral">"template"</span> select=<span class="stringliteral">"Complex Template"</span>/></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.5"</span>></div> +<div class="line"> User Code Templates added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.4.</p> +<div class="image"> +<img src="UserCodeTemplatesDisplay.png" alt="UserCodeTemplatesDisplay.png"/> +<div class="caption"> +Display of user code templates in development tools</div></div> + </li> +</ol> +<h1><a class="anchor" id="cp_Examples"></a> +Example Projects</h1> +<p>Example projects help to understand a certain MCU or development board better. An example and each individual file of it may refer to a condition that must resolve to true; if it is false, the example or file will be ignored. The board element is used to reference to one or more board descriptions using the board vendor and name an example is targeted for. Each example can specify attributes listing related components using <code>Cclass</code>, <code>Cgroup</code>, <code>Csub</code> and <code>Cversion</code>. The <b><project></b> element contains the names of the supported development tools and the project files to be loaded.</p> +<p>Copy the <em>content</em> of the <b>07_Example_Projects</b> directory of the <b>Pack_with_Software_Components.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add an <a class="el" href="pdsc_examples_pg.html"><examples></a> section with the following: <div class="fragment"><div class="line"><examples></div> +<div class="line"> <example name=<span class="stringliteral">"MyDevBoard Example"</span> doc=<span class="stringliteral">"Abstract.txt"</span> folder=<span class="stringliteral">"MyPackExample"</span>></div> +<div class="line"> <description>CMSIS-RTOS based example</description></div> +<div class="line"> <board name=<span class="stringliteral">"MyDevBoard"</span> vendor=<span class="stringliteral">"MyVendor"</span>/></div> +<div class="line"> <project></div> +<div class="line"> <environment name=<span class="stringliteral">"uv"</span> load=<span class="stringliteral">"MyPackExample.uvprojx"</span>/></div> +<div class="line"> </project></div> +<div class="line"> <attributes></div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"RTOS"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"MyVariant"</span> Cgroup=<span class="stringliteral">"MyGroup"</span>/></div> +<div class="line"> </attributes></div> +<div class="line"> </example></div> +<div class="line"></examples></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.6"</span>></div> +<div class="line"> Example project added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.5.</p> +<div class="image"> +<img src="ExampleDisplay.png" alt="ExampleDisplay.png"/> +<div class="caption"> +Display of example projects in development tools</div></div> + </li> +</ol> +<p>Example projects rely on a development board to be present (as the code needs to run on real hardware). In the code above you will notice that a development board called "MyDevBoard" was specified. <a class="el" href="createPackBoard.html">Pack with Board Support</a> explains how to integrate boards into a Pack. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/cp_ZIPTool.html b/docs/Pack/html/cp_ZIPTool.html new file mode 100644 index 0000000..ea57c45 --- /dev/null +++ b/docs/Pack/html/cp_ZIPTool.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>ZIP Compression Tools</title> +<title>CMSIS-Pack: ZIP Compression Tools</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cp_ZIPTool.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">ZIP Compression Tools </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Any ZIP software utility supporting the compression method <a href="http://en.wikipedia.org/wiki/DEFLATE" target="_blank">DEFLATE</a> can be used to create a Pack file. Simply, create the ZIP file and rename it to *.pack.</p> +<p>The compression tool <a href="http://www.7-zip.org/" target="_blank">7-Zip</a> supports command line calls and can be used in batch scripts like <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> for automated Pack file creation (and verification with <a class="el" href="packChk.html">packChk.exe</a>). Installers for 7-Zip are available for 32-bit and 64-bit Windows operating systems. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="createPackUtil.html">Utilities for Creating Packs</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/cpdsc_pg.html b/docs/Pack/html/cpdsc_pg.html new file mode 100644 index 0000000..d650397 --- /dev/null +++ b/docs/Pack/html/cpdsc_pg.html @@ -0,0 +1,753 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Project Description (*.cpdsc) Format</title> +<title>CMSIS-Pack: Project Description (*.cpdsc) Format</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cpdsc_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Project Description (*.cpdsc) Format </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The CPDSC format provides the XML elements for defining CMSIS software projects. The CPDSC file content is considered static, so you do not have to keep the projects synchronized.</p> +<p>The scope of the description includes:</p> +<ul> +<li>CMSIS Run-Time Environment configuration (RTE)</li> +<li>Project build, including linker script generation</li> +<li>Flash programming</li> +<li>Basic configuration of debug probs</li> +</ul> +<p>The project format creates a basic project configuration and does not reflect tool-specific features or configurations. The import and conversion from the CPDSC format into a toolchain-specific format is the responsibility of the tool vendor.</p> +<h1><a class="anchor" id="cpdsc_definition"></a> +Definition of CMSIS project</h1> +<p>A CMSIS software project is a collection of files in a directory structure. The CPDSC file is located in the base folder of the directory structure. Only one CPDSC file is allowed. A CPDSC file can describe one or more projects.</p> +<p><b>Example</b> CMSIS Project Description File (*.cpdsc): </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span> standalone=<span class="stringliteral">"no"</span> ?></div> +<div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"></span></div> +<div class="line"> <vendor>Keil</vendor></div> +<div class="line"> <name>STM32F407_Flash</name></div> +<div class="line"> <description>CMSIS RTOS Blinky for STM32F407 microcontroller using Keil 'MCBSTM32F400 Evaluation Board.</description></div> +<div class="line"> <url>www.keil.com/pack/Keil.STM32F4xx_DFP.pdsc</url></div> +<div class="line"></div> +<div class="line"> <releases></div> +<div class="line"> <release version="5.25.1">Generated 2018-02-20T09:10:26</release></div> +<div class="line"> </releases></div> +<div class="line"></div> +<div class="line"> <requirements></div> +<div class="line"> <packages></div> +<div class="line"> <package name="CMSIS" vendor="ARM"/></div> +<div class="line"> <package name="MDK-Middleware" vendor="Keil"/> </div> +<div class="line"> <package name="STM32F4xx_DFP" vendor="Keil"/></div> +<div class="line"> </packages></div> +<div class="line"> </requirements></div> +<div class="line"></div> +<div class="line"> <create></div> +<div class="line"> <project></div> +<div class="line"> <target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F407IGHx" Dtz="NO_TZ" Dvendor="STMicroelectronics:13"></div> +<div class="line"> <output debug="1" name="Blinky" type="exe"/></div> +<div class="line"> <debugProbe coreClock="10000000" name="ULINK2" protocol="swd"/></div> +<div class="line"> <memory access="rx" default="1" name="IROM1" size="0x100000" start="0x8000000" startup="1"/></div> +<div class="line"> <memory access="rw" default="1" init="1" name="IRAM1" size="0x20000" start="0x20000000"/></div> +<div class="line"> <memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/></div> +<div class="line"> </target></div> +<div class="line"> <select></div> +<div class="line"> <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM"/></div> +<div class="line"> <component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX" Cvendor="ARM"></div> +<div class="line"> <file attr="config" category="source" name="CMSIS/RTOS/RTX/Templates/RTX_Conf_CM.c" version="4.70.1"/></div> +<div class="line"> </component></div> +<div class="line"> <component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="A/D Converter" Cvendor="Keil"/></div> +<div class="line"> <component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil"/></div> +<div class="line"> <component Cbundle="MCBSTM32F400" Cclass="Board Support" Cgroup="LED" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil"></div> +<div class="line"> <file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.4.4"/></div> +<div class="line"> <file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.6.0"/></div> +<div class="line"> </component></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="ADC" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Cortex" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="DMA" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="PWR" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="RCC" Cvendor="Keil"/></div> +<div class="line"> <component Cclass="Device" Cgroup="Startup" Cvendor="Keil"></div> +<div class="line"> <file attr="config" category="source" condition="STM32F407xx_ARMCC" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s" version="2.6.0"/></div> +<div class="line"> <file attr="config" category="source" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c" version="2.6.0"/></div> +<div class="line"> </component></div> +<div class="line"> </select></div> +<div class="line"> <files></div> +<div class="line"> <group name="Source Files"></div> +<div class="line"> <file category="sourceC" name="./Blinky.c"/></div> +<div class="line"> <file category="sourceC" name="./Thread_LED.c"/></div> +<div class="line"> <file category="sourceC" name="./Thread_ADC.c"/></div> +<div class="line"> </group></div> +<div class="line"> <group name="Documentation"></div> +<div class="line"> <file category="doc" name="./Abstract.txt"/></div> +<div class="line"> </group></div> +<div class="line"> </files></div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><h1><a class="anchor" id="cpdsc_structure"></a> +CPDSC top level structure</h1> +<p>The CPDSC file format shares the schema file (PACK.xsd) with the PDSC and GPDSC format. However, a CPDSC file can only contain the top level elements listed in this table.</p> +<h1><a class="anchor" id="element_package_cpdsc"></a> +/package (for CPDSC)</h1> +<table class="cmtable" summary="Element: CPDSC package"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td>root </td><td colspan="3">description root point for CPDSC </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>schemaVersion </td><td>Version of PACK.xsd the description is compatible with </td><td>VersionType </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>name </td><td>Name of the CPDSC <a class="el" href="cp_SWComponents.html">Software Pack</a> file. Could be displayed by an installer. </td><td>RestrictedString </td><td>1..1 </td></tr> +<tr> +<td>vendor </td><td>Creator or owner of the CPDSC file. </td><td>RestrictedString </td><td>1..1 </td></tr> +<tr> +<td>description </td><td>High level description of the projects. </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>url </td><td>File location if generated, link to the Pack this file belongs to. If left empty, the Pack cannot be updated automatically from a server location. </td><td>xs:anyURI </td><td>1..1 </td></tr> +<tr> +<td>supportContact </td><td>Email or web page for reporting errors or problems related to this project. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td>license </td><td>Reference to a license file relative to this CPDSC. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_requirements">requirements</a> </td><td>Specify required packs, compiler, and programming languages for the project. </td><td>RequirementsType </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_create_pg">create</a> </td><td>Section capturing the project configuration. </td><td>CreateType </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="element_releases.html">releases</a> </td><td>Release history and release notes for tracking changes to this project. The attributes <b><deprecated></b> and <b><replacement></b> are not supported in the context of CPDSC files. </td><td>ReleasesType </td><td>1..1 </td></tr> +</table> +<p>You can refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a> for more details.</p> +<p> </p> +<hr/> +<h1><a class="anchor" id="cpdsc_create_pg"></a> +/package/create</h1> +<p>This element groups one or more projects, which should be related. For example, the Secure and Non-secure part of an application, or a set of library projects and the final application project. We recommend to use different CPDSC files for each individual project.</p> +<table class="cmtable" summary="Element: create"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_package_cpdsc">package</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_package_cpdsc">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project">project</a> </td><td>Grouping element to add project descriptions </td><td>ProjectType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_project"></a> +/package/create/project</h1> +<p>This element bundles one project.</p> +<p><b>Example</b> <em>project</em> section: </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span> standalone=<span class="stringliteral">"no"</span> ?></div> +<div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"></span></div> +<div class="line"> ...</div> +<div class="line"> <create></div> +<div class="line"> <project name="STM32F429_Flash" documentation="./Abstract.txt"></div> +<div class="line"> <target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13"></div> +<div class="line"> ...</div> +<div class="line"> </target></div> +<div class="line"> <select></div> +<div class="line"> ...</div> +<div class="line"> </select></div> +<div class="line"> <files></div> +<div class="line"> ...</div> +<div class="line"> </files></div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: project"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_create_pg">create</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_create_pg">/package/create</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the project. Will be used as file name as well. If not specified, then the name on the package level is used. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>documentation </td><td>Path and file name of a document relative to the CPDSC file, or an url providing detailed information about the software project. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">target</a> </td><td>Section containing details, for example about the board, device, memory, debug, or algorithms. </td><td>TargetType </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_select_pg">select</a> </td><td>Specify the software components selected in the Run-Time Environment (RTE). </td><td>SelectType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_files_pg">files</a> </td><td>List all files used for the project build, which are not configured using components. </td><td>ProjectFilesType </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="cpdsc_target_pg"></a> +/package/create/project/target</h1> +<p>This element describes the hardware target, including memory layout, debug probes, or flash programming algorithms.</p> +<p><b>Example</b> <em>target</em> section:</p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <create></div> +<div class="line"> <project></div> +<div class="line"> ...</div> +<div class="line"> <target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13"></div> +<div class="line"> <output debug="1" name="Blinky" type="exe"/></div> +<div class="line"> <debugProbe coreClock="10000000" name="ST-Link" protocol="swd"/></div> +<div class="line"> <memory access="rx" default="1" name="IROM1" size="0x200000" start="0x8000000" startup="1"/></div> +<div class="line"> <memory access="rw" default="1" init="1" name="IRAM1" size="0x30000" start="0x20000000"/></div> +<div class="line"> <memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/></div> +<div class="line"> </target></div> +<div class="line"> ...</div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: target"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project">project</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_project">/package/create/project</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Bvendor </td><td>Board vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Bname </td><td>SPecify the board name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Bversion </td><td>Board version. Either a board vendor and board name with optional board revision, or a device vendor and a device name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvendor </td><td>Device vendor name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dname </td><td>Device name. Either a board vendor and board name with optional board revision, or a device vendor and a device name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Processor instance name. In case of multi-processor devices, this processor ID is required. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dfpu </td><td>Selects the floating point unit option that is active for the project. <b>Note</b>, even if the device implements an FPU, setting <span class="XML-Token">Dfpu=0</span> here, will disable FPU code generation. Use predefined values from the table <a class="el" href="pdsc_family_pg.html#DfpuEnum">Device FPU</a>. </td><td>DfpuEnum </td><td>optional </td></tr> +<tr> +<td><p class="starttd">Dendian</p> +<p class="endtd"></p> +</td><td>Selects the endianness to be used for the project. Note that selecting an endianness that is not supported by the device, will result in a build that will not run on the device. Use predefined values from the table <a class="el" href="pdsc_family_pg.html#DendianEnum">DendianEnum</a>. </td><td>DendianEnum </td><td>optional </td></tr> +<tr> +<td>Dmpu </td><td>Selects the memory protection unit to be enabled or disabled for the project. Use predefined values from the table <a class="el" href="pdsc_family_pg.html#DmpuEnum">Device MPU</a>. </td><td>DmpuEnum </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_output">output</a> </td><td>Configure the build output name and type, and specify whether to include debug information. </td><td>OutputType </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_target_memory">memory</a> </td><td>Specify the memory configuration for this application. Based on the memory layout, the linker script will be generated by the toolchain. </td><td>TargetMemoryType </td><td>0..* </td></tr> +<tr> +<td>stack </td><td>Specify the stack size in bytes allocated by the linker to the application. This element consists of one attribute named <em><size></em>. Set the value for this attribute. Only positive numbers are allowed. </td><td>StackType </td><td>1..1 </td></tr> +<tr> +<td>heap </td><td>Specify the heap size in bytes allocated by the linker to the application. This element consists of one attribute named <em><size></em>. Set the value for this attribute. Only positive numbers are allowed. </td><td>HeapType </td><td>1 </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_target_algorithm">algorithm</a> </td><td>Selects from the list of available flash programming algorithms specified for this device in the corresponding Device Family Pack. Target and RAM memory ranges can be reconfigured from the defaults specified in the device description. </td><td>TargetAlgorithmType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_debugProbe">debugProbe</a> </td><td>Selects and configures the debug probe to be used for this project. </td><td>DebugProbeType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_target_algorithm"></a> +/package/create/project/target/algorithm</h1> +<p><b>Example</b> <em>algorithm</em> element </p> +<div class="fragment"><div class="line">...</div> +<div class="line"> <project name=<span class="stringliteral">"STM32F429_Flash"</span> documentation=<span class="stringliteral">"./Abstract.txt"</span>></div> +<div class="line"> <target Dendian=<span class="stringliteral">"Little-endian"</span> Dfpu=<span class="stringliteral">"SP_FPU"</span> Dname=<span class="stringliteral">"STM32F429ZITx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <algorithm name=<span class="stringliteral">"CMSIS/Flash/STM32F4xx_1024.FLM"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x100000"</span> RAMstart=0x20000000 RAMsize=0x1000/></div> +<div class="line"> ...</div> +<div class="line"> </target></div> +<div class="line"> </project></div> +<div class="line">...</div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: algorithm"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">target</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor name </td><td>xs:string </td><td>RestrictedString </td></tr> +<tr> +<td>name </td><td>References the name (without path) of the flash programming algorithm as defined by the DFP. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>start </td><td>Overrides the predefined programming start address of the flash programming algorithm as specified in the DFP. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>size </td><td>Overrides the predefined programming size of the flash programming algorithm as specified in the DFP. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>RAMstart </td><td>Overrides the predefined start address in RAM where the flash programming algorithm is loaded as specified in the DFP. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>RAMsize </td><td>Overrides the predefined RAM size in RAM where the flash programming algorithm is loaded as specified in the DFP. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>default </td><td>Sets this algorithm as the default algorithm for flash programming when the value is set to <span class="XML-Token">1</span>. The defualt value is <span class="XML-Token">0</span> - false. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>style </td><td>Sets flash programming format. The default value is <span class="XML-Token">Keil</span>. Use the predefinde values as listed in the table <a class="el" href="pdsc_family_pg.html#AlgorithmStyleEnum">Algorithm Styles</a>. </td><td>AlgorithmStyleType </td><td>optional </td></tr> +<tr> +<td>parameter </td><td>Parameter string passed when invoking the algorithm. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>endian </td><td>Specify the endianness of the algorithm. Default value is <span class="XML-Token">Little-endian</span>. Use the predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DendianEnum">Endinaness</a>. </td><td>DendianEnum </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_debugProbe"></a> +/package/create/project/target/debugProbe</h1> +<p>Specify the attributes of a debug probe.</p> +<p><b>Example</b> <em>debugProbe</em> element </p> +<div class="fragment"><div class="line">...</div> +<div class="line"> <project name=<span class="stringliteral">"STM32F429_Flash"</span> documentation=<span class="stringliteral">"./Abstract.txt"</span>></div> +<div class="line"> <target Dendian=<span class="stringliteral">"Little-endian"</span> Dfpu=<span class="stringliteral">"SP_FPU"</span> Dname=<span class="stringliteral">"STM32F429ZITx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugProbe coreClock=<span class="stringliteral">"10000000"</span> name=<span class="stringliteral">"ST-Link"</span> protocol=<span class="stringliteral">"swd"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </target></div> +<div class="line"> </project></div> +<div class="line">...</div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: debugProbe"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">target</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of of the debug probe, for example <span class="XML-Token">JLink</span>, <span class="XML-Token">ULink2</span>, <span class="XML-Token">ULinkPro</span>, <span class="XML-Token">CMSIS-DAP</span>, or <span class="XML-Token">ST-Link</span>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>protocol </td><td>Select the debug protocol, for example, <span class="XML-Token">swd</span>. Use the predefined values listed in the table <a class="el" href="pdsc_family_pg.html#DebugProtocolEnum">Debug Protocol Type</a>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>coreClock </td><td>Clock frequency of the core once the system is initialized. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>tpiuClock </td><td>Clock frequency of the TPIU block of the CoreSight debug logic. Only relevant for tracing. </td><td>NonNegativeInteger </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_target_memory"></a> +/package/create/project/target/memory</h1> +<p>Specify the memory layout. The linker script file will be genereted according to these settings.</p> +<p><b>Example</b> <em>memory</em> element </p> +<div class="fragment"><div class="line">...</div> +<div class="line"> <project name=<span class="stringliteral">"STM32F429_Flash"</span> documentation=<span class="stringliteral">"./Abstract.txt"</span>></div> +<div class="line"> <target Dendian=<span class="stringliteral">"Little-endian"</span> Dfpu=<span class="stringliteral">"SP_FPU"</span> Dname=<span class="stringliteral">"STM32F429ZITx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <memory access=<span class="stringliteral">"rx"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"IROM1"</span> size=<span class="stringliteral">"0x200000"</span> start=<span class="stringliteral">"0x8000000"</span> startup=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory access=<span class="stringliteral">"rw"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> init=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"IRAM1"</span> size=<span class="stringliteral">"0x30000"</span> start=<span class="stringliteral">"0x20000000"</span>/></div> +<div class="line"> <memory access=<span class="stringliteral">"rw"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"0"</span> init=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"IRAM2"</span> size=<span class="stringliteral">"0x10000"</span> start=<span class="stringliteral">"0x10000000"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </target></div> +<div class="line"> </project></div> +<div class="line">...</div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: memory"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">target</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Identifies the processor. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>id </td><td>Eunmerated ID of memory. <span class="XML-Token">Deprecated since version 1.4.4</span> </td><td>MemoryIDTypeEnum </td><td>optional </td></tr> +<tr> +<td>name </td><td>Reference to the name of the memory as defined by the DFP. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>start </td><td>Overrides the predefined memory start address. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>size </td><td>Overrides the predefined memory size. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>access </td><td>Overrides the predefined access permissions for the memory as specified in the DFP. The default value is <span class="XML-Token">r</span>, for 'read' permission. Use the predefined values defined in the table <a class="el" href="pdsc_family_pg.html#MemoryAccessTypeString">MemoryAccessTypeString</a>. </td><td>AccessType </td><td>optional </td></tr> +<tr> +<td>alias </td><td>Reference by 'name' to another memory to express that the same physical memory is mapped at another address. </td><td>AccessType </td><td>optional </td></tr> +<tr> +<td>init </td><td><span class="XML-Token">Deprecated; do not use! Ignore!!!</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>default </td><td>Use to define the default memory for the linker. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>startup </td><td>Specify whether the memory is used by the linker for the startup. The default value is <span class="XML-Token">0</span> - false. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_output"></a> +/package/create/project/target/output</h1> +<p>Specify the characteristics for the build output file.</p> +<p><b>Example</b> <em>output</em> element </p> +<div class="fragment"><div class="line"><project name=<span class="stringliteral">"STM32F429_Flash"</span> documentation=<span class="stringliteral">"./Abstract.txt"</span>></div> +<div class="line"> <target Dendian=<span class="stringliteral">"Little-endian"</span> Dfpu=<span class="stringliteral">"SP_FPU"</span> Dname=<span class="stringliteral">"STM32F429ZITx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> <output debug=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Blinky"</span> type=<span class="stringliteral">"exe"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </target></div> +<div class="line"> ...</div> +<div class="line"></project></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: output"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">target</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the build output file. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>type </td><td>Select the build target to be <span class="XML-Token">lib</span> - library or <span class="XML-Token">exe</span> - executable. You can use the wildcard <span class="XML-Token">*</span> for </td><td>CompilerOutputType </td><td>required </td></tr> +<tr> +<td>debug </td><td>Select whether the output will contain debug information. Use the values <span class="XML-Token">1;0</span> for true and false. </td><td>xs:boolean </td><td>required </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="cpdsc_select_pg"></a> +/package/create/project/select</h1> +<p>This element lists all software components that are selected within the Manage Run-Time Environment.</p> +<p><b>Example</b> <em>select</em> section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <create></div> +<div class="line"> <project></div> +<div class="line"> ...</div> +<div class="line"> <select></div> +<div class="line"> <component Cclass="CMSIS" Cgroup="Core" Cvendor="ARM" Cversion="4.1.0"/></div> +<div class="line"> <component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX" Cvendor="ARM" Cversion="4.78.0"></div> +<div class="line"> <file attr="config" category="source" name="CMSIS/RTOS/RTX/Templates/RTX_Conf_CM.c" version="4.70.1"/></div> +<div class="line"> </component></div> +<div class="line"> <component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil" Cversion="1.0.0"/></div> +<div class="line"> <component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="LED" Cvendor="Keil" Cversion="1.0.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.4.0"></div> +<div class="line"> <file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.3.1"/></div> +<div class="line"> <file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.4.2"/></div> +<div class="line"> </component></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common" Cvendor="Keil" Cversion="1.4.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Cortex" Cvendor="Keil" Cversion="1.4.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO" Cvendor="Keil" Cversion="1.4.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="PWR" Cvendor="Keil" Cversion="1.4.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="STM32Cube HAL" Csub="RCC" Cvendor="Keil" Cversion="1.4.0"/></div> +<div class="line"> <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.4.0"></div> +<div class="line"> <file attr="config" category="source" condition="STM32F429xx_ARMCC" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s" version="2.4.2"/></div> +<div class="line"> <file attr="config" category="source" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c" version="2.4.2"/></div> +<div class="line"> </component></div> +<div class="line"> </select></div> +<div class="line"> ...</div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: select"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project">project</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_project">/package/create/project</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_component">component</a> </td><td>Group element for defining the selected software components. </td><td>ComponentSelectType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_project_component"></a> +/package/create/project/select/component</h1> +<p>Specify the software components.</p> +<p><b>Example</b> <em>component</em> element </p> +<div class="fragment"><div class="line">...</div> +<div class="line"> <select></div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span> Cvendor=<span class="stringliteral">"ARM"</span> Cversion=<span class="stringliteral">"4.1.0"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"STM32Cube Framework"</span> Csub=<span class="stringliteral">"Classic"</span> Cvendor=<span class="stringliteral">"Keil"</span> Cversion=<span class="stringliteral">"1.4.0"</span>></div> +<div class="line"> <file attr=<span class="stringliteral">"config"</span> category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"CMSIS/Driver/Config/RTE_Device.h"</span> version=<span class="stringliteral">"2.3.1"</span>/></div> +<div class="line"> <file attr=<span class="stringliteral">"config"</span> category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MDK/Templates/Inc/stm32f4xx_hal_conf.h"</span> version=<span class="stringliteral">"1.4.2"</span>/></div> +<div class="line"> </component></div> +<div class="line"> </select></div> +<div class="line">...</div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: component"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_select_pg">select</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_select_pg">/package/create/project/select</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cvendor </td><td>Vendor name of the component. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cbundle </td><td>Name of bundle to which the selected component belongs. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cclass </td><td>Component class name. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Cgroup </td><td>Component group name following the taxonomy. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Csub </td><td>Component sub group name following the taxonomy (string may be empty) </td><td>CsubType </td><td>optional </td></tr> +<tr> +<td>Cvariant </td><td>Name of the variant of the selected component. </td><td>CvariantType </td><td>optional </td></tr> +<tr> +<td>Cversion </td><td>Version of the selected component. Note, a higher version number can be entered in case the matching version is not available. </td><td>ComponentVersionType </td><td>optional </td></tr> +<tr> +<td>Capiversion </td><td>Implemented api version defined for the corresponding Cclass:Cgroup:Csub. Set the value only for components that have an associated <em><api></em>. </td><td>ComponentVersionType </td><td>optional </td></tr> +<tr> +<td>instances </td><td>Number of instances created for the component. Set the value only for components that are multi-instance capable. Defaults to <span class="XML-Token">1</span> if not set. </td><td>InstancesType </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_component_file">file</a> </td><td>Specify configuration files from the selected component. </td><td>ComponentSelectType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_component_file"></a> +/package/create/project/select/component/file</h1> +<p>Specify the configuration files for the selected component. These files must already exist in the project folder structure and contain a configuration setup specifically for the project.</p> +<p><b>Example</b> <em>file</em> element </p> +<div class="fragment"><div class="line">...</div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"STM32Cube Framework"</span> Csub=<span class="stringliteral">"Classic"</span> Cvendor=<span class="stringliteral">"Keil"</span> Cversion=<span class="stringliteral">"1.4.0"</span>></div> +<div class="line"> <file attr=<span class="stringliteral">"config"</span> category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"CMSIS/Driver/Config/RTE_Device.h"</span> version=<span class="stringliteral">"2.3.1"</span>/></div> +<div class="line"> <file attr=<span class="stringliteral">"config"</span> category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MDK/Templates/Inc/stm32f4xx_hal_conf.h"</span> version=<span class="stringliteral">"1.4.2"</span>/></div> +<div class="line"> </component></div> +<div class="line">...</div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: file"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_component">component</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_project_component">/package/create/project/select/component</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>condition </td><td>Condition id being used at the time of runtime configuration. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>category </td><td>File type, for example <span class="XML-Token">header</span>. Use predefined values from the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Category</a>. </td><td>FileCategoryType </td><td>required </td></tr> +<tr> +<td>attr </td><td>File action attribute, for example <span class="XML-Token">copy</span>. Use predefined values from the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Category</a>. </td><td><a class="el" href="pdsc_components_pg.html#FileAttributeEnum">FileAttributeType</a> </td><td>optional </td></tr> +<tr> +<td>name </td><td>File path and name within pack it originates from. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>version </td><td>Version of the configuration file being used in the example. </td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>required </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="cpdsc_files_pg"></a> +/package/create/project/files</h1> +<p>The files section specifies files to be included into the project build that are not managed through software components. Files can be sorted into named groups.</p> +<p><b>Example</b> <em>files</em> section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <create></div> +<div class="line"> <project></div> +<div class="line"> <files></div> +<div class="line"> <group name="Source Files"></div> +<div class="line"> <file category="sourceC" name="./Blinky.c"/></div> +<div class="line"> <file category="sourceC" name="./Thread_LED.c"/></div> +<div class="line"> </group></div> +<div class="line"> <group name="Documentation"></div> +<div class="line"> <file category="doc" name="./Abstract.txt"/></div> +<div class="line"> </group></div> +<div class="line"> </files></div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: files"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project">project</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_project">/package/create/project</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_file">file</a> </td><td>Specify a file. </td><td>ProjectFileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_group">group</a> </td><td>Specify a group of files. </td><td>GroupType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_project_file"></a> +/package/project/create/files/.../file</h1> +<p>Specify files that are not included through software components.</p> +<table class="cmtable" summary="Element: file"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_files_pg">files</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_files_pg">/package/create/project/files</a> </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_group">group</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#element_project_group">/package/create/project/files/.../group</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Path and name of the file, relative to CPDSC location. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>category </td><td>Type of file, for example, whether the file is a C or assembler file. Use the predefined values from the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Categories</a>. </td><td>FileCategoryType </td><td>required </td></tr> +<tr> +<td>src </td><td>Folder specifying the source code location for a library. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_project_group"></a> +/package/create/project/files/.../group</h1> +<p>Nesting of groups is supported. It is tool dependent how grouping is represented in the tool, because the grouping of files has no impact on the build by default.</p> +<p><b>Example</b> <em>files</em> section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <create></div> +<div class="line"> <project></div> +<div class="line"> <files></div> +<div class="line"> <group name="Source"></div> +<div class="line"> <group name="C"></div> +<div class="line"> <file category="sourceC" name="./Blinky.c"/></div> +<div class="line"> <file category="sourceC" name="./Thread_LED.c"/></div> +<div class="line"> </group></div> +<div class="line"> <group name="ASM"></div> +<div class="line"> <file category="sourceAsm" name="./startup_add.s"/></div> +<div class="line"> </group></div> +<div class="line"> </group></div> +<div class="line"> <group name="Documentation"></div> +<div class="line"> <file category="doc" name="./Abstract.txt"/></div> +<div class="line"> </group></div> +<div class="line"> </files></div> +<div class="line"> </project></div> +<div class="line"> </create></div> +<div class="line"></package></div> +</div><!-- fragment --><p> <br/> +</p> +<table class="cmtable" summary="Element: group"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#cpdsc_files_pg">files</a> </td><td colspan="3"><a class="el" href="cpdsc_pg.html#cpdsc_files_pg">/package/create/project/files</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>name of the group of files </td><td>RestrictedString </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_file">file</a> </td><td>Specify a file. </td><td>ProjectFileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="cpdsc_pg.html#element_project_group">group</a> </td><td>Specify a group (nesting). </td><td>GroupType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/createPackBoard.html b/docs/Pack/html/createPackBoard.html new file mode 100644 index 0000000..c3532ae --- /dev/null +++ b/docs/Pack/html/createPackBoard.html @@ -0,0 +1,256 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Pack with Board Support</title> +<title>CMSIS-Pack: Pack with Board Support</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('createPackBoard.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Pack with Board Support </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> that contains a <a class="el" href="pdsc_boards_pg.html"><board></a> element is called Board Support Pack (BSP). A BSP may contain additional <b>Software Components</b>, <b>Example Projects</b>, as well as <b>Code Templates</b>. The typical content of a BSP is:</p> +<ul> +<li>Source code, libraries, header/configuration files for the underlying hardware and documentation (for example user manuals, getting started guides, and schematics).</li> +<li><a class="el" href="cp_SWComponents.html#cp_Examples">Example Projects</a> that show the usage of the development board and its peripherals.</li> +<li><a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> that can be used as a starting point for using the development board or the mounted device.</li> +</ul> +<p>This section is a tutorial that explains how to create a BSP. Initially the PDSC file in the BSP only describes an evaluation board. This BSP is then extended to contain also software components that interface with the hardware of the board. Example projects and code templates may be added as described in the section <a class="el" href="cp_SWComponents.html">Pack with Software Components</a>.</p> +<h2>BSP Use Cases </h2> +<p>A BSP is typically provided by a Board Vendor and is used to <b>extend development tools</b> with support for development boards. In general, the BSP enables Board Vendors to distribute tool independent board support for their development platforms.<br/> +BSPs can also be used to provide information for the display on <b>web sites</b>. One example is the new boards page on <a href="http://www.keil.com/boards2/" class="el" target="_blank">www.keil.com/boards2/</a>:</p> +<div class="image"> +<img src="BoardsSectionMCB1500.png" alt="BoardsSectionMCB1500.png"/> +<div class="caption"> +Board information on a web site extracted from a BSP</div></div> +<h1><a class="anchor" id="cp_SpecDevBoard"></a> +Specify a Development Board</h1> +<p><b>Preparations</b></p> +<ol type="1"> +<li>Install the Software Pack <a href="http://www.keil.com/dd2/arm/armcm3/" class="el" target="_blank">Keil::ARMCortex_DFP</a> as this will be required for the BSP to function properly.</li> +<li>Create a working directory on your PC, for example <b>C:\temp\working_bsp</b>.</li> +<li>Go to the directory <b>\CMSIS\Pack\Tutorials</b> available in the <b>ARM::CMSIS</b> Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below <b>C:\Keil_v5\ARM\Pack\ARM\CMSIS\<em>version</em></b>.</li> +<li>Open the file <b>Pack_with_Board_Support.zip</b>.</li> +<li>Copy the <em>content</em> of the ZIP file's <b>01_Specify_Dev_Board</b> directory into your working directory.</li> +<li>Make sure that files/directories are not write protected (remove read-only flag).</li> +<li>Copy from the directory <b>\CMSIS\Utilities</b> available in the <b>ARM::CMSIS</b> Pack installation the following files into your working directory:<ul> +<li>packChk.exe</li> +<li>PACK.xsd</li> +</ul> +</li> +<li>Open the <b>MyVendor.MyBSP.pdsc</b> file in an editor.</li> +</ol> +<p><b>Code Example</b> </p> +<ol> +<li> +Add a <a class="el" href="pdsc_boards_pg.html#element_boards"><boards></a> section in the PDSC file with the following: <div class="fragment"><div class="line"><boards></div> +<div class="line"> <board vendor=<span class="stringliteral">"MyVendor"</span> name=<span class="stringliteral">"MyDevBoard"</span> revision=<span class="stringliteral">"V1"</span> salesContact=<span class="stringliteral">"sales@keil.com"</span> orderForm=<span class="stringliteral">"http://www.keil.com"</span>></div> +<div class="line"> <description>MyVendor MyDevBoard Board Description</description></div> +<div class="line"> <image small=<span class="stringliteral">"Images/MyDevBoard_small.png"</span> large=<span class="stringliteral">"Images/MyDevBoard_large.png"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"setup"</span> name=<span class="stringliteral">"Docs/MyDevBoard/MyDevBoard_setup.pdf"</span> title=<span class="stringliteral">"Getting Started"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"schematic"</span> name=<span class="stringliteral">"Docs/MyDevBoard/MyDevBoard_schematics.pdf"</span> title=<span class="stringliteral">"Schematics"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"manual"</span> name=<span class="stringliteral">"Docs/MyDevBoard/MyDevBoard_um.pdf"</span> title=<span class="stringliteral">"User Manual"</span>/></div> +<div class="line"> <mountedDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"ARM:82"</span> Dname=<span class="stringliteral">"ARMCM3"</span>/></div> +<div class="line"> <compatibleDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"ARM:82"</span> Dfamily=<span class="stringliteral">"ARM Cortex M3"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"ODbg"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"On-board J-LINK Lite"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"PWR"</span> n=<span class="stringliteral">"5"</span> name=<span class="stringliteral">"USB Powered"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"DIO"</span> n=<span class="stringliteral">"8"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"SPI"</span> n=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"LED"</span> n=<span class="stringliteral">"6"</span> name=<span class="stringliteral">"User LEDs"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"ArduinoFF"</span> n=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <debugInterface adapter=<span class="stringliteral">"J-Link Lite"</span> connector=<span class="stringliteral">"Mini-USB"</span>/></div> +<div class="line"> </board></div> +<div class="line"></boards></div> +</div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>All code examples in this and the following sections can be found in the <code>snippets.xml</code> file in the <b>01_Specify_Dev_Board</b> directory. </dd></dl> +</li> +<li> +<p class="startli">Finally, save the PDSC file and generate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool.</p> +<div class="image"> +<img src="DevBoardDisplay.png" alt="DevBoardDisplay.png"/> +<div class="caption"> +Display of development boards in development tools</div></div> + </li> +</ol> +<dl class="section note"><dt>Note</dt><dd>packChk.exe will display <b>M346</b> informations: <pre class="fragment">*** WARNING M346: .\Files\MyVendor.MyBSP.pdsc (Line 29) + Referenced device(s) in 'MyDevBoard' not found: 'ARMCM3' + +*** WARNING M346: .\Files\MyVendor.MyBSP.pdsc (Line 29) + Referenced device(s) in 'MyDevBoard' not found: 'ARM Cortex M3' +</pre> This is because this BSP does not contain a device section with the mentioned devices. To work aroung this problem, you might add the ARM:CMSIS PDSC file to the checking process.</dd></dl> +<h1><a class="anchor" id="cp_BundleExample"></a> +Create a BSP Bundle</h1> +<p>A bundle is basically a variant on the <code>Cclass</code> level. It specifies the attributes <code>Cclass</code>, <code>Cversion</code> and optionally <code>Cgroup</code> and <code>Cvendor</code> for a collection of interdependent components. Components within a bundle inherit the attributes set by the bundle and must not set these attributes again. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a <code>Cclass</code> from different solutions. In addition to components, a bundle has the mandatory elements <code>description</code> and <code>doc</code> (for documentation).</p> +<p>Copy the <em>content</em> of the <b>02_BSP_Bundle</b> directory of the <b>Pack_with_Board_Support.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add a <code><conditions></code> section in your PDSC with the following (the <a class="el" href="cp_SWComponents.html#cp_Conditions">conditions</a> section provides more information on this step): <div class="fragment"><div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"ARM Cortex M3 Series"</span>></div> +<div class="line"> <description>ARM Cortex M3 device required</description></div> +<div class="line"> <require Dfamily=<span class="stringliteral">"ARM Cortex M3"</span> Dvendor=<span class="stringliteral">"ARM:82"</span>/></div> +<div class="line"></condition></div> +<div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"MyDevBoard Board Setup"</span>></div> +<div class="line"> <description>Board Setup Code required</description></div> +<div class="line"> <require condition=<span class="stringliteral">"ARM Cortex M3 Series"</span>/></div> +<div class="line"> <require Cclass=<span class="stringliteral">"Board Support"</span> Cgroup=<span class="stringliteral">"Board Setup"</span>/></div> +<div class="line"></condition></div> +</div><!-- fragment --> </li> +<li> +Add a <code><components></code> section in your PDSC with the following (the <a class="el" href="cp_SWComponents.html#cp_Components">components</a> section provides more information on this step): <div class="fragment"><div class="line"><bundle Cbundle=<span class="stringliteral">"MyDevBoardSupport"</span> Cclass=<span class="stringliteral">"Board Support"</span> Cversion=<span class="stringliteral">"1.0.1"</span>></div> +<div class="line"> <description>MyDevBoard custom board support package</description></div> +<div class="line"> <doc>Docs/BSP/MyBSP.htm</doc></div> +<div class="line"> <component Cgroup=<span class="stringliteral">"Board Setup"</span> condition=<span class="stringliteral">"ARM Cortex M3 Series"</span>></div> +<div class="line"> <description>Custom board setup code</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/BSP/Setup.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/Include/setup.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Source/setup.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> <component Cgroup=<span class="stringliteral">"I/O"</span> Csub=<span class="stringliteral">"LED"</span> condition=<span class="stringliteral">"MyDevBoard Board Setup"</span>></div> +<div class="line"> <description>LED code <span class="keywordflow">for</span> custom board</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/BSP/LED.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/Include/led.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/Include/config_led.h"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Source/led.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> <component Cgroup=<span class="stringliteral">"I/O"</span> Csub=<span class="stringliteral">"GPIO"</span> condition=<span class="stringliteral">"MyDevBoard Board Setup"</span>></div> +<div class="line"> <description>GPIO code <span class="keywordflow">for</span> custom board</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Docs/BSP/GPIO.htm"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/Include/gpio.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"MySWComp/Include/config_gpio.h"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"MySWComp/Source/gpio.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"></bundle></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.1"</span>></div> +<div class="line"> Board support bundle added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> script. Afterwards, install the Pack in your development tool and observe the differences to version 1.0.0.</p> +<div class="image"> +<img src="BSPBundleDisplay.png" alt="BSPBundleDisplay.png"/> +<div class="caption"> +BSP bundle display in development tools</div></div> + </li> +</ol> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/createPackPublish.html b/docs/Pack/html/createPackPublish.html new file mode 100644 index 0000000..4a5207a --- /dev/null +++ b/docs/Pack/html/createPackPublish.html @@ -0,0 +1,192 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Publish a Pack</title> +<title>CMSIS-Pack: Publish a Pack</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('createPackPublish.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Publish a Pack </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>There are multiple ways to distribute a software pack:</p> +<h1><a class="anchor" id="cp_LocalInstallation"></a> +Local Installation</h1> +<p>The easiest way to distribute a software pack is attaching it to an email or using other means of electronic distribution (for example using a company internal file server). The installation of a software pack is usually triggered by double-clicking the Pack file. The pack management tool is invoked and the Pack is installed on the local machine. After installation, the Pack will be shown in the list of installed packs (tool dependent). If the PDSC file does not contain a valid <code><url></code> element, a manual installation is required to update a software pack. Otherwise, pack management tools can check for updates on the server or the local machine that is specified by <code><url></code>.</p> +<div class="image"> +<img src="LocalInstallation.png" alt="LocalInstallation.png"/> +<div class="caption"> +Local installation and update from URL</div></div> + <dl class="section note"><dt>Note</dt><dd>For automatic updates on a local machine, specify the <code><url></code> using the <a href="https://en.wikipedia.org/wiki/File_URI_scheme" target="_blank">file URI scheme</a>.</dd></dl> +<h1><a class="anchor" id="cp_WebDownload"></a> +Web Download</h1> +<p>Any web server can be used to host a software pack (specified by the <code><url></code> element in the PDSC file). At this location, the following files can be present:</p> +<ol type="1"> +<li><b><vendor></b>.<b><name></b>.pdsc [required]: pack description file.</li> +<li><b><vendor></b>.<b><name></b>.<b><version></b>.pack [required]: pack file where <b><version></b> refers to the latest version specified in the PDSC file.</li> +<li><b><vendor></b>.pidx [optional]: list with all packs hosted and maintained by the vendor (refer to <a class="el" href="packIndexFile.html#pidxFile">Package Index File (pidx)</a>)</li> +<li><b><vendor></b>.vidx [optional]: list of package index files known to the vendor (refer to <a class="el" href="packIndexFile.html#vidxFile">Vendor Index File (vidx)</a>)</li> +</ol> +<p>All previous versions listed in the <b><releases></b> section of the PDSC file should be present in that folder as well. This will enable customers to revert updates or to be able to download a specific version of a software pack (for code maintenance purposes for example).</p> +<div class="image"> +<img src="WebInstallation.png" alt="WebInstallation.png"/> +<div class="caption"> +Web installation and update</div></div> + <dl class="section note"><dt>Note</dt><dd><ul> +<li>It is important to understand how the <url> element works. If you specify a URL, for example <a href="http://www.keil.com/pack/" target="_blank">www.keil.com/pack</a>, then you have to make the PDSC file and the corresponding PACK file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:<br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.pdsc" target="_blank">www.keil.com/pack/ARM.CMSIS.pdsc</a> and <br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.5.0.1.pack" target="_blank">www.keil.com/pack/ARM.CMSIS.5.0.1.pack</a> and <br/> + <a href="http://www.keil.com/pack/ARM.CMSIS.5.0.0.pack" target="_blank">www.keil.com/pack/ARM.CMSIS.5.0.0.pack</a> and ... <br/> + At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.</li> +<li>If the URL or the PDSC/Pack files become unavailable (temporarily or permanently), users will not be able to retrieve updates.</li> +<li>Do not replace PDSC/Pack files without updating the version number because the Pack management tools will not recognize the update unless the version has been changed.</li> +<li>Older packs should remain available.</li> +</ul> +</dd></dl> +<h1><a class="anchor" id="cp_KeilComPack"></a> +Publishing on www.keil.com/pack</h1> +<p>Arm maintains a list of available software packs. If you wish to add your packs to that list, send either your vendor.pidx file or your PDSC file to the following email address: <a href="#" onclick="location.href='mai'+'lto:'+'CMS'+'IS'+'@ar'+'m.'+'com'; return false;">CMSIS@arm.com</a>. The PIDX file will be processed and all referenced PDSC files will be validated. The following content will be processed in order to generate the web site (<a href="http://www.keil.com/dd2/pack">www.keil.com/dd2/pack</a>) and index file (<a href="http://www.keil.com/pack/index.pidx">www.keil.com/pack/index.pidx</a>):</p> +<ul> +<li>Version</li> +<li>Release Notes</li> +<li>Devices</li> +<li>Boards</li> +<li>Examples</li> +<li>Software Components</li> +</ul> +<p>Please allow up to seven working days for the process. If the files contain any errors, you will be notified. Otherwise, the information is added to the index server.</p> +<h1><a class="anchor" id="cp_PackRehosting"></a> +Moving a pack from one URL to another</h1> +<p>Sometimes, it is necessary to rehost a pack. This implies that you need to change the <url> element in the PDSC file. To ensure that the pack is found by the indexer of the keil.com server, follow this procedure:</p> +<ul> +<li>Create a new version of the pack: update the PDSC file with the new URL ("url_B") and make sure to increment the version</li> +<li>Place a copy of this latest PDSC at url_B and url_A (the original URL).</li> +<li>Place a copy of the new pack in url_B (only)</li> +<li>Copy all packs from url_A to url_B</li> +<li>Inform Arm about the new URL by either<ul> +<li>updating the <vendor>.pidx with url_B for this pack <em>or</em> </li> +<li>sending a link to the PDSC file via email if your company does not maintain a <vendor>.pidx</li> +</ul> +</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>PDSC and pack versions need to be accessible from the same new URL</li> +<li>You must keep url_A alive as is. But there is no need to maintain/update url_A going forward otherwise users with an old PDSC file will no longer find the pack versions. </li> +</ul> +</dd></dl> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/createPackUtil.html b/docs/Pack/html/createPackUtil.html new file mode 100644 index 0000000..4dde94c --- /dev/null +++ b/docs/Pack/html/createPackUtil.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Utilities for Creating Packs</title> +<title>CMSIS-Pack: Utilities for Creating Packs</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('createPackUtil.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Utilities for Creating Packs </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Software Packs are ZIP files that contain a <a class="el" href="packFormat.html">PDSC</a> file and other content, that is specified within the PDSC file in XML. While the PDSC file can be created with any text editor, some of the contents have to be generated by additional programs. Also, verification of a PDSC file requires the help of additional tools. This section gives and overview over programs that are either part of the CMSIS Pack or are available for download on the Internet.</p> +<ul> +<li><a class="el" href="packChk.html">packChk.exe</a> is part of the CMSIS Pack and is used to check the validity of a PDSC file.</li> +<li>Validation of SVD files with <a href="../../SVD/html/svd_validate_file_pg.html"><b>SVDConv.exe</b></a> is required for SVD files that are part of <a class="el" href="index.html#SWPackVariants">Device Family Packs</a>.</li> +<li>Several <a class="el" href="cp_Editors.html">XML Editors</a> can verify XML files using the XML schema files that are part of the CMSIS Pack.</li> +<li><a class="el" href="cp_ZIPTool.html">ZIP Compression Tools</a> create the actual ZIP archive of a Software Pack. </li> +</ul> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/createPackUtil.js b/docs/Pack/html/createPackUtil.js new file mode 100644 index 0000000..adcc064 --- /dev/null +++ b/docs/Pack/html/createPackUtil.js @@ -0,0 +1,8 @@ +var createPackUtil = +[ + [ "packChk.exe", "packChk.html", [ + [ "Error and Warning Messages", "packChk.html#packChkMessages", null ] + ] ], + [ "XML Editors", "cp_Editors.html", null ], + [ "ZIP Compression Tools", "cp_ZIPTool.html", null ] +];
\ No newline at end of file diff --git a/docs/Pack/html/createPack_DFP.html b/docs/Pack/html/createPack_DFP.html new file mode 100644 index 0000000..eea9e37 --- /dev/null +++ b/docs/Pack/html/createPack_DFP.html @@ -0,0 +1,536 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Pack with Device Support</title> +<title>CMSIS-Pack: Pack with Device Support</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('createPack_DFP.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Pack with Device Support </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> that contains a <a class="el" href="pdsc_devices_pg.html"><devices></a> element is called Device Family Pack (DFP). A DFP may contain additional <b>Software Components</b> or <b>Example Projects</b> or any combination of those. The typical content of a DFP is:</p> +<ul> +<li><a class="el" href="createPack_DFP.html#cp_DeviceProperties">Device Properties</a> explaining the capabilities of a device or a device family in more detail.</li> +<li><a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a> that configure the device and basic device drivers, in particular:<ul> +<li>CMSIS-compliant <a class="el" href="createPack_DFP.html#cp_System_Startp">System and Startup Files</a> required to setup the C run-time library, device clock, and memory interface.</li> +<li>Peripheral Driver Interfaces that provide software routines for physical device peripherals used by middleware stacks. Drivers may adhere to the <a href="http://www.keil.com/cmsis/driver" class="el" target="_blank">CMSIS-Driver</a> standard.</li> +</ul> +</li> +<li>One or more <a class="el" href="createPack_DFP.html#cp_SVD">System View Description Files</a> describing the programmer's view of the device's peripherals.</li> +<li><a class="el" href="createPack_DFP.html#cp_FlashProgrammingAlgorithm">Flash Programming Algorithms</a> for erasing and downloading code into on-chip Flash.</li> +<li><a class="el" href="createPack_DFP.html#cp_debugdescription">Debug Descriptions</a> enable tool-agnostic debug and trace configurations.</li> +<li><a class="el" href="cp_SWComponents.html#cp_Examples">Example Projects</a> that show the usage of the device and its peripherals.</li> +<li><a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> that can be used as a starting point for application development.</li> +</ul> +<p>This section explains how to create a DFP. Initially, the PDSC file in the DFP only describes devices. This DFP is then extended to contain also SVD files, Flash algorithms, and device related software components such as system and HAL files. Example projects and code templates may be added as described in the section <a class="el" href="cp_SWComponents.html">Pack with Software Components</a>.</p> +<h2>DFP Use Cases </h2> +<p>A <a class="el" href="pdsc_devices_pg.html">Device Family Pack (DFP)</a> may be provided by a Silicon Vendor and is used to extend development tools with support for new devices. In general, the DFP enables Silicon Vendors to distribute tool independent device support for their device families.<br/> +DFPs can also be used to provide information for the display on <b>web sites</b>. One example is the new device database on <a href="http://www.keil.com/dd2/" class="el" target="_blank">www.keil.com/dd2/</a>:</p> +<p><a class="anchor" id="DevWebSite"></a></p> +<div class="image"> +<img src="DeviceDatabase2.png" alt="DeviceDatabase2.png"/> +<div class="caption"> +Device information on a web site extracted from a DFP</div></div> + <h2>Steps to Create a DFP </h2> +<div class="image"> +<img src="DFPFlow.png" alt="DFPFlow.png"/> +</div> +<h1><a class="anchor" id="cp_BasicDFP"></a> +Basic Device Family Pack</h1> +<p>In the following sections, a DFP will be created for a fictional device family called <b>MVCM3</b> from the device vendor <b>MyVendor</b>. The device family consists of four member that are separated into two sub-families. The specification of the MVCM3 family is as follows:</p> +<div class="image"> +<img src="MVCM3SpecTable.png" alt="MVCM3SpecTable.png"/> +<div class="caption"> +MVCM3 Device Family Specification</div></div> +<p> <b>Preparations</b></p> +<ol type="1"> +<li>Create a working directory on you PC, for example <b>C:\temp\working_dfp</b>.</li> +<li>Go to the directory <b>\CMSIS\Pack\Tutorials</b> available in the <b>ARM::CMSIS</b> Pack installation. Please consult your development tool's documentation for more information on the Pack installation directory structure. In a standard µVision installation, you will find it below <b>C:\Keil_v5\ARM\Pack\ARM\CMSIS\<em>version</em></b>.</li> +<li>Open the file <b>Pack_with_Device_Support.zip</b>.</li> +<li>Copy the <em>content</em> of the ZIP file's <b>01_Basic_Pack</b> directory into your working directory.</li> +<li>Make sure that files/directories are not write protected (remove read-only flag).</li> +<li>Copy from the directory <b>\CMSIS\Utilities</b> available in the <b>ARM::CMSIS</b> Pack installation the following files into your working directory:<ul> +<li>packChk.exe</li> +<li>PACK.xsd</li> +<li>SVDConv.exe</li> +</ul> +</li> +<li>Open the <b>MyVendor.MVCM3.pdsc</b> file in an editor.</li> +</ol> +<p><b>Code Example</b> </p> +<ol> +<li> +Add a <a class="el" href="pdsc_family_pg.html#element_device"><devices></a> section in the PDSC file with the following: <div class="fragment"><div class="line"><devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"MVCM3 Series"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-M3"</span> DcoreVersion=<span class="stringliteral">"r2p1"</span> Dfpu=<span class="stringliteral">"0"</span> Dmpu=<span class="stringliteral">"0"</span> Dendian=<span class="stringliteral">"Little-endian"</span>/></div> +<div class="line"> <description></div> +<div class="line"> The MVCM3 device family contains an ARM Cortex-M3 processor, running up to 100 MHz with a versatile set of on-chip peripherals.</div> +<div class="line"> </description></div> +<div class="line"> <!-- ************************ Sub-family <span class="stringliteral">'MVCM3100'</span> **************************** --></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"MVCM3100"</span>></div> +<div class="line"> <processor Dclock=<span class="stringliteral">"50000000"</span>/></div> +<div class="line"> <!-- ************************* Device <span class="stringliteral">'MVCM3110'</span> ***************************** --></div> +<div class="line"> <device Dname=<span class="stringliteral">"MVCM3110"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"IROM1"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x4000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"IRAM1"</span> access=<span class="stringliteral">"rw"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x0800"</span> init =<span class="stringliteral">"0"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </device></div> +<div class="line"> <!-- ************************* Device <span class="stringliteral">'MVCM3120'</span> ***************************** --></div> +<div class="line"> <device Dname=<span class="stringliteral">"MVCM3120"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"IROM1"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x8000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"IRAM1"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x1000"</span> init =<span class="stringliteral">"0"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"> <!-- ************************ Sub Family <span class="stringliteral">'MVCM3200'</span> **************************** --></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"MVCM3200"</span>></div> +<div class="line"> <processor Dclock=<span class="stringliteral">"100000000"</span>/></div> +<div class="line"> <!-- ************************* Device <span class="stringliteral">'MVCM3250'</span> ***************************** --></div> +<div class="line"> <device Dname=<span class="stringliteral">"MVCM3250"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"IROM1"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x4000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"IRAM1"</span> access=<span class="stringliteral">"rw"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x0800"</span> init =<span class="stringliteral">"0"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </device></div> +<div class="line"> <!-- ************************* Device <span class="stringliteral">'MVCM3260'</span> ***************************** --></div> +<div class="line"> <device Dname=<span class="stringliteral">"MVCM3260"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"IROM1"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x8000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"IRAM1"</span> access=<span class="stringliteral">"rw"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x1000"</span> init =<span class="stringliteral">"0"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"> </family></div> +<div class="line"></devices></div> +</div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd><ul> +<li><code>Dvendor</code> IDs are not freely selectable. The current set of IDs can be found in the PACK.xsd file (available in the <b>ARM::CMSIS</b> Pack in the <b>CMSIS\Pack\Utilities</b> directory).</li> +<li>All code examples in this and the following sections can be found in the <code>snippets.xml</code> file in the <b>01_Basic_Pack</b> directory.</li> +</ul> +</dd></dl> +</li> +<li> +<p class="startli">Save the PDSC file and generate the Pack file using the <b>gen_pack.bat</b> script. See <a class="el" href="cp_SWComponents.html#cp_GeneratePack">Generate a Pack</a> for further details. Afterwards, install the Pack in your development tool.</p> +<div class="image"> +<img src="BasicDFPDisplay.png" alt="BasicDFPDisplay.png"/> +<div class="caption"> +Display of microcontroller devices in development tools</div></div> + </li> +</ol> +<dl class="section note"><dt>Note</dt><dd>packChk.exe will display <b>M350</b> informations: <pre class="fragment">*** INFO M350: + No 'Startup' found for [Generic:5] 'MVCM3110' () +</pre> We will address this problem in the next section.</dd></dl> +<h1><a class="anchor" id="cp_System_Startp"></a> +System and Startup Files</h1> +<p><a href="../../Core/html/index.html">CMSIS-Core (Cortex-M)</a> defines the following files to be used by an embedded application:</p> +<ul> +<li><code>startup_<device>.s</code> with reset handler and exception vectors. It is executed after reset and calls <code>SystemInit</code> and may contain stack and heap configurations for the user application.</li> +<li><code>system_<device>.c</code> and <code>system_<device>.h</code> with general system configuration information (i.e. for clock and BUS setup).</li> +<li><code><device.h></code> gives access to processor core and all peripherals. This file should be generated out of the <a class="el" href="createPack_DFP.html#cp_SVD">SVD</a> file using <a href="../../SVD/html/svd_SVDConv_pg.html"><b>SVDConv.exe</b></a> to ensure consistency between the header file and what is being displayed by the debugger.</li> +</ul> +<div class="image"> +<img src="SystemStartupFiles.png" alt="SystemStartupFiles.png"/> +<div class="caption"> +System and startup files in relation to user code</div></div> + <dl class="section note"><dt>Note</dt><dd><a href="../../Core/html/templates_pg.html">CMSIS-Core (Cortex-M)</a> explains the structure of the system and startup files and how to create them.</dd></dl> +<p>Copy the <em>content</em> of the <b>02_System_and_Startup</b> directory of the <b>Pack_with_Device_Support.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Add a <code><conditions></code> section in your PDSC with the following (the <a class="el" href="cp_SWComponents.html#cp_Conditions">conditions</a> section provides more information on this step): <div class="fragment"><div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"MVCM3 CMSIS-Core"</span>></div> +<div class="line"> <!-- conditions selecting Devices --></div> +<div class="line"> <description>MyVendor MVCM3 Series devices and CMSIS-Core (Cortex-M)</description></div> +<div class="line"> <require Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <require Dvendor=<span class="stringliteral">"Generic:5"</span> Dname=<span class="stringliteral">"MVCM3*"</span>/></div> +<div class="line"></condition></div> +<div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"Startup ARM"</span>></div> +<div class="line"> <description>Startup assembler file <span class="keywordflow">for</span> ARMCC</description></div> +<div class="line"> <require Tcompiler=<span class="stringliteral">"ARMCC"</span>/></div> +<div class="line"></condition></div> +<div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"Startup GCC"</span>></div> +<div class="line"> <description>Startup assembler file <span class="keywordflow">for</span> GCC</description></div> +<div class="line"> <require Tcompiler=<span class="stringliteral">"GCC"</span>/></div> +<div class="line"></condition></div> +<div class="line"><condition <span class="keywordtype">id</span>=<span class="stringliteral">"Startup IAR"</span>></div> +<div class="line"> <description>Startup assembler file <span class="keywordflow">for</span> IAR</description></div> +<div class="line"> <require Tcompiler=<span class="stringliteral">"IAR"</span>/></div> +<div class="line"></condition></div> +</div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>The assembler based <code>startup_<device>.s</code> file is tool dependent. Therefore, separate conditions for the various tool vendors are required. </dd></dl> +</li> +<li> +Add a <code><components></code> section in your PDSC with the following (the <a class="el" href="cp_SWComponents.html#cp_Components">components</a> section provides more information on this step): <div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span> Cversion=<span class="stringliteral">"1.0.0"</span> condition=<span class="stringliteral">"MVCM3 CMSIS-Core"</span>></div> +<div class="line"> <description>System Startup <span class="keywordflow">for</span> MyVendor MVCM3 Series</description></div> +<div class="line"> <files></div> +<div class="line"> <!-- include folder --></div> +<div class="line"> <file category=<span class="stringliteral">"include"</span> name=<span class="stringliteral">"Device/Include/"</span>/></div> +<div class="line"></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/ARM/startup_MVCM3xxx.s"</span> attr=<span class="stringliteral">"config"</span> condition=<span class="stringliteral">"Startup ARM"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/GCC/startup_MVCM3xxx.S"</span> attr=<span class="stringliteral">"config"</span> condition=<span class="stringliteral">"Startup GCC"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/IAR/startup_MVCM3xxx.s"</span> attr=<span class="stringliteral">"config"</span> condition=<span class="stringliteral">"Startup IAR"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/system_MVCM3xxx.c"</span> attr=<span class="stringliteral">"config"</span> version=<span class="stringliteral">"1.0.0"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.1"</span>></div> +<div class="line"> Startup files included</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> script. Afterwards, install the Pack in your development tool and create a new project. Select the software components <b>::CMSIS:CORE</b> and <b>::Device:Startup</b> for the project:</p> +<div class="image"> +<img src="StartupSystemFilesAdded.png" alt="StartupSystemFilesAdded.png"/> +<div class="caption"> +Startup and system files added to a project</div></div> + </li> +</ol> +<dl class="section note"><dt>Note</dt><dd>packChk.exe will display <b>M350</b> informations: <pre class="fragment">*** INFO M353: .\Files\MyVendor.MVCM3.pdsc (Line 98) + No 'Device Headerfile' File found for Component 'Startup' (MyVendor::Device.Startup:1.0.0) for '[Generic:5] MVCM3110' (ARMCC) +</pre> We will address this problem in the next section.</dd></dl> +<h1><a class="anchor" id="cp_SVD"></a> +System View Description File</h1> +<p><a href="http://www.keil.com/cmsis/svd" class="el" target="_blank">CMSIS-SVD</a> formalizes the description of the programmer's view for the system contained in ARM Cortex-M processor-based microcontrollers, in particular the memory mapped registers of the peripherals. The level of detail contained in system view descriptions is comparable to what is found in device reference manuals published by silicon vendors. The information ranges from a high level functional description of a peripheral all the way down to the definition and purpose of an individual bit field in a memory mapped register. CMSIS-SVD files are developed and maintained by the silicon vendors. The XML based SVD file is the input for <a href="../../SVD/html/svd_SVDConv_pg.html"><b>SVDConv.exe</b></a> that generates the tool dependent debug view and the device header file.</p> +<div class="image"> +<img src="SVDFlow.png" alt="SVDFlow.png"/> +<div class="caption"> +SVD file conversion flow</div></div> +<p> Copy the <em>content</em> of the <b>03_SVD_File</b> directory of the <b>Pack_with_Device_Support.zip</b> file to the <b>Files</b> directory in your working environment: </p> +<ol> +<li> +Open the file MVCM3xxx.svd in the <b>Files\SVD</b> directory in an editor and change the following: <div class="fragment"><div class="line"><device schemaVersion=<span class="stringliteral">"1.1"</span> xmlns:xs=<span class="stringliteral">"http://www.w3.org/2001/XMLSchema-instance"</span> xs:noNamespaceSchemaLocation=<span class="stringliteral">"CMSIS-SVD.xsd"</span> ></div> +<div class="line"> <vendor>MyVendor</vendor> <!-- device vendor name --></div> +<div class="line"> <vendorID>Generic</vendorID> <!-- device vendor <span class="keywordtype">short</span> name --></div> +<div class="line"> <name>MVCM3xxx</name> <!-- name of part--></div> +<div class="line"> <series>MVCM3xxx</series> <!-- device series the device belongs to --></div> +<div class="line"> <version>1.2</version> <!-- version of <span class="keyword">this</span> description, adding CMSIS-SVD 1.1 tags --></div> +<div class="line"> <description>Arm 32-bit Cortex-M3 Microcontroller based device, CPU clock up to 100 MHz.</description></div> +</div><!-- fragment --> </li> +<li> +Open a command window in your working directory and enter: <pre class="fragment">C:\temp\working_dfp>SVDConv.exe Files\SVD\MVCM3xxx.svd --generate=header –-fields=macro +</pre> </li> +<li> +You should see some output of SVDConv similar to this: <pre class="fragment">CMSIS-SVD SVD Consistency Checker / Header File Generator V2.86g +Copyright (C) 2010 - 2014 Arm Ltd and Arm Germany GmbH. All rights reserved. +Options: "Files\SVD\MVCM3xxx.svd" --generate=header --fields=macro +Reading file: "Files\SVD\MVCM3xxx.svd" + +Decoding using XML SVD Schema V1.1 + +Found 0 Errors and 0 Warnings + +Return Code: 0 (OK) +</pre> Move the generated header file <b>MVCM3xxx.h</b> to the <b>Device\Include</b> directory. </li> +<li> +Add the following two lines at the family level in the PDSC file: <div class="fragment"><div class="line"><compile header=<span class="stringliteral">"Device/Include/MVCM3xxx.h"</span>/></div> +<div class="line"><debug svd=<span class="stringliteral">"SVD/MVCM3xxx.svd"</span>/></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.2"</span>></div> +<div class="line"> SVD and header file included</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> script. Afterwards, install the Pack in your development tool and create a new project. Depending on your development environment, you will be able to see the SVD file included in your project:</p> +<div class="image"> +<img src="SVDIncluded.png" alt="SVDIncluded.png"/> +<div class="caption"> +Project with SVD file</div></div> + <dl class="section note"><dt>Note</dt><dd>For more information on CMSIS-SVD, please visit <a href="http://www.keil.com/cmsis/svd" class="el" target="_blank">www.keil.com/cmsis/svd</a> </dd></dl> +</li> +</ol> +<h1><a class="anchor" id="cp_FlashProgrammingAlgorithm"></a> +Flash Programming Algorithms</h1> +<p><a class="el" href="flashAlgorithm.html">Flash Programming</a> are used to erase or download applications to Flash devices. A DFP usually contains predefined Flash algorithms for programming its supported devices. The page <a class="el" href="algorithmFunc.html">Algorithm Functions</a> explains the mechanisms in more detail.</p> +<p>For the MVCM3 device family, two flash algorithms have to be created. MVCM3110/250 have 16 kB of Flash, whereas MVCM3120/260 have 32 kB of Flash memory.</p> +<p>Copy the <em>content</em> of the <b>04_Flash_Programming</b> directory of the <b>Pack_with_Device_Support.zip</b> file to the <b>working</b> directory: </p> +<ol> +<li> +Rename the project file <b>NewDevice.uvproj</b> (in the <b>_Template_Flash</b> directory) to represent the new Flash ROM device name, for example MVCM3XXX_16.uvproj. </li> +<li> +<p class="startli">Open the project with uVision. The selected target (Cortex-M) is fine for the device.</p> +<dl class="section note"><dt>Note</dt><dd>Creating a Flash programming algorithm with <a href="http://www.keil.com/arm/selector.asp" class="el" target="_blank">MDK-Lite</a> is not supported. </dd></dl> +</li> +<li> +<p class="startli">Open the dialog <b>Project - Options for Target - Output</b> and change the content of the field <b>Name of Executable</b> to represent the device, here MCVM3XXX_16.</p> +<div class="image"> +<img src="FPATargetOptions.png" alt="FPATargetOptions.png"/> +<div class="caption"> +Options for Target 'Cortex-M'</div></div> + </li> +<li> +In the real world, you would now start to adapt the programming algorithms in the file <b>FlashPrg.c</b>. For now, only change the device parameters (Device Name, Device Size, and Sector Size) in the <b>FlashDev.c</b> file: <div class="fragment"><div class="line"><span class="keyword">struct </span>FlashDevice const FlashDevice = {</div> +<div class="line"> FLASH_DRV_VERS, <span class="comment">// Driver Version, do not modify!</span></div> +<div class="line"> <span class="stringliteral">"MVCM3110/250 Flash"</span>, <span class="comment">// Device Name </span></div> +<div class="line"> ONCHIP, <span class="comment">// Device Type</span></div> +<div class="line"> 0x00000000, <span class="comment">// Device Start Address</span></div> +<div class="line"> 0x00004000, <span class="comment">// Device Size in Bytes (16kB)</span></div> +<div class="line"> 1024, <span class="comment">// Programming Page Size</span></div> +<div class="line"> 0, <span class="comment">// Reserved, must be 0</span></div> +<div class="line"> 0xFF, <span class="comment">// Initial Content of Erased Memory</span></div> +<div class="line"> 100, <span class="comment">// Program Page Timeout 100 mSec</span></div> +<div class="line"> 3000, <span class="comment">// Erase Sector Timeout 3000 mSec</span></div> +<div class="line"></div> +<div class="line"><span class="comment">// Specify Size and Address of Sectors</span></div> +<div class="line"> 0x002000, 0x000000, <span class="comment">// Sector Size 8kB (2 Sectors)</span></div> +<div class="line"> SECTOR_END</div> +<div class="line">};</div> +</div><!-- fragment --> </li> +<li> +Use <b>Project - Build Target</b> to generate the new Flash programming algorithm. The algorithm will be created in the parent directory of the <b>_Template_Flash</b> directory. </li> +<li> +Copy the output file <b>..\MVCM3XXX_16.FLM</b> to a new subdirectory called <b>Files\Flash</b>. Add these lines to the MVCM3110/250 device sections: <div class="fragment"><div class="line">algorithm name=<span class="stringliteral">"Flash/MVCM3XXX_16.FLM"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x4000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +</div><!-- fragment --> </li> +<li> +Create a <b>MVCM3XXX_32.flm</b> for the MVCM3120/260 devices. </li> +<li> +Add these lines to the MVCM3120/260 device sections: <div class="fragment"><div class="line">algorithm name=<span class="stringliteral">"Flash/MVCM3XXX_32.FLM"</span> start=<span class="stringliteral">"0x00000000"</span> size=<span class="stringliteral">"0x8000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.3"</span>></div> +<div class="line"> Flash Programming Algorithms added</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +<p class="startli">Finally, save the PDSC file and regenerate the Pack file using the <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> script. Afterwards, install the Pack in your development tool. Depending on your development environment, you will be able to see the Flash Programming Algorithms included in your project (either for a new project or by adding it manually to an existing project):</p> +<div class="image"> +<img src="FPADisplay.png" alt="FPADisplay.png"/> +<div class="caption"> +Display of Flash Programming Algorithm</div></div> + <dl class="section note"><dt>Note</dt><dd>The page <a class="el" href="flashAlgorithm.html">Flash Programming</a> gives more information on the subject. </dd></dl> +</li> +</ol> +<h1><a class="anchor" id="cp_debugdescription"></a> +Debug Descriptions</h1> +<h1><a class="anchor" id="cp_DeviceProperties"></a> +Device Properties</h1> +<p>To limit redundancy, devices can be organized in two hierarchy groups:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_family">family</a>: the attributes of a device family which includes also the processor.</li> +<li><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a>: attributes of an optional sub-family; this adds or modifies features of a family.</li> +</ul> +<p>Parameters of each single device are defined in:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_device">device</a>: attributes of a specific silicon device</li> +<li><a class="el" href="pdsc_family_pg.html#element_variant">variant</a>: attributes of a device variant (for example, with different package or temperature range) or an OEM device or board that integrates the device.</li> +</ul> +<p>A device is described by the following properties:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_description">description</a>: textual device description</li> +<li><a class="el" href="pdsc_family_pg.html#element_feature">feature</a>: categorized list of device peripherals and features. This list is used on <a class="el" href="createPack_DFP.html#DevWebSite">web sites</a> for the display of device features.</li> +<li><a class="el" href="pdsc_family_pg.html#element_book">book</a>: documentation about the device and its processor(s)</li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">processor</a>: processor and processor features embedded in the device</li> +<li><a class="el" href="pdsc_family_pg.html#element_compile">compile</a>: device specific general settings for the build tools</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a>: default settings for a debug connection</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a>: debug port description of the device for the debugger to configure a debug connection.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debug">debug</a>: device specific information for the debugger to configure a debug connection including System View Description files.</li> +<li><a class="el" href="pdsc_family_pg.html#element_trace">trace</a>: device specific information for the debugger to configure trace.</li> +<li><a class="el" href="pdsc_family_pg.html#element_memory">memory</a>: memory layout of the device for internal and external RAM and ROM regions</li> +<li><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a>: device specific Flash programming algorithms</li> +</ul> +<p>A device inherits all specifications from both the family and sub-family levels. Some properties are required to be unique. For example, the name of the SVD file attribute of the <b><debug></b> property. Therefore, the SVD file specified on the family level can be redefined by the attribute on the sub-family or device level. Other information like the <description> and <feature> entries are adding up, starting with the information from the family and sub-family level and finalizing with the information on the device level.</p> +<p>The following shows how to specify the device properties for the MVCM3110 device (refer to the specification shown in <a class="el" href="createPack_DFP.html#cp_BasicDFP">Basic Device Family Pack</a>). The other members of the family are specified accordingly.</p> +<p>Copy the <em>content</em> of the <b>05_Device_Properties</b> directory of the <b>Pack_with_Device_Support.zip</b> file to the <b>Files</b> directory of your working environment: </p> +<ol> +<li> +The <b>MVCM3 Series</b> family properties <a class="el" href="pdsc_family_pg.html#element_processor">processor</a>, <a class="el" href="pdsc_family_pg.html#element_compile">compile</a>, <a class="el" href="pdsc_family_pg.html#element_description">description</a>, and <a class="el" href="pdsc_family_pg.html#element_debug">debug</a> are already specified. There are additional common properties that can be specified on the family level: <a class="el" href="pdsc_family_pg.html#element_book">book</a> and <a class="el" href="pdsc_family_pg.html#element_feature">feature</a>. Add the following lines to the PDSC file in the <b><family></b> section: <div class="fragment"><div class="line"><book name=<span class="stringliteral">"Docs/dui0552a_cortex_m3_dgug.pdf"</span> title=<span class="stringliteral">"Cortex-M3 Generic User Guide"</span>/></div> +<div class="line"><book name=<span class="stringliteral">"Docs/MVCM3XXX_Datasheet.pdf"</span> title=<span class="stringliteral">"MVCM3 Series Datasheet"</span>/></div> +<div class="line"><book name=<span class="stringliteral">"Docs/MVCM3XXX_Product_Brief.pdf"</span> title=<span class="stringliteral">"MVCM3 Product Brief"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"ExtInt"</span> n=<span class="stringliteral">"16"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"105"</span> name=<span class="stringliteral">"Extended Temperature Range"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"VCC"</span> n=<span class="stringliteral">"2.5"</span> m=<span class="stringliteral">"3.6"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"RTC"</span> n=<span class="stringliteral">"32768"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"WDT"</span> n=<span class="stringliteral">"1"</span>/></div> +</div><!-- fragment --> </li> +<li> +The <b>MVCM31xx</b> sub-family has some features that are common for the two member devices. Please add the following code to the MVCM31100 <b><subFamily></b> section: <div class="fragment"><div class="line"><feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"26"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"I2C"</span> n=<span class="stringliteral">"1"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"UART"</span> n=<span class="stringliteral">"4"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"6"</span> m=<span class="stringliteral">"32"</span>/></div> +<div class="line"><feature type=<span class="stringliteral">"QFP"</span> n=<span class="stringliteral">"32"</span>/></div> +</div><!-- fragment --> </li> +<li> +The <b>MVCM3110</b> device has some features that are unique to that device. Please add the following code to the MVCM3110 <b><device></b> section: <div class="fragment"><div class="line"><feature type=<span class="stringliteral">"PWM"</span> n=<span class="stringliteral">"2"</span> m=<span class="stringliteral">"16"</span>/></div> +</div><!-- fragment --> </li> +</ol> +<h2><a class="anchor" id="cp_DeviceSWComp"></a> +Device Specific Software Components</h2> +<p>Finally, <a class="el" href="cp_SWComponents.html#cp_Components">software components</a> and <a class="el" href="cp_SWComponents.html#cp_Examples">example projects</a> need to be added to the DFP. </p> +<ol> +<li> +Add the following lines to the PDSC file in the <b><components></b> section: <div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"HAL"</span> Csub=<span class="stringliteral">"GPIO"</span> Cversion=<span class="stringliteral">"1.0.0"</span> condition=<span class="stringliteral">"MVCM3 CMSIS-Core"</span>></div> +<div class="line"> <description>GPIO HAL <span class="keywordflow">for</span> MyVendor MVCM3 Series</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Device/Include/GPIO.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/GPIO.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +<div class="line"></div> +<div class="line"><component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"HAL"</span> Csub=<span class="stringliteral">"ADC"</span> Cversion=<span class="stringliteral">"1.0.0"</span> condition=<span class="stringliteral">"MVCM3 CMSIS-Core"</span>></div> +<div class="line"> <description>ADC HAL <span class="keywordflow">for</span> MyVendor MVCM3 Series</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Device/Include/ADC.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/ADC.c"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +<div class="line"></div> +<div class="line"><component Cclass=<span class="stringliteral">"CMSIS Driver"</span> Cgroup=<span class="stringliteral">"I2C"</span> Cversion=<span class="stringliteral">"1.0.0"</span> condition=<span class="stringliteral">"MVCM3 CMSIS-Core"</span> maxInstances=<span class="stringliteral">"3"</span>></div> +<div class="line"> <description>I2C Driver <span class="keywordflow">for</span> MVCM3 Series</description></div> +<div class="line"> <RTE_Components_h></div> +<div class="line"><span class="preprocessor"> #define RTE_Drivers_I2C0 </span><span class="comment">/* Driver I2C0 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_I2C1 </span><span class="comment">/* Driver I2C1 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_I2C2 </span><span class="comment">/* Driver I2C2 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span> </RTE_Components_h></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Drivers/I2C/I2C_MVCM3.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Drivers/I2C/I2C_MVCM3.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +<div class="line"></div> +<div class="line"><component Cclass=<span class="stringliteral">"CMSIS Driver"</span> Cgroup=<span class="stringliteral">"UART"</span> Cversion=<span class="stringliteral">"1.0.0"</span> condition=<span class="stringliteral">"MVCM3 CMSIS-Core"</span> maxInstances=<span class="stringliteral">"5"</span>></div> +<div class="line"> <description>UART Driver <span class="keywordflow">for</span> MVCM3 Series</description></div> +<div class="line"> <RTE_Components_h></div> +<div class="line"><span class="preprocessor"> #define RTE_Drivers_UART0 </span><span class="comment">/* Driver UART0 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_UART1 </span><span class="comment">/* Driver UART1 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_UART2 </span><span class="comment">/* Driver UART2 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_UART3 </span><span class="comment">/* Driver UART3 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define RTE_Drivers_UART4 </span><span class="comment">/* Driver UART4 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span> </RTE_Components_h></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Drivers/UART/UART_MVCM3.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Drivers/UART/UART_MVCM3.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"></component></div> +</div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>The first two software components are added to <b>Device::HAL</b> because they are specific to the device family and are not using a published API. The drivers for I2C and UART are adhering to the <a href="http://www.keil.com/cmsis/driver" class="el" target="_blank">CMSIS-Driver</a> specification. Thus, they are added to the Cclass <b>CMSIS Driver</b>. </dd></dl> +</li> +<li> +An example project has also been created. Add an <b><examples></b> section with the following: <div class="fragment"><div class="line"><examples></div> +<div class="line"> <example name=<span class="stringliteral">"Dummy"</span> doc=<span class="stringliteral">"Abstract.txt"</span> folder=<span class="stringliteral">"Examples/dummy"</span>></div> +<div class="line"> <description>Dummy project</description></div> +<div class="line"> <board name=<span class="stringliteral">"MVCM3 Starter Kit"</span> vendor=<span class="stringliteral">"MyVendor"</span>/></div> +<div class="line"> <project></div> +<div class="line"> <environment name=<span class="stringliteral">"uv"</span> load=<span class="stringliteral">"dummy.uvprojx"</span>/></div> +<div class="line"> </project></div> +<div class="line"> <attributes></div> +<div class="line"> <category>Getting Started</category></div> +<div class="line"> </attributes></div> +<div class="line"> </example></div> +<div class="line"></examples></div> +</div><!-- fragment --> </li> +<li> +Add a new version number: <div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.0.4"</span>></div> +<div class="line"> DFP finalized</div> +<div class="line"></release></div> +</div><!-- fragment --> </li> +<li> +Finally, save the PDSC file and regenerate the Pack file using the <a class="el" href="cp_SWComponents.html#cp_GeneratePack">gen_pack.bat</a> script. Afterwards, install the Pack in your development tool. </li> +</ol> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/debug_description.html b/docs/Pack/html/debug_description.html new file mode 100644 index 0000000..7085c9a --- /dev/null +++ b/docs/Pack/html/debug_description.html @@ -0,0 +1,1625 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Debug Description</title> +<title>CMSIS-Pack: Debug Description</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('debug_description.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Debug Description </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Debug descriptions allow silicon vendors to create tool-agnostic debug and trace configurations so that the development environment settings can be reduced to simple checkboxes for selecting for example either standard run/stop debugging or complex instruction tracing.</p> +<h1><a class="anchor" id="das_concept"></a> +Concept</h1> +<p>A set of standardized debug and trace methods are automatically executed by the debugger:</p> +<ul> +<li>Setting breakpoints and watchpoints</li> +<li>Reading memory and registers</li> +<li>Starting and stopping trace</li> +</ul> +<p>Implementation-specific steps can be described using an XML syntax:</p> +<ul> +<li>Special hardware reset</li> +<li>Trace buffer setup</li> +<li>Patch silicon issues</li> +</ul> +<h1><a class="anchor" id="das_elements"></a> +Debug description elements</h1> +<p>A complete debug description for a device consists of the following elements:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> with the child element <a class="el" href="pdsc_family_pg.html#element_dbg_datapatch">dbg_datapatch</a> contains settings for the debug connection and for fixing silicon issues in software.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a> provides the default debugger configuration for a target connection.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a> specifies global debug access variables. They can be used in addition to predefined variables in order to query settings from a debug access sequences.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> with the child elements <a class="el" href="pdsc_family_pg.html#element_dp_jtag">dp_jtag</a>, <a class="el" href="pdsc_family_pg.html#element_dp_swd">dp_swd</a>, and <a class="el" href="pdsc_family_pg.html#element_dp_cjtag">dp_cjtag</a> describes the debug port in detail.</li> +<li><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> with the child elements <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a>, <a class="el" href="pdsc_family_pg.html#element_seq_control">seq_control</a>, and <a class="el" href="pdsc_family_pg.html#element_seq_block">seq_block</a> creates a configuration for debug access sequences.</li> +<li><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> with the child elements <a class="el" href="pdsc_family_pg.html#element_trace_serialwire">trace_serialwire</a>, <a class="el" href="pdsc_family_pg.html#element_trace_traceport">trace_traceport</a>, and <a class="el" href="pdsc_family_pg.html#element_trace_tracebuffer">trace_tracebuffer</a> sets up the trace connection.</li> +</ul> +<h1><a class="anchor" id="pdsc_SequenceNameEnum_pg"></a> +Debug access sequences</h1> +<p>Debug access sequences define the activities of development tools to connect to a device using the debug channel for debugging, tracing, or flash programming. Several debug access sequences are predefined and executed in specific context. Refer to <a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> for details.</p> +<p>Software development tools should implement <a class="el" href="debug_description.html#default_sequences">Default debug access sequences</a>. These default sequences can be overwritten by device specific sequences using the <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element in the <a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> section of the PDSC file. Additionally, a PDSC file can contain user-defined sequences, for example to reuse access sequence fragments:</p> +<ul> +<li><a class="el" href="debug_description.html#usage_of_sequences">Usage of debug access sequences</a> explains how the sequences are used from a development tool point of view.</li> +<li><a class="el" href="debug_description.html#default_sequences">Default debug access sequences</a> lists all debug access sequences that are predefined by the CMSIS-Pack standard and shows the details of the default debug access sequences.</li> +<li><a class="el" href="debug_description.html#writing_sequences">Writing debug access sequences</a> explains how to write custom debug access sequences. These can be used to either override default sequences or to define device specific sequences.</li> +</ul> +<h1><a class="anchor" id="usage_of_sequences"></a> +Usage of debug access sequences</h1> +<p>Predefined Debug Access Sequences are used in the following context:</p> +<ul> +<li><b>Connect Debugger to Device</b> is executed when debugging or flash programming with the target starts.</li> +<li><b>Reset Device</b> is executed to reset the target.</li> +<li><b>Verify Code</b> is executed to verify the content after flash programming.</li> +<li><b>Disconnect Debugger</b> is executed when debugging or flash programming with the target stops.</li> +</ul> +<p>The following diagrams show how the Debug Access Sequences are executed by a development tool.</p> +<p><b>Connect Debugger to Device</b> is executed when debugging or flash programming with the target starts.</p> +<div class="image"> +<img src="DebugConnect.png" alt="DebugConnect.png"/> +</div> +<p><b>Reset Device</b> is executed to reset the target.</p> +<div class="image"> +<img src="Reset.png" alt="Reset.png"/> +</div> +<p><b>Verify Code</b> is executed to verify the content after flash programming.</p> +<div class="image"> +<img src="CodeVerify.png" alt="CodeVerify.png"/> +</div> +<p><b>Disconnect Debugger</b> is executed when debugging or flash programming with the target stops.</p> +<div class="image"> +<img src="DebugDisconnect.png" alt="DebugDisconnect.png"/> +</div> +<h1><a class="anchor" id="default_sequences"></a> +Default debug access sequences</h1> +<p>Debug access sequences get defined in the <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element. The following table lists the available predefined debug access sequences. <a class="el" href="debug_description.html#default_sequences">Default debug access sequences</a> are executed if they are not overwritten using a <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element. Refer to <a class="el" href="debug_description.html#usage_of_sequences">Usage of debug access sequences</a> for more information about the execution of these sequences.</p> +<p>For debug access sequences marked in <span class="XML-Token">ItalicRed</span>, no default sequence exists. The usage in a debug description requires a related <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element to be present. The other sequences should be implemented in a development tool. They are executed when no sequence definition exists in the PDSC file.</p> +<dl class="section note"><dt>Note</dt><dd>Default debug access sequences read the System Control Space (SCS) of the processor and assume that the SCS offset is implemented as defined in the Armv6-M/Armv7-M/Armv8-M architecture reference manual.</dd></dl> +<table class="cmtable" summary="Enumeration: SequenceNameEnum"> +<tr> +<th>name= </th><th>Description </th></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#debugPortSetup">DebugPortSetup</a> </td><td>Prepare the target debug port for connection; is executed before acquiring access to the debug port.<br/> + May include for example an SWJ-DP switch sequence as defined in the Arm Debug Interface (ADI) Architecture Specification.<br/> + <b>This sequence must not contain debug port/access port register and target memory accesses other than:</b><ul> +<li><b>Reading the <em>DPIDR</em> debug port register to release an SWD connection from its line reset.</b></li> +<li><b>Writing the <em>TARGETSEL</em> debug port register (SWD protocol v2).</b> </li> +</ul> +</td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#debugPortStart">DebugPortStart</a> </td><td>Connect to the target debug port and power it up; is executed after DebugPortSetup.<br/> + The parent <b>debugport</b> is default debug port for this sequence.<br/> + <b>This sequence must not contain access port register and target memory accesses.</b> </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#debugPortStop">DebugPortStop</a> </td><td>Power down and disconnect from target debug port.<br/> + Executed as last step during target disconnect unless another debugger connection to this port is active. The parent <b>debugport</b> is default debug port for this sequence.<br/> + <b>This sequence must not contain access port register and target memory accesses.</b> </td></tr> +<tr> +<td class="XML-Token">DebugDeviceUnlock </td><td>Check if the device is in a locked state and unlock it. Use <b>query</b> command elements for user confirmation.<br/> + Executed after having powered up the debug port. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#debugCoreStart">DebugCoreStart</a> </td><td>Initialize core debug system.<br/> + Executed after having connected and powered up the default debug port for the connection. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#debugCoreStop">DebugCoreStop</a> </td><td>Uninitialized core debug system.<br/> + Executed as last step during disconnect before powering down any debug ports no longer required for concurrent connections. </td></tr> +<tr> +<td class="XML-Token">DebugCodeMemRemap </td><td>Remap memory to execution location.<br/> + Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection). </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetSystem">ResetSystem</a> </td><td>Execute a system-wide reset via software mechanisms. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetProcessor">ResetProcessor</a> </td><td>Execute a processor reset via software mechanisms. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetHardware">ResetHardware</a> </td><td>Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetHardwareAssert">ResetHardwareAssert</a> </td><td>Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetHardwareDeassert">ResetHardwareDeassert</a> </td><td>De-assert a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetCatchSet">ResetCatchSet</a> </td><td>Executed before a target reset to configure the vector catch to stop code execution after the reset.<br/> + The implementation of <b>ResetCatchSet</b> requires an implementation of <b>ResetCatchClear</b> to free any hardware resources used for stopping the core. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="debug_description.html#resetCatchClear">ResetCatchClear</a> </td><td>Executed after a target reset to free hardware resources allocated by <b>ResetCatchSet</b>. </td></tr> +<tr> +<td class="XML-Token">FlashInit </td><td>Executed before starting a flash operation. </td></tr> +<tr> +<td class="XML-Token">FlashUninit </td><td>Executed after a flash operation finished. </td></tr> +<tr> +<td class="XML-Token">FlashEraseSector </td><td>Executed to erase a flash memory sector. </td></tr> +<tr> +<td class="XML-Token">FlashEraseChip </td><td>Executed to erase all on-chip flash memory with target device specific erase technology. If this sequence is not implemented then a debugger can use <b>FlashEraseSector</b> to erase all flash memory. </td></tr> +<tr> +<td class="XML-Token">FlashEraseDone </td><td>Executed after all flash memory erase operations are finished. </td></tr> +<tr> +<td class="XML-Token">FlashProgramPage </td><td>Executed to program a single flash page. </td></tr> +<tr> +<td class="XML-Token">FlashProgramDone </td><td>Executed after all flash programming operations are finished. </td></tr> +<tr> +<td class="XML-Token">TraceStart </td><td>Enable target trace capture.<br/> + Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection as well as after a system-wide reset. </td></tr> +<tr> +<td class="XML-Token">TraceStop </td><td>Disable target trace capture.<br/> + Executed after the debugger disabled and powered down standard CoreSight trace components. </td></tr> +<tr> +<td class="XML-Token">RecoverySupportStart </td><td>Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode. </td></tr> +<tr> +<td class="XML-Token">RecoverySupportStop </td><td>Executed after step or run command in context of the <b>RecoverySupportStart</b> sequence. </td></tr> +<tr> +<td class="XML-Token">RecoveryAcknowledge </td><td>Debugger acknowledge after recovering from a lost target connection. Can be executed independently from a <b>RecoverySupportStart</b> sequence. </td></tr> +</table> +<h2>Predefined default debug access sequences </h2> +<p>The following sections the show the details of the predefined default debug access sequences.</p> +<h2><a class="anchor" id="debugPortSetup"></a> +DebugPortSetup</h2> +<p>Prepare the target debug port for connection.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortSetup"</span>></div> +<div class="line"> <block></div> +<div class="line"> __var isSWJ = ((__protocol &amp; 0x00010000) != 0);</div> +<div class="line"> __var protType = __protocol &amp; 0x0000FFFF;</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- JTAG Protocol --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"protType == 1"</span>></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Ensure current debug interface is in reset state</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SWJ-DP Switch Sequence SWD to JTAG (0xE73C)</span></div> +<div class="line"> <span class="comment">// Change if SWJ-DP uses deprecated switch code (0xAEAE)</span></div> +<div class="line"> DAP_SWJ_Sequence(16, 0xE73C);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Ensure JTAG interface is reset</span></div> +<div class="line"> DAP_SWJ_Sequence(6, 0x3F);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// JTAG "Soft" Reset</span></div> +<div class="line"> DAP_JTAG_Sequence(6, 1, 0x3F);</div> +<div class="line"> DAP_JTAG_Sequence(1, 0, 0x01);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <!-- SWD Protocol --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"protType == 2"</span>></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Ensure current debug interface is in reset state</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SWJ-DP Switch Sequence JTAG to SWD (0xE79E)</span></div> +<div class="line"> <span class="comment">// Change if SWJ-DP uses deprecated switch code (0xEDB6)</span></div> +<div class="line"> DAP_SWJ_Sequence(16, 0xE79E);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Enter SWD Line Reset State</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); <span class="comment">// &gt; 50 cycles SWDIO/TMS High</span></div> +<div class="line"> DAP_SWJ_Sequence(3, 0x00); <span class="comment">// At least 2 idle cycles (SWDIO/TMS Low)</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Enter SWD Line Reset State</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); <span class="comment">// &gt; 50 cycles SWDIO/TMS High</span></div> +<div class="line"> DAP_SWJ_Sequence(3, 0x00); <span class="comment">// At least 2 idle cycles (SWDIO/TMS Low)</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Read DPIDR to enable SWD interface (SW-DPv1 and SW-DPv2)</span></div> +<div class="line"> ReadDP(0x0);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugPortStart"></a> +DebugPortStart</h2> +<p>Connect to the target debug port and power it up.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortStart"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> __var SW_DP_ABORT = 0x0;</div> +<div class="line"> __var DP_CTRL_STAT = 0x4;</div> +<div class="line"> __var DP_SELECT = 0x8;</div> +<div class="line"> __var powered_down = 0;</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Switch to DP Register Bank 0</span></div> +<div class="line"> WriteDP(DP_SELECT, 0x00000000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Read DP CTRL/STAT Register and check if CSYSPWRUPACK and CDBGPWRUPACK bits are set</span></div> +<div class="line"> powered_down = ((ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"powered_down"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Request Debug/System Power-Up</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x50000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Wait <span class="keywordflow">for</span> Power-Up Request to be acknowledged --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> <!-- JTAG Specific Part of sequence --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"(__protocol &amp; 0xFFFF) == 1"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)</span></div> +<div class="line"> <span class="comment">// Additionally clear STICKYORUN, STICKYCMP, and STICKYERR bits by writing '1'</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x50000F32);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <!-- SWD Specific Part of sequence --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"(__protocol &amp; 0xFFFF) == 2"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x50000F00);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Clear WDATAERR, STICKYORUN, STICKYCMP, and STICKYERR bits of CTRL/STAT Register by write to ABORT register</span></div> +<div class="line"> WriteDP(SW_DP_ABORT, 0x0000001E);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugPortStop"></a> +DebugPortStop</h2> +<p>Power down and disconnect from target debug port.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortStop"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var DP_CTRL_STAT = 0x4;</div> +<div class="line"> __var DP_SELECT = 0x8;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Switch to DP Register Bank 0</span></div> +<div class="line"> WriteDP(DP_SELECT, 0x00000000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Power Down Debug port</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x00000000);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugCoreStart"></a> +DebugCoreStart</h2> +<p>Initialize core debug system.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugCoreStart"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Enable Core Debug via DHCSR</span></div> +<div class="line"> Write32(DHCSR_Addr, 0xA05F0001);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugCoreStop"></a> +DebugCoreStop</h2> +<p>Un-initialize core debug system.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugCoreStop"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable Core Debug via DHCSR</span></div> +<div class="line"> Write32(DHCSR_Addr, 0xA05F0000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable DWT and ITM blocks, DebugMonitor handler,</span></div> +<div class="line"> <span class="comment">// halting debug traps, and Reset Vector Catch.</span></div> +<div class="line"> Write32(DEMCR_Addr, 0x00000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetSystem"></a> +ResetSystem</h2> +<p>Execute a system-wide reset via software mechanisms.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetSystem"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in Armv6-M/Armv7-M.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var AIRCR_Addr = SCS_Addr + 0xD0C;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SYSRESETREQ via AIRCR</span></div> +<div class="line"> Write32(AIRCR_Addr, 0x05FA0004);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- Reset Recovery: Wait <span class="keywordflow">for</span> DHCSR.S_RESET_ST bit to clear on read --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(Read32(DHCSR_Addr) &amp; 0x02000000)"</span> timeout=<span class="stringliteral">"500000"</span>/></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetProcessor"></a> +ResetProcessor</h2> +<p>Execute a processor reset via software mechanisms.</p> +<dl class="section note"><dt>Note</dt><dd>This Default Debug Access Sequence is empty for Armv6-M and Armv8-M based processors.</dd></dl> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetProcessor"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in Armv7-M.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var AIRCR_Addr = SCS_Addr + 0xD0C;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute VECTRESET via AIRCR</span></div> +<div class="line"> Write32(AIRCR_Addr, 0x05FA0001);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Reset Recovery: Wait <span class="keywordflow">for</span> DHCSR.S_RESET_ST bit to clear on read --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(Read32(DHCSR_Addr) &amp; 0x02000000)"</span> timeout=<span class="stringliteral">"500000"</span>/></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardware"></a> +ResetHardware</h2> +<p>Execute a system-wide reset via the dedicated debugger reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardware"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> __var canReadPins = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// De-assert nRESET line</span></div> +<div class="line"> canReadPins = (DAP_SWJ_Pins(0x00, nReset, 0) != 0xFFFFFFFF);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Keep reset active <span class="keywordflow">for</span> 50 ms --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"50000"</span>/></div> +<div class="line"></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"canReadPins"</span>></div> +<div class="line"> </div> +<div class="line"> <!-- Assert nRESET line and wait max. 1s <span class="keywordflow">for</span> recovery --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!canReadPins"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Assert nRESET line</span></div> +<div class="line"> DAP_SWJ_Pins(nReset, nReset, 0);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Wait 100ms <span class="keywordflow">for</span> recovery <span class="keywordflow">if</span> nRESET not readable --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"100000"</span>/></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardwareAssert"></a> +ResetHardwareAssert</h2> +<p>Assert a system-wide reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardwareAssert"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// De-assert nRESET line to activate the hardware reset</span></div> +<div class="line"> DAP_SWJ_Pins(0, nReset, 0);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardwareDeassert"></a> +ResetHardwareDeassert</h2> +<p>De-Assert a system-wide reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardwareDeassert"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> __var canReadPins = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Assert nRESET line and check if nRESET is readable</span></div> +<div class="line"> canReadPins = (DAP_SWJ_Pins(nReset, nReset, 0) != 0xFFFFFFFF);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- Wait max. 1s <span class="keywordflow">for</span> nRESET to recover from reset <span class="keywordflow">if</span> readable--></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"canReadPins"</span> <span class="keywordflow">while</span>=<span class="stringliteral">"(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> <!-- Wait 100ms <span class="keywordflow">for</span> recovery <span class="keywordflow">if</span> nRESET not readable --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!canReadPins"</span> <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"100000"</span>/></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetCatchSet"></a> +ResetCatchSet</h2> +<p>Configure the target to stop code execution after a reset.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetCatchSet"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined</span></div> +<div class="line"> <span class="comment">// in Armv6-M/Armv7-M. Reimplement this sequence</span></div> +<div class="line"> <span class="comment">// if the SCS is located at a different offset.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> __var value = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Enable Reset Vector Catch in DEMCR</span></div> +<div class="line"> value = Read32(DEMCR_Addr);</div> +<div class="line"> Write32(DEMCR_Addr, (value | 0x00000001));</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Read DHCSR to clear potentially set DHCSR.S_RESET_ST bit</span></div> +<div class="line"> Read32(DHCSR_Addr);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetCatchClear"></a> +ResetCatchClear</h2> +<p>Free hardware resources allocated by ResetCatchSet.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetCatchClear"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined</span></div> +<div class="line"> <span class="comment">// in Armv6-M/Armv7-M. Reimplement this sequence</span></div> +<div class="line"> <span class="comment">// if the SCS is located at a different offset.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> __var value = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable Reset Vector Catch in DEMCR</span></div> +<div class="line"> value = Read32(DEMCR_Addr);</div> +<div class="line"> Write32(DEMCR_Addr, (value &amp; (~0x00000001)));</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h1><a class="anchor" id="nonstdExamples"></a> +Examples of non-standard debug access sequences</h1> +<h2><a class="anchor" id="traceStart"></a> +TraceStart</h2> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"TraceStart"</span>></div> +<div class="line"> <block></div> +<div class="line"> __var value = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">//Enable SWO</span></div> +<div class="line"> value = Read8(0x40004D2A);</div> +<div class="line"> Write8(0x40004D2A, (value | 0x20)); <span class="comment">// Set the register</span></div> +<div class="line"> value = Read8(0x40004D2C);</div> +<div class="line"> Write8(0x40004D2C, (value &amp; (~0x20))); <span class="comment">// Clear the register</span></div> +<div class="line"> </block></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugDeviceUnlock"></a> +DebugDeviceUnlock</h2> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugDeviceUnlock"</span>></div> +<div class="line"> <block></div> +<div class="line"> __var DAuthUserInput = 0;</div> +<div class="line"> __var DAUTHSTATUS_Val = 0;</div> +<div class="line"> __var DHCSR_Val = 0;</div> +<div class="line"> __var SecureDebugEna = 0;</div> +<div class="line"> __var SecureDebugAvail = 0;</div> +<div class="line"> __var DAuthVal = 0;</div> +<div class="line"> __var Status = 0; <span class="comment">// AP Status value</span></div> +<div class="line"> </div> +<div class="line"> DAUTHSTATUS_Val = Read32(0xE000EFB8);</div> +<div class="line"> DHCSR_Val = Read32(0xE000EDF0);</div> +<div class="line"> DAP_Delay(100000);</div> +<div class="line"> SecureDebugAvail = (DAUTHSTATUS_Val &amp; 0x00000020) ? 1 : 0; <span class="comment">// SID: Secure Invasive Debug Implemented</span></div> +<div class="line"> Status = ReadAP(0x0); <span class="comment">// Read Status register</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"SecureDebugAvail"</span> info=<span class="stringliteral">"Configure Debug Authentication if Security Extensions available"</span>></div> +<div class="line"> <block></div> +<div class="line"> SecureDebugEna = ((DHCSR_Val &amp; 0x00100000) || ((DAUTHSTATUS_Val &amp; 0x00000030) == 0x00000030)) ? 1 : 0;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"DAuthFixed"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Debug Authentication as per Debug Configuration File</span></div> +<div class="line"> DAuthVal = DAuthConfig;</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"DAuthFixed == 0"</span>></div> +<div class="line"> <block></div> +<div class="line"> DAuthUserInput = Query(1, <span class="stringliteral">"Enable Secure Debug?"</span>, 3);</div> +<div class="line"> </block></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"DAuthUserInput == 3"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Enable Secure Debug</span></div> +<div class="line"> DAuthVal = 0xF;</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"DAuthUserInput != 3"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Disable Secure Debug</span></div> +<div class="line"> DAuthVal = 0x3;</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"SecureDebugEna"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Setup Secure Debug</span></div> +<div class="line"> Write32(0x50007000, DAuthVal);</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"SecureDebugEna == 0"</span>></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"DAuthVal &amp; 0x4"</span>></div> +<div class="line"> <block></div> +<div class="line"> Query(0, <span class="stringliteral">"Cannot configure Debug Authentication, secure debug disabled! Please reboot FPGA!"</span>, 1);</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </control></div> +<div class="line"> </control></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="hwReset"></a> +User-defined hardware reset sequence</h2> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"HWReset"</span>></div> +<div class="line"> <block></div> +<div class="line"> __var protType = __protocol &amp; 0x0000FFFF;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- JTAG variant--></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"protType == 1"</span>></div> +<div class="line"> <block atomic=<span class="stringliteral">"true"</span>></div> +<div class="line"> <span class="comment">// HW Reset Pulse</span></div> +<div class="line"> DAP_SWJ_Pins(0x00, 0x80, 0);</div> +<div class="line"> DAP_Delay(50000);</div> +<div class="line"> DAP_SWJ_Pins(0x80, 0x80, 0);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Wait at least 200us</span></div> +<div class="line"> DAP_Delay(200);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Register to SSW (Start-up Software) within 2ms</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// JTAG Reset</span></div> +<div class="line"> DAP_JTAG_Sequence(6, 1, 0x7F);</div> +<div class="line"> DAP_JTAG_Sequence(1, 0, 0x01);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Request Debug and System Power-Up</span></div> +<div class="line"> WriteDP(0x4, 0x50000F00);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Init DP SELECT register</span></div> +<div class="line"> WriteDP(0x8, 0x00000000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Init AP CSW register</span></div> +<div class="line"> WriteAP(0x00, 0x23000052);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Set TAR register to DHCSR address</span></div> +<div class="line"> WriteAP(0x4, 0xE000EDF0);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Enable core debug (finishes tool register process)</span></div> +<div class="line"> WriteAP(0xC, 0xA05F0001);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// SSW will configure a HW BP0 at User Code start</span></div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> ...</div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="sequenceExample"></a> +Calling sequences in a control block</h2> +<div class="fragment"><div class="line">...</div> +<div class="line"><control <span class="keywordflow">if</span>=<span class="stringliteral">"siliconRevision &gt;= 3"</span> ></div> +<div class="line"> <block> </div> +<div class="line"> Sequence(<span class="stringliteral">"SecurityUnlock"</span>); <span class="comment">// Execute TAP Sequence according to SiliconRevision</span></div> +<div class="line"> Sequence(<span class="stringliteral">"Set_JTAG_CTL"</span>);</div> +<div class="line"> Sequence(<span class="stringliteral">"WaitIdleState"</span>);</div> +<div class="line"> Sequence(<span class="stringliteral">"SetIDCODES"</span>);</div> +<div class="line"> </block></div> +<div class="line"></control></div> +<div class="line">...</div> +</div><!-- fragment --><h1><a class="anchor" id="writing_sequences"></a> +Writing debug access sequences</h1> +<p>To override a default sequence or to create a custom (default) sequence, you need to write <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> elements. The following sections show how to use the built-in debug access syntax, expressions, and debug access functions to create custom sequences.</p> +<h2><a class="anchor" id="DebugSyntaxRules"></a> +Debug access syntax rules</h2> +<p>Debug accesses are described in <b>block</b> elements of a debug access sequence (<b>sequence</b> element). The following syntax is used for this purpose:</p> +<ul> +<li>The contents of a <b>block</b> element is a series of statements.</li> +<li>Each statement must begin in a new line and is terminated by a <span class="XML-Token">;</span> character.</li> +<li>A typical statement consists of variable, followed by a <span class="XML-Token">=</span> character and an expression, where the <span class="XML-Token">=</span> character is an assignment of the <a class="el" href="debug_description.html#ExpressionType">expression</a> result to the variable: <div class="fragment"><div class="line">variable = expression;</div> +</div><!-- fragment --></li> +<li>Alternatively, a statement can be a sole <a class="el" href="debug_description.html#ExpressionType">expression</a> without storing its result to a variable. <div class="fragment"><div class="line">expression;</div> +</div><!-- fragment --></li> +<li>Comments begin with two slashes (<span class="XML-Token">//</span>) and end with a line break: <div class="fragment"><div class="line"><span class="comment">// Whole line is a comment</span></div> +<div class="line">variable = expression; <span class="comment">// Comment appended to statement</span></div> +</div><!-- fragment --></li> +<li>Variables must be defined using the keyword <span class="XML-Token">__var</span>. The definition must include an initialization of the variable: <div class="fragment"><div class="line">__var variable = 0;</div> +</div><!-- fragment --></li> +<li>Variables can be defined only once within a scope. Scopes begin with entering a debug access sequence or a <b>control</b> element. They are extended to child <b>control</b> elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.<br/> + <b><em>block</em> elements do not begin a new scope.</b> <div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"MySequence"</span>></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 1"</span>></div> +<div class="line"> __var condvar = 1;</div> +<div class="line"> __var myvar1 = 5;</div> +<div class="line"> __var myvar2 = 0;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"condvar"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// __var myvar1 = 2; // Redefinition, not allowed!</span></div> +<div class="line"> __var myvar3 = 2;</div> +<div class="line"> myvar2 = myvar1 + myvar3; <span class="comment">// Assign value (5+2) = 7</span></div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 2"</span>></div> +<div class="line"> myvar1 = myvar2 + 1; <span class="comment">// Variable myvar1 holds the value '8' after this statement</span></div> +<div class="line"> <span class="comment">// myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --></li> +<li>The debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the <b>Sequence</b> debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.</li> +<li>The debug access variable <b>__Result</b> can be modified within a debug access sequence. Its value is held until the debug access sequence returns to the debugger. Hence its value is <b>not</b> pushed on a sequence execution stack when calling into another sequence by the <b>Sequence</b> debug access function.</li> +</ul> +<h2><a class="anchor" id="ExpressionType"></a> +Expression rules</h2> +<p>Expressions are used in various places to describe one of the following:</p> +<ul> +<li>A value as assigned in a <a class="el" href="debug_description.html#DebugSyntaxRules">debug access statement</a>.</li> +<li>A condition to use in the <b>if</b> attribute of a <b>control</b> element.</li> +<li>A condition to use in the <b>while</b> attribute of a <b>control</b> element.</li> +<li>A parameter to a debug access function as described below.</li> +</ul> +<p>An expression may consist of the following:</p> +<ul> +<li>Constant numbers in decimal and hexadecimal representation (prefix <span class="XML-Token">0x</span>).</li> +<li>Arithmetic operators such as <span class="XML-Token">+</span>, <span class="XML-Token">-</span>, <span class="XML-Token">*</span>, <span class="XML-Token">/</span>, and <span class="XML-Token">%</span>.</li> +<li>Bit-arithmetic operators such as <span class="XML-Token">&</span>, <span class="XML-Token">|</span>, <span class="XML-Token">~</span>, <span class="XML-Token">^</span>, <span class="XML-Token">>></span>, and <span class="XML-Token"><<</span>.</li> +<li>Comparison-operators such as <span class="XML-Token">==</span>, <span class="XML-Token">!=</span>, <span class="XML-Token"><</span>, <span class="XML-Token">></span>, <span class="XML-Token"><=</span>, and <span class="XML-Token">>=</span>.</li> +<li>Logic operators such as <span class="XML-Token">!</span>, <span class="XML-Token">&&</span>, <span class="XML-Token">||</span>, and <span class="XML-Token">==</span>.</li> +<li>Conditional expression operations like:<div class="fragment"><div class="line">(x < y) ? a : b </div> +</div><!-- fragment --></li> +<li>Precedence of sub-expressions is indicated by brackets (<span class="XML-Token">(</span>, <span class="XML-Token">)</span>). C-like precedence applies if brackets are omitted.</li> +<li>References to <a class="el" href="debug_description.html#DebugVars">debug access variables</a> for evaluating debug settings.</li> +<li>Calls to <a class="el" href="debug_description.html#DebugFunctions">debug access functions</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>All values used in expressions resolve to 64-bit unsigned integer values.</li> +<li>All logic-operations and comparisons resolve to the value <span class="XML-Token">1</span> if true, to <span class="XML-Token">0</span> otherwise.</li> +<li>XML prohibits the use of the characters <span class="XML-Token">&</span>, <span class="XML-Token"><</span>, and <span class="XML-Token">></span>. Use the corresponding XML entity names instead: <span class="XML-Token">&amp;</span>, <span class="XML-Token">&lt;</span>, and <span class="XML-Token">&gt;</span>.</li> +</ul> +</dd></dl> +<p> </p> +<h2><a class="anchor" id="DebugFunctions"></a> +Debug access functions</h2> +<p>Debug access functions can be called in expressions in order to interact with the target device and the user. Parameters to functions can again be expressions.<br/> + By default, a debugger must abort the execution of a debug access sequence if a function call fails. However, this behavior can be controlled from a sequence by the <b>__errorcontrol</b> <a class="el" href="debug_description.html#DebugVars">debug access variable</a>.<br/> + <br/> + The following table describes the existing debug access functions, their parameters and the debug access variables which are evaluated for the function call.</p> +<table class="cmtable" summary="ExpressionType: debug access functions"> +<tr> +<th>Function </th><th>Description </th></tr> +<tr> +<td style="white-space: nowrap"><pre>Sequence("name")</pre> </td><td><p class="starttd">Execute a debug access sequence. Calling a sequence by this function causes the modifiable debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> to be pushed on a sequence execution stack. Returning from such a call will restore the state of these variables.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>name: Name of the sequence to execute. It must be enclosed by quotes.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#sequenceExample">Calling sequences in a control block</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read8(addr)</pre> </td><td><p class="starttd">Read an 8-bit value from target memory. <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 8-bit value as read from target memory.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#traceStart">TraceStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read16(addr)</pre> </td><td><p class="starttd">Read an 16-bit value from target memory. <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 16-bit value as read from target memory. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read32(addr)</pre> </td><td><p class="starttd">Read an 32-bit value from target memory. <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 32-bit value as read from target memory.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#resetSystem">ResetSystem</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read64(addr)</pre> </td><td><p class="starttd">Read an 64-bit value from target memory. <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 64-bit value as read from target memory. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>ReadAP(addr)</pre> </td><td><p class="starttd">Read a 32-bit value from an access port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: AP register address to read from. Addresses larger than <span class="XML-Token">0xF</span> automatically cause an AP register bank switch.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 32-bit value as read from the AP register.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugDeviceUnlock">DebugDeviceUnlock</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>ReadDP(addr)</pre> </td><td><p class="starttd">Read a 32-bit value from a debug port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: DP register address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 32-bit value as read from the DP register.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write8(addr, val)</pre> </td><td><p class="starttd">Write an 8-bit value to target memory. <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#traceStart">TraceStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write16(addr, val)</pre> </td><td><p class="starttd">Write a 16-bit value to target memory. <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write32(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to target memory. <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugCoreStart">DebugCoreStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write64(addr, val)</pre> </td><td><p class="starttd">Write a 64-bit value to target memory. <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>WriteAP(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to an access port register. Addresses larger than 0xF automatically cause an AP register bank switch.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#hwReset">User-defined hardware reset sequence</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>WriteDP(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to a debug port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugPortStart">DebugPortStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>FlashBufferWrite(addr, offs, len, mode)</pre> </td><td><p class="starttd">Write flash buffer contents into target memory. A debugger fills the flash buffer before it executes a flash programming sequence.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Target memory buffer or register interface address to write the flash buffer contents. Must be a multiple of the number of bytes as specified by access size in parameter <b>mode</b>.</li> +<li>offs: Offset into the flash buffer to start writing from. Must be a multiple of the number of bytes as specified by access size in parameter <b>mode</b>.</li> +<li>len : Number of bytes to write to the target. If <b>offs</b> + <b>len</b> exceeds the flash buffer length set in variable <b>__FlashLen</b>, then the remaining bytes are filled with the pattern as specified by attribute <b>filler</b> of the <a class="el" href="pdsc_family_pg.html#element_flashblock">block</a> element. Must be a multiple of the number of bytes as specified by access size in parameter <b>mode</b>.</li> +<li>mode: Target access mode. The following bit map applies:<ul> +<li>Bit 0..8: Debug access size. One of <span class="XML-Token">8</span>, <span class="XML-Token">16</span>, <span class="XML-Token">32</span> and <span class="XML-Token">64</span>. The specified debug access size must be supported by the target debug access port.</li> +<li>Bit 0: Additionally, set this Bit to <span class="XML-Token">1</span> to increment the target address after each debug write access of the specified size.</li> +<li>Bit 9..63: Reserved</li> +</ul> +</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_Delay(delay)</pre> </td><td><p class="starttd">Debug probe command to wait for a specific delay.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>delay: Wait time in microseconds.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugDeviceUnlock">DebugDeviceUnlock</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_WriteABORT(value)</pre> </td><td><p class="starttd">Debug probe command to write an abort request to the CoreSight ABORT register of the target debug port.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>value: 32-bit value to write into the CoreSight ABORT register.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Pins(pinout, pinselect, pinwait)</pre> </td><td><p class="starttd">Debug probe command to monitor and control the I/O Pins including the nRESET device reset line.<br/> + <b>I/O Pin Mapping</b> for <b>pinout</b>, <b>pinselect</b>, and <b>pinwait</b>:</p> +<ul> +<li>Bit 0: SWCLK/TCK</li> +<li>Bit 1: SWDIO/TMS</li> +<li>Bit 2: TDI</li> +<li>Bit 3: TDO</li> +<li>Bit 5: nTRST</li> +<li>Bit 7: nRESET</li> +</ul> +<p><br/> + The <b>pinwait</b> time is useful in systems where the nRESET pin is implemented as open-drain output. After nRESET is de-asserted by the debugger, external circuit may still hold the target Device under reset for a time. Using the <b>pinwait</b> time, the debugger may monitor selected I/O Pins and wait until they the expected value appears or a timeout expires.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>pinout: Value for selected output pins.</li> +<li>pinselect: Selects which output pins will be modified.</li> +<li>pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout to the closest possible time granularity.<ul> +<li>0 = no wait</li> +<li>1 .. 3000000 = time in microseconds (max 3s)</li> +</ul> +</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The state of the I/O Pins at the end of this operation. If a debugger is not capable of monitoring the I/O Pins, it must return a value of <span class="XML-Token">0xFFFFFFFF</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Clock(val)</pre> </td><td><p class="starttd">Debug probe command to set the clock frequency for JTAG and SWD communication mode.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#resetHardware">ResetHardware</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Sequence(cnt, val)</pre> </td><td><p class="starttd">Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG switch and Dormant operation.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple subsequent <b>DAP_SWJ_Sequence</b> calls. Such a sequence of <b>DAP_SWJ_Sequence</b> commands must be encapsulated in an atomic <b>block</b> to ensure correct execution.</li> +<li>val: Sequence generated on SWDIO/TMS (with clock @SWCLK/TCK), LSB transmitted first.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_JTAG_Sequence(cnt, tms, tdi)</pre> </td><td><p class="starttd">Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64</li> +<li>tms: Fixed TMS value: 0..1</li> +<li>tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with <span class="XML-Token">0</span>s. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Query(type, "message", default)</pre> </td><td><p class="starttd">Query user input. The sequence execution stalls depending on the used <b>type</b>. If the debugger runs in a batch mode, this function returns the value <b>default</b>.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>type: Query type. Can be one of:<ul> +<li><span class="XML-Token">0</span> : <b>Query_Ok</b>, displays an informative message which has to be confirmed by the user. This type allows the result <b>OK</b>.</li> +<li><span class="XML-Token">1</span> : <b>Query_YesNo</b>, displays a query with the allowed results <b>Yes</b> and <b>No</b>.</li> +<li><span class="XML-Token">2</span> : <b>Query_YesNoCancel</b>, displays a query with the allowed results <b>Yes</b>, <b>No</b>, and <b>Cancel</b>.</li> +<li><span class="XML-Token">3</span> : <b>Query_OkCancel</b>, displays a query with the allowed results <b>OK</b> and <b>Cancel</b>.</li> +</ul> +</li> +<li>message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.</li> +<li>default: The default value to return if the debugger runs in batch mode. See <b>Return Values</b> for a list of allowed values.</li> +</ul> +<p><b>Return Value:</b><br/> + The result of the query. The user input maps to the following numbers:</p> +<ul> +<li>Error : <span class="XML-Token">0</span></li> +<li>OK : <span class="XML-Token">1</span></li> +<li>Cancel : <span class="XML-Token">2</span></li> +<li>Yes : <span class="XML-Token">3</span></li> +<li>No : <span class="XML-Token">4</span></li> +</ul> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>QueryValue("message", default)</pre> </td><td><p class="starttd">Query input value from user. The sequence execution stalls until the user has entered a value or canceled the query. This function returns the <b>default</b> value if the user canceled the query or if the debugger runs in a batch mode.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.</li> +<li>default: The default value to return if the user cancels the query or if the debugger runs in batch mode.</li> +</ul> +<p><b>Return Value:</b><br/> + The queried value.</p> +<p class="endtd"></p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Message(type, "format", ...)</pre> </td><td><p class="starttd">Outputs a message to a log window.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>type: Message type. Can be one of:<ul> +<li><span class="XML-Token">0</span> : <b>Info</b>, outputs an informative message.</li> +<li><span class="XML-Token">1</span> : <b>Warning</b>, outputs a warning.</li> +<li><span class="XML-Token">2</span> : <b>Error</b>, outputs an error. Sequence execution aborts.</li> +</ul> +</li> +<li>format: A constant string with the message format. It must not be an expression and it must be enclosed by quotes. The string has the following format:<br/> + <div class="fragment"><div class="line">%[flags][width][.precision]specifier</div> +</div><!-- fragment --><ul> +<li>Specifiers:<ul> +<li><span class="XML-Token">%u</span>: 32-bit unsigned decimal integer.</li> +<li><span class="XML-Token">%llu</span>: 64-bit unsigned decimal integer.</li> +<li><span class="XML-Token">%x</span>: 32-bit unsigned hexadecimal integer, lower case letters.</li> +<li><span class="XML-Token">%llx</span>: 64-bit unsigned hexadecimal integer, lower case letters.</li> +<li><span class="XML-Token">%X</span>: 32-bit unsigned hexadecimal integer, upper case letters.</li> +<li><span class="XML-Token">%llX</span>: 64-bit unsigned hexadecimal integer, upper case letters.</li> +<li><span class="XML-Token">%o</span>: 32-bit unsigned octal integer.</li> +<li><span class="XML-Token">%llo</span>: 64-bit unsigned octal integer.</li> +<li><span class="XML-Token">%b</span>: 32-bit unsigned binary integer.</li> +<li><span class="XML-Token">%llb</span>: 64-bit unsigned binary integer.</li> +<li><span class="XML-Token">%f</span>: Single-precision (32-bit) floating point value.</li> +<li><span class="XML-Token">%Lf</span>: Double-precision (64-bit) floating point value.</li> +<li><span class="XML-Token">%s</span>: Constant character string. Must not be an expression.</li> +<li><span class="XML-Token">%%</span>: Print <span class="XML-Token">%</span> character.</li> +</ul> +</li> +<li>Flags:<ul> +<li><span class="XML-Token">0</span>: Pad the displayed value with zeros instead of spaces if padding is required by the <span class="XML-Token">width</span> option.</li> +</ul> +</li> +<li>Width: Minimum number of displayed characters. If <span class="XML-Token">width</span> is less than the number of characters of the value, then the value is padded with spaces to the left.</li> +<li>.Precision:<ul> +<li><b>Integer</b>: Minimum number of displayed digits. Padded with zeros to the left if the value has less digits than specified with <span class="XML-Token">.precision</span>.</li> +<li><b>Floating Point</b>: Number of displayed digits after decimal point. Defaults to <span class="XML-Token">6</span> if not specified.</li> +<li><b>Constant String</b>: Maximum number of displayed characters.</li> +</ul> +</li> +</ul> +</li> +<li>... : Additional function parameters to replace format string specifiers. Each parameter can be a constant string, or an expression that resolves to an unsigned 64-bit integer. A parameter type must match the corresponding specifier type.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<dl class="section note"><dt>Note</dt><dd>For 32-bit specifiers the <b>Message</b> command must print the lower 32 Bit of a 64 Bit debug access variable.</dd></dl> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>LoadDebugInfo("file")</pre> </td><td><p class="starttd">Loads DWARF debug information from an application executable.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>file: A constant string with the path to the executable. The path must be relative to the root folder of the pack and use the format <b>path/name.extension</b>. It must not be an expression and it must be enclosed by quotes.</li> +</ul> +<p><b>Return Value:</b><br/> + Returns <span class="XML-Token">0</span> after successful debug information load.<br/> + Returns <span class="XML-Token">1</span> if debug information load failed.</p> +<p class="endtd"></p> +</td></tr> +<tr> +<td colspan="2"><b>Functions for communicating with external tools</b> </td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferSet (buffID, buffOffset, count, size, value)</pre> </td><td><p class="starttd">Fill a buffer with a specific value pattern. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number.</li> +<li>buffOffset: First byte in the buffer to start writing the specified <b>value</b> pattern. Must be a multiple of <b>size</b>.</li> +<li>count: Number of <b>size</b> items to write with the specified <b>value</b> pattern.</li> +<li>size: Size of a single item to set. Must be in the range of 1 - 8.</li> +<li>value: Value pattern to set. The <b>size</b> least significant bytes of <b>value</b> are used as value pattern for writing the buffer.</li> +</ul> +<p><b>Return Value:</b><br/> + Number of written bytes (written bytes * access size).</p> +<p class="endtd"></p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferGet (buffID, buffOffset, size)</pre> </td><td><p class="starttd">Get a data item from the buffer.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.</li> +<li>buffOffset: Buffer offset in bytes to get the data item from. Must be a multiple of <b>size</b>.</li> +<li>size: Size of a single item to get. Must be in the range of 1 - 8.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Date value of specified size at buffer offset. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferSize (buffID)</pre> </td><td><p class="starttd">Get the current size of a data buffer.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Current buffer size in bytes. Return value is <span class="XML-Token">0</span> if a buffer does not exist. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferRead (buffID, buffOffset, addr, length, mode)</pre> </td><td><p class="starttd">Read data from target and store in buffer. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number.</li> +<li>buffOffset: First byte in the buffer to store the read data. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>.</li> +<li>addr: Target address to start reading from. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>.</li> +<li>length: Number of bytes to read from target. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>.</li> +<li>mode: The target access mode.<ul> +<li>Bit 0..8: Debug access size. One of 8, 16, 32 and 64. Specified debug access size must be supported by the target hardware. For example a DP register access must always be 32-Bit.</li> +<li>Bit 0: Additionally set this Bit to 1 to increment the target address after each debug read access of the specified size.</li> +<li>Bit 9..63: Reserved</li> +</ul> +</li> +</ul> +<p><b>Return Value:</b><br/> + Always <span class="XML-Token">0</span>. Function causes fatal error if not successful.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferWrite(buffID, buffOffset, addr, length, mode)</pre> </td><td><p class="starttd">Write data from buffer into target.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.</li> +<li>buffOffset: First byte in the buffer to transfer into target. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>.</li> +<li>addr: Target address to start writing to. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>.</li> +<li>length: Number of bytes to write to the target. Must be a multiple of the number of bytes as specified by access size in <b>mode</b>. If size of valid buffer data is less than (<b>buffOffset</b> + <b>length</b>) then the function ends early and returns the number of actually written bytes.</li> +<li>mode: The target access mode.<ul> +<li>Bit 0..8: Debug access size. One of 8, 16, 32 and 64. Specified debug access size must be supported by the target hardware. For example a DP register access must always be 32-Bit.</li> +<li>Bit 0: Additionally set this Bit to <span class="XML-Token">1</span> to increment the target address after each debug write access of the specified size.</li> +<li>Bit 9..63: Reserved</li> +</ul> +</li> +</ul> +<p><b>Return Value:</b><br/> + Always <span class="XML-Token">0</span>. Function causes fatal error if not successful.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferStreamIn (buffID, buffOffset, length, path, mode, timeout)</pre> </td><td><p class="starttd">Stream data from an external source, e.g. a file, into a buffer. A new buffer of required size is created if it does not exist. An existing buffer is extended if it is too small.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number.</li> +<li>buffOffset: First byte in the buffer to store the received data.</li> +<li>length: Maximum number of bytes to stream in. Use value 0xFFFFFFFFFFFFFFFF to for example read a complete file of unknown size.</li> +<li>path: Constant string value representing the source from which to stream data in. Refer to <a class="el" href="debug_description.html#charactersequence">character sequences</a> for path/file name place holders.</li> +<li>mode: Specifies how to treat the data source in the specified mode.<ul> +<li>Bit 0..3: Format of the data source:<br/> + <span class="XML-Token">0</span> - Binary File<br/> + Others - Reserved<br/> +</li> +<li>Bit 4..7: Communication options for data source:<br/> + Reserved</li> +</ul> +</li> +<li>timeout: Timeout in microseconds. If <span class="XML-Token">0</span>, then synchronously wait for the operation to finish.</li> +</ul> +<p><b>Return Value:</b><br/> + Number of bytes streamed into buffer. Can be less than <b>length</b> if the data source signals its end.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>BufferStreamOut (buffID, buffOffset, length, destPath, destMode, timeout)</pre> </td><td><p class="starttd">Stream data from a buffer to an external data sink, e.g. a file.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>buffID: Numeric buffer ID. Must be a constant number. Function fails if buffer does not exist.</li> +<li>buffOffset: First byte in the buffer to transfer to the external data sink.</li> +<li>length: Maximum number of bytes to stream out.</li> +<li>path: Constant string value representing the destination to which to stream data to. Refer to <a class="el" href="debug_description.html#charactersequence">character sequences</a> for path/file name place holders.</li> +<li>mode: Specifies how to treat the data source in the specified mode.<ul> +<li>Bit 0..3: Format of the data source:<br/> + <span class="XML-Token">0</span> - Binary File<br/> + Others - Reserved<br/> +</li> +<li>Bit 4..7: Communication options for data sink:<br/> + <span class="XML-Token">0</span> - Overwrite<br/> + <span class="XML-Token">1</span> - Append<br/> + Others - Reserved<br/> +</li> +</ul> +</li> +<li>timeout: Timeout in microseconds. If <span class="XML-Token">0</span>, then synchronously wait for the operation to finish.</li> +</ul> +<p><b>Return Value:</b><br/> + Number of bytes streamed to data sink.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>RunApplication (appPath, arguments, workDirectory, timeout)</pre> </td><td><p class="starttd">Run an external application.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>appPath: Constant string representing the application path. Refer to <a class="el" href="debug_description.html#charactersequence">character sequences</a> for path/file name place holders.</li> +<li>arguments: Constant string with arguments to pass to the command line. Same placeholder <a class="el" href="debug_description.html#charactersequence">character sequences</a> apply as for <b>appPath</b>.</li> +<li>workDirectory: A constant string with the work directory for the command line tool. An empty string means that the work directory is the current project folder. Same placeholder <a class="el" href="debug_description.html#charactersequence">character sequences</a> apply as for <b>appPath</b>.</li> +<li>timeout: Timeout in microseconds</li> +</ul> +<p><b>Return Value:</b><br/> + Application specific exit code.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>FilePathExists(path, timeout)</pre> </td><td><p class="starttd">Check if a path exists. If timeout is other than <span class="XML-Token">0</span> then check the path until it becomes valid or until the timeout has elapsed.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>path: Constant string with the path to check. Refer to <a class="el" href="debug_description.html#charactersequence">character sequences</a> for path/file name place holders.</li> +<li>timeout: Timeout in microseconds:<br/> + If <span class="XML-Token">0</span>, then the path is checked and the function immediately returns.<br/> + If other than <span class="XML-Token">0</span>, check the path until it is valid or until the function times out. If <b>timeout</b> is hit while executing a check and that check ends successfully, then the function returns success.<br/> +</li> +</ul> +<p><b>Return Value:</b><br/> + <span class="XML-Token">0</span> - Path exists<br/> + <span class="XML-Token">1</span> - Path not found<br/> + Others - Reserved<br/> +</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="debug_description.html#exttoolexample">Calculating a hash sum</a> </p> +</td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>Target memory access functions must perform a debug access of the size indicated by their name. The target system must support debug accesses of this size.</li> +<li>Results of all functions are casted to 64-bit unsigned integer values.</li> +<li>Some target access functions determine the used debug and access port by the current values of the <b>__dp</b> and <b>__ap</b> debug access variables. If a target access requires a different debug or access port than the default ones, it must change these values. This change is held until finishing the sequence the change has occurred in.</li> +</ul> +</dd></dl> +<h2><a class="anchor" id="DebugVars"></a> +Debug access variables</h2> +<p>Debug access variables hold 64-bit unsigned integer values and are used in debug access sequences to query debugger settings and states. They are <b>read-only</b> within a sequence except from a limited set of the <a class="el" href="debug_description.html#PredefinedDebugVars">pre-defined debug access variables</a>. Use the <b>debugvars</b> element to specify additional user-defined debug access variables.</p> +<p><a class="anchor" id="PredefinedDebugVars"></a><b>Table: Pre-defined Debug Access Variables</b><br/> + A debugger needs to support a set of pre-defined debug access variables. These are described in the following table.</p> +<table class="cmtable" summary="ExpressionType: Pre-defined Debug Access Variables"> +<tr> +<th>Variable </th><th>Access </th><th>Description </th><th>Value= </th></tr> +<tr> +<td style="white-space: nowrap"><pre>__protocol</pre> </td><td>Read-Only </td><td>Debug protocol selection and parameters for target connection. </td><td>The following bit map applies:<br/> +<ul> +<li>Bit 0..15: Type<ul> +<li><span class="XML-Token">0</span>: Error<br/> +</li> +<li><span class="XML-Token">1</span>: JTAG<br/> +</li> +<li><span class="XML-Token">2</span>: Serial Wire Debug (SWD)<br/> +</li> +<li><span class="XML-Token">3</span>: CJTAG<br/> +</li> +</ul> +</li> +<li>Bit 16: SWJ-DP</li> +<li>Bit 17..63: Reserved </li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__connection</pre> </td><td>Read-Only </td><td>Target connection configuration. </td><td>The following bit map applies:<br/> +<ul> +<li>Bit 0..7: Connection type<ul> +<li><span class="XML-Token">0</span>: Error or target is disconnected.</li> +<li><span class="XML-Token">1</span>: Connection for target debug.</li> +<li><span class="XML-Token">2</span>: Connection for downloading application to flash.</li> +</ul> +</li> +<li>Bit 8..15: Reset type<ul> +<li><span class="XML-Token">0</span>: Error.</li> +<li><span class="XML-Token">1</span>: Hardware Reset (debugger reset line).</li> +<li><span class="XML-Token">2</span>: System Reset Request.</li> +<li><span class="XML-Token">3</span>: Processor Reset Request ("Vector Reset").</li> +</ul> +</li> +<li>Bit 16: Connection under Hardware Reset (debugger reset line)</li> +<li>Bit 17: Hardware Reset is executed as a pre-connection reset (only used for debugger calls to <code>ResetHardware</code>)</li> +<li>Bit 18..63: Reserved </li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__dp</pre> </td><td>Read/Write </td><td>Debug Port selected for target accesses.<br/> + This variable is initialized when entering a pre-defined debug access sequence on a debug event. The initialization value is the <b>__dp</b> as defined for the used <b>debug</b> element. </td><td>Debug port ID as specified in a <b>debugport</b> element or <span class="XML-Token">0</span> if no <b>debugport</b> element exists. </td></tr> +<tr> +<td style="white-space: nowrap"><pre>__ap</pre> </td><td>Read/Write </td><td>Access Port selected for target accesses.<br/> + This variable is initialized when entering a pre-defined debug access sequence on a debug event. The initialization value is the <b>__ap</b> as defined for the used <b>debug</b> element. </td><td>Access Port index. </td></tr> +<tr> +<td style="white-space: nowrap"><pre>__traceout</pre> </td><td>Read-Only </td><td>Activated trace outputs (sinks). Additionally holds information on the selected port width if a parallel trace port is enabled. </td><td style="white-space: nowrap">The following bit map applies:<br/> +<ul> +<li>Bit 0: Serial Wire Output (SWO) Trace enabled.</li> +<li>Bit 1: Parallel Trace Port enabled.</li> +<li>Bit 2: Trace Buffer enabled.</li> +<li>Bit 3..15: Reserved.</li> +<li>Bit 16..21: Selected Parallel Trace Port size.</li> +<li>Bit 22..63: Reserved. </li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__errorcontrol</pre> </td><td>Read/Write </td><td>Control variable for debug access error handling. All of its bit fields are intialized to <span class="XML-Token">0</span> when entering a pre-defined debug access sequence because of a debug event. </td><td>The following bit map applies:<br/> +<ul> +<li>Bit 0: Skip errors if set to <span class="XML-Token">1</span>. A debugger must continue the sequence execution.</li> +<li>Bit 1..63: Reserved </li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__Result</pre> </td><td>Read/Write </td><td>Sequence result. A debugger sets this variable to <span class="XML-Token">0</span> before it calls a sequence. The sequence implementation sets it to its result. </td><td>The following values apply:<br/> +<ul> +<li>0: Success</li> +<li>(-1): Error<ul> +<li>Other - reserved. </li> +</ul> +</li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__FlashOp</pre> </td><td>Read-Only </td><td>Type of the currently executed Flash operation. A debugger sets this value to <span class="XML-Token">0</span> if the executed sequence is not part of a Flash operation. </td><td>The following values apply:<br/> +<ul> +<li>0: No flash operation</li> +<li>1: Erase full chip</li> +<li>2: Erase flash sector</li> +<li>3: Program flash</li> +<li>Other - reserved. </li> +</ul> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>__FlashAddr</pre> </td><td>Read-Only </td><td>Start address for the current Flash operation. A debugger sets this value to <span class="XML-Token">0</span> if the executed sequence is not part of a Flash operation. </td><td>Memory-mapped target address the currently programmed <a class="el" href="pdsc_family_pg.html#element_flashblock">block</a> is visible at. </td></tr> +<tr> +<td style="white-space: nowrap"><pre>__FlashLen</pre> </td><td>Read-Only </td><td>Flash buffer length for the current flash operation. A debugger sets this value to <span class="XML-Token">0</span> if the executed sequence is not part of a flash operation. </td><td></td></tr> +<tr> +<td style="white-space: nowrap"><pre>__FlashArg</pre> </td><td>Read-Only </td><td>Argument for the flash operation as specified in <a class="el" href="pdsc_family_pg.html#element_flashblock">block</a>. A debugger sets this value to <span class="XML-Token">0</span> if the executed sequence is not part of a flash operation. </td><td>The argument encoding is specific to the debug description for the target device. </td></tr> +</table> +<h2><a class="anchor" id="externalTools"></a> +Using external tools</h2> +<p>Some functionality cannot be implemented by debug sequences, for example checksum/hash calculations or debug authentication. It is supposed to be provided or implemented by external tools or applications. To communicate with external tools, debug sequences currently provide input/output files. To create these files, buffers are used (see below). To run an external application, use the <code>RunApplication</code> function. To check the availability of an external resource (for example a file), use the <code>FilePathExists</code> function.</p> +<p><b>Buffer</b> <b>handling</b> </p> +<p>Buffers are hidden inside the sequence engine. They can be accessed only via the following functions:</p> +<ul> +<li>For direct buffer access (for example for initialization or "memset" operations): <code>BufferSet</code>, <code>BufferGet</code>, and <code>BufferSize</code>.</li> +<li>For interaction with the target's memory: <code>BufferRead</code> and <code>BufferWrite</code>.</li> +<li>For external interaction via file stream: <code>BufferStreamIn</code> and <code>BufferStreamOut</code>.</li> +<li>Buffer sizes are adjusted as per operations. They cannot get smaller during a sequence execution, only larger.</li> +<li>Buffers can internally have a size of '0', causing an error if calling BufferWrite/BufferStreamOut without having previously filled the buffer.</li> +<li>Newly allocated buffer space is filled with 0's, e.g. for an initial call to BufferRead with a buffer offset.</li> +<li>Buffers are only valid within the sequence creating them. When calling for example a "ChildSequence", it does not see buffers from the caller (even when using the same buffer ID). All buffer operations are only valid for buffers of the "ChildSequence".</li> +</ul> +<p><a class="anchor" id="charactersequence"></a><b>Character</b> <b>sequences</b> </p> +<p>For communication with external tools, you sometimes need to specify file names and paths to the files that contain the data to be exchanged. The following character sequences can be used as placeholders:</p> +<ul> +<li><code>$P:</code> Software project path including trailing slash</li> +<li><code>#P:</code> Software project path + project name, e.g. /project_path/project_name</li> +<li><code>$L:</code> Folder path of the main output file of a software project including trailing slash</li> +<li><code>%L:</code> Full path to the main output file of a software project including file ending</li> +<li><code>$S:</code> Path to the device support pack including trailing slash</li> +<li><code>$D:</code> Name of the selected device</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Characters '$', '#', and '%' must be duplicated to escape them, i.e. if a path contains the '$' character it must be written as '$$'.</dd></dl> +<p><a class="anchor" id="exttoolexample"></a><b>Code Example: Calculating a hash sum</b></p> +<p>The following code example shows how to call an external tool to calculate a hash for an image file.</p> +<div class="fragment"><div class="line"><block></div> +<div class="line"> __var length = 0;</div> +<div class="line"> __var exitCode = 0;</div> +<div class="line"> __var fileExists = 0;</div> +<div class="line"> </div> +<div class="line"> BufferRead (0, 0, 0x0080C000, 0xE0, (32|1)); <span class="comment">// Implicit allocation of buffer 0</span></div> +<div class="line"> BufferStreamOut(0, 0, 0xE0, <span class="stringliteral">"$P/SAML11_SHA256_BOCOR_input.bin"</span>, 0, 0);</div> +<div class="line"> exitCode = RunApplication (<span class="stringliteral">"$S/Tools/CalcSHA256.exe"</span>, <span class="stringliteral">"$P/SAML11_SHA256_BOCOR_input.bin --some-SHA256-parameters --out $P/SAML11_SHA256_BOCOR_output.bin"</span>, <span class="stringliteral">"$P"</span>, 10000000); <span class="comment">// Timeout is 10 seconds</span></div> +<div class="line"></block></div> +<div class="line"></div> +<div class="line"><control <span class="keywordflow">if</span>=<span class="stringliteral">"exitCode == 0"</span> info=<span class="stringliteral">"0 means OK"</span>></div> +<div class="line"> <block></div> +<div class="line"> fileExists = (FilePathExists(<span class="stringliteral">"$P/SAML11_SHA256_BOCOR_output.bin"</span>, 5000000) == 0);</div> +<div class="line"> </block></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"fileExists"</span>></div> +<div class="line"> <block></div> +<div class="line"> BufferStreamIn(0, 0xE0, 0x20, <span class="stringliteral">"$P/SAML11_SHA256_BOCOR_output.bin"</span>, 0, 10000000); <span class="comment">// Append to buffer, timeout 10s</span></div> +<div class="line"> BufferWrite (0, 0, 0x0080C000, 0x100, (32|1));</div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"></control></div> +<div class="line"></div> +<div class="line"><control <span class="keywordflow">if</span>=<span class="stringliteral">"(exitCode != 0) || (fileExists == 0)"</span>></div> +<div class="line"> <block></div> +<div class="line"> Message(2, <span class="stringliteral">"Error while creating hashsum. Aborting sequence."</span>);</div> +<div class="line"> </block></div> +<div class="line"></control></div> +</div><!-- fragment --> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="coresight_setup.html">Debug Setup with CMSIS-Pack</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/doxygen.css b/docs/Pack/html/doxygen.css new file mode 100644 index 0000000..f0f36f8 --- /dev/null +++ b/docs/Pack/html/doxygen.css @@ -0,0 +1,1366 @@ +/* The standard CSS for doxygen 1.8.6 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/Pack/html/doxygen.png b/docs/Pack/html/doxygen.png Binary files differnew file mode 100644 index 0000000..3ff17d8 --- /dev/null +++ b/docs/Pack/html/doxygen.png diff --git a/docs/Pack/html/dynsections.js b/docs/Pack/html/dynsections.js new file mode 100644 index 0000000..ed092c7 --- /dev/null +++ b/docs/Pack/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.attr('src','ftv2folderopen.png'); + a.attr('src','ftv2mnode.png'); + $(this).show(); + } else if (l==level+1) { + i.attr('src','ftv2folderclosed.png'); + a.attr('src','ftv2pnode.png'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} + +function toggleFolder(id) +{ + //The clicked row + var currentRow = $('#row_'+id); + var currentRowImages = currentRow.find("img"); + + //All rows after the clicked row + var rows = currentRow.nextAll("tr"); + + //Only match elements AFTER this one (can't hide elements before) + var childRows = rows.filter(function() { + var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + return this.id.match(re); + }); + + //First row is visible we are HIDING + if (childRows.filter(':first').is(':visible')===true) { + currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png'); + currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png'); + rows.filter("[id^=row_"+id+"]").hide(); + } else { //We are SHOWING + //All sub images + var childImages = childRows.find("img"); + var childImg = childImages.filter("[id^=img]"); + var childArr = childImages.filter("[id^=arr]"); + + currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row + currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row + childImg.attr('src','ftv2folderclosed.png'); //children closed + childArr.attr('src','ftv2pnode.png'); //children closed + childRows.show(); //show all children + } + updateStripes(); +} + + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + diff --git a/docs/Pack/html/element_keywords.html b/docs/Pack/html/element_keywords.html new file mode 100644 index 0000000..22c58c3 --- /dev/null +++ b/docs/Pack/html/element_keywords.html @@ -0,0 +1,152 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/keywords element</title> +<title>CMSIS-Pack: /package/keywords element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('element_keywords.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/keywords element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Is the group element for wrapping keywords, which can be used to find a Pack. Keywords can be exported to web pages to provide information for search engines, such as Google.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <keywords></div> +<div class="line"> <keyword>ARM</keyword> </div> +<div class="line"> <keyword>Cortex-M</keyword> </div> +<div class="line"> <keyword>TCP/IP Stack</keyword> </div> +<div class="line"> </keywords></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Root Element: Package"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>keyword </td><td>Element that encloses one keyword. Enter a keyword between the opening and closing tag of this element. </td><td>xs:string </td><td>1..1 </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/element_releases.html b/docs/Pack/html/element_releases.html new file mode 100644 index 0000000..1890844 --- /dev/null +++ b/docs/Pack/html/element_releases.html @@ -0,0 +1,199 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/releases element</title> +<title>CMSIS-Pack: /package/releases element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('element_releases.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/releases element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Contains the release history of the Pack. This element is mandatory. No more than one such group can exist in a Pack. It contains the full release history of the Pack.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <releases></div> +<div class="line"> ...</div> +<div class="line"> </releases></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Releases"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Child Element </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="element_releases.html#element_release">release</a> </td><td>Contains the version number of the release with some brief information about the main changes in that specific release. </td><td>xs:string </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_release"></a> +/package/releases/release</h1> +<p>Contains brief information of the main changes in each release version of a Pack. The content is a string written between the opening and closing <em>release</em> tags. The latest release version is always listed on top.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><releases></div> +<div class="line"> <release version=<span class="stringliteral">"1.1.1"</span>>Fixed a problem with the feature xyz.</div> +<div class="line"> </release> </div> +<div class="line"> <release version=<span class="stringliteral">"1.1.0"</span>>Introduces a <span class="keyword">new</span> feature xyz.</div> +<div class="line"> </release> </div> +<div class="line"> <release version=<span class="stringliteral">"1.0.0"</span>>First published version.</div> +<div class="line"> </release> </div> +<div class="line"></releases></div> +</div><!-- fragment --><p><b>Example</b> for a public repository: </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <repository type=<span class="stringliteral">"git"</span>>https:<span class="comment">//github.com/ARM-software/CMSIS-Driver.git</repository</span></div> +<div class="line"> <releases></div> +<div class="line"> <release version=<span class="stringliteral">"2.1.0"</span> tag=<span class="stringliteral">"2.1.0"</span> url=<span class="stringliteral">"https://github.com/ARM-software/CMSIS-Driver/archive/2.1.0.zip"</span>></div> +<div class="line"> Added LAN9220 Ethernet MAC+PHY driver.</div> +<div class="line"> </release> </div> +<div class="line"> <release version=<span class="stringliteral">"2.0.0"</span> tag=<span class="stringliteral">"2.0.0"</span> url=<span class="stringliteral">"https://github.com/ARM-software/CMSIS-Driver/archive/2.0.0.zip"</span>></div> +<div class="line"> First published version.</div> +<div class="line"> </release> </div> +<div class="line"> </releases></div> +<div class="line"> ...</div> +<div class="line"></package> </div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Release"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="element_releases.html">releases</a> </td><td colspan="3"><a class="el" href="element_releases.html">/package/releases element</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>version </td><td>Version number of the release. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>required </td></tr> +<tr> +<td>date </td><td>Release date (specified as YYYY-MM-DD, for example 2014-12-14 (14th December 2014). </td><td>xs:date </td><td>optional </td></tr> +<tr> +<td>tag </td><td>In case the repository element is specified, the tag attribute is used to specify the repository tag that corresponds to this release of the pack. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>url </td><td>URL specifying the location of the pack of the specified version. This can be used to override the default location being <code><url>/<vendor></code>.<name>.<version>.pack </td><td>xs:anyURI </td><td>optional </td></tr> +<tr> +<td>deprecated </td><td>Pack is no longer officially supported after the set date. It will be excluded from checks for update. Deprecated packs may remain available for download from the server. Tools will continue to work but may provide indicators highlighting end of support for the pack and its content. Not recommended for use with new projects. Note this attribute is only relevant when set for the latest release located on top of the releases section. </td><td>xs:date </td><td>optional </td></tr> +<tr> +<td>replacement </td><td>Specifies the vendor and name of the Pack that shall be used instead. Use in conjunction with the deprecated attribute. E.g. the maintainer of the Pack A.X_DFP changes from vendor <em>A</em> to vendor <em>B</em>. In this case the attribute deprecated gets set in the A.X_DFP.pdsc and the replacement attribute set to B.X_DFP. Tools use this information to redirect users to a supported pack. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/element_repository.html b/docs/Pack/html/element_repository.html new file mode 100644 index 0000000..4e10a26 --- /dev/null +++ b/docs/Pack/html/element_repository.html @@ -0,0 +1,159 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/repository element</title> +<title>CMSIS-Pack: /package/repository element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('element_repository.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/repository element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The element specifies the URL of the public repository the pack originates from. The attribute 'type' specifies the repository technology and therefore the tools required to be used with this repository.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <repository type=<span class="stringliteral">"git"</span>>https:<span class="comment">//github.com/ARM-software/CMSIS-Driver.git</repository></span></div> +<div class="line"> ...</div> +<div class="line"> </releases></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: repository"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>type </td><td>Repository management technology used by the specified public repository (e.g. git, svn). </td><td>xs:string </td><td>required </td></tr> +</table> +<p><b>Example:</b> </p> +<p>Contributing to a software pack hosted on GitHub:</p> +<ul> +<li>Open the URL specified by the <code><repository></code> element in a browser.</li> +<li>Create a fork of the repository.</li> +<li>Clone the fork on your machine (you may want to checkout the <code>tag</code> specified in the <a class="el" href="element_releases.html"><release></a> element).</li> +<li>Create a branch for you modifications.</li> +<li>Develop and test the modifications of your branch and push the branch to GitHub.</li> +<li>Create a pull request of your branch into the upstream repository.</li> +</ul> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/element_requirements_pg.html b/docs/Pack/html/element_requirements_pg.html new file mode 100644 index 0000000..99fbe69 --- /dev/null +++ b/docs/Pack/html/element_requirements_pg.html @@ -0,0 +1,262 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/requirements</title> +<title>CMSIS-Pack: /package/requirements</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('element_requirements_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/requirements </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p><a class="anchor" id="element_requirements"></a> There are three different requirement types:</p> +<ul> +<li>The <code><packages></code> section lists CMSIS Packs that have been used to configure the project. This includes the specification of a <code>version</code> range to ensure compatibility. If no version is provided, the latest installed version is used. If not yet installed, the latest available version will be installed before resolving the configuration.</li> +<li>The <code><compilers></code> section specifies the toolchains that are supported by this example. The required compiler version is specified using the <code>version</code> element. If no compiler is specified, it is assumed that any toolchain will work.</li> +<li>The <code><languages></code> section allows to specify requirements regarding the programming language, for example C99 standard. If no language requirements are set, ANSI C is assumed.</li> +</ul> +<p><b>Example</b> requirements section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <requirements></div> +<div class="line"> <packages></div> +<div class="line"> <package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/></div> +<div class="line"> </packages></div> +<div class="line"> <compilers></div> +<div class="line"> <compiler name="ARMCC" version="5.0.0:5.99.0"/></div> +<div class="line"> </compilers></div> +<div class="line"> <languages></div> +<div class="line"> <language name="C" version="99"/></div> +<div class="line"> </languages></div> +<div class="line"> </requirements></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><b>/requirements</b> </p> +<table class="cmtable" summary="Element: package"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_packages">packages</a> </td><td>List of software packs required for the project to build. </td><td><a class="el" href="element_requirements_pg.html#element_packages">PackagesType</a> </td><td><0..1> </td></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_compilers">compilers</a> </td><td>List of compilers required for the project to build. Support for all compilers is assumed when not specified. </td><td><a class="el" href="element_requirements_pg.html#element_compilers">CompilersType</a> </td><td><0..1> </td></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_languages">languages</a> </td><td>List of language standards required for the project to build. Assuming ANSI C if not set. </td><td><a class="el" href="element_requirements_pg.html#element_languages">LanguagesType</a> </td><td><0..1> </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_packages"></a> +/package/requirements/packages</h1> +<p><b>Example</b> packages section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <requirements></div> +<div class="line"> <packages></div> +<div class="line"> <package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/></div> +<div class="line"> </packages></div> +<div class="line"> </requirements></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><b>/package</b> </p> +<table class="cmtable" summary="Element: package"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_packages">packages</a> </td><td colspan="3"><a class="el" href="element_requirements_pg.html#element_packages">/package/requirements/packages</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>vendor </td><td>specify vendor of the package (e.g. "ARM") </td><td>RestrictedString </td><td>required </td></tr> +<tr> +<td>name </td><td>Name of the pack </td><td>RestrictedString </td><td>required </td></tr> +<tr> +<td>version </td><td><a class="el" href="pdsc_package_pg.html#VersionType">Version</a> of the required software pack which can be:<ul> +<li>Minimum version (higher versions are accepted).</li> +<li>Version range specified with <em>min_version</em><b>:</b><em>max_version</em>. <em>min_version</em> must be lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal, the version must match.</li> +<li>If no version is specified, the latest available version is assumed. </li> +</ul> +</td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_compilers"></a> +/package/requirements/compilers</h1> +<p><b>Example</b> compilers section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <requirements></div> +<div class="line"> <compilers></div> +<div class="line"> <compiler name="ARMCC" version="5.0.0:5.99.0"/></div> +<div class="line"> </compilers></div> +<div class="line"> </requirements></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><b>/compiler</b> </p> +<table class="cmtable" summary="Element: compiler"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_requirements">requirements</a> </td><td colspan="3"><a class="el" href="element_requirements_pg.html#element_requirements">element_requirements</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the required <a class="el" href="pdsc_conditions_pg.html#CompilerEnumType">compiler</a> (i.e. "ARMCC", "IAR") </td><td><a class="el" href="pdsc_conditions_pg.html#CompilerEnumType">CompilerEnumType</a> </td><td>required </td></tr> +<tr> +<td>version </td><td><a class="el" href="pdsc_package_pg.html#VersionType">Version</a> of the required compiler which can be:<ul> +<li>Minimum version (higher versions are accepted).</li> +<li>Version range specified with <em>min_version</em><b>:</b><em>max_version</em>. <em>min_version</em> must be lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal, the version must match. <br/> + </li> +</ul> +</td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>required </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_languages"></a> +/package/requirements/languages</h1> +<p><b>Example</b> languages section: </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>xmlns:xsi="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/></span></div> +<div class="line"> ...</div> +<div class="line"> <requirements></div> +<div class="line"> <languages></div> +<div class="line"> <language name="C" version="99"/></div> +<div class="line"> <languages></div> +<div class="line"> </requirements></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><b>/language</b> </p> +<table class="cmtable" summary="Element: language"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_requirements">requirements</a> </td><td colspan="3"><a class="el" href="element_requirements_pg.html#element_requirements">element_requirements</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the programming language (i.e. "C", "C++") </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>version </td><td>Version of the language standard (i.e. 90, 99, etc.). The setting will be reflected in the compiler commandline. </td><td>xs:string </td><td>required </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/element_taxonomy.html b/docs/Pack/html/element_taxonomy.html new file mode 100644 index 0000000..f2b99e2 --- /dev/null +++ b/docs/Pack/html/element_taxonomy.html @@ -0,0 +1,268 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/taxonomy element</title> +<title>CMSIS-Pack: /package/taxonomy element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('element_taxonomy.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/taxonomy element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Group to list description elements that define component classes and component group names used within a package description. This element is optional.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <taxonomy></div> +<div class="line"> ...</div> +<div class="line"> </taxonomy></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Taxonomy"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="element_taxonomy.html#element_taxonomyDescription">description</a> </td><td>Describes or defines a component class or class-group combination. </td><td>TaxonomyDescriptionType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_taxonomyDescription"></a> +/package/taxonomy/description</h1> +<p>This element describes a component class or the combination between a component class and a component group. Components are categorized by <em>Cclass</em> and <em>Cgroup</em>. The creator of a package can define names for <em>Cclass</em> and <em>Cgroup</em>. Thus, configuration tools can display the set of available components. A document can be referenced using the attribute <em>doc</em>. The attribute <em>generator</em> can be used to reference to a generator tool. The <em>id</em> of the generator needs to be the same as specified in the element <a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a>. The description itself is a string entered between the opening and closing tags of the element <b>description</b>.</p> +<p>It is recommended to use an already agreed taxonomy for interchangeable components. For example, the combination of class <span class="XML-Token">CMSIS</span> and group <span class="XML-Token">Startup</span> is defined for the device-specific CMSIS-Core (Cortex-M) files.</p> +<p> </p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><taxonomy></div> +<div class="line"> <description Cclass=<span class="stringliteral">"Board Support"</span>>Generic Interfaces <span class="keywordflow">for</span> Evaluation and Development Boards</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"CMSIS"</span> doc=<span class="stringliteral">"CMSIS/Documentation/General/html/index.html"</span>>Cortex Microcontroller Software Interface Components</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"Device"</span> doc=<span class="stringliteral">"CMSIS/Documentation/Core/html/index.html"</span>>Startup, System Setup</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"CMSIS Driver"</span> doc=<span class="stringliteral">"CMSIS/Documentation/Driver/html/index.html"</span>>Unified Device Drivers compliant to CMSIS-Driver Specifications</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"File System"</span>>File Drive Support and File System</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"Graphics"</span>>Graphical User Interface</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"Network"</span>>Network Stack <span class="keyword">using</span> Internet Protocols</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"USB"</span>>Universal Serial Bus Stack</description></div> +<div class="line"> <description Cclass=<span class="stringliteral">"RTOS"</span>>Realtime Operating System</description></div> +<div class="line"></taxonomy></div> +</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>You <b>must</b> <b>not</b> use Windows or Linux <a href="http://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words" target="_blank">reserved characters</a> for <em>Cclass</em>, <em>Cgrouop</em>, and <em>Csub</em> names! Some development tools use these names to create a directory structure for the software components in projects. Reserved characters are: <pre class="fragment">< (less than) +> (greater than) +: (colon) +" (double quote) +/ (forward slash) +\ (backslash) +| (vertical bar or pipe) +? (question mark) +* (asterisk) +</pre></dd></dl> +<p> </p> +<table class="cmtable" summary="Element: Taxonomy"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="element_taxonomy.html">taxonomy</a> </td><td colspan="3"><a class="el" href="element_taxonomy.html">/package/taxonomy element</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cclass </td><td>Component Class Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>Cclass </td><td>required </td></tr> +<tr> +<td>Cgroup </td><td>Component Group Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>optional </td></tr> +<tr> +<td>doc </td><td>Reference to documentation. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>generator </td><td>Reference to a generator. Enter the <b>id</b> value of the element <a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a>. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="CclassType"></a><b>Table: Component Classes</b></p> +<p>Component Class names are strings with a minimum length of 3 characters and a maximum length of 32 characters. Component class names are specified in the section <a class="el" href="element_taxonomy.html#element_taxonomyDescription">/package/taxonomy/description</a>.</p> +<p>These values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">/package/examples/example/attributes/component</a></li> +<li><a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a></li> +<li><a class="el" href="pdsc_components_pg.html#element_bundle">/package/components/bundle</a></li> +<li><a class="el" href="pdsc_apis_pg.html#element_api">/package/apis/api</a></li> +<li><a class="el" href="element_taxonomy.html#element_taxonomyDescription">/package/taxonomy/description</a></li> +<li><a class="el" href="cpdsc_pg.html#element_project_component">/package/create/project/select/component</a></li> +</ul> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><... Cclass=<span class="stringliteral">"CMSIS"</span> ...></div> +</div><!-- fragment --> <p> </p> +<p>The table lists predefined Component Classes. </p> +<table class="cmtable" summary="Predefined Cclass names"> +<tr> +<th>Cclass= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">Board Support </td><td>Components providing interfaces for Evaluation and Development Boards </td></tr> +<tr> +<td class="XML-Token">CMSIS </td><td>Components defined by Cortex Microcontroller Software Interface Standard (e.g. <a href="../../Core/html/index.html" class="el">CMSIS-Core(M)</a>, <a href="../../Core_A/html/index.html" class="el">CMSIS-Core(A)</a>, <a href="../../DSP/html/index.html" class="el">CMSIS-DSP</a> and <a href="../../RTOS/html/index.html" class="el">CMSIS-RTOS</a>) </td></tr> +<tr> +<td class="XML-Token">Device </td><td>Components containing device specific implementations of non-standard APIs (e.g. HAL drivers, CMSIS Startup files) </td></tr> +<tr> +<td class="XML-Token">CMSIS Driver </td><td>Components implementing unified device drivers compliant to <a href="../../Driver/html/index.html" class="el">CMSIS-Driver</a> (e.g. UART, SPI, USB, etc.) </td></tr> +<tr> +<td class="XML-Token">File System </td><td>Components implementing some kind of File Systems (e.g. Flash or RAM based file systems) </td></tr> +<tr> +<td class="XML-Token">Graphics </td><td>Components implementing some kind of Display and Graphics Software </td></tr> +<tr> +<td class="XML-Token">Network </td><td>Components implementing some kind of Network Communications (e.g. TCP/IP Stack) </td></tr> +<tr> +<td class="XML-Token">USB </td><td>Components implementing some kind of USB interfaces (e.g. Host and Device interfaces) </td></tr> +<tr> +<td class="XML-Token">Compiler </td><td>Components implementing Compiler specific interfaces (e.g. Retargeting) </td></tr> +<tr> +<td class="XML-Token">RTOS </td><td>Components implementing some kind of Real-time Operating System (e.g. FreeRTOS, Micrium Real Time Kernel) </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="CgroupType"></a><b>Table: Component Groups</b></p> +<p>Component Group names are specified by the element <b>Cgroup</b> and create categories within a Component Class specified by the element <b>Cclass</b>. The creator of the Pack can define the names in the element <a class="el" href="element_taxonomy.html#element_taxonomyDescription">/package/taxonomy/description</a>. A Component Group name is string with a length between 3 and 32 characters.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><... Cgroup=<span class="stringliteral">"RTOS"</span> Cclass=<span class="stringliteral">"CMSIS"</span>...></div> +</div><!-- fragment --> <p> </p> +<p>Component Groups can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">/package/examples/example/attributes/component</a></li> +<li><a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a></li> +<li><a class="el" href="pdsc_apis_pg.html#element_api">/package/apis/api</a></li> +<li><a class="el" href="element_taxonomy.html#element_taxonomyDescription">/package/taxonomy/description</a></li> +<li><a class="el" href="cpdsc_pg.html#element_project_component">/package/create/project/select/component</a></li> +</ul> +<p>The table lists predefined values for the Component Class <b>Cclass="CMSIS"</b>. No other Component Groups have been defined so far. </p> +<table class="cmtable" summary="Predefined Cgroup names for Component Class CMSIS"> +<tr> +<th>Cgroup= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">CORE </td><td>A component containing device support in accordance to the <a href="../../Core/html/index.html" class="el">CMSIS-Core(M)</a> or <a href="../../Core_A/html/index.html" class="el">CMSIS-Core(A)</a> specifications (startup, system and device files) </td></tr> +<tr> +<td class="XML-Token">DSP </td><td>A component implementing the <a href="../../DSP/html/index.html" class="el">CMSIS-DSP</a> API specification. </td></tr> +<tr> +<td class="XML-Token">RTOS </td><td>A component implementing the <a href="../../RTOS/html/index.html" class="el">CMSIS-RTOS</a> API specification. </td></tr> +</table> +<p> </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/flashAlgorithm.html b/docs/Pack/html/flashAlgorithm.html new file mode 100644 index 0000000..a76a8f8 --- /dev/null +++ b/docs/Pack/html/flashAlgorithm.html @@ -0,0 +1,195 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Flash Programming</title> +<title>CMSIS-Pack: Flash Programming</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('flashAlgorithm.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Flash Programming </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p><b>Flash Programming Algorithms</b> are a piece of software to erase or download applications to Flash devices. A <a class="el" href="createPack_DFP.html">Pack with Device Support</a> usually contains predefined Flash algorithms for programming the devices that are supported by the DFP. A template for creating new algorithms are available in the <b>ARM:CMSIS</b> Pack. The following section describes the process in more detail.</p> +<h1><a class="anchor" id="CreateFPA"></a> +Creating a new Algorithm</h1> +<p>Flash programming algorithms are defined with functions to erase and program the Flash device. Special compiler and linker settings are required. Follow these steps to create and configure a new Flash programming algorithm:</p> +<ol type="1"> +<li>Copy the content from the <b>ARM:CMSIS</b> Pack folder (usually C:\Keil\ARM\Pack\ARM\CMSIS\<em>version</em>\Device\_Template_Flash) to a new folder.</li> +<li>Rename the project file <b>NewDevice.uvprojx</b> to represent the new Flash ROM device name, for example <b>MyDevice.uvprojx</b>.</li> +<li>Open the project with uVision. From the toolbar, use the drop-down <b>Select Target</b> to define the processor architecture. <b>Cortex-M</b> fits for all Cortex-M0/M0+, M3, and M4 devices. The configuration assumes a little-endian microcontroller. In case of a big-endian microcontroller, select the correct processor core with <b>Project</b> - <b>Options for Target</b> - <b>Device</b>.</li> +<li>Open the dialog <b>Project</b> - <b>Options for Target</b> - <b>Output</b> and change the content of the field <b>Name of Executable</b> to represent the device, for example <b>MyDevice</b>.</li> +<li>Adapt the programming algorithms in the file <a class="el" href="flashAlgorithm.html#FlashPrg">FlashPrg</a>.</li> +<li>Adapt the device parameters in the file <a class="el" href="flashAlgorithm.html#FlashDev">FlashDev</a>.</li> +<li>Use <b>Project</b> - <b>Build Target</b> to generate the new Flash programming algorithm. The output file (for example <b>MyDevice.FLM</b>) has to be <a class="el" href="flashAlgorithm.html#AddFPA">added</a> to the <b>DFP</b>.</li> +</ol> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>Creating a Flash programming algorithm with <a href="http://www.keil.com/arm/selector.asp" class="el" target="_blank">MDK-Lite</a> is not supported.</li> +<li>Flash programming algorithms use <b>Read-Only Position Independent</b> and <b>Read-Write Position Independent</b> program code. These options are set in the dialogs <b>Project</b> - <b>Options for Target</b> - <b>C/C++</b> and <b>Project</b> - <b>Options for Target</b> - <b>Asm</b>.</li> +<li>The dialog <b>Project</b> - <b>Options for Target</b> - <b>Linker</b> defines the linker scatter file <b>Target.lin</b>. The error L6305 is disabled with <code>–diag_suppress</code> <code>L6305</code>.</li> +<li>The <a class="el" href="algorithmFunc.html">Flash Algorithm Functions</a> section contains reference for all the available functions.</li> +</ul> +</dd></dl> +<p><a class="anchor" id="FlashPrg"></a></p> +<h2>FlashPrg.c </h2> +<p>The file <b>FlashPrg.c</b> contains the mandatory Flash programming functions <a class="el" href="algorithmFunc.html#Init">Init</a>, <a class="el" href="algorithmFunc.html#UnInit">UnInit</a>, <a class="el" href="algorithmFunc.html#EraseSector">EraseSector</a>, and <a class="el" href="algorithmFunc.html#ProgramPage">ProgramPage</a>. Optionally, depending on the device features (or to speed-up execution), the functions <a class="el" href="algorithmFunc.html#EraseChip">EraseChip</a>, <a class="el" href="algorithmFunc.html#BlankCheck">BlankCheck</a>, and <a class="el" href="algorithmFunc.html#Verify">Verify</a> can be implemented.</p> +<p><a class="anchor" id="FlashDev"></a></p> +<h2>FlashDev.c </h2> +<p>The file <b>FlashDev.c</b> contains parameter definitions for:</p> +<ol type="1"> +<li>the Flash programming functions.</li> +<li>the <b>FlashDevice</b> structure: <div class="fragment"><div class="line"><span class="keyword">struct </span>FlashDevice const FlashDevice = {</div> +<div class="line"> FLASH_DRV_VERS, <span class="comment">// Driver Version, do not modify!</span></div> +<div class="line"> <span class="stringliteral">"New Device 256kB Flash"</span>, <span class="comment">// Device Name </span></div> +<div class="line"> ONCHIP, <span class="comment">// Device Type</span></div> +<div class="line"> 0x00000000, <span class="comment">// Device Start Address</span></div> +<div class="line"> 0x00040000, <span class="comment">// Device Size in Bytes (256kB)</span></div> +<div class="line"> 1024, <span class="comment">// Programming Page Size</span></div> +<div class="line"> 0, <span class="comment">// Reserved, must be 0</span></div> +<div class="line"> 0xFF, <span class="comment">// Initial Content of Erased Memory</span></div> +<div class="line"> 100, <span class="comment">// Program Page Timeout 100 mSec</span></div> +<div class="line"> 3000, <span class="comment">// Erase Sector Timeout 3000 mSec</span></div> +<div class="line"> </div> +<div class="line"><span class="comment">// Specify Size and Address of Sectors</span></div> +<div class="line"> 0x002000, 0x000000, <span class="comment">// Sector Size 8kB (8 Sectors)</span></div> +<div class="line"> 0x010000, 0x010000, <span class="comment">// Sector Size 64kB (2 Sectors) </span></div> +<div class="line"> 0x002000, 0x030000, <span class="comment">// Sector Size 8kB (8 Sectors)</span></div> +<div class="line"> SECTOR_END</div> +<div class="line">};</div> +</div><!-- fragment --></li> +</ol> +<dl class="section note"><dt>Note</dt><dd>The <b>Device Name</b> will usually be shown in tools to identify the Flash algorithm. Make sure that this is changed to the correct device name from the DFP.</dd></dl> +<h1><a class="anchor" id="AddFPA"></a> +Adding an Algorithm to a Pack</h1> +<p>The generated <b>*.FLM</b> file needs to be added to the <a class="el" href="createPack_DFP.html">Pack with Device Support</a>, so that it is available to the tool user for programming his device. Usually, a directory <b>Flash</b> is created and the algorithm is saved in this directory.</p> +<p>The algorithm is specified within the the <a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> level: </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_512.flm"</span> start=0x08000000 size=0x10000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/> <!-- valid <span class="keywordflow">for</span> all devices of the family --></div> +<div class="line"> </div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F405"</span>></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_1024.flm"</span> start=0x08000000 size=0x20000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/> <!-- valid <span class="keywordflow">for</span> all devices of a subFamily --></div> +<div class="line"> </div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F405OE"</span>></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_2048.flm"</span> start=0x08000000 size=0x40000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/> <!-- <span class="keywordflow">finally</span>, <span class="keyword">this</span> is the <span class="keywordflow">default</span> <span class="keywordflow">for</span> the device --></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p>The argument <em>start</em> specifies the base address for the Flash programming algorithm.</p> +<p>The argument <em>size</em> specifies the size covered by the Flash programming algorithm. End address = start + size - 1.</p> +<p>The argument <em>default</em> specifies whether a Flash programming algorithm is set as the default algorithm in a project (when <span class="XML-Token">true</span>). If <em>default</em> is not set or false, the Flash programming algorithm can be configured on a lower level. However, the Flash programming algorithm of a project can be changed manually at any time during development. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/flashAlgorithm.js b/docs/Pack/html/flashAlgorithm.js new file mode 100644 index 0000000..6bcbb81 --- /dev/null +++ b/docs/Pack/html/flashAlgorithm.js @@ -0,0 +1,14 @@ +var flashAlgorithm = +[ + [ "Creating a new Algorithm", "flashAlgorithm.html#CreateFPA", null ], + [ "Adding an Algorithm to a Pack", "flashAlgorithm.html#AddFPA", null ], + [ "Algorithm Functions", "algorithmFunc.html", [ + [ "BlankCheck", "algorithmFunc.html#BlankCheck", null ], + [ "EraseChip", "algorithmFunc.html#EraseChip", null ], + [ "EraseSector", "algorithmFunc.html#EraseSector", null ], + [ "Init", "algorithmFunc.html#Init", null ], + [ "ProgramPage", "algorithmFunc.html#ProgramPage", null ], + [ "UnInit", "algorithmFunc.html#UnInit", null ], + [ "Verify", "algorithmFunc.html#Verify", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/Pack/html/ftv2blank.png b/docs/Pack/html/ftv2blank.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/docs/Pack/html/ftv2blank.png diff --git a/docs/Pack/html/ftv2cl.png b/docs/Pack/html/ftv2cl.png Binary files differnew file mode 100644 index 0000000..132f657 --- /dev/null +++ b/docs/Pack/html/ftv2cl.png diff --git a/docs/Pack/html/ftv2doc.png b/docs/Pack/html/ftv2doc.png Binary files differnew file mode 100644 index 0000000..17edabf --- /dev/null +++ b/docs/Pack/html/ftv2doc.png diff --git a/docs/Pack/html/ftv2folderclosed.png b/docs/Pack/html/ftv2folderclosed.png Binary files differnew file mode 100644 index 0000000..bb8ab35 --- /dev/null +++ b/docs/Pack/html/ftv2folderclosed.png diff --git a/docs/Pack/html/ftv2folderopen.png b/docs/Pack/html/ftv2folderopen.png Binary files differnew file mode 100644 index 0000000..d6c7f67 --- /dev/null +++ b/docs/Pack/html/ftv2folderopen.png diff --git a/docs/Pack/html/ftv2lastnode.png b/docs/Pack/html/ftv2lastnode.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/docs/Pack/html/ftv2lastnode.png diff --git a/docs/Pack/html/ftv2link.png b/docs/Pack/html/ftv2link.png Binary files differnew file mode 100644 index 0000000..17edabf --- /dev/null +++ b/docs/Pack/html/ftv2link.png diff --git a/docs/Pack/html/ftv2mlastnode.png b/docs/Pack/html/ftv2mlastnode.png Binary files differnew file mode 100644 index 0000000..0b63f6d --- /dev/null +++ b/docs/Pack/html/ftv2mlastnode.png diff --git a/docs/Pack/html/ftv2mnode.png b/docs/Pack/html/ftv2mnode.png Binary files differnew file mode 100644 index 0000000..0b63f6d --- /dev/null +++ b/docs/Pack/html/ftv2mnode.png diff --git a/docs/Pack/html/ftv2mo.png b/docs/Pack/html/ftv2mo.png Binary files differnew file mode 100644 index 0000000..4bfb80f --- /dev/null +++ b/docs/Pack/html/ftv2mo.png diff --git a/docs/Pack/html/ftv2node.png b/docs/Pack/html/ftv2node.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/docs/Pack/html/ftv2node.png diff --git a/docs/Pack/html/ftv2ns.png b/docs/Pack/html/ftv2ns.png Binary files differnew file mode 100644 index 0000000..72e3d71 --- /dev/null +++ b/docs/Pack/html/ftv2ns.png diff --git a/docs/Pack/html/ftv2plastnode.png b/docs/Pack/html/ftv2plastnode.png Binary files differnew file mode 100644 index 0000000..c6ee22f --- /dev/null +++ b/docs/Pack/html/ftv2plastnode.png diff --git a/docs/Pack/html/ftv2pnode.png b/docs/Pack/html/ftv2pnode.png Binary files differnew file mode 100644 index 0000000..c6ee22f --- /dev/null +++ b/docs/Pack/html/ftv2pnode.png diff --git a/docs/Pack/html/ftv2splitbar.png b/docs/Pack/html/ftv2splitbar.png Binary files differnew file mode 100644 index 0000000..fe895f2 --- /dev/null +++ b/docs/Pack/html/ftv2splitbar.png diff --git a/docs/Pack/html/ftv2vertline.png b/docs/Pack/html/ftv2vertline.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/docs/Pack/html/ftv2vertline.png diff --git a/docs/Pack/html/index.html b/docs/Pack/html/index.html new file mode 100644 index 0000000..76898c5 --- /dev/null +++ b/docs/Pack/html/index.html @@ -0,0 +1,182 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Main Page</title> +<title>CMSIS-Pack: Main Page</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li class="current"><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('index.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">CMSIS-Pack Documentation</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p><b>CMSIS-Pack</b> describes a delivery mechanism for software components, device parameters, and evaluation board support. The XML-based package description (PDSC) file describes the content of a <a class="el" href="cp_SWComponents.html">Software Pack</a> (file collection) that includes:</p> +<ul> +<li>Source code, header files, and software libraries</li> +<li>Documentation and source code templates</li> +<li>Device parameters along with startup code and programming algorithms</li> +<li>Example projects</li> +</ul> +<p>The complete file collection along with the PDSC file is shipped in ZIP-format as a Software Pack. The PDSC file is designed for software development environments and describes the user and device relevant context for the files supplied within such a Software Pack. A Software Pack can be used for multiple purposes (see below).</p> +<p>After installing a <a class="el" href="cp_SWComponents.html">Software Pack</a>, all included software components are available to the development tools. <a class="el" href="cp_SWComponents.html#cp_Components">Software components</a> are a collection of source modules, header and configuration files as well as libraries. Packs containing software components can also include <a class="el" href="cp_SWComponents.html#cp_Examples">Example Projects</a> and <a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a>.</p> +<p>The <a class="el" href="pack_revisionHistory.html">Revision History of CMSIS-Pack</a> lists the main changes between versions.</p> +<h1><a class="anchor" id="SWPackVariants"></a> +Software Pack Use Cases</h1> +<div class="image"> +<img src="SPVariants_small.png" alt="SPVariants_small.png"/> +<div class="caption"> +Software Pack Use Cases</div></div> +<p> The figure above shows the following use cases for Software Packs:</p> +<ul> +<li><b>Device Family Pack (DFP):</b> contains CMSIS system/startup files, drivers, and flash algorithms for a microcontroller device family.</li> +<li><b>CMSIS Software Pack:</b> contains the generic CMSIS components (CORE, DSP Library, and RTOS implementation) supplied by Arm.</li> +<li><b>Middleware Pack:</b> contains software components belonging to a middleware (such as source code or libraries).</li> +<li><b>Board Support Pack (BSP):</b> contains documentation, schematics, and drivers for a certain development board.</li> +<li><b>In-house Software Packs:</b> usually contain software components that can be distributed within a company or engineering group.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>A Software Pack can address multiple use cases at the same time!</dd></dl> +<p>The following sections give you more details on the basics:</p> +<ul> +<li><a class="el" href="cp_Packs.html">Software Packs Overview</a> explains the steps required for creating a Software Pack in general.</li> +<li><a class="el" href="cp_SWComponents.html">Pack with Software Components</a> gives detailed information on the contents of the PDSC file.</li> +<li><a class="el" href="createPack_DFP.html">Pack with Device Support</a> describes additional requirements of Device Family Packs (DFPs).</li> +<li><a class="el" href="createPackBoard.html">Pack with Board Support</a> covers the creation of Board Support Packs (BSPs).</li> +<li><a class="el" href="pack_Example.html">Pack Example</a> explains the Software Pack example that is part of the CMSIS Pack in more detail.</li> +<li><a class="el" href="createPackPublish.html">Publish a Pack</a> shows the options for publishing a Pack.</li> +<li><a class="el" href="createPackUtil.html">Utilities for Creating Packs</a> caters to programs that are useful during the creation of a Pack.</li> +<li><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a> describes all XML elements that can be used in a PDSC file.</li> +<li><a class="el" href="configWizard.html">Configuration Wizard Annotations</a> can be used to create GUI-like elements in development tools for configuration files.</li> +<li><a class="el" href="flashAlgorithm.html">Flash Programming</a> are used to erase or download applications to Flash devices.</li> +<li><a class="el" href="coresight_setup.html">Debug Setup with CMSIS-Pack</a> allow to create tool-agnostic debug and trace configurations</li> +<li><a class="el" href="cpdsc_pg.html">Project Description (*.cpdsc) Format</a> is a environment/tool independent definition of a software project. This helps to create only one set of example projects that can be used by many different tool vendors.</li> +<li><a class="el" href="packIndexFile.html">CMSIS-Pack Index Files</a></li> +</ul> +<hr/> +<h2>CMSIS-Pack in ARM::CMSIS Pack </h2> +<p>Files relevant to CMSIS-Pack are present in the following <b>ARM::CMSIS</b> directories: </p> +<table class="doxtable"> +<tr> +<th>Folder </th><th>Content </th></tr> +<tr> +<td>Utilities </td><td><a class="el" href="createPackUtil.html">Utilities for Creating Packs</a> </td></tr> +<tr> +<td>Pack\Example </td><td><a class="el" href="pack_Example.html">Reference Software Pack</a> </td></tr> +<tr> +<td>Pack\Tutorials </td><td>Tutorials for <a class="el" href="cp_Packs.html">Creating Packs</a> </td></tr> +</table> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:43 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/jquery.js b/docs/Pack/html/jquery.js new file mode 100644 index 0000000..3db33e6 --- /dev/null +++ b/docs/Pack/html/jquery.js @@ -0,0 +1,72 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv)) +}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false +}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1) +}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null; +p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this); +(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery); diff --git a/docs/Pack/html/maxInstancesDisplay.png b/docs/Pack/html/maxInstancesDisplay.png Binary files differnew file mode 100644 index 0000000..1e2458b --- /dev/null +++ b/docs/Pack/html/maxInstancesDisplay.png diff --git a/docs/Pack/html/nav_f.png b/docs/Pack/html/nav_f.png Binary files differnew file mode 100644 index 0000000..72a58a5 --- /dev/null +++ b/docs/Pack/html/nav_f.png diff --git a/docs/Pack/html/nav_g.png b/docs/Pack/html/nav_g.png Binary files differnew file mode 100644 index 0000000..2093a23 --- /dev/null +++ b/docs/Pack/html/nav_g.png diff --git a/docs/Pack/html/nav_h.png b/docs/Pack/html/nav_h.png Binary files differnew file mode 100644 index 0000000..33389b1 --- /dev/null +++ b/docs/Pack/html/nav_h.png diff --git a/docs/Pack/html/navtree.css b/docs/Pack/html/navtree.css new file mode 100644 index 0000000..41a9cb9 --- /dev/null +++ b/docs/Pack/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/Pack/html/navtree.js b/docs/Pack/html/navtree.js new file mode 100644 index 0000000..e7950c2 --- /dev/null +++ b/docs/Pack/html/navtree.js @@ -0,0 +1,624 @@ +var NAVTREE = +[ + [ "CMSIS-Pack", "index.html", [ + [ "Software Pack Use Cases", "index.html#SWPackVariants", null ], + [ "Revision History of CMSIS-Pack", "pack_revisionHistory.html", null ], + [ "Software Packs Overview", "cp_Packs.html", [ + [ "Pack Conventions", "cp_Packs.html#PackFilenames", [ + [ "Pack File Name", "cp_Packs.html#pack_filename", null ], + [ "Software Component Cclasses", "cp_Packs.html#pack_Cclass", null ] + ] ], + [ "Steps to Create a Pack", "cp_Packs.html#cp_PackSteps", null ], + [ "Pack Tutorial", "cp_Packs.html#PackTutorials", null ] + ] ], + [ "Pack with Software Components", "cp_SWComponents.html", [ + [ "Create PDSC File", "cp_SWComponents.html#cp_CreatePDSC", null ], + [ "Generate a Pack", "cp_SWComponents.html#cp_GeneratePack", null ], + [ "Software Components", "cp_SWComponents.html#cp_Components", null ], + [ "Conditions", "cp_SWComponents.html#cp_Conditions", null ], + [ "Variants", "cp_SWComponents.html#cp_Variants", null ], + [ "RTE_Components.h", "cp_SWComponents.html#cp_RTEComponents_h", null ], + [ "Bundles", "cp_SWComponents.html#cp_Bundles", null ], + [ "Instances", "cp_SWComponents.html#cp_Instances", null ], + [ "API Interface", "cp_SWComponents.html#cp_API", null ], + [ "User Code Templates", "cp_SWComponents.html#cp_CodeTemplates", null ], + [ "Example Projects", "cp_SWComponents.html#cp_Examples", null ] + ] ], + [ "Pack with Device Support", "createPack_DFP.html", [ + [ "Basic Device Family Pack", "createPack_DFP.html#cp_BasicDFP", null ], + [ "System and Startup Files", "createPack_DFP.html#cp_System_Startp", null ], + [ "System View Description File", "createPack_DFP.html#cp_SVD", null ], + [ "Flash Programming Algorithms", "createPack_DFP.html#cp_FlashProgrammingAlgorithm", null ], + [ "Debug Descriptions", "createPack_DFP.html#cp_debugdescription", null ], + [ "Device Properties", "createPack_DFP.html#cp_DeviceProperties", [ + [ "Device Specific Software Components", "createPack_DFP.html#cp_DeviceSWComp", null ] + ] ] + ] ], + [ "Pack with Board Support", "createPackBoard.html", [ + [ "Specify a Development Board", "createPackBoard.html#cp_SpecDevBoard", null ], + [ "Create a BSP Bundle", "createPackBoard.html#cp_BundleExample", null ] + ] ], + [ "Pack Example", "pack_Example.html", null ], + [ "Utilities for Creating Packs", "createPackUtil.html", "createPackUtil" ], + [ "Publish a Pack", "createPackPublish.html", [ + [ "Local Installation", "createPackPublish.html#cp_LocalInstallation", null ], + [ "Web Download", "createPackPublish.html#cp_WebDownload", null ], + [ "Publishing on www.keil.com/pack", "createPackPublish.html#cp_KeilComPack", null ], + [ "Moving a pack from one URL to another", "createPackPublish.html#cp_PackRehosting", null ] + ] ], + [ "Pack Description (*.pdsc) Format", "packFormat.html", "packFormat" ], + [ "Configuration Wizard Annotations", "configWizard.html", [ + [ "Annotation Rules", "configWizard.html#configWizard_annotations", null ], + [ "Code Example", "configWizard.html#configWizard_codeExample", null ], + [ "Tool-specific display", "configWizard.html#configWizard_display", null ] + ] ], + [ "Flash Programming", "flashAlgorithm.html", "flashAlgorithm" ], + [ "Debug Setup with CMSIS-Pack", "coresight_setup.html", "coresight_setup" ], + [ "Project Description (*.cpdsc) Format", "cpdsc_pg.html", [ + [ "Definition of CMSIS project", "cpdsc_pg.html#cpdsc_definition", null ], + [ "CPDSC top level structure", "cpdsc_pg.html#cpdsc_structure", null ], + [ "/package (for CPDSC)", "cpdsc_pg.html#element_package_cpdsc", null ], + [ "/package/create", "cpdsc_pg.html#cpdsc_create_pg", null ], + [ "/package/create/project", "cpdsc_pg.html#element_project", null ], + [ "/package/create/project/target", "cpdsc_pg.html#cpdsc_target_pg", null ], + [ "/package/create/project/target/algorithm", "cpdsc_pg.html#element_target_algorithm", null ], + [ "/package/create/project/target/debugProbe", "cpdsc_pg.html#element_debugProbe", null ], + [ "/package/create/project/target/memory", "cpdsc_pg.html#element_target_memory", null ], + [ "/package/create/project/target/output", "cpdsc_pg.html#element_output", null ], + [ "/package/create/project/select", "cpdsc_pg.html#cpdsc_select_pg", null ], + [ "/package/create/project/select/component", "cpdsc_pg.html#element_project_component", null ], + [ "/package/create/project/select/component/file", "cpdsc_pg.html#element_component_file", null ], + [ "/package/create/project/files", "cpdsc_pg.html#cpdsc_files_pg", null ], + [ "/package/project/create/files/.../file", "cpdsc_pg.html#element_project_file", null ], + [ "/package/create/project/files/.../group", "cpdsc_pg.html#element_project_group", null ] + ] ], + [ "System Description File (*.SDF) Format", "sdf_pg.html", [ + [ "SDF top level structure", "sdf_pg.html#sdf_structure", null ], + [ "/system_description", "sdf_pg.html#sdf_element_system_description", null ], + [ "/system_description/debug_and_trace_config", "sdf_pg.html#sdf_element_debug_and_trace_config", null ], + [ "/system_description/debug_and_trace_config/debug", "sdf_pg.html#sdf_element_debug", null ], + [ "/system_description/.../config_item", "sdf_pg.html#sdf_element_config_item", null ], + [ "/system_description/debug_and_trace_config/trace", "sdf_pg.html#sdf_element_trace", null ], + [ "/system_description/debug_and_trace_config/trace/trace_capture", "sdf_pg.html#sdf_element_trace_capture", null ], + [ "/system_description/platform", "sdf_pg.html#sdf_element_platform", null ], + [ "/system_description/platform/scanchain", "sdf_pg.html#sdf_element_scanchain", null ], + [ "/system_description/platform/scanchain/dap", "sdf_pg.html#sdf_element_dap", null ], + [ "/system_description/platform/scanchain/device", "sdf_pg.html#sdf_element_device", null ], + [ "/system_description/platform/scanchain/../../config_items", "sdf_pg.html#sdf_element_config_items", null ], + [ "/system_description/platform/scanchain/../../device_info_items", "sdf_pg.html#sdf_element_device_info_items", null ], + [ "/system_description/platform/scanchain/../../device_info_items/device_info_item", "sdf_pg.html#sdf_element_device_info_item", null ], + [ "/system_description/platform/topology", "sdf_pg.html#sdf_element_topology", null ], + [ "/system_description/platform/topology/topology_link", "sdf_pg.html#sdf_element_topology_link", null ], + [ "/system_description/platform/clusters", "sdf_pg.html#sdf_element_clusters", null ], + [ "/system_description/platform/clusters/cluster", "sdf_pg.html#sdf_element_cluster", null ] + ] ], + [ "CMSIS-Pack Index Files", "packIndexFile.html", [ + [ "Package Index File (pidx)", "packIndexFile.html#pidxFile", null ], + [ "Vendor Index File (vidx)", "packIndexFile.html#vidxFile", null ], + [ "CMSIS-Pack Index Schema File", "packIndexFile.html#packIndexSchema", null ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"algorithmFunc.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"ftv2pnode.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + var span = document.createElement("span"); + span.style.display = 'inline-block'; + span.style.width = 16*(level+1)+'px'; + span.style.height = '22px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + if (anchor.parent().attr('class')=='memItemLeft' || + anchor.parent().attr('class')=='fieldtype' || + anchor.parent().is(':header')) + { + pos = anchor.parent().position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath($(location).attr('pathname')); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = $(location).attr('hash'); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+ + window.location.hash.substring(1)+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parents().slice(2).prop('tagName')=='TR') { + glowEffect(anchor.parents('div.memitem'),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+1<o.breadcrumbs.length) { + showNode(o,n,index+1,hash); + } else { + if (typeof(n.childrenData)==='string') { + var varName = n.childrenData; + getScript(n.relpath+varName,function(){ + n.childrenData = getData(varName); + node.expanded=false; + showNode(o,node,index,hash); // retry with child node expanded + },true); + } else { + var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); + if (rootBase=="index" || rootBase=="pages" || rootBase=="search") { + expandNode(o, n, true, true); + } + selectAndHighlight(hash,n); + } + } + } + } else { + selectAndHighlight(hash); + } +} + +function removeToInsertLater(element) { + var parentNode = element.parentNode; + var nextSibling = element.nextSibling; + parentNode.removeChild(element); + return function() { + if (nextSibling) { + parentNode.insertBefore(element, nextSibling); + } else { + parentNode.appendChild(element); + } + }; +} + +function getNode(o, po) +{ + var insertFunction = removeToInsertLater(po.li); + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } + insertFunction(); +} + +function gotoNode(o,subIndex,root,hash,relpath) +{ + var nti = navTreeSubIndices[subIndex][root+hash]; + o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]); + if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index + navTo(o,NAVTREE[0][1],"",relpath); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + if (o.breadcrumbs) { + o.breadcrumbs.unshift(0); // add 0 for root node + showNode(o, o.node, 0, hash); + } +} + +function navTo(o,root,hash,relpath) +{ + var link = cachedLink(); + if (link) { + var parts = link.split('#'); + root = parts[0]; + if (parts.length>1) hash = '#'+parts[1]; + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + //root=root.replace(/_source\./,'.'); // source link to doc link + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>'); +} + +function showSyncOn(n,relpath) +{ + n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>'); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash')); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,window.location.hash,relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$="'+clslink+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); + } else if (!animationInProgress) { + $('#doc-content').scrollTop(0); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + navTo(o,toroot,window.location.hash,relpath); + } + }) +} + diff --git a/docs/Pack/html/navtreeindex0.js b/docs/Pack/html/navtreeindex0.js new file mode 100644 index 0000000..6b64d6f --- /dev/null +++ b/docs/Pack/html/navtreeindex0.js @@ -0,0 +1,232 @@ +var NAVTREEINDEX0 = +{ +"algorithmFunc.html":[11,2], +"algorithmFunc.html#BlankCheck":[11,2,0], +"algorithmFunc.html#EraseChip":[11,2,1], +"algorithmFunc.html#EraseSector":[11,2,2], +"algorithmFunc.html#Init":[11,2,3], +"algorithmFunc.html#ProgramPage":[11,2,4], +"algorithmFunc.html#UnInit":[11,2,5], +"algorithmFunc.html#Verify":[11,2,6], +"configWizard.html":[10], +"configWizard.html#configWizard_annotations":[10,0], +"configWizard.html#configWizard_codeExample":[10,1], +"configWizard.html#configWizard_display":[10,2], +"coresight_setup.html":[12], +"cp_Editors.html":[7,1], +"cp_Packs.html":[2], +"cp_Packs.html#PackFilenames":[2,0], +"cp_Packs.html#PackTutorials":[2,2], +"cp_Packs.html#cp_PackSteps":[2,1], +"cp_Packs.html#pack_Cclass":[2,0,1], +"cp_Packs.html#pack_filename":[2,0,0], +"cp_SWComponents.html":[3], +"cp_SWComponents.html#cp_API":[3,8], +"cp_SWComponents.html#cp_Bundles":[3,6], +"cp_SWComponents.html#cp_CodeTemplates":[3,9], +"cp_SWComponents.html#cp_Components":[3,2], +"cp_SWComponents.html#cp_Conditions":[3,3], +"cp_SWComponents.html#cp_CreatePDSC":[3,0], +"cp_SWComponents.html#cp_Examples":[3,10], +"cp_SWComponents.html#cp_GeneratePack":[3,1], +"cp_SWComponents.html#cp_Instances":[3,7], +"cp_SWComponents.html#cp_RTEComponents_h":[3,5], +"cp_SWComponents.html#cp_Variants":[3,4], +"cp_ZIPTool.html":[7,2], +"cpdsc_pg.html":[13], +"cpdsc_pg.html#cpdsc_create_pg":[13,3], +"cpdsc_pg.html#cpdsc_definition":[13,0], +"cpdsc_pg.html#cpdsc_files_pg":[13,13], +"cpdsc_pg.html#cpdsc_select_pg":[13,10], +"cpdsc_pg.html#cpdsc_structure":[13,1], +"cpdsc_pg.html#cpdsc_target_pg":[13,5], +"cpdsc_pg.html#element_component_file":[13,12], +"cpdsc_pg.html#element_debugProbe":[13,7], +"cpdsc_pg.html#element_output":[13,9], +"cpdsc_pg.html#element_package_cpdsc":[13,2], +"cpdsc_pg.html#element_project":[13,4], +"cpdsc_pg.html#element_project_component":[13,11], +"cpdsc_pg.html#element_project_file":[13,14], +"cpdsc_pg.html#element_project_group":[13,15], +"cpdsc_pg.html#element_target_algorithm":[13,6], +"cpdsc_pg.html#element_target_memory":[13,8], +"createPackBoard.html":[5], +"createPackBoard.html#cp_BundleExample":[5,1], +"createPackBoard.html#cp_SpecDevBoard":[5,0], +"createPackPublish.html":[8], +"createPackPublish.html#cp_KeilComPack":[8,2], +"createPackPublish.html#cp_LocalInstallation":[8,0], +"createPackPublish.html#cp_PackRehosting":[8,3], +"createPackPublish.html#cp_WebDownload":[8,1], +"createPackUtil.html":[7], +"createPack_DFP.html":[4], +"createPack_DFP.html#cp_BasicDFP":[4,0], +"createPack_DFP.html#cp_DeviceProperties":[4,5], +"createPack_DFP.html#cp_DeviceSWComp":[4,5,0], +"createPack_DFP.html#cp_FlashProgrammingAlgorithm":[4,3], +"createPack_DFP.html#cp_SVD":[4,2], +"createPack_DFP.html#cp_System_Startp":[4,1], +"createPack_DFP.html#cp_debugdescription":[4,4], +"debug_description.html":[12,0], +"debug_description.html#DebugFunctions":[12,0,6,2], +"debug_description.html#DebugSyntaxRules":[12,0,6,0], +"debug_description.html#DebugVars":[12,0,6,3], +"debug_description.html#ExpressionType":[12,0,6,1], +"debug_description.html#das_concept":[12,0,0], +"debug_description.html#das_elements":[12,0,1], +"debug_description.html#debugCoreStart":[12,0,4,3], +"debug_description.html#debugCoreStop":[12,0,4,4], +"debug_description.html#debugDeviceUnlock":[12,0,5,1], +"debug_description.html#debugPortSetup":[12,0,4,0], +"debug_description.html#debugPortStart":[12,0,4,1], +"debug_description.html#debugPortStop":[12,0,4,2], +"debug_description.html#default_sequences":[12,0,4], +"debug_description.html#externalTools":[12,0,6,4], +"debug_description.html#hwReset":[12,0,5,2], +"debug_description.html#nonstdExamples":[12,0,5], +"debug_description.html#pdsc_SequenceNameEnum_pg":[12,0,2], +"debug_description.html#resetCatchClear":[12,0,4,11], +"debug_description.html#resetCatchSet":[12,0,4,10], +"debug_description.html#resetHardware":[12,0,4,7], +"debug_description.html#resetHardwareAssert":[12,0,4,8], +"debug_description.html#resetHardwareDeassert":[12,0,4,9], +"debug_description.html#resetProcessor":[12,0,4,6], +"debug_description.html#resetSystem":[12,0,4,5], +"debug_description.html#sequenceExample":[12,0,5,3], +"debug_description.html#traceStart":[12,0,5,0], +"debug_description.html#usage_of_sequences":[12,0,3], +"debug_description.html#writing_sequences":[12,0,6], +"element_keywords.html":[9,4], +"element_releases.html":[9,6], +"element_releases.html#element_release":[9,6,0], +"element_repository.html":[9,5], +"element_requirements_pg.html":[9,7], +"element_requirements_pg.html#element_compilers":[9,7,1], +"element_requirements_pg.html#element_languages":[9,7,2], +"element_requirements_pg.html#element_packages":[9,7,0], +"element_taxonomy.html":[9,8], +"element_taxonomy.html#element_taxonomyDescription":[9,8,0], +"flashAlgorithm.html":[11], +"flashAlgorithm.html#AddFPA":[11,1], +"flashAlgorithm.html#CreateFPA":[11,0], +"index.html":[], +"index.html#SWPackVariants":[0], +"packChk.html":[7,0], +"packChk.html#packChkMessages":[7,0,0], +"packFormat.html":[9], +"packFormat.html#Filenames":[9,0], +"packFormat.html#PDSC_Example":[9,2], +"packFormat.html#PackSchema":[9,1], +"packIndexFile.html":[15], +"packIndexFile.html#packIndexSchema":[15,2], +"packIndexFile.html#pidxFile":[15,0], +"packIndexFile.html#vidxFile":[15,1], +"pack_Example.html":[6], +"pack_revisionHistory.html":[1], +"pages.html":[], +"pdsc_apis_pg.html":[9,9], +"pdsc_apis_pg.html#element_api":[9,9,1], +"pdsc_apis_pg.html#element_apis":[9,9,0], +"pdsc_boards_pg.html":[9,12], +"pdsc_boards_pg.html#element_board":[9,12,1], +"pdsc_boards_pg.html#element_board_book":[9,12,7], +"pdsc_boards_pg.html#element_board_compatibleDevice":[9,12,4], +"pdsc_boards_pg.html#element_board_debugInterface":[9,12,6], +"pdsc_boards_pg.html#element_board_feature":[9,12,2], +"pdsc_boards_pg.html#element_board_image":[9,12,5], +"pdsc_boards_pg.html#element_board_mountedDevice":[9,12,3], +"pdsc_boards_pg.html#element_boards":[9,12,0], +"pdsc_components_pg.html":[9,14], +"pdsc_components_pg.html#Component_Bundle":[9,14,0], +"pdsc_components_pg.html#Component_Files":[9,14,1], +"pdsc_components_pg.html#Component_Instances":[9,14,2], +"pdsc_components_pg.html#RTE_Components_h":[9,14,3], +"pdsc_components_pg.html#element_bundle":[9,14,5], +"pdsc_components_pg.html#element_component":[9,14,6], +"pdsc_components_pg.html#element_components":[9,14,4], +"pdsc_components_pg.html#element_file":[9,14,8], +"pdsc_components_pg.html#element_files":[9,14,7], +"pdsc_conditions_pg.html":[9,13], +"pdsc_conditions_pg.html#element_accept":[9,13,2], +"pdsc_conditions_pg.html#element_condition":[9,13,1], +"pdsc_conditions_pg.html#element_conditions":[9,13,0], +"pdsc_conditions_pg.html#element_deny":[9,13,4], +"pdsc_conditions_pg.html#element_require":[9,13,3], +"pdsc_devices_pg.html":[9,11], +"pdsc_devices_pg.html#element_devices":[9,11,0], +"pdsc_examples_pg.html":[9,15], +"pdsc_examples_pg.html#element_example":[9,15,1], +"pdsc_examples_pg.html#element_example_attribute_component":[9,15,6], +"pdsc_examples_pg.html#element_example_attributes":[9,15,5], +"pdsc_examples_pg.html#element_example_board":[9,15,2], +"pdsc_examples_pg.html#element_example_project":[9,15,3], +"pdsc_examples_pg.html#element_example_project_env":[9,15,4], +"pdsc_examples_pg.html#element_examples":[9,15,0], +"pdsc_family_pg.html":[9,11,1], +"pdsc_family_pg.html#DebugSyntaxRules":[9,11,1,23,0], +"pdsc_family_pg.html#ExpressionType":[9,11,1,23,1], +"pdsc_family_pg.html#element_algorithm":[9,11,1,3], +"pdsc_family_pg.html#element_book":[9,11,1,7], +"pdsc_family_pg.html#element_compile":[9,11,1,8], +"pdsc_family_pg.html#element_dbg_datapatch":[9,11,1,25], +"pdsc_family_pg.html#element_debug":[9,11,1,24], +"pdsc_family_pg.html#element_debugconfig":[9,11,1,14], +"pdsc_family_pg.html#element_debugport":[9,11,1,16], +"pdsc_family_pg.html#element_debugvars":[9,11,1,15], +"pdsc_family_pg.html#element_description":[9,11,1,9], +"pdsc_family_pg.html#element_device":[9,11,1,2], +"pdsc_family_pg.html#element_dp_cjtag":[9,11,1,19], +"pdsc_family_pg.html#element_dp_jtag":[9,11,1,17], +"pdsc_family_pg.html#element_dp_swd":[9,11,1,18], +"pdsc_family_pg.html#element_environment":[9,11,1,10], +"pdsc_family_pg.html#element_family":[9,11,1,0], +"pdsc_family_pg.html#element_feature":[9,11,1,11], +"pdsc_family_pg.html#element_flashblock":[9,11,1,5], +"pdsc_family_pg.html#element_flashgap":[9,11,1,6], +"pdsc_family_pg.html#element_flashinfo":[9,11,1,4], +"pdsc_family_pg.html#element_memory":[9,11,1,12], +"pdsc_family_pg.html#element_processor":[9,11,1,13], +"pdsc_family_pg.html#element_seq_block":[9,11,1,23], +"pdsc_family_pg.html#element_seq_control":[9,11,1,22], +"pdsc_family_pg.html#element_sequence":[9,11,1,21], +"pdsc_family_pg.html#element_sequences":[9,11,1,20], +"pdsc_family_pg.html#element_subFamily":[9,11,1,1], +"pdsc_family_pg.html#element_trace":[9,11,1,26], +"pdsc_family_pg.html#element_trace_serialwire":[9,11,1,27], +"pdsc_family_pg.html#element_trace_tracebuffer":[9,11,1,29], +"pdsc_family_pg.html#element_trace_traceport":[9,11,1,28], +"pdsc_family_pg.html#element_variant":[9,11,1,30], +"pdsc_generators_pg.html":[9,10], +"pdsc_generators_pg.html#element_gen_argument":[9,10,7], +"pdsc_generators_pg.html#element_gen_command":[9,10,6], +"pdsc_generators_pg.html#element_gen_eclipse":[9,10,4], +"pdsc_generators_pg.html#element_gen_exe":[9,10,3], +"pdsc_generators_pg.html#element_gen_file":[9,10,10], +"pdsc_generators_pg.html#element_gen_files":[9,10,9], +"pdsc_generators_pg.html#element_gen_project_files":[9,10,8], +"pdsc_generators_pg.html#element_gen_select":[9,10,2], +"pdsc_generators_pg.html#element_gen_web":[9,10,5], +"pdsc_generators_pg.html#element_generator":[9,10,1], +"pdsc_generators_pg.html#element_generators":[9,10,0], +"pdsc_package_pg.html":[9,3], +"pdsc_package_pg.html#element_package":[9,3,0], +"sdf_pg.html":[14], +"sdf_pg.html#sdf_element_cluster":[14,17], +"sdf_pg.html#sdf_element_clusters":[14,16], +"sdf_pg.html#sdf_element_config_item":[14,4], +"sdf_pg.html#sdf_element_config_items":[14,11], +"sdf_pg.html#sdf_element_dap":[14,9], +"sdf_pg.html#sdf_element_debug":[14,3], +"sdf_pg.html#sdf_element_debug_and_trace_config":[14,2], +"sdf_pg.html#sdf_element_device":[14,10], +"sdf_pg.html#sdf_element_device_info_item":[14,13], +"sdf_pg.html#sdf_element_device_info_items":[14,12], +"sdf_pg.html#sdf_element_platform":[14,7], +"sdf_pg.html#sdf_element_scanchain":[14,8], +"sdf_pg.html#sdf_element_system_description":[14,1], +"sdf_pg.html#sdf_element_topology":[14,14], +"sdf_pg.html#sdf_element_topology_link":[14,15], +"sdf_pg.html#sdf_element_trace":[14,5], +"sdf_pg.html#sdf_element_trace_capture":[14,6], +"sdf_pg.html#sdf_structure":[14,0] +}; diff --git a/docs/Pack/html/open.png b/docs/Pack/html/open.png Binary files differnew file mode 100644 index 0000000..30f75c7 --- /dev/null +++ b/docs/Pack/html/open.png diff --git a/docs/Pack/html/packChk.html b/docs/Pack/html/packChk.html new file mode 100644 index 0000000..8276775 --- /dev/null +++ b/docs/Pack/html/packChk.html @@ -0,0 +1,416 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>packChk.exe</title> +<title>CMSIS-Pack: packChk.exe</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('packChk.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">packChk.exe </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p><b>packChk.exe</b> is a utility for validation of a Software Pack. It operates on the unzipped content of the Software Pack and is located in the directory <b>.\CMSIS\Utilities</b> of the <b>ARM::CMSIS</b> Pack.</p> +<p><b>packChk.exe</b> performs the following operations:</p> +<ul> +<li>Reads the content of the specified *.pdsc file. The path to this *.pdsc file is considered as root directory of the Software Pack.</li> +<li>Verifies the existence of all files in the Software Pack that are referenced in the *.pdsc file.</li> +<li>Checks for presence and correctness of mandatory elements such as <vendor>, <version>, etc.</li> +<li>Optionally, reads other PDSC files to resolve dependencies on <apis>, <boards>, and <conditions>.</li> +<li>Optionally, checks all System View Description files (*.SVD) referenced in the *.pdsc file using SVDConv.exe. Refer to <a href="../../SVD/html/svd_validate_file_pg.html">SVD File Validation</a> for details.</li> +<li>Optionally, verifies the element <url>.</li> +<li>Optionally, creates the standardized name of the Software Pack file for further processing in scripts.</li> +<li>Sets the exit status reflecting the validation result to: <br/> + 0 : no errors detected <br/> + 1 : errors during validation detected</li> +</ul> +<h2>Operation </h2> +<p><b>packChk.exe</b> is invoked from the command line:<br/> +</p> +<div class="fragment"><div class="line">packChk.exe <pdsc_file> <options></div> +</div><!-- fragment --><p><br/> +</p> +<table class="cmtable" summary="packChk Args"> +<tr> +<th><options> </th><th>Short Name </th><th>Description </th></tr> +<tr> +<td>-i <file> </td><td>Check component dependencies </td><td>Reference PDSC file(s) used to resolve component dependencies in conditions. </td></tr> +<tr> +<td>-n <file> </td><td>Write Pack file name </td><td>Write a standardized name for the Software Pack to the specified ASCII file. </td></tr> +<tr> +<td>-s </td><td>Verify SVD files </td><td>Each SVD file referenced in the *.pdsc file is <a href="../../SVD/html/svd_validate_file_pg.html"><b>validated</b></a> with <b>SVDConv.exe</b>. With this option set, <b>SVDConv.exe</b> is invoked from the same directory as <b>packChk.exe</b>. </td></tr> +<tr> +<td>-u <url> </td><td>Pack Server URL </td><td>Verifies that the specified URL matches the <url> element in the *.pdsc file. </td></tr> +<tr> +<td>-v </td><td>Verbose </td><td>Prints extra process information. </td></tr> +<tr> +<td>-x <msg-list> </td><td>Suppress </td><td>Suppress all listed validation messages. You can separate the values with blanks to create a list or repeat the option. Ranges are not allowed. Suppressing validation messages does not affect error and warning counters. For a list of messages refer to <a href="#packchk_valid_msgs"><b>Validation Messages</b></a>. </td></tr> +<tr> +<td>-h/-? </td><td>Help </td><td>Show help. </td></tr> +</table> +<p><b>Examples</b></p> +<p>Run <b>packChk.exe</b> on the package description file called <b>MyVendor.MyPack.pdsc</b>. <b>packChk.exe</b> verifies the file against the Software Pack that is located in the same directory. </p> +<pre class="fragment">packChk.exe MyVendor.MyPack.pdsc +</pre><p>Run <b>packChk.exe</b> on the package description file called <b>MyVendor.MyPack.pdsc</b> in the current directory and try to resolve conditions using the ARM.CMSIS.pdsc file based in another directory. </p> +<pre class="fragment">packChk.exe MyVendor.MyPack.pdsc -i ..\..\PACK\ARM\CMSIS\ARM.CMSIS.pdsc +</pre><p>Run <b>packChk.exe</b> on the package description file called <b>MyVendor.MVCM3.pdsc</b>, verify SVD files, verify the URL to the Pack Server, and generate a ASCII text file with the standardized name of the Software Pack. </p> +<pre class="fragment">packChk.exe "MyVendor.MVCM3.pdsc" -s -u "http://www.myvendor.com/pack" -n packname.txt +</pre><p>Run <b>packChk.exe</b> on the package description file called <b>MyVendor.MVCM3.pdsc</b>. Suppress validation messages M304 and M331. </p> +<pre class="fragment">packChk.exe MyVendor.MVCM3.pdsc -x M304 M331 // messages as a list +packChk.exe MyVendor.MVCM3.pdsc -x M304 -x M331 // option repeated +</pre><h1><a class="anchor" id="packChkMessages"></a> +Error and Warning Messages</h1> +<p>The following table shows the errors and warnings issued by packChk.</p> +<h2>Internal Errors </h2> +<p>If you encounter one of the following errors, please send a problem report via email to <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a>.</p> +<table class="cmtable" summary="packChk Internal Msgs"> +<tr> +<th>Message Number </th><th>Type </th><th>Description </th><th>Action </th></tr> +<tr> +<td>M100 </td><td>ERROR </td><td>GetModuleHandle failed </td><td>Call support. </td></tr> +<tr> +<td>M101 </td><td>ERROR </td><td>Unknown error! </td><td>Call support. </td></tr> +<tr> +<td>M102 </td><td>ERROR </td><td>MFC initialization failed </td><td>Call support. </td></tr> +<tr> +<td>M103 </td><td>ERROR </td><td>Internal Error: <em>'REF'</em> </td><td>Call support and submit the error message. </td></tr> +<tr> +<td>M104 - M107 </td><td>N.A. </td><td><em>not in use</em> </td><td>— </td></tr> +<tr> +<td>M108 </td><td>ERROR </td><td>Reading PDSC File failed! </td><td>Verify file and folder permissions. Verify whether the file is corrupt or in another folder. Repeat the process. If this error persists, call support. </td></tr> +<tr> +<td>M109 </td><td>ERROR </td><td>Constructing Model failed! </td><td>Building Model based on the PDSC information failed. Repeat the process. If this error persists, call support. </td></tr> +<tr> +<td>M110 </td><td>ERROR </td><td>Verifying Model failed </td><td>Model based verification of the PDCS information failed. Repeat the process. If this error persists, call support. </td></tr> +</table> +<h2>Invocation Errors </h2> +<table class="cmtable" summary="packChk Invocation Msgs"> +<tr> +<th>Message Number </th><th>Type </th><th>Description </th><th>Action </th></tr> +<tr> +<td>M200 </td><td>ERROR </td><td>Invalid arguments! </td><td>At least one argument is wrong. Correct the argument. </td></tr> +<tr> +<td>M201 </td><td>ERROR </td><td>Too many arguments! </td><td>The list of arguments is too long. Verify if you have used one argument twice. </td></tr> +<tr> +<td>M202 </td><td>ERROR </td><td>No PDSC input file specified </td><td>Correct the command line. <b>packChk.exe</b> expects a *.pdsc file name as input. </td></tr> +<tr> +<td>M203 </td><td>ERROR </td><td>Error reading PDSC file <em>'PATH/FILENAME'!</em> </td><td>Verify the PDSC file for consistency. </td></tr> +<tr> +<td>M204 </td><td>ERROR </td><td>File not found: <em>'PATH'</em> </td><td>The specified PDSC file could not be found in the <em>PATH</em> displayed in the message. Correct the path or the filename. </td></tr> +<tr> +<td>M205 </td><td>ERROR </td><td>Cannot create Pack Name file <em>'PATH'</em> </td><td>Check the disk space or your permissions. Correct the path name. </td></tr> +<tr> +<td>M206 </td><td>ERROR </td><td>Multiple PDSC files found in package: <em>'FILES'</em> </td><td>Only one PDSC file is allowed in a package. Remove unnecessary PDSC files. The message lists all *.pdsc files found. </td></tr> +<tr> +<td>M207 </td><td>ERROR </td><td>PDSC file name mismatch! <br/> + Expected: <em>'PDSC1.pdsc'</em> <br/> + Actual : <em>'PDSC2.pdsc'</em> </td><td>The PDSC file expected has not been found. Rename or exchange the PDSC file. </td></tr> +<tr> +<td>M208 </td><td>ERROR </td><td>Error calling SVDConv.exe: <em>'PATH'</em> </td><td>SVDConv.exe was not found. Copy the executable into the directory of packChk.exe or enter the path where SVDConv.exe is located. Default is <span class="XML-Token">CMSIS\Utilities</span>. </td></tr> +<tr> +<td>M209 </td><td>ERROR </td><td>Unknown Option: <em>'OPT'</em> </td><td>The command line option entered is not known or invalid. </td></tr> +<tr> +<td>M210 </td><td>ERROR </td><td>Only one input file to be checked is allowed. </td><td>You can only check one PDSC file at a time. </td></tr> +</table> +<p><a class="anchor" id="packchk_valid_msgs"></a></p> +<h2>Validation Messages </h2> +<table class="cmtable" summary="packChk Validation Msgs"> +<tr> +<th>Message Number </th><th>Type </th><th>Description </th><th>Action </th></tr> +<tr> +<td>M300 </td><td>ERROR </td><td>The following files are listed in PDSC but not part of the package: <br/> + <em>'PATH'</em>: <br/> + <em>'FILES'</em> </td><td>The files listed should be part of the package. However, these files could not be added to the package. Verify whether the files exist. Verify the file permissions. </td></tr> +<tr> +<td>M301 </td><td>ERROR </td><td>Checking Pack URL of PDSC file failed: <br/> + Expected URL : <em>'URL1'</em> <br/> + Package URL : <em>'URL2'</em> </td><td>The URL entered in the package does not match the value entered for comparison. Change the URL in the package. Check for possible misspellings of <em>URL1</em>. </td></tr> +<tr> +<td>M302 </td><td>ERROR</td><td>No vendor tag found in the PDSC file! Add the <vendor> tag and provide the vendor name. For example: <code><vendor>Keil</vendor></code>. </td><td>No vendor entered in the PDSC file. Enter the tag <span class="XML-Token"><vendor></span> and add the vendor name. Refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M303 </td><td>ERROR</td><td>No package name found in the PDSC file! Add the <name> tag and provide the package name. For example: <code><name>MCU-Name_DFP</name></code>. </td><td>No package name found in the PDSC file. Enter the tag <span class="XML-Token"><name></span> and add the package name. For example <span class="XML-Token"><name>MCU-Name_DFP</name></span>. The package name is mandatory to create the package. Refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M304 </td><td>ERROR </td><td>No package URL (<url>-tag and/or value) found in PDSC file! </td><td>Add the tag <span class="XML-Token"><url></span> and enter a URL in the PDSC file. The URL points to the web page from which users can download the package. Refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M305 </td><td>ERROR</td><td>No package version ("version"-attribute in a <release>-tag) found in PDSC file! </td><td>No version or release information found in the PDSC file. Add the attribute <span class="XML-Token">version</span> to the tag <span class="XML-Token"><release></span> and enter the version number. Refer to <a class="el" href="element_releases.html#element_release">/package/releases/release</a>. </td></tr> +<tr> +<td>M306 </td><td>ERROR</td><td>No package description found in the PDSC file. Add the <description>-tag and provide a descriptive text. </td><td>No package description was found in the PDSC file. Enter the tag <span class="XML-Token"><description></span> and briefly describe the package content. Refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M307 </td><td>ERROR </td><td>Checking SVD file <em>'PATH'</em> failed! </td><td>Verify the consistency of the *.SVD file. Refer to <a href="../../SVD/html/svd_validate_file_pg.html">SVD File Validation</a>. </td></tr> +<tr> +<td>M308 </td><td>ERROR </td><td>SVD file <em>'PATH'</em> not found. Add the SVD file or correct the PDSC entry. </td><td>The *.SVD file was not found in the path specified in the message. Add the SVD file or correct the entry in the *.pdsc file. </td></tr> +<tr> +<td>M309 </td><td>ERROR </td><td>Cannot read file information: <em>'PATH'</em>. </td><td>Access to the file specified failed. Verify permissions and spelling. </td></tr> +<tr> +<td>M310 </td><td>ERROR </td><td>Filename mismatch (case sensitive):<br/> + PDSC name : <em>'PDSC_FILENAME'</em> <br/> + Filename : <em>'SYSTEM'</em> </td><td>Filenames are case sensitive. Correct spelling. </td></tr> +<tr> +<td>M323 </td><td>ERROR </td><td>File/Path not found: <em>'PATH'</em> </td><td>The file or path entered in the PDSC file could not be found. Verify the path information. </td></tr> +<tr> +<td>M324 </td><td>ERROR </td><td>Board referenced in Example <em>'EXAMPLE'</em> is undefined: <em>'VENDOR'</em> : <em>'BOARD'</em> </td><td>The board referenced in the example application could not be found. Define the board (<a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a>) or correct the reference information (<a class="el" href="pdsc_examples_pg.html#element_example_board">/package/examples/example/board</a>). </td></tr> +<tr> +<td>M325 </td><td>ERROR </td><td>Board <em>'NAME'</em> redefined, already defined in Line <em>'LINE'</em>: <em>'PATH'</em> </td><td>This board has been defined already in the line <em>'LINE'</em> of the file <em>'PATH'</em>. Verify and remove one of the board definitions. </td></tr> +<tr> +<td>M326 </td><td>ERROR </td><td>Path is not conformant: <em>'PATH'</em>: Absolute Paths or Drive references are not allowed, use Paths relative to PDSC file. </td><td>The path needs to be relative to the PDSC file so that a dependency of a certain file system does not occur. </td></tr> +<tr> +<td>M327 </td><td>ERROR </td><td>Path is not conformant: <em>'PATH'</em>: Backslashes are not recommended, use forward slashes. </td><td>Paths to files should adhere to the POSIX standard using forward slashes (/). </td></tr> +<tr> +<td>M328 </td><td>ERROR </td><td>Version not set for Release Information <em>'DESCR'</em> </td><td>The release defined through the description <em>'DESCR'</em> requires the attribute <span class="XML-Token"><version></span>. Refer to <a class="el" href="element_releases.html#element_release">/package/releases/release</a>. </td></tr> +<tr> +<td>M329 </td><td>ERROR </td><td>Description not set for Release Information <em>'VER'</em> </td><td>The release defined through the version <em>'VER'</em> needs a description. Refer to <a class="el" href="element_releases.html#element_release">/package/releases/release</a>. </td></tr> +<tr> +<td>M330 </td><td>ERROR </td><td>Condition redefined: <em>'COND'</em>, already defined in Line <em>'LINE'</em> </td><td>The condition has been defined already in a previous line. Correct the condition name, or remove the duplicate. </td></tr> +<tr> +<td>M331 </td><td>WARNING </td><td>Condition unused: <em>'COND'</em> </td><td>The condition has been defined but not used further. Remove the condition or add condition rules. Refer to <a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition</a>. </td></tr> +<tr> +<td>M332 </td><td>ERROR </td><td>Condition undefined: <em>'COND'</em> </td><td>A condition has been used but not defined. Correct the name of the condition or define the missing condition. Refer to <a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition</a>. </td></tr> +<tr> +<td>M333 </td><td>WARNING </td><td>Component has no condition: Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, <em>Csub='CSUB'</em>, <em>Cversion=</em> 'CVER' </td><td>The component defined has no condition. If the component has restrictions, then add a condition to the component definition. Refer to <a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a>. </td></tr> +<tr> +<td>M334 </td><td>WARNING </td><td>Config File has no version: <em>'PATH'</em> </td><td>Add version information to the configuration file. </td></tr> +<tr> +<td>M335 </td><td>WARNING </td><td>Component declared as 'Board Support' has no ref to a device: Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, Cversion= <em>'CVER'</em> </td><td>A component defined as 'board support' needs a reference to a device. Add a device or correct the component definition. Refer to attribute <em>Cclass</em> of <a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a> and <a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">/package/boards/board/mountedDevice</a>. </td></tr> +<tr> +<td>M336 </td><td>WARNING </td><td>No reference to a device or device not found: Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, Cversion= <em>'CVER'</em> </td><td>Define the device <a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> or correct the information about the device in the reference. </td></tr> +<tr> +<td>M337 </td><td>WARNING </td><td>File with category <em>'CAT'</em> has wrong extension <em>'EXT'</em>: <em>'PATH'</em> </td><td>The extension of the file does not match the file category. Verify the extension to match the category. Refer to <a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>. </td></tr> +<tr> +<td>M338 </td><td>WARNING </td><td>No releases found. </td><td>The PDSC file is missing release information. Add <span class="XML-Token"><release></span> information to the file. Refer to <a class="el" href="element_releases.html">/package/releases element</a>. </td></tr> +<tr> +<td>M339 </td><td>WARNING </td><td>Include Path <em>'PATH'</em> must not be a file! </td><td>The path specified contains a filename. Correct the path infomation and remove the filename. </td></tr> +<tr> +<td>M340 </td><td>WARNING </td><td>Include Path <em>'PATH'</em> must end with '/' or '\' </td><td>Include paths must end with a slash or backslash. Verify and correct the path name. </td></tr> +<tr> +<td>M341 </td><td>WARNING </td><td>File with <em>'COMP'</em> dependency must have extension <em>'EXT'</em> : <em>'PATH'</em> </td><td>A file defining component dependencies must have the extension mentioned in the message. Verify the settings and correct the file extension. </td></tr> +<tr> +<td>M342 </td><td>WARNING </td><td>File with attribute <em>'ATTR'</em> must not have category <em>'CAT'</em>: <em>'PATH'</em> </td><td>A file with the attribute mentioned in the message must not have the category specified. Correct the attribute or the category.Refer to <a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>. </td></tr> +<tr> +<td>M343 </td><td>WARNING </td><td>File with attribute <em>'ATTR'</em> requires <em>'ATTR2'</em> attribute: <em>'PATH'</em> </td><td>A file with the attribute <em>'ATTR'</em> requires another attribute <em>'ATTR2'</em>. Add the required attribute or correct attribute <em>'ATTR'</em>. Refer to <a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>. </td></tr> +<tr> +<td>M344 </td><td>WARNING </td><td>File shall have condition containing <em>'COND'</em>: <em>'PATH'</em> </td><td>The file should have a condition. Define a condition in the file specified in the message. </td></tr> +<tr> +<td>M345 </td><td>WARNING </td><td>URL not found : <em>'URL'</em> </td><td>The specified URL could not be found. Correct the URL. Refer to <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M346 </td><td>WARNING </td><td>Referenced device(s) in <em>'BOARD'</em> not found: <em>'DEVICE'</em> </td><td>The device or devices specified for the board could not be found. Verify and correct the device name or the board name. Refer to <a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">/package/boards/board/mountedDevice</a> and <a class="el" href="pdsc_boards_pg.html#element_board_compatibleDevice">/package/boards/board/compatibleDevice</a>. </td></tr> +<tr> +<td>M347 </td><td>WARNING </td><td>Generator ID in Component Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, Cversion= <em>'CVER'</em> is undefined: <em>'GENID'</em> </td><td>The generator ID used in the component could not be found. Verify and correct the generator ID (<a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a>), or define the generator ID (ref <a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a>). </td></tr> +<tr> +<td>M348 </td><td>WARNING </td><td>Feature redefined for <em>'MCU'</em>, see Line <em>'REF_LINE'</em>: <em>'FEATURE'</em> </td><td>This feature <em>'FEATURE'</em> has been defined already on the same level in line <em>'REF_LINE'</em>. The feature characteristics defined on line <em>'LINE'</em> overwrite those from <em>'REF_LINE'</em>. Correct the feature (<a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a>). </td></tr> +<tr> +<td>M349 </td><td>WARNING </td><td>Examples found, but no board description(s) found </td><td>Example projects have been found for a board that was not defined. Correct the entry for the examples (<a class="el" href="pdsc_examples_pg.html#element_example_board">/package/examples/example/board</a>) or define the board (<a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a>). </td></tr> +<tr> +<td>M350 </td><td>WARNING </td><td>No <em>'COMP'</em> found for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>The package (<a class="el" href="pdsc_package_pg.html#element_package">/package</a>) defines a Vendor-MCU combination for which no component was defined. Define a component (<a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a>) or verify the <em>'VENDOR'</em> - <em>'MCU'</em> settings. </td></tr> +<tr> +<td>M351 </td><td>WARNING </td><td>Component <em>'COMP'</em> (<em>'COMPID'</em>) error for <em>'VENDOR'</em>: <em>'MCU'</em> ( <em>'COMPILER'</em>): <em>'MSG'</em> </td><td>An unspecified error was found for the component. The message might give detailed information about the error. </td></tr> +<tr> +<td>M352 </td><td>WARNING </td><td>No Directories/Files found for <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em>: <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>No files or directories could be found for the defined component. Add the missing information. Refer to <a class="el" href="pdsc_components_pg.html#element_files">/package/.../files</a>. </td></tr> +<tr> +<td>M353 </td><td>WARNING </td><td>No <em>'FILECAT'</em> File found for Component <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>No file with the mentioned file category was found for the component. Verify whether the file exists or correct the information. Refer to attribute <em>category</em> in <a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>. </td></tr> +<tr> +<td>M354 </td><td>WARNING </td><td>Multiple <em>'FILECAT'</em> Files found for Component <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>Multiple files with the mentioned file category were found for the specified component. Verify and rename the files, or correct the component settings (<a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>). </td></tr> +<tr> +<td>M355 </td><td>WARNING </td><td>No <em>'FILECAT'</em> Directory found for Component <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>The directory specified for the file category was not found. Correct the information in the component settings (<a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a>). </td></tr> +<tr> +<td>M356 </td><td>WARNING </td><td>Multiple <em>'FILECAT'</em> Directories found for Component <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>Multiple directories were found for the same file category in the specified component. Remove obsolete information or correct the component settings. </td></tr> +<tr> +<td>M358 </td><td>WARNING </td><td>Header File <em>'HFILE'</em> for <em>'CFILE'</em> missing for Component <em>'COMP'</em> (<em>'COMPID'</em>) for <em>'VENDOR'</em> : <em>'MCU'</em> (<em>'COMPILER'</em>) </td><td>The header file defined for the component could not be found. Verify the header file settings (<a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a>) or whether the file exists. </td></tr> +<tr> +<td>M359 </td><td>WARNING </td><td>Family has no Device(s) or Subfamilies: <em>'FAMILY'</em> </td><td>The device family has no devices or subfamilies. Add the missing information (<a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a>). </td></tr> +<tr> +<td>M360 </td><td>WARNING </td><td>Subfamily has no Device(s): <em>'SUBFAMILY'</em> </td><td>Add the missing information. Refer to <a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a>. </td></tr> +<tr> +<td>M361 </td><td>WARNING </td><td>Generator ID in Taxonomy Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em> is undefined: <em>'GENID'</em> </td><td>The generator ID used in the taxonomy is not defined. Define or correct the generator ID (<a class="el" href="element_taxonomy.html">/package/taxonomy element</a>). </td></tr> +<tr> +<td>M362 </td><td>WARNING </td><td>Not all Component Dependencies for Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, Csub= <em>'CSUB'</em>, Cversion= <em>'CVER'</em>, Capiversion= <em>'APIVER'</em> can be resolved. <br/> + RTE Model reports: <em>'MSG'</em> </td><td>Some of the component dependencies could not be resolved. The message might contain additional information. Verify and correct component definition and dependency information. Refer to <a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a> attribute <em>condition</em>. </td></tr> +<tr> +<td>M363 </td><td>WARNING </td><td>No API defined for Component Cclass= <em>'CCLASS'</em>, Cgroup= <em>'CGROUP'</em>, Csub= <em>'CSUB'</em>, Cversion= <em>'CVER'</em>, Capiversion= <em>'APIVER'</em> </td><td>The package is missing the API information for the specified component. Refer to <a class="el" href="pdsc_apis_pg.html#element_apis">/package/apis</a>. </td></tr> +<tr> +<td>M364 </td><td>WARNING </td><td>No Devices for Condition <em>'COND'</em> available. </td><td>The specified condition refers to a device that does not exist. Define the device (<a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a>) or correct the information for the condition (<a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition</a>). </td></tr> +<tr> +<td>M365 </td><td>ERROR </td><td>Redefined DEVTYPE <em>'MCU'</em> found, see Line <em>LINE</em> </td><td>Remove duplicate device/variant entries. </td></tr> +<tr> +<td>M366 </td><td>ERROR </td><td>Redefined DEVTYPEEXIST as DEVTYPE <em>'MCU'</em> found, see Line <em>LINE</em> </td><td>Device has been redefined as variant or vice versa. Remove duplicate device/variant entries. </td></tr> +<tr> +<td>M368 </td><td>INFO </td><td>Redefined TYPEEXISTING as TYPE <em>'NAME'</em> found, see Line <em>LINE</em> </td><td>Family/subfamily/device/variant has been redefined as different type. </td></tr> +<tr> +<td>M369 </td><td>INFO </td><td>Feature is already defined for <em>'DEVICE'</em> and will be added, see Line <em>'LINE'</em>: <em>'FEATURE'</em>. </td><td>This feature <em>'FEATURE'</em> has been defined already on a higher level and as such it gets added to this <em>'DEVICE'</em>. This is usually done when some devices have a higher number of basic features. Correct the feature (<a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a>) if this is a typo. </td></tr> +<tr> +<td>M370 </td><td>WARNING </td><td>URL is not conformant: <em>'URL'</em>:<br/> + Backslashes are not allowed in URL, use forward slashes. </td><td>Use standard URL notation using forward slashes (/). </td></tr> +<tr> +<td>M371 </td><td>ERROR </td><td><em>'SECTION'</em> Feature for <em>'MCU'</em>: <em>'FEATURE'</em> unknown. </td><td>This feature <em>'FEATURE'</em> is unknwon to the specified <em>'MCU'</em>. Correct the feature (<a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a>) if this is a typo. </td></tr> +<tr> +<td>M372 </td><td>ERROR </td><td><em>'SECTION'</em> Feature for <em>'MCU'</em>: <em>'FEATURE'</em> misspelled, did you mean <em>'KNOWNFEATURE'</em> (<em>'DESCR'</em>). </td><td>This feature <em>'FEATURE'</em> resembles the feature <em>'KNOWNFEATURE'</em>. Correct the feature (<a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a>) if this is a typo. </td></tr> +<tr> +<td>M373 </td><td>ERROR </td><td>Unsupported Schema Version: <em>'VER'</em>. </td><td>The schema version is not supported. Verify the attribute <span class="XML-Token">schemaVersion</span> of the element <a class="el" href="pdsc_package_pg.html#element_package">/package</a>. </td></tr> +<tr> +<td>M374 </td><td>ERROR </td><td>While checking Feature for <em>'MCU'</em>: Pname <em>'CPU'</em> not found. </td><td>The processor could not be found for the specified device. Refer to <a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> and <a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a>. </td></tr> +<tr> +<td>M375 </td><td>ERROR </td><td><em>'path/pdsc_file'</em>: No <mountedDevice> for board <em>'BOARD'</em> found. </td><td>If a board element does not contain a <mountedDevice> element, then the examples for this board are not shown and example projects may not appear in the development tools. Refer to <a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">/package/boards/board/mountedDevice</a> of <a class="el" href="pdsc_boards_pg.html#element_boards">/package/boards</a>. </td></tr> +<tr> +<td>M376 </td><td>ERROR </td><td>Schema Version not set! </td><td>Set a valid schema version in the PDSC file. </td></tr> +<tr> +<td>M377 </td><td>INFO </td><td>File <em>'NAME'</em> <em>TYPE</em> must have <em>'attr="config"'</em> </td><td>This file has to be configurable. Add the required attribute to achieve this. </td></tr> +</table> +<h2>XML Reader Errors </h2> +<table class="cmtable" summary="packChk XML Reader Msgs"> +<tr> +<th>Message Number </th><th>Type </th><th>Description </th><th>Action </th></tr> +<tr> +<td>M401 </td><td>INFO </td><td>Did you mean <em>'TAG'</em>? </td><td>Specify the tag to be used. </td></tr> +<tr> +<td>M410 </td><td>WARNING </td><td>Lost xml file stream. </td><td>File corrupted. </td></tr> +<tr> +<td>M411 </td><td>WARNING </td><td>Preamble for <em>'UTF'</em> should not be used, specify via '<?xml' </td><td>Specify encoding as UTF-8 only, without BOM. </td></tr> +<tr> +<td>M412 </td><td>WARNING </td><td>Unsupported format or extra characters found before '<?xml': <em>'TEXT'</em> </td><td>Correct the XML file. </td></tr> +<tr> +<td>M413 </td><td>WARNING </td><td>UTF Format not supported: <em>'UTF'</em> </td><td>Select another UTF format. </td></tr> +<tr> +<td>M414 </td><td>ERROR </td><td>Cannot decode XML special character: <em>'SPECIALCHAR'</em>. </td><td>Correct the XML file. </td></tr> +<tr> +<td>M415 </td><td>ERROR </td><td>'<–' found, should this be a comment '<!–' ? </td><td>Looks like a misspelled comment. </td></tr> +<tr> +<td>M416 </td><td>ERROR </td><td>Begin Tag seems to end with a Single Tag. Is this a typo? </td><td>Correct the XML file. </td></tr> +<tr> +<td>M417 </td><td>ERROR </td><td>Inconsistent XML Structure </td><td>Correct the XML file. </td></tr> +<tr> +<td>M418 </td><td>ERROR </td><td>XML Stack deeper than 30 Items! Giving up. </td><td>Reduce the nested nodes. </td></tr> +<tr> +<td>M419 </td><td>ERROR </td><td>Begin Tag follows Text. Missing End Tag? </td><td>Correct the XML file. </td></tr> +<tr> +<td>M420 </td><td>ERROR </td><td>Missing quotes (") in Attributes: <em>'ATTRLINE'</em> </td><td>Correct the XML file. Enclose values in <span class="XML-Token">" "</span>. </td></tr> +<tr> +<td>M421 </td><td>ERROR </td><td>XML Hierarchy Error: Missing End Tags. </td><td>Correct the XML file. Verify for enclosing or nested tags. </td></tr> +<tr> +<td>M422 </td><td>ERROR </td><td>Error reading file <em>'NAME'</em> </td><td>File could not be read. </td></tr> +</table> +<h2>Model Errors </h2> +<table class="cmtable" summary="packChk Model Msgs"> +<tr> +<th>Message Number </th><th>Type </th><th>Description </th><th>Action </th></tr> +<tr> +<td>M500 </td><td>TEXT </td><td>RTE Model reports: <em>MSG</em> </td><td>Error while preparing data. See massage for more details. </td></tr> +<tr> +<td>M502 </td><td>TEXT </td><td>RTE Model reports: #error <em>NUM:</em> <em>NAME</em> : <em>MSG</em> </td><td>Additional software components required. </td></tr> +<tr> +<td>M504 </td><td>TEXT </td><td>RTE Model reports: MISSING: – <em>SPACE</em> <em>NAME</em> </td><td>Add the missing component. </td></tr> +</table> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="createPackUtil.html">Utilities for Creating Packs</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/packFormat.html b/docs/Pack/html/packFormat.html new file mode 100644 index 0000000..4889917 --- /dev/null +++ b/docs/Pack/html/packFormat.html @@ -0,0 +1,196 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Pack Description (*.pdsc) Format</title> +<title>CMSIS-Pack: Pack Description (*.pdsc) Format</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('packFormat.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Pack Description (*.pdsc) Format </div> </div> +</div><!--header--> +<div class="contents"> +<div class="toc"><h3>Table of Contents</h3> +<ul><li class="level1"><a href="#Filenames">Filename Conventions</a></li> +<li class="level1"><a href="#PackSchema">Pack Schema</a></li> +<li class="level1"><a href="#PDSC_Example">Example of a *.pdsc File</a></li> +</ul> +</div> +<div class="textblock"><p>The <b>Pack Description (*.pdsc) Format</b> uses standard XML annotations and is defined in the schema file <b>PACK.xsd</b>. Software components are distributed through <b>Software Packs</b>. A <a class="el" href="cp_SWComponents.html">Software Pack</a> is a zip file containing a single <b>Pack Description</b> file that describes dependencies to devices, processors, tool chains, or other software components.</p> +<p>A descriptive text of the <a class="el" href="cp_SWComponents.html">Software Pack</a>along the text information for devices, components, and examples is part of each a <b>Pack Description</b> (*.pdsc) file. In addition, information is provided which facilitates downloading, updating, and versioning of of a <a class="el" href="cp_SWComponents.html">Software Pack</a>. The *.pdsc file contains also the complete version history of the <a class="el" href="cp_SWComponents.html">Software Pack</a> with a brief list of the most significant changes.</p> +<h1><a class="anchor" id="Filenames"></a> +Filename Conventions</h1> +<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> must have a unique filename which uses the following format: <b><vendor>.<name>.<version>.pack</b>.</p> +<p><b>Where:</b> </p> +<ul> +<li><b><vendor></b>: name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b><name></b>: name of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. It is the vendor's responsibility to ensure unique package names.</li> +<li><b><release version="X.Y.Z"></b>: <a class="el" href="pdsc_package_pg.html#VersionType">version number</a> of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b>.pack</b>: file extension identifying a <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><vendor> and <name> <em>must</em> <em>not</em> contain spaces.</dd></dl> +<p><br/> +The <b>Pack Description</b> (*.pdsc) file belonging to such a <a class="el" href="cp_SWComponents.html">Software Pack</a> file (<vendor>.<name>.<version>.pack) is version independent and has the format: <b><vendor>.<name>.pdsc</b>.</p> +<p><b>Where:</b> </p> +<ul> +<li><b><vendor></b>: name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b><name></b>: name of the <a class="el" href="cp_SWComponents.html">Software Pack</a> that is described by this *.pdsc file.</li> +<li><b>.pack</b>: file extension identifying a <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><vendor> and <name> <em>must</em> <em>not</em> contain spaces.</dd></dl> +<p>Example filenames for software packs:</p> +<p>Software Pack for CMSIS Version 4.0 released by Arm.</p> +<ul> +<li><b>ARM.CMSIS.4.0.0.pack</b>: filename of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b>ARM.CMSIS.pdsc</b>: filename of the <b>Pack Description</b> (*.pdsc) file.</li> +</ul> +<p>Device Family Pack for STM32F4 Version 1.0.0 released by ST Microelectronics.</p> +<ul> +<li><b>ST.STM32F4xx_DFP.1.0.0.pack</b>: filename of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><b>ST.STM32F4xx.pdsc</b>: filename of the <b>Pack Description</b> (*.pdsc) file.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>All elements are case sensitive and must be consistently spelled in all places, i.e. the definition in the PDSC file must match the filenames of the *.pdsc and *.pack files. The file extensions (*.pdsc and *.pack) must be lower case.</dd></dl> +<h1><a class="anchor" id="PackSchema"></a> +Pack Schema</h1> +<p>The XML schema file <b>PACK.xsd</b> defines the sections used in a <b>*.pdsc</b> file. The current <b>PACK.xsd</b> can be found in the ARM.CMSIS pack in the directory .\CMSIS\Utilities.</p> +<p>The <a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a> is structured using grouping elements and contains the following top level elements:</p> +<ul> +<li><a class="el" href="pdsc_package_pg.html"><package></a>: describes package related information like vendor, package name, description, version. Is the root element.</li> +<li><a class="el" href="element_keywords.html"><keywords></a>: lists keywords to search for packages. Can be used for search engines.</li> +<li><a class="el" href="element_repository.html"><repository></a>: specifies the URL and repository type of a public repository where the pack originates from.</li> +<li><a class="el" href="element_releases.html"><releases></a>: lists release versions with descriptions.</li> +<li><a class="el" href="element_requirements_pg.html"><requirements></a>: lists required packs, compiler, programming language standards and their version or version range.</li> +<li><a class="el" href="element_taxonomy.html"><taxonomy></a>: lists description elements that define component classes and component group names.</li> +<li><a class="el" href="pdsc_apis_pg.html"><apis></a>: describes Application Programming Interfaces (API) Specifications contained in the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><a class="el" href="pdsc_generators_pg.html"><generators></a>: specifies the tools that have been used to generate the PDSC file.</li> +<li><a class="el" href="pdsc_devices_pg.html"><devices></a>: lists the devices supported by this <a class="el" href="cp_SWComponents.html">Software Pack</a>. It specifies the device attributes and files like flash programming algorithms, CMSIS device header files, CMSIS System View Descriptions, etc.</li> +<li><a class="el" href="pdsc_boards_pg.html"><boards></a>: lists the development boards supported by the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><a class="el" href="pdsc_conditions_pg.html"><conditions></a>: defines dependencies to devices, processors, components, and tools that are used within the <a class="el" href="cp_SWComponents.html">Software Pack</a>. It allows making components and files conditional.</li> +<li><a class="el" href="pdsc_components_pg.html"><components></a>: lists the software components contained in the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li> +<li><a class="el" href="pdsc_examples_pg.html"><examples></a>: specifies example projects contained in the PACK.</li> +</ul> +<h1><a class="anchor" id="PDSC_Example"></a> +Example of a *.pdsc File</h1> +<p>This example of a *.pdsc File explains the sections, particularly how dependencies are used to identify individual files of <a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a>.</p> +<div class="image"> +<img src="PDSC_Example_top.png" alt="PDSC_Example_top.png"/> +</div> + <div class="image"> +<img src="PDSC_Example_bottom.png" alt="PDSC_Example_bottom.png"/> +<div class="caption"> +Example of a *.pdsc File</div></div> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/packFormat.js b/docs/Pack/html/packFormat.js new file mode 100644 index 0000000..b69e1fd --- /dev/null +++ b/docs/Pack/html/packFormat.js @@ -0,0 +1,77 @@ +var packFormat = +[ + [ "Filename Conventions", "packFormat.html#Filenames", null ], + [ "Pack Schema", "packFormat.html#PackSchema", null ], + [ "Example of a *.pdsc File", "packFormat.html#PDSC_Example", null ], + [ "/package element", "pdsc_package_pg.html", [ + [ "/package", "pdsc_package_pg.html#element_package", null ] + ] ], + [ "/package/keywords element", "element_keywords.html", null ], + [ "/package/repository element", "element_repository.html", null ], + [ "/package/releases element", "element_releases.html", [ + [ "/package/releases/release", "element_releases.html#element_release", null ] + ] ], + [ "/package/requirements", "element_requirements_pg.html", [ + [ "/package/requirements/packages", "element_requirements_pg.html#element_packages", null ], + [ "/package/requirements/compilers", "element_requirements_pg.html#element_compilers", null ], + [ "/package/requirements/languages", "element_requirements_pg.html#element_languages", null ] + ] ], + [ "/package/taxonomy element", "element_taxonomy.html", [ + [ "/package/taxonomy/description", "element_taxonomy.html#element_taxonomyDescription", null ] + ] ], + [ "/package/apis element", "pdsc_apis_pg.html", [ + [ "/package/apis", "pdsc_apis_pg.html#element_apis", null ], + [ "/package/apis/api", "pdsc_apis_pg.html#element_api", null ] + ] ], + [ "/package/generators element", "pdsc_generators_pg.html", [ + [ "/package/generators", "pdsc_generators_pg.html#element_generators", null ], + [ "/package/generators/generator", "pdsc_generators_pg.html#element_generator", null ], + [ "/package/generators/generator/select", "pdsc_generators_pg.html#element_gen_select", null ], + [ "/package/generators/generator/exe", "pdsc_generators_pg.html#element_gen_exe", null ], + [ "/package/generators/generator/eclipse", "pdsc_generators_pg.html#element_gen_eclipse", null ], + [ "/package/generators/generator/web", "pdsc_generators_pg.html#element_gen_web", null ], + [ "/package/generators/generator/.../command", "pdsc_generators_pg.html#element_gen_command", null ], + [ "/package/generators/generator/.../argument", "pdsc_generators_pg.html#element_gen_argument", null ], + [ "/package/generators/generator/project_files", "pdsc_generators_pg.html#element_gen_project_files", null ], + [ "/package/generators/generator/files", "pdsc_generators_pg.html#element_gen_files", null ], + [ "/package/generators/generator/files/file", "pdsc_generators_pg.html#element_gen_file", null ] + ] ], + [ "/package/devices element", "pdsc_devices_pg.html", "pdsc_devices_pg" ], + [ "/package/boards element", "pdsc_boards_pg.html", [ + [ "/package/boards", "pdsc_boards_pg.html#element_boards", null ], + [ "/package/boards/board", "pdsc_boards_pg.html#element_board", null ], + [ "/package/boards/board/feature", "pdsc_boards_pg.html#element_board_feature", null ], + [ "/package/boards/board/mountedDevice", "pdsc_boards_pg.html#element_board_mountedDevice", null ], + [ "/package/boards/board/compatibleDevice", "pdsc_boards_pg.html#element_board_compatibleDevice", null ], + [ "/package/boards/board/image", "pdsc_boards_pg.html#element_board_image", null ], + [ "/package/boards/board/debugInterface", "pdsc_boards_pg.html#element_board_debugInterface", null ], + [ "/package/boards/board/book", "pdsc_boards_pg.html#element_board_book", null ] + ] ], + [ "/package/conditions element", "pdsc_conditions_pg.html", [ + [ "/package/conditions", "pdsc_conditions_pg.html#element_conditions", null ], + [ "/package/conditions/condition", "pdsc_conditions_pg.html#element_condition", null ], + [ "/package/conditions/condition/accept", "pdsc_conditions_pg.html#element_accept", null ], + [ "/package/conditions/condition/require", "pdsc_conditions_pg.html#element_require", null ], + [ "/package/conditions/condition/deny", "pdsc_conditions_pg.html#element_deny", null ] + ] ], + [ "/package/components element", "pdsc_components_pg.html", [ + [ "Component Bundle", "pdsc_components_pg.html#Component_Bundle", null ], + [ "Component Files", "pdsc_components_pg.html#Component_Files", null ], + [ "Component Instances", "pdsc_components_pg.html#Component_Instances", null ], + [ "RTE_Components.h", "pdsc_components_pg.html#RTE_Components_h", null ], + [ "/package/components", "pdsc_components_pg.html#element_components", null ], + [ "/package/components/bundle", "pdsc_components_pg.html#element_bundle", null ], + [ "/package/components/.../component", "pdsc_components_pg.html#element_component", null ], + [ "/package/.../files", "pdsc_components_pg.html#element_files", null ], + [ "/package/.../files/file", "pdsc_components_pg.html#element_file", null ] + ] ], + [ "/package/examples element", "pdsc_examples_pg.html", [ + [ "/package/examples", "pdsc_examples_pg.html#element_examples", null ], + [ "/package/examples/example", "pdsc_examples_pg.html#element_example", null ], + [ "/package/examples/example/board", "pdsc_examples_pg.html#element_example_board", null ], + [ "/package/examples/project", "pdsc_examples_pg.html#element_example_project", null ], + [ "/package/examples/project/environment", "pdsc_examples_pg.html#element_example_project_env", null ], + [ "/package/examples/example/attributes", "pdsc_examples_pg.html#element_example_attributes", null ], + [ "/package/examples/example/attributes/component", "pdsc_examples_pg.html#element_example_attribute_component", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/Pack/html/packIndexFile.html b/docs/Pack/html/packIndexFile.html new file mode 100644 index 0000000..c46e667 --- /dev/null +++ b/docs/Pack/html/packIndexFile.html @@ -0,0 +1,286 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>CMSIS-Pack Index Files</title> +<title>CMSIS-Pack: CMSIS-Pack Index Files</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('packIndexFile.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">CMSIS-Pack Index Files </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>CMSIS-Pack is designed as a web-based distribution network. Each provider of a CMSIS-Pack (also referred to as <em>vendor</em>) is responsible for hosting, maintaining and publishing unique versions of a CMSIS-Pack.</p> +<p>A CMSIS-Pack is uniquely identified by <vendor>.<pack name>.<version>.pack. All published versions of a pack and the PDSC file need to be available in the same web folder specified by <url>. Multiple different packs may be located in the same web folder.</p> +<h1><a class="anchor" id="pidxFile"></a> +Package Index File (pidx)</h1> +<p>The package index file lists all CMSIS-Packs hosted and maintained by a vendor. The file is hosted by the vendor and has the name <vendor>.pidx. The <vendor> tag needs to match the file name. The file also contains the <url> to it's origin, as well as a <timestamp> of it's last update.</p> +<p>It is the vendor's obligation to update this file whenever:</p> +<ul> +<li>a new pack is added.</li> +<li>a new version of a pack is added.</li> +<li>a pack is deprecated.</li> +<li>a replacement for a pack becomes available.</li> +</ul> +<p><b>Example</b> MyVendor.pidx: </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span> ?></div> +<div class="line"></div> +<div class="line"><index schemaVersion=<span class="stringliteral">"1.0.0"</span> xs:noNamespaceSchemaLocation=<span class="stringliteral">"PackIndex.xsd"</span> xmlns:xs=<span class="stringliteral">"http://www.w3.org/2001/XMLSchema-instance"</span>></div> +<div class="line"> <vendor>MyVendor</vendor></div> +<div class="line"> <url>http:<span class="comment">//www.MyVendor.com/pack/</url></span></div> +<div class="line"> <timestamp>2017-01-25T15:00:10.7300074+00:00</timestamp></div> +<div class="line"> <pindex></div> +<div class="line"> <pdsc url=<span class="stringliteral">"http://www.MyVendor.com/pack/mypack/"</span> vendor=<span class="stringliteral">"MyVendor"</span> name=<span class="stringliteral">"MyPack"</span> version=<span class="stringliteral">"1.1.0"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </pindex></div> +<div class="line"></index></div> +</div><!-- fragment --><p>Each individual pack is referenced by the attributes:</p> +<ul> +<li><code>url</code> = web folder where the PDSC and packs reside.</li> +<li><code>vendor</code> = vendor of the pack.</li> +<li><code>name</code> = the name of the pack.</li> +<li><code>version</code> = the version number of the latest available release for the pack.</li> +</ul> +<p>The package index file for the CMSIS-Pack compliant packs, hosted on www.keil.com can be found here: <a href="http://www.keil.com/pack/Keil.pidx">www.keil.com/pack/Keil.pidx</a></p> +<p>The benefit of a single package index file is, that this file only needs to be exchanged once and can be polled for updates and additions of packs by a vendor. To add a vendor's packs to the public list maintained on www.keil.com, send an email to <a href="#" onclick="location.href='mai'+'lto:'+'CMS'+'IS'+'@ar'+'m.'+'com'; return false;">CMSIS@arm.com</a> attaching a version of the <vendor>.pidx file.</p> +<h1><a class="anchor" id="vidxFile"></a> +Vendor Index File (vidx)</h1> +<p>A vendor index file lists package index files from different vendors. This information can be used to compile a list of known packs.</p> +<p><b>Example</b> MyVendor.vidx: </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span> ?></div> +<div class="line"></div> +<div class="line"><index schemaVersion=<span class="stringliteral">"1.0"</span> xmlns:xs=<span class="stringliteral">"http://www.w3.org/2001/XMLSchema-instance"</span> xs:noNamespaceSchemaLocation=<span class="stringliteral">"PackIndex.xsd"</span>></div> +<div class="line"> <vendor>MyVendor</vendor></div> +<div class="line"> <url>www.MyVendor.com/pack</url></div> +<div class="line"> <timestamp>2017-01-08T10:30:00</timestamp></div> +<div class="line"> <vindex></div> +<div class="line"> <pidx url=<span class="stringliteral">"http://www.othervendor.com/MyPacks/"</span> vendor=<span class="stringliteral">"OtherVendor"</span> /></div> +<div class="line"> ...</div> +<div class="line"> </vindex></div> +<div class="line"> <!-- the section below is only intended <span class="keywordflow">for</span> the transition until all vendors use the <vendor>.pidx file</div> +<div class="line"> <pindex></div> +<div class="line"> <pdsc url=<span class="stringliteral">"http://www.othervendor2.com/packs/"</span> vendor=<span class="stringliteral">"OtherVendor2"</span> name=<span class="stringliteral">"MyPack"</span> version=<span class="stringliteral">"2.3.0"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </pindex></div> +<div class="line"></index></div> +</div><!-- fragment --><p>The latest index file of CMSIS-Packs belonging to vendor="ARM" and vendor="Keil" that are hosted on www.keil.com/pack is maintained here: <a href="http://www.keil.com/pack/Keil.pidx">www.keil.com/pack/Keil.pidx</a></p> +<p>ARM also maintains a flat list of all CMSIS-Pack compliant packs reported to ARM here: <a href="http://www.keil.com/pack/index.pidx">www.keil.com/pack/index.pidx</a></p> +<p>The vendor index file containing references to the package index files (or optionally PDSC files) used for compiling this summary index file are listed in the Keil.vidx file and can be downloaded from here: <a href="http://www.keil.com/pack/Keil.vidx">www.keil.com/pack/Keil.vidx</a></p> +<p>Based on these publicly available index files, everyone is equally positioned to create an index of available packs and their latest versions.</p> +<h1><a class="anchor" id="packIndexSchema"></a> +CMSIS-Pack Index Schema File</h1> +<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (c) 2013-2017 ARM Limited. All rights reserved. + + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the License); you may + not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an AS IS BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + $Date: 23. Januar 2017 + $Revision: 1.1.0 + + $Project: Schema File for Package Index File Format Specification + + Package Index file naming convention <vendor>.pidx + Vendor Index file naming convention <vendor>.vidx + SchemaVersion=1.1.0 +--> + +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.1.0"> + + <!-- semantic versioning (semver.org) <major>.<minor>.<patch>-<quality> --> + <xs:simpleType name="SemanticVersionType"> + <xs:restriction base="xs:string"> + <!-- <major> . <minor> . <patch> - <quality> + <build meta info> --> + <xs:pattern value="(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?"/> + </xs:restriction> + </xs:simpleType> + + <!-- a basic string of letters and numbers plus a dash and underbar, no leading nor trailing spaces and a minimum of 3 characters and a maximum of 32 --> + <xs:simpleType name="RestrictedString"> + <xs:restriction base="xs:string"> + <xs:minLength value="3"/> + <xs:maxLength value="32"/> + <xs:pattern value="[-_A-Za-z0-9]+"/> + <xs:pattern value="\S(.*\S)?"></xs:pattern> + </xs:restriction> + </xs:simpleType> + + <!-- Vendor index file Description Type --> + <xs:complexType name="VidxType"> + <xs:attribute name="url" type="xs:anyURI" use="required"/> + <xs:attribute name="vendor" type="RestrictedString" use="required"/> + <xs:attribute name="date" type="xs:date" use="optional"/> + </xs:complexType> + + <!-- Package Description Type --> + <xs:complexType name="PdscType"> + <xs:attribute name="url" type="xs:anyURI" use="required"/> + <xs:attribute name="vendor" type="RestrictedString" use="required"/> + <xs:attribute name="name" type="RestrictedString" use="required"/> + <xs:attribute name="version" type="SemanticVersionType" use="required"/> + <xs:attribute name="date" type="xs:date" use="optional"/> + <xs:attribute name="deprecated" type="xs:date" use="optional"/> + <xs:attribute name="replacement" type="RestrictedString" use="optional"/> + <xs:attribute name="size" type="xs:unsignedInt" use="optional"/> + </xs:complexType> + + <!-- Package Description file Type --> + <xs:complexType name="PindexType"> + <xs:sequence> + <xs:element name="pdsc" type="PdscType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <!-- Vendor vendor's package index file tag --> + <xs:complexType name="VindexType"> + <xs:sequence> + <xs:element name="pidx" type="VidxType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <!-- Index description root point (Vendor Index file, Package Index file --> + <xs:element name="index" nillable="true"> + <xs:complexType> + <xs:sequence> + <xs:element name="vendor" type="RestrictedString"/> + <xs:element name="url" type="xs:anyURI"/> + <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/> + <xs:choice minOccurs="1" maxOccurs="2"> + <!-- index/list of packs --> + <xs:element name="pindex" type="PindexType"/> + <!-- index/list of vendor index files --> + <xs:element name="vindex" type="VindexType"/> + </xs:choice> + </xs:sequence> + <xs:attribute name="schemaVersion" type="SemanticVersionType" use="required"/> + </xs:complexType> + </xs:element> +</xs:schema> +</pre> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:43 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pack_Example.html b/docs/Pack/html/pack_Example.html new file mode 100644 index 0000000..41274c0 --- /dev/null +++ b/docs/Pack/html/pack_Example.html @@ -0,0 +1,237 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Pack Example</title> +<title>CMSIS-Pack: Pack Example</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pack_Example.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Pack Example </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The <b>ARM::CMSIS</b> Pack contains an example of a Software Pack that contains device support, board support and software components. This Pack can be used as a reference for user generated Software Packs. It is available in the directory \CMSIS\Pack\Example. It contains a <a class="el" href="pack_Example.html#PE_PDSC">PDSC example file</a> and all sub-directories containing the files referenced in the PDSC. <br/> + The example is a <a class="el" href="createPack_DFP.html">DFP</a> for NXP's LPC1800 series of microcontrollers. It also contains <a class="el" href="createPackBoard.html">BSP</a> information and software components, mainly peripheral drivers. Some of the drivers adhere to the <a href="../../Driver/html/index.html" class="el" target="_blank">CMSIS-Driver</a> standard. This is the layout of the sub-directories: </p> +<table class="doxtable"> +<tr> +<th>Directory </th><th>Content </th><th>Section in PDSC </th></tr> +<tr> +<td><b>Boards</b> </td><td>CMSIS-RTOS Blinky uVision project running on the MCB1800 development board </td><td><a class="el" href="pdsc_examples_pg.html"><examples></a> </td></tr> +<tr> +<td><a class="el" href="pack_Example.html#PE_CMSIS_Driver">CMSIS_Driver</a></td><td><a href="../../Driver/html/index.html"><b>CMSIS-Driver</b></a> compliant peripheral drivers</td><td><a class="el" href="pdsc_components_pg.html#element_component"><component></a> </td></tr> +<tr> +<td><a class="el" href="pack_Example.html#PE_Device">Device</a> </td><td><a href="../../Core/html/index.html"><b>CMSIS-Core (Cortex-M)</b></a> files for LPC1800 series </td><td><a class="el" href="pdsc_family_pg.html#element_device"><device></a> </td></tr> +<tr> +<td><a class="el" href="pack_Example.html#PE_Documents">Documents</a> </td><td>Documentation for devices and boards </td><td><a class="el" href="pdsc_family_pg.html#element_book"><book></a> </td></tr> +<tr> +<td><b>Flash</b> </td><td><a class="el" href="flashAlgorithm.html">Flash Programming</a> and a sub-directory called <b>LPC18xx43xx_IAP</b> containing a uVision project for IAP (In-Application Programming) support</td><td><a class="el" href="pdsc_family_pg.html#element_algorithm"><algorithm></a> </td></tr> +<tr> +<td><b>Images</b> </td><td>Images of the MCB1800 development board </td><td><a class="el" href="pdsc_boards_pg.html"><board></a> </td></tr> +<tr> +<td><b>SVD</b> </td><td><a href="../../SVD/html/index.html"><b>SVD</b></a> file for LPC1800 series </td><td><a class="el" href="pdsc_family_pg.html#element_debug"><debug></a> </td></tr> +</table> +<p><a class="anchor" id="PE_PDSC"></a></p> +<h2>PDSC Example File </h2> +<p>The PDSC file that is included in the example Pack is called <b>Keil.LPC1800_DFP.pdsc.txt</b>. The extension <code>txt</code> has been added to hide the file from development tools as it is not intended for installation. The file contains the following top level elements: </p> +<table class="doxtable"> +<tr> +<th>XML Element </th><th>Purpose </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html"><package></a> </td><td>Publish Pack information like vendor, name, version, etc. </td></tr> +<tr> +<td><a class="el" href="pdsc_devices_pg.html"><devices></a> </td><td>Define four sub-families with 16 devices in total. </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html"><boards></a> </td><td>Show MCB1800 development board information. </td></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html"><conditions></a> </td><td>Declare required conditions for software components. </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html"><components></a> </td><td>Include startup/system files, HAL drivers, and CMSIS-Driver 2.0 compliant peripheral drivers. </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html"><examples></a> </td><td>Contain a CMSIS-RTOS Blinky example project for uVision running on the MCB1800 development board. </td></tr> +</table> +<p><a class="anchor" id="PE_CMSIS_Driver"></a></p> +<h2>Directory CMSIS_Driver </h2> +<p>The <b>CMSIS_Driver</b> directory contains the following <a href="../../Driver/html/index.html" class="el" target="_blank">CMSIS-Driver</a> compliant peripheral drivers. These drivers are supporting the NXP LPC1800 series: </p> +<table class="doxtable"> +<tr> +<th>Driver </th><th>File </th><th>Software Component </th></tr> +<tr> +<td><a href="../../Driver/html/group__eth__interface__gr.html" class="el" target="_blank">Ethernet</a> </td><td>EMAC_LPC18xx.c </td><td><b>::CMSIS-Driver:Ethernet MAC</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__spi__interface__gr.html" class="el" target="_blank">SPI</a> </td><td>SSP_LPC18xx.c </td><td><b>::CMSIS-Driver:SPI</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__i2c__interface__gr.html" class="el" target="_blank">I2C</a> </td><td>I2C_LPC18xx.c </td><td><b>::CMSIS-Driver:I2C</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__mci__interface__gr.html" class="el" target="_blank">MCI</a> </td><td>MCI_LPC18xx.c </td><td><b>::CMSIS-Driver:MCI</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__usart__interface__gr.html" class="el" target="_blank">USART</a> </td><td>USART_LPC18xx.c </td><td><b>::CMSIS-Driver:USART</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__usbd__interface__gr.html" class="el" target="_blank">USB Device</a> </td><td>USBD_LPC18xx.c </td><td><b>::CMSIS-Driver:USB Device:USB0/1</b> </td></tr> +<tr> +<td><a href="../../Driver/html/group__usbh__interface__gr.html" class="el" target="_blank">USB Host</a> </td><td>USBH_LPC18xx.c </td><td><b>::CMSIS-Driver:USB Host:USB0/1</b> </td></tr> +</table> +<p>The following HAL drivers are required for the implementation of the <b>CMSIS-Driver</b> compliant peripheral drivers: </p> +<table class="doxtable"> +<tr> +<th>Driver </th><th>File </th><th>Software Component </th></tr> +<tr> +<td>General purpose DMA driver </td><td>GPDMA_LPC18xx.c </td><td><b>::Device:GPDMA</b> </td></tr> +<tr> +<td>General purpose IO driver </td><td>GPIO_LPC18xx.c </td><td><b>::Device:GPIO</b> </td></tr> +<tr> +<td>System control unit driver </td><td>SCU_LPC18xx.c </td><td><b>::Device:SCU</b> </td></tr> +</table> +<p><a class="anchor" id="PE_Device"></a></p> +<h2>Directory Device </h2> +<p>The <b>Device</b> directory has two sub-directories: <b>Include</b> and <b>Source</b>. </p> +<table class="doxtable"> +<tr> +<th>File </th><th>Purpose </th><th>Software Component </th></tr> +<tr> +<td>Include\LPC18xx.h </td><td>LPC1800 series header file </td><td><b>::CMSIS:CORE</b> </td></tr> +<tr> +<td>Include\system_LPC18xx.h </td><td>LPC1800 series system header file </td><td><b>::CMSIS:Startup</b> </td></tr> +<tr> +<td>Source\system_LPC18xx.c </td><td>LPC1800 series system source file </td><td><b>::CMSIS:Startup</b> </td></tr> +<tr> +<td>Source\ARM\startup_LPC18xx.s </td><td>LPC1800 series startup assembler file for ARMCC</td><td><b>::CMSIS:Startup</b> </td></tr> +<tr> +<td>Source\GCC\startup_LPC18xx.S </td><td>LPC1800 series startup assembler file for GCC </td><td><b>::CMSIS:Startup</b> </td></tr> +<tr> +<td>Source\IAR\startup_LPC18xx.s </td><td>LPC1800 series startup assembler file for IAR </td><td><b>::CMSIS:Startup</b> </td></tr> +</table> +<p><a class="anchor" id="PE_Documents"></a></p> +<h2>Directory Documents </h2> +<p>This directory incorporates the following documents: </p> +<table class="doxtable"> +<tr> +<th>File </th><th>Purpose </th><th>Section in PDSC </th></tr> +<tr> +<td><b>dui0552a_cortex_m3_dgug.pdf</b> </td><td>Cortex-M3 Generic User Guide</td><td><a class="el" href="pdsc_family_pg.html#element_book"><book></a> element of the device <a class="el" href="pdsc_family_pg.html#element_family"><family></a> element </td></tr> +<tr> +<td><b>ES_LPC18X0.pdf</b> </td><td>LPC1800 Errata sheet </td><td><a class="el" href="pdsc_family_pg.html#element_book"><book></a> element of the <a class="el" href="pdsc_family_pg.html#element_device"><device></a> section </td></tr> +<tr> +<td><b>LPC1850_30_20_10.pdf</b> </td><td>LPC1800 Data sheet </td><td><a class="el" href="pdsc_family_pg.html#element_book"><book></a> element of the <a class="el" href="pdsc_family_pg.html#element_device"><device></a> section </td></tr> +<tr> +<td><b>mcb1800.chm</b> </td><td>MCB1800/4300 User's Guide </td><td><a class="el" href="pdsc_boards_pg.html#element_board_book"><book></a> element of the <a class="el" href="pdsc_boards_pg.html"><boards></a> section </td></tr> +<tr> +<td><b>MCB1800v1-3-schematics.chm</b> </td><td>MCB1800 schematics </td><td><a class="el" href="pdsc_boards_pg.html#element_board_book"><book></a> element of the <a class="el" href="pdsc_boards_pg.html"><boards></a> section </td></tr> +<tr> +<td><b>UM10430.pdf</b> </td><td>User manual for LPC1800 </td><td><a class="el" href="pdsc_family_pg.html#element_book"><book></a> element of the <a class="el" href="pdsc_family_pg.html#element_device"><device></a> section </td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd>Some of these documents are only placeholders for copyright reasons. </dd></dl> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pack_revisionHistory.html b/docs/Pack/html/pack_revisionHistory.html new file mode 100644 index 0000000..0169172 --- /dev/null +++ b/docs/Pack/html/pack_revisionHistory.html @@ -0,0 +1,277 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Revision History of CMSIS-Pack</title> +<title>CMSIS-Pack: Revision History of CMSIS-Pack</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pack_revisionHistory.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Revision History of CMSIS-Pack </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><table class="cmtable" summary="Revision History"> +<tr> +<th>Version </th><th>Description </th></tr> +<tr> +<td>1.5.0 </td><td>Modifications compared to Version 1.4.9<ul> +<li>added <a class="el" href="sdf_pg.html">System Description File (*.SDF) Format</a></li> +<li>updates to <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a></li> +<li>removed usage of DP CTRL/STAT CDBGRSTREQ from <a class="el" href="debug_description.html#debugPortStart">DebugPortStart</a> default sequence</li> +<li>added <a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> with children <block> and <gap> to describe flash devices for sequence-based flash download</li> +<li>new <a class="el" href="debug_description.html#DebugFunctions">debug access functions</a> and <a class="el" href="debug_description.html#DebugVars">global debug variables</a> for sequence-based flash download</li> +<li>added <a class="el" href="element_repository.html">repository</a> element for specifying origin of public repositories</li> +<li>added attributes to <a class="el" href="element_releases.html#element_release">release</a> element specifying repository tag and url for downloading repository content </li> +</ul> +</td></tr> +<tr> +<td>1.4.9 </td><td>Modifications compared to Version 1.4.8<ul> +<li>added Toptions attribute for use in conditions</li> +<li>updated documentation for generator section to reflect new exe, web, and eclipse sections </li> +</ul> +</td></tr> +<tr> +<td>1.4.8 </td><td>Modifications compared to Version 1.4.7<ul> +<li>added support for semantic versioning quality information in ConditionVersionType</li> +<li>updated Pack schema file making some elements optional</li> +<li>added Pack Index File Specification and schema file </li> +</ul> +</td></tr> +<tr> +<td>1.4.7 </td><td>Modifications compared to Version 1.4.6<ul> +<li>added multiple version types to tighten the schema checking depending on context</li> +<li>added new generator sections for exe, web and eclipse based generators in <generator></li> +<li>added new processor attributes Dtz = Trustzone and Ddsp = DSP instructions for Armv8-M</li> +<li>added new attributes Dtz, Ddsp, Dsecure to conditions <require>, <deny>, <accept></li> +<li>added new processors Cortex-M23 and Cortex-M33 and other in DcoreEnum</li> +<li>added new attribute public to books and images to indicate public use of documents and board images </li> +</ul> +</td></tr> +<tr> +<td>1.4.6 </td><td>Modifications compared to Version 1.4.5<ul> +<li>refined Dname string pattern restriction (RestrictedStringDname) </li> +</ul> +</td></tr> +<tr> +<td>1.4.5 </td><td>Modifications compared to Version 1.4.4<ul> +<li>added: Punits to ProcessorType</li> +<li>added: Punit to DebugType </li> +</ul> +</td></tr> +<tr> +<td>1.4.4 </td><td>Modifications compared to Version 1.4.3<ul> +<li>added: attribute defaultResetSequence to DebugType.</li> +<li>added: <requirements> section:<ul> +<li><packages> defining dependencies between packs</li> +<li><languages> defining required language support e.g. C99</li> +<li><compiler> defining required toolchains</li> +</ul> +</li> +<li>added: <create> section used for tool independent project description<ul> +<li>attributes: name, documentation, condition</li> +<li><target> specifies the board and device targeted by the project</li> +<li><options></li> +<li><files> specifies the grouped files</li> +</ul> +</li> +<li>updated: <algorith> element<ul> +<li>added attributes: style, parameter and endian</li> +</ul> +</li> +<li>updated: <memory> element<ul> +<li>added attributes: name, access and alias</li> +<li>deprecating attribute: id (replaced by name + access) </li> +</ul> +</li> +</ul> +</td></tr> +<tr> +<td>1.4.3 </td><td>Modifications compared to Version 1.4.1<ul> +<li>Adding attribute "sdf" to debugconfig element within section <devices> </li> +</ul> +</td></tr> +<tr> +<td>1.4.1 </td><td>Modifications compared to Version 1.4.0<ul> +<li>pName, Dname, Dvariant type changed from xs:string to RestrictedString </li> +</ul> +</td></tr> +<tr> +<td>1.4.0 </td><td>Modifications compared to Version 1.3.3:<ul> +<li>device section <em>memory</em> specification redefined, deprecating <em>id</em> attribute</li> +<li>device section <em>algorithm</em> support multiple flash programming algorithm styles</li> +<li>device section <em>debug</em> adding CJTAG debug port type </li> +</ul> +</td></tr> +<tr> +<td>1.3.3 </td><td>Modifications compared to Version 1.3.1:<ul> +<li>Schema Version remains unchanged, since no incompatible update</li> +<li><em>Added</em> generator section can specify a target GPDSC file that it will generate</li> +<li><em>Added</em> A component can be linked to a generator and the generator's GPDSC file will be automatically included in the project as part of the component.</li> +<li><em>Added</em> A generator command is optionally extended by a separate description of arguments</li> +<li><em>Updated</em> Vendor list</li> +<li><em>Updated</em> Utility packChk.exe to Version 1.3.0.0:<ul> +<li>detect redefinitions of boards</li> +<li>check presence of board image files</li> +<li>check for duplicate device features</li> +<li>check for duplicate device definitions</li> +<li>check for</li> +<li>minor bug fixes </li> +</ul> +</li> +</ul> +</td></tr> +<tr> +<td>1.3.1 </td><td>Modifications compared to Version 1.3:<ul> +<li>Schema Version remains unchanged, since no incompatible update</li> +<li><em>Added</em> Cortex-M7 to the predefined list of processors</li> +<li><em>Updated</em> Vendor list</li> +<li><em>Added</em> File version attribute to debugvars element of device description</li> +<li><em>Updated</em> XML file header encoding tag set to capital "UTF8"</li> +<li><em>Deprecated</em> init attribute of <memory> element in <devices> section deprecated </li> +</ul> +</td></tr> +<tr> +<td>1.3 </td><td>Modifications compared to Version 1.2:<ul> +<li><em>Added</em> attributes to release tag for managing deprecation and changing Pack IDs</li> +<li><em>Removed</em> external RAMn and ROMn memory IDs in memory tag</li> +<li><em>Added</em> FileCategoryTypes in <file> element for C, C++, Assembler, Linker</li> +<li><em>Extended</em> specification of <require>, <accept> and <deny> with Cversion and Capiversion ranges</li> +<li><em>Added</em> <a class="el" href="createPackUtil.html">Utilities for Creating Packs</a> and <a class="el" href="packChk.html">packChk.exe</a> for Pack validation</li> +<li><em>Added</em> documentation for the Example Pack based on LPC1800 Device Family</li> +<li><em>Refined</em> <debug> element description</li> +<li>Many clarifications in the documentation along with examples </li> +</ul> +</td></tr> +<tr> +<td>1.2 </td><td>Clarifications for release. </td></tr> +<tr> +<td>1.1 - Preliminary </td><td>Update release for review:<ul> +<li><em>new</em> Boards description</li> +<li><em>new</em> Debug description</li> +<li><em>revised</em> Device Feature capture</li> +<li><em>new</em> Generator description</li> +<li><em>new</em> Flash Algorithm Specification</li> +<li><em>new</em> Configuration Wizard Annotation Specification </li> +</ul> +</td></tr> +<tr> +<td>1.0 - Preliminary </td><td>Preliminary release for review </td></tr> +<tr> +<td>0.10 </td><td>Release for beta review </td></tr> +</table> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="index.html">index</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pages.html b/docs/Pack/html/pages.html new file mode 100644 index 0000000..638ecab --- /dev/null +++ b/docs/Pack/html/pages.html @@ -0,0 +1,164 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Usage and Description</title> +<title>CMSIS-Pack: Usage and Description</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pages.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Usage and Description</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="cp_Packs.html" target="_self">Software Packs Overview</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="cp_SWComponents.html" target="_self">Pack with Software Components</a></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="createPack_DFP.html" target="_self">Pack with Device Support</a></td><td class="desc"></td></tr> +<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="createPackBoard.html" target="_self">Pack with Board Support</a></td><td class="desc"></td></tr> +<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pack_Example.html" target="_self">Pack Example</a></td><td class="desc"></td></tr> +<tr id="row_5_"><td class="entry"><img id="arr_5_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><a class="el" href="createPackUtil.html" target="_self">Utilities for Creating Packs</a></td><td class="desc"></td></tr> +<tr id="row_5_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="packChk.html" target="_self">packChk.exe</a></td><td class="desc"></td></tr> +<tr id="row_5_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="cp_Editors.html" target="_self">XML Editors</a></td><td class="desc"></td></tr> +<tr id="row_5_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="cp_ZIPTool.html" target="_self">ZIP Compression Tools</a></td><td class="desc"></td></tr> +<tr id="row_6_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="createPackPublish.html" target="_self">Publish a Pack</a></td><td class="desc"></td></tr> +<tr id="row_7_" class="even"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><a class="el" href="packFormat.html" target="_self">Pack Description (*.pdsc) Format</a></td><td class="desc"></td></tr> +<tr id="row_7_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_package_pg.html" target="_self">/package element</a></td><td class="desc"></td></tr> +<tr id="row_7_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="element_keywords.html" target="_self">/package/keywords element</a></td><td class="desc"></td></tr> +<tr id="row_7_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="element_repository.html" target="_self">/package/repository element</a></td><td class="desc"></td></tr> +<tr id="row_7_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="element_releases.html" target="_self">/package/releases element</a></td><td class="desc"></td></tr> +<tr id="row_7_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="element_requirements_pg.html" target="_self">/package/requirements</a></td><td class="desc"></td></tr> +<tr id="row_7_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="element_taxonomy.html" target="_self">/package/taxonomy element</a></td><td class="desc"></td></tr> +<tr id="row_7_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_apis_pg.html" target="_self">/package/apis element</a></td><td class="desc"></td></tr> +<tr id="row_7_7_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_generators_pg.html" target="_self">/package/generators element</a></td><td class="desc"></td></tr> +<tr id="row_7_8_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_7_8_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_8_')"/><a class="el" href="pdsc_devices_pg.html" target="_self">/package/devices element</a></td><td class="desc"></td></tr> +<tr id="row_7_8_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="pdsc_family_pg.html" target="_self">/package/devices/family element</a></td><td class="desc"></td></tr> +<tr id="row_7_9_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_boards_pg.html" target="_self">/package/boards element</a></td><td class="desc"></td></tr> +<tr id="row_7_10_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_conditions_pg.html" target="_self">/package/conditions element</a></td><td class="desc"></td></tr> +<tr id="row_7_11_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pdsc_components_pg.html" target="_self">/package/components element</a></td><td class="desc"></td></tr> +<tr id="row_7_12_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="pdsc_examples_pg.html" target="_self">/package/examples element</a></td><td class="desc"></td></tr> +<tr id="row_8_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="configWizard.html" target="_self">Configuration Wizard Annotations</a></td><td class="desc"></td></tr> +<tr id="row_9_" class="even"><td class="entry"><img id="arr_9_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><a class="el" href="flashAlgorithm.html" target="_self">Flash Programming</a></td><td class="desc"></td></tr> +<tr id="row_9_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="algorithmFunc.html" target="_self">Algorithm Functions</a></td><td class="desc">Blank Check </td></tr> +<tr id="row_10_" class="even"><td class="entry"><img id="arr_10_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><a class="el" href="coresight_setup.html" target="_self">Debug Setup with CMSIS-Pack</a></td><td class="desc"></td></tr> +<tr id="row_10_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="debug_description.html" target="_self">Debug Description</a></td><td class="desc"></td></tr> +<tr id="row_11_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="cpdsc_pg.html" target="_self">Project Description (*.cpdsc) Format</a></td><td class="desc"></td></tr> +<tr id="row_12_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="sdf_pg.html" target="_self">System Description File (*.SDF) Format</a></td><td class="desc"></td></tr> +<tr id="row_13_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="packIndexFile.html" target="_self">CMSIS-Pack Index Files</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:43 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_SequenceNameEnum_pg.html b/docs/Pack/html/pdsc_SequenceNameEnum_pg.html new file mode 100644 index 0000000..743cb05 --- /dev/null +++ b/docs/Pack/html/pdsc_SequenceNameEnum_pg.html @@ -0,0 +1,1092 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Debug access sequences</title> +<title>CMSIS-Pack: Debug access sequences</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.4.9</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_SequenceNameEnum_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Debug access sequences </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Debug access sequences define the activities of development tools to connect to a device using the debug channel for debugging, tracing, or flash programming. Several debug access sequences are pre-defined and executed in specific context. Refer to <a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> for details.</p> +<p>Software development tools should implement <a class="el" href="pdsc_SequenceNameEnum_pg.html#default_sequences">Default debug access sequences</a>. These default sequences can be overwritten by device specific sequences using the <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element in the <a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> section of the PDSC file. Additionally, a PDSC file can contain user-defined sequences, for example to reuse access sequence fragments:</p> +<ul> +<li><a class="el" href="pdsc_SequenceNameEnum_pg.html#usage_of_sequences">Usage of debug access sequences</a> explains how the sequences are used from a development tool point of view.</li> +<li><a class="el" href="pdsc_SequenceNameEnum_pg.html#default_sequences">Default debug access sequences</a> lists all debug access sequences that are pre-defined by the CMSIS-Pack standard and shows the details of the default debug access sequences.</li> +<li><a class="el" href="pdsc_SequenceNameEnum_pg.html#writing_sequences">Writing debug access sequences</a> explains how to write custom debug access sequences. These can be used to either override default sequences or to define device specific sequences.</li> +</ul> +<h1><a class="anchor" id="usage_of_sequences"></a> +Usage of debug access sequences</h1> +<p>Pre-defined Debug Access Sequences are used in the following context:</p> +<ul> +<li><b>Connect Debugger to Device</b> is executed when debugging or flash programming with the target starts.</li> +<li><b>Reset Device</b> is executed to reset the target.</li> +<li><b>Verify Code</b> is executed to verify the content after flash programming.</li> +<li><b>Disconnect Debugger</b> is executed when debugging or flash programming with the target stops.</li> +</ul> +<p>The following diagrams show how the Debug Access Sequences are executed by a development tool.</p> +<p><b>Connect Debugger to Device</b> is executed when debugging or flash programming with the target starts.</p> +<div class="image"> +<img src="DebugConnect.png" alt="DebugConnect.png"/> +</div> +<p><b>Reset Device</b> is executed to reset the target.</p> +<div class="image"> +<img src="Reset.png" alt="Reset.png"/> +</div> +<p><b>Verify Code</b> is executed to verify the content after flash programming.</p> +<div class="image"> +<img src="CodeVerify.png" alt="CodeVerify.png"/> +</div> +<p><b>Disconnect Debugger</b> is executed when debugging or flash programming with the target stops.</p> +<div class="image"> +<img src="DebugDisconnect.png" alt="DebugDisconnect.png"/> +</div> +<h1><a class="anchor" id="default_sequences"></a> +Default debug access sequences</h1> +<p>Debug access sequences get defined in the <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element. The following table lists the available pre-defined debug access sequences. <a class="el" href="pdsc_SequenceNameEnum_pg.html#default_sequences">Default debug access sequences</a> are executed if they are not overwritten using a <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element. Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#usage_of_sequences">Usage of debug access sequences</a> for more information about the execution of these sequences.</p> +<p>For debug access sequences marked in <span class="XML-Token">ItalicRed</span>, no default sequence exists. The usage in a debug description requires a related <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> element to be present. The other sequences should be implemented in a development tool. They are executed when no sequence definition exists in the PDSC file.</p> +<dl class="section note"><dt>Note</dt><dd>Default debug access sequences read the System Control Space (SCS) of the processor and assume that the SCS offset is implemented as defined in the ARMv6-M/ARMv7-M/ARMv8-M architecture reference manual.</dd></dl> +<table class="cmtable" summary="Enumeration: SequenceNameEnum"> +<tr> +<th>name= </th><th>Description </th></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortSetup">DebugPortSetup</a> </td><td>Prepare the target debug port for connection; is executed before acquiring access to the debug port.<br/> + May include for example an SWJ-DP switch sequence as defined in the ARM Debug Interface (ADI) Architecture Specification.<br/> + <b>This sequence must not contain debug port/access port register and target memory accesses other than:</b><ul> +<li><b>Reading the <em>DPIDR</em> debug port register to release an SWD connection from its line reset.</b></li> +<li><b>Writing the <em>TARGETSEL</em> debug port register (SWD protocol v2).</b> </li> +</ul> +</td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortStart">DebugPortStart</a> </td><td>Connect to the target debug port and power it up; is executed after DebugPortSetup.<br/> + The parent <b>debugport</b> is default debug port for this sequence.<br/> + <b>This sequence must not contain access port register and target memory accesses.</b> </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortStop">DebugPortStop</a> </td><td>Power down and disconnect from target debug port.<br/> + Executed as last step during target disconnect unless another debugger connection to this port is active. The parent <b>debugport</b> is default debug port for this sequence.<br/> + <b>This sequence must not contain access port register and target memory accesses.</b> </td></tr> +<tr> +<td class="XML-Token">DebugDeviceUnlock </td><td>Check if the device is in a locked state and unlock it. Use <b>query</b> command elements for user confirmation.<br/> + Executed after having powered up the debug port. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#debugCoreStart">DebugCoreStart</a> </td><td>Initialize core debug system.<br/> + Executed after having connected and powered up the default debug port for the connection. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#debugCoreStop">DebugCoreStop</a> </td><td>Uninitialize core debug system.<br/> + Executed as last step during disconnect before powering down any debug ports no longer required for concurrent connections. </td></tr> +<tr> +<td class="XML-Token">DebugCodeMemRemap </td><td>Remap memory to execution location.<br/> + Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection). </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetSystem">ResetSystem</a> </td><td>Execute a system-wide reset via software mechanisms. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetProcessor">ResetProcessor</a> </td><td>Execute a processor reset via software mechanisms. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetHardware">ResetHardware</a> </td><td>Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetHardwareAssert">ResetHardwareAssert</a> </td><td>Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetHardwareDeassert">ResetHardwareDeassert</a> </td><td>Deassert a system-wide reset via the dedicated debugger reset line, e.g. nRST. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetCatchSet">ResetCatchSet</a> </td><td>Executed before a target reset to configure the vector catch to stop code execution after the reset.<br/> + The implementation of <b>ResetCatchSet</b> requires an implementation of <b>ResetCatchClear</b> to free any hardware resources used for stopping the core. </td></tr> +<tr> +<td class="XML-Token"><a class="el" href="pdsc_SequenceNameEnum_pg.html#resetCatchClear">ResetCatchClear</a> </td><td>Executed after a target reset to free hardware resources allocated by <b>ResetCatchSet</b>. </td></tr> +<tr> +<td class="XML-Token">FlashEraseDone </td><td>Executed after erasing flash memory. </td></tr> +<tr> +<td class="XML-Token">FlashProgramDone </td><td>Eexecuted after programming flash memory. </td></tr> +<tr> +<td class="XML-Token">TraceStart </td><td>Enable target trace capture.<br/> + Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection as well as after a system-wide reset. </td></tr> +<tr> +<td class="XML-Token">TraceStop </td><td>Disable target trace capture.<br/> + Executed after the debugger disabled and powered down standard CoreSight trace components. </td></tr> +<tr> +<td class="XML-Token">RecoverySupportStart </td><td>Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode. </td></tr> +<tr> +<td class="XML-Token">RecoverySupportStop </td><td>Executed after step or run command in context of the <b>RecoverySupportStart</b> sequence. </td></tr> +<tr> +<td class="XML-Token">RecoveryAcknowledge </td><td>Debugger acknowledge after recovering from a lost target connection. Can be executed independently from a <b>RecoverySupportStart</b> sequence. </td></tr> +</table> +<h2>Pre-defined default debug access sequences </h2> +<p>The following sections the show the details of the pre-defined default debug access sequences.</p> +<h2><a class="anchor" id="debugPortSetup"></a> +DebugPortSetup</h2> +<p>Prepare the target debug port for connection.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortSetup"</span>></div> +<div class="line"> <block></div> +<div class="line"> __var isSWJ = ((__protocol &amp; 0x00010000) != 0);</div> +<div class="line"> __var protType = __protocol &amp; 0x0000FFFF;</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- JTAG Protocol --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"protType == 1"</span>></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Ensure current debug interface is in reset state</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SWJ-DP Switch Sequence SWD to JTAG (0xE73C)</span></div> +<div class="line"> <span class="comment">// Change if SWJ-DP uses deprecated switch code (0xAEAE)</span></div> +<div class="line"> DAP_SWJ_Sequence(16, 0xE73C);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Ensure JTAG interface is reset</span></div> +<div class="line"> DAP_SWJ_Sequence(6, 0x3F);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// JTAG "Soft" Reset</span></div> +<div class="line"> DAP_JTAG_Sequence(6, 1, 0x3F);</div> +<div class="line"> DAP_JTAG_Sequence(1, 0, 0x01);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <!-- SWD Protocol --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"protType == 2"</span>></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Ensure current debug interface is in reset state</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SWJ-DP Switch Sequence JTAG to SWD (0xE79E)</span></div> +<div class="line"> <span class="comment">// Change if SWJ-DP uses deprecated switch code (0xEDB6)</span></div> +<div class="line"> DAP_SWJ_Sequence(16, 0xE79E);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Enter SWD Line Reset State</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); <span class="comment">// &gt; 50 cycles SWDIO/TMS High</span></div> +<div class="line"> DAP_SWJ_Sequence(3, 0x00); <span class="comment">// At least 2 idle cycles (SWDIO/TMS Low)</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!isSWJ"</span>></div> +<div class="line"> </div> +<div class="line"> <block atomic=<span class="stringliteral">"1"</span>></div> +<div class="line"> <span class="comment">// Enter SWD Line Reset State</span></div> +<div class="line"> DAP_SWJ_Sequence(51, 0x0007FFFFFFFFFFFF); <span class="comment">// &gt; 50 cycles SWDIO/TMS High</span></div> +<div class="line"> DAP_SWJ_Sequence(3, 0x00); <span class="comment">// At least 2 idle cycles (SWDIO/TMS Low)</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Read DPIDR to enable SWD interface (SW-DPv1 and SW-DPv2)</span></div> +<div class="line"> ReadDP(0x0);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugPortStart"></a> +DebugPortStart</h2> +<p>Connect to the target debug port and power it up.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortStart"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> __var SW_DP_ABORT = 0x0;</div> +<div class="line"> __var DP_CTRL_STAT = 0x4;</div> +<div class="line"> __var DP_SELECT = 0x8;</div> +<div class="line"> __var powered_down = 0;</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Switch to DP Register Bank 0</span></div> +<div class="line"> WriteDP(DP_SELECT, 0x00000000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Read DP CTRL/STAT Register and check if CSYSPWRUPACK and CDBGPWRUPACK bits are set</span></div> +<div class="line"> powered_down = ((ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"powered_down"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Request Debug/System Power-Up</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x50000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Wait <span class="keywordflow">for</span> Power-Up Request to be acknowledged --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(ReadDP(DP_CTRL_STAT) &amp; 0xA0000000) != 0xA0000000"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Request Debug Reset</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x54000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Wait <span class="keywordflow">for</span> Debug Reset to be acknowledged, don<span class="stringliteral">'t issue error on timeout to deal with improperly connected Debug Reset --></span></div> +<div class="line"><span class="stringliteral"> <control while="(ReadDP(DP_CTRL_STAT) &amp; 0xA8000000) != 0xA8000000" timeout="300000"/></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> <!-- JTAG Specific Part of sequence --></span></div> +<div class="line"><span class="stringliteral"> <control if="__protocol == 1"></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> <block></span></div> +<div class="line"><span class="stringliteral"> // Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)</span></div> +<div class="line"><span class="stringliteral"> // Additionally clear STICKYORUN, STICKYCMP, and STICKYERR bits by writing '</span>1<span class="stringliteral">'</span></div> +<div class="line"><span class="stringliteral"> WriteDP(DP_CTRL_STAT, 0x50000F32);</span></div> +<div class="line"><span class="stringliteral"> </block></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> </control></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> <!-- SWD Specific Part of sequence --></span></div> +<div class="line"><span class="stringliteral"> <control if="__protocol == 2"></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> <block></span></div> +<div class="line"><span class="stringliteral"> // Init AP Transfer Mode, Transaction Counter, and Lane Mask (Normal Transfer Mode, Include all Byte Lanes)</span></div> +<div class="line"><span class="stringliteral"> WriteDP(DP_CTRL_STAT, 0x50000F00);</span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> // Clear WDATAERR, STICKYORUN, STICKYCMP, and STICKYERR bits of CTRL/STAT Register by write to ABORT register</span></div> +<div class="line"><span class="stringliteral"> WriteDP(SW_DP_ABORT, 0x0000001E);</span></div> +<div class="line"><span class="stringliteral"> </block></span></div> +<div class="line"><span class="stringliteral"></span></div> +<div class="line"><span class="stringliteral"> </control></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"> </control></span></div> +<div class="line"><span class="stringliteral"> </span></div> +<div class="line"><span class="stringliteral"></sequence></span></div> +</div><!-- fragment --><h2><a class="anchor" id="debugPortStop"></a> +DebugPortStop</h2> +<p>Power down and disconnect from target debug port.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugPortStop"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var DP_CTRL_STAT = 0x4;</div> +<div class="line"> __var DP_SELECT = 0x8;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Switch to DP Register Bank 0</span></div> +<div class="line"> WriteDP(DP_SELECT, 0x00000000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Power Down Debug port</span></div> +<div class="line"> WriteDP(DP_CTRL_STAT, 0x00000000);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugCoreStart"></a> +DebugCoreStart</h2> +<p>Initialize core debug system.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugCoreStart"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Enable Core Debug via DHCSR</span></div> +<div class="line"> Write32(DHCSR_Addr, 0xA05F0001);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="debugCoreStop"></a> +DebugCoreStop</h2> +<p>Un-initialize core debug system.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"DebugCoreStop"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable Core Debug via DHCSR</span></div> +<div class="line"> Write32(DHCSR_Addr, 0xA05F0000);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable DWT and ITM blocks, DebugMonitor handler,</span></div> +<div class="line"> <span class="comment">// halting debug traps, and Reset Vector Catch.</span></div> +<div class="line"> Write32(DEMCR_Addr, 0x00000000);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetSystem"></a> +ResetSystem</h2> +<p>Execute a system-wide reset via software mechanisms.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetSystem"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in ARMv6-M/ARMv7-M.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var AIRCR_Addr = SCS_Addr + 0xD0C;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute SYSRESETREQ via AIRCR</span></div> +<div class="line"> Write32(AIRCR_Addr, 0x05FA0004);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- Reset Recovery: Wait <span class="keywordflow">for</span> DHCSR.S_RESET_ST bit to clear on read --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(Read32(DHCSR_Addr) &amp; 0x02000000) == 0"</span> timeout=<span class="stringliteral">"500000"</span>/></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetProcessor"></a> +ResetProcessor</h2> +<p>Execute a processor reset via software mechanisms.</p> +<dl class="section note"><dt>Note</dt><dd>This Default Debug Access Sequence is empty for ARMv6-M based processors.</dd></dl> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetProcessor"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined in ARMv7-M.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var AIRCR_Addr = SCS_Addr + 0xD0C;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Execute VECTRESET via AIRCR</span></div> +<div class="line"> Write32(AIRCR_Addr, 0x05FA0001);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Reset Recovery: Wait <span class="keywordflow">for</span> DHCSR.S_RESET_ST bit to clear on read --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(Read32(DHCSR_Addr) &amp; 0x02000000) == 0"</span> timeout=<span class="stringliteral">"500000"</span>/></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardware"></a> +ResetHardware</h2> +<p>Execute a system-wide reset via the dedicated debugger reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardware"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> __var canReadPins = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Deassert nRESET line</span></div> +<div class="line"> canReadPins = (DAP_SWJ_Pins(0x00, nReset, 0) != 0xFFFFFFFF);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Keep reset active <span class="keywordflow">for</span> 50 ms --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"50000"</span>/></div> +<div class="line"></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"canReadPins"</span>></div> +<div class="line"> </div> +<div class="line"> <!-- Assert nRESET line and wait max. 1s <span class="keywordflow">for</span> recovery --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!canReadPins"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Assert nRESET line</span></div> +<div class="line"> DAP_SWJ_Pins(nReset, nReset, 0);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <!-- Wait 100ms <span class="keywordflow">for</span> recovery <span class="keywordflow">if</span> nRESET not readable --></div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"100000"</span>/></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardwareAssert"></a> +ResetHardwareAssert</h2> +<p>Assert a system-wide reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardwareAssert"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Deassert nRESET line to activate the hardware reset</span></div> +<div class="line"> DAP_SWJ_Pins(0, nReset, 0);</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetHardwareDeassert"></a> +ResetHardwareDeassert</h2> +<p>De-Assert a system-wide reset line nRST.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetHardwareDeassert"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> __var nReset = 0x80;</div> +<div class="line"> __var canReadPins = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Assert nRESET line and check if nRESET is readable</span></div> +<div class="line"> canReadPins = (DAP_SWJ_Pins(nReset, nReset, 0) != 0xFFFFFFFF);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"> <!-- Wait max. 1s <span class="keywordflow">for</span> nRESET to recover from reset <span class="keywordflow">if</span> readable--></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"canReadPins"</span> <span class="keywordflow">while</span>=<span class="stringliteral">"(DAP_SWJ_Pins(nReset, nReset, 0) &amp; nReset) == 0"</span> timeout=<span class="stringliteral">"1000000"</span>/></div> +<div class="line"> </div> +<div class="line"> <!-- Wait 100ms <span class="keywordflow">for</span> recovery <span class="keywordflow">if</span> nRESET not readable --></div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"!canReadPins"</span> <span class="keywordflow">while</span>=<span class="stringliteral">"1"</span> timeout=<span class="stringliteral">"100000"</span>/></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetCatchSet"></a> +ResetCatchSet</h2> +<p>Configure the target to stop code execution after a reset.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetCatchSet"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined</span></div> +<div class="line"> <span class="comment">// in ARMv6-M/ARMv7-M. Reimplement this sequence</span></div> +<div class="line"> <span class="comment">// if the SCS is located at a different offset.</span></div> +<div class="line"></div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DHCSR_Addr = SCS_Addr + 0xDF0;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> __var value = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Enable Reset Vector Catch in DEMCR</span></div> +<div class="line"> value = Read32(DEMCR_Addr);</div> +<div class="line"> Write32(DEMCR_Addr, (value | 0x00000001));</div> +<div class="line"></div> +<div class="line"> <span class="comment">// Read DHCSR to clear potentially set DHCSR.S_RESET_ST bit</span></div> +<div class="line"> Read32(DHCSR_Addr);</div> +<div class="line"> </block></div> +<div class="line"></div> +<div class="line"></sequence></div> +</div><!-- fragment --><h2><a class="anchor" id="resetCatchClear"></a> +ResetCatchClear</h2> +<p>Free hardware resources allocated by ResetCatchSet.</p> +<div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"ResetCatchClear"</span>></div> +<div class="line"></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// System Control Space (SCS) offset as defined</span></div> +<div class="line"> <span class="comment">// in ARMv6-M/ARMv7-M. Reimplement this sequence</span></div> +<div class="line"> <span class="comment">// if the SCS is located at a different offset.</span></div> +<div class="line"> </div> +<div class="line"> __var SCS_Addr = 0xE000E000;</div> +<div class="line"> __var DEMCR_Addr = SCS_Addr + 0xDFC;</div> +<div class="line"> __var value = 0;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Disable Reset Vector Catch in DEMCR</span></div> +<div class="line"> value = Read32(DEMCR_Addr);</div> +<div class="line"> Write32(DEMCR_Addr, (value &amp; (~0x00000001)));</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --><h1><a class="anchor" id="writing_sequences"></a> +Writing debug access sequences</h1> +<p>To override a default sequence or to create a custom (default) sequence, you need to write <a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> elements. The following sections show how to use the built-in debug access syntax, expressions, and debug access functions to create custom sequences.</p> +<h2><a class="anchor" id="DebugSyntaxRules"></a> +Debug access syntax rules</h2> +<p>Debug accesses are described in <b>block</b> elements of a debug access sequence (<b>sequence</b> element). The following syntax is used for this purpose:</p> +<ul> +<li>The contents of a <b>block</b> element is a series of statements.</li> +<li>Each statement must begin in a new line and is terminated by a <span class="XML-Token">;</span> character.</li> +<li>A typical statement consists of variable, followed by a <span class="XML-Token">=</span> character and an expression, where the <span class="XML-Token">=</span> character is an assignment of the <a class="el" href="pdsc_SequenceNameEnum_pg.html#ExpressionType">expression</a> result to the variable: <div class="fragment"><div class="line">variable = expression;</div> +</div><!-- fragment --></li> +<li>Alternatively, a statement can be a sole <a class="el" href="pdsc_SequenceNameEnum_pg.html#ExpressionType">expression</a> without storing its result to a variable. <div class="fragment"><div class="line">expression;</div> +</div><!-- fragment --></li> +<li>Comments begin with two slashes (<span class="XML-Token">//</span>) and end with a linebreak: <div class="fragment"><div class="line"><span class="comment">// Whole line is a comment</span></div> +<div class="line">variable = expression; <span class="comment">// Comment appended to statement</span></div> +</div><!-- fragment --></li> +<li>Variables must be defined using the keyword <span class="XML-Token">__var</span>. The definition must include an initalization of the variable: <div class="fragment"><div class="line">__var variable = 0;</div> +</div><!-- fragment --></li> +<li>Variables can be defined only once within a scope. Scopes beging with entering a debug access sequence or a <b>control</b> element. They are extended to child <b>control</b> elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.<br/> + <b><em>block</em> elements do not begin a new scope.</b> <div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"MySequence"</span>></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 1"</span>></div> +<div class="line"> __var condvar = 1;</div> +<div class="line"> __var myvar1 = 5;</div> +<div class="line"> __var myvar2 = 0;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"condvar"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// __var myvar1 = 2; // Redefinition, not allowed!</span></div> +<div class="line"> __var myvar3 = 2;</div> +<div class="line"> myvar2 = myvar1 + myvar3; <span class="comment">// Assign value (5+2) = 7</span></div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 2"</span>></div> +<div class="line"> myvar1 = myvar2 + 1; <span class="comment">// Variable myvar1 holds the value '8' after this statement</span></div> +<div class="line"> <span class="comment">// myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --></li> +<li>The debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the <b>Sequence</b> debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.</li> +</ul> +<h2><a class="anchor" id="ExpressionType"></a> +Expression rules</h2> +<p>Expressions are used in various places to describe one of the following:</p> +<ul> +<li>A value as assigned in a <a class="el" href="pdsc_SequenceNameEnum_pg.html#DebugSyntaxRules">debug access statement</a>.</li> +<li>A condition to use in the <b>if</b> attribute of a <b>control</b> element.</li> +<li>A condition to use in the <b>while</b> attribute of a <b>control</b> element.</li> +<li>A parameter to a debug access function as described below.</li> +</ul> +<p>An expression may consist of the following:</p> +<ul> +<li>Constant numbers in decimal and hexadecimal representation (prefix <span class="XML-Token">0x</span>).</li> +<li>Arithmetic operators such as <span class="XML-Token">+</span>, <span class="XML-Token">-</span>, <span class="XML-Token">*</span>, <span class="XML-Token">/</span>, and <span class="XML-Token">%</span>.</li> +<li>Bit-arithmetic operators such as <span class="XML-Token">&</span>, <span class="XML-Token">|</span>, <span class="XML-Token">~</span>, <span class="XML-Token">^</span>, <span class="XML-Token">>></span>, and <span class="XML-Token"><<</span>.</li> +<li>Comparison-operators such as <span class="XML-Token">==</span>, <span class="XML-Token">!=</span>, <span class="XML-Token"><</span>, <span class="XML-Token">></span>, <span class="XML-Token"><=</span>, and <span class="XML-Token">>=</span>.</li> +<li>Logic operators such as <span class="XML-Token">!</span>, <span class="XML-Token">&&</span>, <span class="XML-Token">||</span>, and <span class="XML-Token">==</span>.</li> +<li>Conditional expression operations like:<div class="fragment"><div class="line">(x < y) ? a : b </div> +</div><!-- fragment --></li> +<li>Precedence of sub-expressions is indicated by brackets (<span class="XML-Token">(</span>, <span class="XML-Token">)</span>). C-like precedence applies if brackets are omitted.</li> +<li>References to <a class="el" href="pdsc_family_pg.html#DebugVars">debug access variables</a> for evaluating debug settings.</li> +<li>Calls to <a class="el" href="pdsc_SequenceNameEnum_pg.html#DebugFunctions">debug access functions</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>All values used in expressions resolve to 64-bit unsigned integer values.</li> +<li>All logic-operations and comparisons resolve to the value <span class="XML-Token">1</span> if true, to <span class="XML-Token">0</span> otherwise.</li> +<li>XML prohibits the use of the characters <span class="XML-Token">&</span>, <span class="XML-Token"><</span>, and <span class="XML-Token">></span>. Use the corresponding XML entity names instead: <span class="XML-Token">&amp;</span>, <span class="XML-Token">&lt;</span>, and <span class="XML-Token">&gt;</span>.</li> +</ul> +</dd></dl> +<p> </p> +<h2><a class="anchor" id="DebugFunctions"></a> +Debug access functions</h2> +<p>Debug access functions can be called in expressions in order to interact with the target device and the user. Parameters to functions can again be expressions.<br/> + By default, a debugger must abort the execution of a debug access sequence if a function call fails. However, this behavior can be controlled from a sequence by the <b>__errorcontrol</b> <a class="el" href="pdsc_family_pg.html#DebugVars">debug access variable</a>.<br/> + <br/> + The following table describes the existing debug access functions, their parameters and the debug access variables which are evaluated for the function call.</p> +<table class="cmtable" summary="ExpressionType: debug access functions"> +<tr> +<th>Function </th><th>Description </th></tr> +<tr> +<td style="white-space: nowrap"><pre>Sequence("name")</pre> </td><td><p class="starttd">Execute a debug access sequence. Calling a sequence by this function causes the modifiable debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> to be pushed on a sequence execution stack. Returning from such a call will restore the state of these variables.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>name: Name of the sequence to execute. It must be enclosed by quotes.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read8(addr)</pre> </td><td><p class="starttd">Read an 8-bit value from target memory. <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 8-bit value as read from target memory. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read16(addr)</pre> </td><td><p class="starttd">Read an 16-bit value from target memory. <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 16-bit value as read from target memory. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read32(addr)</pre> </td><td><p class="starttd">Read an 32-bit value from target memory. <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 32-bit value as read from target memory.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#resetSystem">ResetSystem</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Read64(addr)</pre> </td><td><p class="starttd">Read an 64-bit value from target memory. <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 64-bit value as read from target memory. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>ReadAP(addr)</pre> </td><td><p class="starttd">Read a 32-bit value from an access port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: AP register address to read from. Addresses larger than <span class="XML-Token">0xF</span> automatically cause an AP register bank switch.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The 32-bit value as read from the AP register. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>ReadDP(addr)</pre> </td><td><p class="starttd">Read a 32-bit value from a debug port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: DP register address to read from.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + The 32-bit value as read from the DP register.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write8(addr, val)</pre> </td><td><p class="starttd">Write an 8-bit value to target memory. <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write16(addr, val)</pre> </td><td><p class="starttd">Write a 16-bit value to target memory. <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write32(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to target memory. <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#debugCoreStart">DebugCoreStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Write64(addr, val)</pre> </td><td><p class="starttd">Write a 64-bit value to target memory. <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>WriteAP(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to an access port register. Addresses larger than 0xF automatically cause an AP register bank switch.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +<li>__ap: The access port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>WriteDP(addr, val)</pre> </td><td><p class="starttd">Write a 32-bit value to a debug port register.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>addr: Memory address to write to.</li> +<li>val: Value to write.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortStart">DebugPortStart</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_Delay(delay)</pre> </td><td><p class="starttd">Debug probe command to wait for a specific delay.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>delay: Wait time in microseconds.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_WriteABORT(value)</pre> </td><td><p class="starttd">Debug probe command to write an abort request to the CoreSight ABORT register of the target debug port.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>value: 32-bit value to write into the CoreSight ABORT register.</li> +</ul> +<p><b>Debug Access Variables:</b><br/> +</p> +<ul> +<li>__dp: The debug port to use for this memory access.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Pins(pinout, pinselect, pinwait)</pre> </td><td><p class="starttd">Debug proble command to monitor and control the I/O Pins including the nRESET device reset line.<br/> + <b>I/O Pin Mapping</b> for <b>pinout</b>, <b>pinselect</b>, and <b>pinwait</b>:</p> +<ul> +<li>Bit 0: SWCLK/TCK</li> +<li>Bit 1: SWDIO/TMS</li> +<li>Bit 2: TDI</li> +<li>Bit 3: TDO</li> +<li>Bit 5: nTRST</li> +<li>Bit 7: nRESET</li> +</ul> +<p><br/> + The <b>pinwait</b> time is useful in systems where the nRESET pin is implemented as open-drain output. After nRESET is de-asserted by the debugger, external circuit may still hold the target Device under reset for a time. Using the <b>pinwait</b> time, the debugger may monitor selected I/O Pins and wait until they the expected value appears or a timeout expires.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>pinout: Value for selected output pins.</li> +<li>pinselect: Selects which output pins will be modified.</li> +<li>pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout to the closest possible time granularity.<ul> +<li>0 = no wait</li> +<li>1 .. 3000000 = time in microseconds (max 3s)</li> +</ul> +</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + The state of the I/O Pins at the end of this operation. If a debugger is not capable of monitoring the I/O Pins, it must return a value of <span class="XML-Token">0xFFFFFFFF</span>. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Clock(val)</pre> </td><td><p class="starttd">Debug probe command to set the clock frequency for JTAG and SWD communication mode.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#resetHardware">ResetHardware</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_SWJ_Sequence(cnt, val)</pre> </td><td><p class="starttd">Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG switch and Dormant operation.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple subsequent <b>DAP_SWJ_Sequence</b> calls. Such a sequence of <b>DAP_SWJ_Sequence</b> commands must be encapsulated in an atomic <b>block</b> to ensure correct execution.</li> +<li>val: Sequence generated on SWDIO/TMS (with clock @SWCLK/TCK), LSB transmitted first.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>DAP_JTAG_Sequence(cnt, tms, tdi)</pre> </td><td><p class="starttd">Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64</li> +<li>tms: Fixed TMS value: 0..1</li> +<li>tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.</li> +</ul> +<p class="endtd"><b>Return Value:</b><br/> + Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with <span class="XML-Token">0</span>s. </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Query(type, "message", default)</pre> </td><td><p class="starttd">Query user input. The sequence execution stalls depending on the used <b>type</b>. If the debugger runs in a batch mode, this function returns the value <b>default</b>.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>type: Query type. Can be one of:<ul> +<li><span class="XML-Token">0</span> : <b>Query_Ok</b>, displays an informative message which has to be confirmed by the user. This type allows the result <b>OK</b>.</li> +<li><span class="XML-Token">1</span> : <b>Query_YesNo</b>, displays a query with the allowed results <b>Yes</b> and <b>No</b>.</li> +<li><span class="XML-Token">2</span> : <b>Query_YesNoCancel</b>, displays a query with the allowed results <b>Yes</b>, <b>No</b>, and <b>Cancel</b>.</li> +<li><span class="XML-Token">3</span> : <b>Query_OkCancel</b>, displays a query with the allowed results <b>OK</b> and <b>Cancel</b>.</li> +</ul> +</li> +<li>message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.</li> +<li>default: The default value to return if the debugger runs in batch mode. See <b>Return Values</b> for a list of allowed values.</li> +</ul> +<p><b>Return Value:</b><br/> + The result of the query. The user input maps to the following numbers:</p> +<ul> +<li>Error : <span class="XML-Token">0</span></li> +<li>OK : <span class="XML-Token">1</span></li> +<li>Cancel : <span class="XML-Token">2</span></li> +<li>Yes : <span class="XML-Token">3</span></li> +<li>No : <span class="XML-Token">4</span></li> +</ul> +<p class="endtd"><b>Code Example:</b><br/> + Refer to <a class="el" href="pdsc_SequenceNameEnum_pg.html#debugPortSetup">DebugPortSetup</a> </p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>QueryValue("message", default)</pre> </td><td><p class="starttd">Query input value from user. The sequence execution stalls until the user has entered a value or canceled the query. This function returns the <b>default</b> value if the user canceled the query or if the debugger runs in a batch mode.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>message: A constant string with the query message to display. It must not be an expression and it must be enclosed by quotes.</li> +<li>default: The default value to return if the user cancels the query or if the debugger runs in batch mode.</li> +</ul> +<p><b>Return Value:</b><br/> + The queried value.</p> +<p class="endtd"></p> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>Message(type, "format", ...)</pre> </td><td><p class="starttd">Outputs a message to a log window.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>type: Message type. Can be one of:<ul> +<li><span class="XML-Token">0</span> : <b>Info</b>, outputs an informative message.</li> +<li><span class="XML-Token">1</span> : <b>Warning</b>, outputs a warning.</li> +<li><span class="XML-Token">2</span> : <b>Error</b>, outputs an error. Sequence execution aborts.</li> +</ul> +</li> +<li>format: A constant string with the message format. It must not be an expression and it must be enclosed by quotes. The string has the following format:<br/> + <div class="fragment"><div class="line">%[flags][width][.precision]specifier</div> +</div><!-- fragment --><ul> +<li>Specifiers:<ul> +<li><span class="XML-Token">%u</span>: 32-bit unsigned decimal integer.</li> +<li><span class="XML-Token">%llu</span>: 64-bit unsigned decimal integer.</li> +<li><span class="XML-Token">%x</span>: 32-bit unsigned hexadecimal integer, lower case letters.</li> +<li><span class="XML-Token">%llx</span>: 64-bit unsigned hexadecimal integer, lower case letters.</li> +<li><span class="XML-Token">%X</span>: 32-bit unsigned hexadecimal integer, upper case letters.</li> +<li><span class="XML-Token">%llX</span>: 64-bit unsigned hexadecimal integer, upper case letters.</li> +<li><span class="XML-Token">%o</span>: 32-bit unsigned octal integer.</li> +<li><span class="XML-Token">%llo</span>: 64-bit unsigned octal integer.</li> +<li><span class="XML-Token">%b</span>: 32-bit unsigned binary integer.</li> +<li><span class="XML-Token">%llb</span>: 64-bit unsigned binary integer.</li> +<li><span class="XML-Token">%f</span>: Single-precision (32-bit) floating point value.</li> +<li><span class="XML-Token">%Lf</span>: Double-precision (64-bit) floating point value.</li> +<li><span class="XML-Token">%s</span>: Constant character string. Must not be an expression.</li> +<li><span class="XML-Token">%%</span>: Print <span class="XML-Token">%</span> character.</li> +</ul> +</li> +<li>Flags:<ul> +<li><span class="XML-Token">0</span>: Pad the displayed value with zeros instead of spaces if padding is required by the <span class="XML-Token">width</span> option.</li> +</ul> +</li> +<li>Width: Minimum number of displayed characters. If <span class="XML-Token">width</span> is less than the number of characters of the value, then the value is padded with spaces to the left.</li> +<li>.Precision:<ul> +<li><b>Integer</b>: Minimum number of displayed digits. Padded with zeros to the left if the value has less digits than specified with <span class="XML-Token">.precision</span>.</li> +<li><b>Floating Point</b>: Number of displayed digits after decimal point. Defaults to <span class="XML-Token">6</span> if not specified.</li> +<li><b>Constant String</b>: Maximum number of displayed characters.</li> +</ul> +</li> +</ul> +</li> +<li>... : Additional function parameters to replace format string specifiers. Each parameter can be a constant string, or an expression that resolves to an unsigned 64-bit integer. A parameter type must match the corresponding specifier type.</li> +</ul> +<p><b>Return Value:</b><br/> + Always returns <span class="XML-Token">0</span>.</p> +<dl class="section note"><dt>Note</dt><dd>For 32-bit specifiers the <b>Message</b> command must print the lower 32 Bit of a 64 Bit debug access variable.</dd></dl> +</td></tr> +<tr> +<td style="white-space: nowrap"><pre>LoadDebugInfo("file")</pre> </td><td><p class="starttd">Loads DWARF debug information from an application executable.<br/> + <br/> + <b>Parameters:</b><br/> +</p> +<ul> +<li>file: A constant string with the path to the executable. The path must be relative to the root folder of the pack and use the format <b>path/name.extension</b>. It must not be an expression and it must be enclosed by quotes.</li> +</ul> +<p><b>Return Value:</b><br/> + Returns <span class="XML-Token">0</span> after successful debug information load.<br/> + Returns <span class="XML-Token">1</span> if debug information load failed.</p> +<p class="endtd"></p> +</td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>Target memory access functions must perform a debug access of the size indicated by their name. The target system must support debug accesses of this size.</li> +<li>Results of all functions are casted to 64-bit unsigned integer values.</li> +<li>Some target access functions determine the used debug and access port by the current values of the <b>__dp</b> and <b>__ap</b> debug access variables. If a target access requires a different debug or access port than the default ones, it must change these values. This change is held until finishing the sequence the change has occurred in. </li> +</ul> +</dd></dl> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="coresight_setup.html">Simplifying debug setup using debug descriptions</a></li> + <li class="footer">Generated on Wed Feb 8 2017 10:21:01 for CMSIS-Pack by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_apis_pg.html b/docs/Pack/html/pdsc_apis_pg.html new file mode 100644 index 0000000..900631f --- /dev/null +++ b/docs/Pack/html/pdsc_apis_pg.html @@ -0,0 +1,200 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/apis element</title> +<title>CMSIS-Pack: /package/apis element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_apis_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/apis element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>Application Programming Interfaces (apis) are C/C++ interface specifications that allow software to be divided into largely independent modules. Such modules can then be developed, tested, and maintained independently, and reused by different projects. One example is the use of device drivers. If device drivers are developed for different devices implementing the same API, the application software itself can be written independent from the device it is build for.</p> +<p>The <b>apis</b> allow to distribute the Application Programming Interface Specifications decoupled from actual implementation. One example is the CMSIS-RTOS API, which is specified as part of CMSIS, however, the actual RTOS implementation is provided by different vendors.</p> +<p>Unlike a software component, an API is not selectable. An API consists of a name, a brief description as well as one or more header files, and a document containing a detailed specification of the API.</p> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_apis"></a> +/package/apis</h1> +<p>This element is a grouping element for all application programming interfaces included in the <a class="el" href="cp_SWComponents.html">Software Pack</a>. The element itself is optional. Only one such section can exist in a package.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> <apis></div> +<div class="line"> ...</div> +<div class="line"> </apis></div> +<div class="line"></package> </div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: APIs"> +<tr> +<th>Parents </th><th>Element Chain </th><th>  </th><th>  </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td><a class="el" href="pdsc_package_pg.html">/package</a> </td><td>  </td><td>  </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_apis_pg.html#element_api">api</a> </td><td>Named specification of an API containing a brief description, C/C++ header files and documentation </td><td>ApiType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_api"></a> +/package/apis/api</h1> +<p>Application Programming Interfaces (apis) are C/C++ interface specifications that allow components to interwork by either implementing or using a set of functions, data types, and definitions. This element is mandatory and can exist multiple times.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><apis></div> +<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver UART"</span> exclusive=<span class="stringliteral">"0"</span>></div> +<div class="line"> <description>UART Driver API <span class="keywordflow">for</span> the Cortex-M processor based devices</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Driver/Doc/UART/html/index.html"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Driver/Include/Driver_UART.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </api></div> +<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver SPI"</span> exclusive=<span class="stringliteral">"0"</span>></div> +<div class="line"> <description>SPI Driver API <span class="keywordflow">for</span> the Cortex-M processor based devices</description></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Driver/Doc/SPI/html/index.html"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Driver/Include/Driver_SPI.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </api></div> +<div class="line"> ...</div> +<div class="line"></apis></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: api"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_apis_pg.html#element_apis">apis</a> </td><td colspan="3"><a class="el" href="pdsc_apis_pg.html#element_apis">/package/apis</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cclass </td><td>Defines the component class to which this component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>CclassType </td><td>required </td></tr> +<tr> +<td>Cgroup </td><td>Defines the component group to which this component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>required </td></tr> +<tr> +<td>exclusive </td><td>Makes the selection of a component implementing the API exclusive. If set to <span class="XML-Token">0</span>, then multiple components implementing the API can be selected. Default is <span class="XML-Token">1</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>Capiversion </td><td>Version of this component. Is a mandatory part of the component ID. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Brief summary about the purpose and scope of an API. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td>Grouping element for all file descriptions that are part of this component.. </td><td>group </td><td>0..1 </td></tr> +</table> +<p> </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_boards_pg.html b/docs/Pack/html/pdsc_boards_pg.html new file mode 100644 index 0000000..274f14e --- /dev/null +++ b/docs/Pack/html/pdsc_boards_pg.html @@ -0,0 +1,507 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/boards element</title> +<title>CMSIS-Pack: /package/boards element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_boards_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/boards element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The level <b><boards></b> describes a development board that is the subject of a Board Support Pack (BSP). It contains information about the board vendor and name, a brief description, images to be displayed on web pages, and different types of documentation. The microcontroller devices that are mounted on the board or that are compatible with the ones mounted are also specified. A list of features concludes the <boards> section.</p> +<p>A development board is described by the following properties:</p> +<ul> +<li>description: a brief description of the development board</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_book">book</a>: documentation about the board (user manuals, schematics, etc.)</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">mountedDevice</a>: the microcontroller device mounted on the development board.</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_compatibleDevice">compatibleDevice</a>: compatible microcontroller devices.</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_image">image</a>: pictures of the board to be displayed on web pages.</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_feature">feature</a>: categorized list of the development board's features and peripherals.</li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_debugInterface">debugInterface</a>: describing the debug capabilities.</li> +</ul> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><boards></div> +<div class="line"> <board vendor=<span class="stringliteral">"STMicroelectronics"</span> name=<span class="stringliteral">"32F429IDISCOVERY"</span> revision=<span class="stringliteral">"Rev.1"</span> salesContact=<span class="stringliteral">"http://www.st.com/stonline/contactus/contacts/index.php"</span> orderForm=<span class="stringliteral">"https://my.st.com/esample/app?page=basket&amp;pn=STM32F429I-DISCO"</span>></div> +<div class="line"> </div> +<div class="line"> <description>STMicroelectronics STM32F429I Discovery Board Support and Examples</description></div> +<div class="line"> </div> +<div class="line"> <image small=<span class="stringliteral">"Images/stm32f429i-disco_small.png"</span> large=<span class="stringliteral">"Images/stm32f429i-disco.png"</span>/></div> +<div class="line"> </div> +<div class="line"> <book category=<span class="stringliteral">"overview"</span> name=<span class="stringliteral">"http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1199/PF259090"</span> title=<span class="stringliteral">"32F429IDISCOVERY Web Page"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"setup"</span> name=<span class="stringliteral">"Documents/UM1662.pdf"</span> title=<span class="stringliteral">"Getting Started"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"schematic"</span> name=<span class="stringliteral">"Documents/UM1670.pdf"</span> title=<span class="stringliteral">"Schematics"</span>/></div> +<div class="line"> <book category=<span class="stringliteral">"manual"</span> name=<span class="stringliteral">"Documents/UM1670.pdf"</span> title=<span class="stringliteral">"User Manual"</span>/></div> +<div class="line"> </div> +<div class="line"> <mountedDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span> Dname=<span class="stringliteral">"STM32F429ZI"</span>/></div> +<div class="line"> </div> +<div class="line"> <compatibleDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span> Dfamily=<span class="stringliteral">"STM32F4 Series"</span> DsubFamily=<span class="stringliteral">"STM32F429 Line"</span>/></div> +<div class="line"> </div> +<div class="line"> <feature type=<span class="stringliteral">"ODbg"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"XTAL"</span> n=<span class="stringliteral">"80000000"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"PWR"</span> n=<span class="stringliteral">"5"</span> name=<span class="stringliteral">"USB Powered"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"PWR"</span> n=<span class="stringliteral">"3"</span> m=<span class="stringliteral">"5"</span> name=<span class="stringliteral">"External Supply"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"RAM"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"64 MBit SDRAM"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"DIO"</span> n=<span class="stringliteral">"4"</span> m=<span class="stringliteral">"32"</span> name=<span class="stringliteral">"Extension header for LQFP144 with 2.54 mm Pitch"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"USB"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"High-Speed USB OTG with micro-AB Connector"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"ConnOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"JP3 (Idd) for current measurement"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"Button"</span> n=<span class="stringliteral">"2"</span> name=<span class="stringliteral">"Push-buttons: User and Reset"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"Gyro"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"L3GD20, ST MEMS motion sensor, 3-axis digital output gyroscope"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"LED"</span> n=<span class="stringliteral">"6"</span> name=<span class="stringliteral">"Com, 3.3 V Power, Two user, Two USB OTG LEDs"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"CustomFF"</span> n=<span class="stringliteral">"66"</span> m=<span class="stringliteral">"119.3"</span> name=<span class="stringliteral">"Discovery Board Formfactor"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"GLCD"</span> n=<span class="stringliteral">"1"</span> m=<span class="stringliteral">"240.320"</span> name=<span class="stringliteral">"2.4 inch QVGA TFT LCD"</span>/></div> +<div class="line"> </div> +<div class="line"> <debugInterface adapter=<span class="stringliteral">"ST-Link"</span> connector=<span class="stringliteral">"Mini-USB"</span>/></div> +<div class="line"> </div> +<div class="line"> </board></div> +<div class="line"></boards></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_boards"></a> +/package/boards</h1> +<p>Grouping element for boards. No more than one such group can exist in a Pack. None is required.</p> +<table class="cmtable" summary="Element: Boards"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td>Description of the board </td><td>BoardType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board"></a> +/package/boards/board</h1> +<p>This element provides information to specify the <a class="el" href="createPackBoard.html">Board Support Package (BSP)</a>. At least one board must be defined.</p> +<table class="cmtable" summary="Element: Board"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_boards">boards</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_boards">/package/boards</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>vendor </td><td>name of the board vendor </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>name </td><td>name of the development board </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>revision </td><td>Revision of the board that is suited to be used with the <a class="el" href="createPackBoard.html">BSP</a>. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>salesContact </td><td>Either an email address or web page to contact the sales department. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>orderForm </td><td>Link to a web page for ordering the development board. </td><td>xs:anyURI </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Brief summary of the board </td><td>xs:string </td><td>1 </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_feature">feature</a> </td><td>Describes the features of the development board. </td><td>BoardsFeatureType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">mountedDevice</a> </td><td>Specifies the microcontroller device mounted on the development board. </td><td>BoardsDeviceType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_compatibleDevice">compatibleDevice</a> </td><td>Specifies compatible microcontroller devices. </td><td>CompatibleDeviceType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_image">image</a> </td><td>Carries pictures of the boards to be displayed on web pages. Directory and file names are case-sensitive. </td><td>ComplexType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_debugInterface">debugInterface</a> </td><td>Describes the debug interface of the development board. </td><td>DebugInterfaceType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board_book">book</a> </td><td>Describes the documentation files (user manuals, schematics, etc.). Directory and file names are case-sensitive. </td><td>BoardsBookType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_feature"></a> +/package/boards/board/feature</h1> +<p>This element contains information about the features and capabilities of a board. A list of pre-defined features exists.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><feature type=<span class="stringliteral">"PWR"</span> n=<span class="stringliteral">"3"</span> m=<span class="stringliteral">"5"</span> name=<span class="stringliteral">"Element: Board feature"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="BoardFeature"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>type </td><td>Defines board features. Select predefined values from the table <a class="el" href="pdsc_boards_pg.html#BoardFeatureTypeEnum">Board Features</a>. </td><td>BoardFeatureTypeEnum </td><td>required </td></tr> +<tr> +<td>n </td><td>Depends on attribute <em><b>type</b>.</em> Check table <a class="el" href="pdsc_boards_pg.html#BoardFeatureTypeEnum">Board Features</a> for details. </td><td>xs:decimal </td><td>optional </td></tr> +<tr> +<td>m </td><td>Depends on attribute <em><b>type</b>.</em> Check table <a class="el" href="pdsc_boards_pg.html#BoardFeatureTypeEnum">Board Features</a> for details. </td><td>xs:decimal </td><td>optional </td></tr> +<tr> +<td>name </td><td>Descriptive name of the feature. If omitted, a <b>Default Name</b> is used (refer to table <a class="el" href="pdsc_boards_pg.html#BoardFeatureTypeEnum">Board Feature Types</a>). <b>Do not repeat</b> the <span class="XML-Token">n</span> or <span class="XML-Token">m</span> values in the name. This will lead to duplicate entries on web sites (they show <span class="XML-Token">n</span> x <span class="XML-Token">name</span>). </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="BoardFeatureTypeEnum"></a><b>Table: Board Features</b></p> +<p>The table below lists predefined board features.</p> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>The attribute <em>name</em> of the element <a class="el" href="pdsc_boards_pg.html#element_board_feature">/package/boards/board/feature</a> is a descriptive text for a feature. If <em>name</em> is omitted, the <b>Default Name</b> (listed below) is used.</li> +<li><b>Do not repeat</b> the <em>n</em> or <em>m</em> values in the <em>name</em>. Display on websites follows the rule to show <em>n</em> x <em>name</em>.</li> +</ul> +</dd></dl> +<table class="doxtable"> +<tr> +<th>type=</th><th>n=</th><th>m=</th><th>Default Name</th><th>Example</th><th>Example shown as </th></tr> +<tr> +<td>ODbg</td><td>Number of Debug Adapters</td><td>N/A</td><td>Integrated Debug Adapter</td><td><feature type="ODbg" n="1" name="Integrated ST-Link on USB Connector J13"/></td><td>1 x Integrated ST-Link on USB Connector J13 </td></tr> +<tr> +<td>XTAL</td><td>Oscillator Frequency</td><td>N/A</td><td>Crystal Oscillator</td><td><feature type="XTAL" n="8000000"/></td><td>8 MHz Crystal Oscillator </td></tr> +<tr> +<td>PWR</td><td>Minimum Input Voltage</td><td>Maximum Input Voltage</td><td>Power Supply</td><td><feature type="PWR" n="8" m="12"/></td><td>8 V - 12 V Power Supply </td></tr> +<tr> +<td>PWRSock</td><td>Number of Power Sockets</td><td>N/A</td><td>Power Socket</td><td><feature type="PWRSock" n="1" name="Coaxial Power Receptacle"/></td><td>1 x Coaxial Power Receptacle </td></tr> +<tr> +<td>Batt</td><td>Number of Batteries</td><td>N/A</td><td>Battery</td><td><feature type="Batt" n="1" name="CR2032 Battery for RTC"/></td><td>1 x CR2032 Battery for RTC </td></tr> +<tr> +<td>Curr</td><td>Typical Current</td><td>Maximum Current</td><td>Current</td><td><feature type="Curr" n="0.320" m="0.375"/></td><td>320 mA (typ), 375 mA (max) Current </td></tr> +<tr> +<td>CoreOther</td><td>Number of Features</td><td>N/A</td><td>Other Core Feature</td><td><feature type="CoreOther" n=1 name="My Other Core Feature"/></td><td>1 x My Other Core Feature </td></tr> +<tr> +<td>RAM</td><td>Number of RAMs</td><td>N/A</td><td>RAM</td><td><feature type="RAM" n="1" name="512 kB Static RAM"/></td><td>1 x 512 kB Static RAM </td></tr> +<tr> +<td>ROM</td><td>Number of ROMs</td><td>N/A</td><td>Flash</td><td><feature type="ROM" n="1" name="4 MB NAND-Flash"/></td><td>1 x 4 MB NAND-Flash </td></tr> +<tr> +<td>Memory</td><td>Number of Additional Memory</td><td>N/A</td><td>Memory</td><td><feature type="Memory" n="128" name="EEPROM"/></td><td>128 byte EEPROM </td></tr> +<tr> +<td>MemCard</td><td>Number of Card Holders</td><td>N/A</td><td>SD/microSD/MMC Card Holder</td><td><feature type="MemCard" n="2" name="SD Card Holder"/></td><td>2 x SD Card Holder </td></tr> +<tr> +<td>MemoryOther</td><td>Number of Other Memory</td><td>N/A</td><td>Other Memory Type</td><td><feature type="MemoryOther" n="1" name="1 kB MRAM"/></td><td>1 x 1 kB MRAM </td></tr> +<tr> +<td>DIO</td><td>Number of Digital I/Os</td><td>N/A</td><td>Digital I/Os</td><td><feature type="DIO" n="26" name="Digital IOs on 2 x 13 pin header (1.27 mm pitch)"/></td><td>26 x Digital IOs on 2 x 13 pin header (1.27 mm pitch) </td></tr> +<tr> +<td>AIO</td><td>Number of Analog I/Os</td><td>N/A</td><td>Analog I/Os</td><td><feature type="AIO" n="4" name="Analog Inputs on 4 pin header (1.27 mm pitch)"/></td><td>4 x Analog Inputs on 4 pin header (1.27 mm pitch) </td></tr> +<tr> +<td>Proto</td><td>n Rows</td><td>m Columns</td><td>Prototyping Area</td><td><feature type="Proto" n="4" m="7" name="Prototyping Area with 1.00 mm pitch"/></td><td>4 x 7 Prototyping Area with 1.00 mm pitch </td></tr> +<tr> +<td>USB</td><td>Number of USB Connectors</td><td>N/A</td><td>USB</td><td><feature type="USB" n="2" name="Full-Speed USB Device, Micro-B receptacle"/></td><td>2 x Full-Speed USB Device, Micro-B receptacle </td></tr> +<tr> +<td>ETH</td><td>Number of Ethernet Connectors</td><td>Data Rate in Bit/s</td><td>Ethernet</td><td><feature type="ETH" n="1" m="10000000" name="RJ45 Receptacle"/></td><td>1 x 10 Mbit/s RJ45 Receptacle </td></tr> +<tr> +<td>SPI</td><td>Number of SPI Connectors</td><td>N/A</td><td>SPI</td><td><feature type="SPI" n="1" name="4-Pin Header, 1.27 mm Pitch"/></td><td>1 x 4-Pin Header, 1.27 mm Pitch </td></tr> +<tr> +<td>I2C</td><td>Number of I2C Connectors</td><td>N/A</td><td>I2C</td><td><feature type="I2C" n="1" name="2-Pin Header, 1.27 mm Pitch"/></td><td>1 x 2-Pin Header, 1.27 mm Pitch </td></tr> +<tr> +<td>RS232</td><td>Number of RS232 Connectors</td><td>N/A</td><td>RS232</td><td><feature type="RS232" n="1" name="DB9 Male Connector"/></td><td>1 x DB9 Male Connector </td></tr> +<tr> +<td>RS422</td><td>Number of RS422 Connectors</td><td>N/A</td><td>RS422</td><td><feature type="RS422" n="1" name="4-Pin Header, 1.27 mm Pitch"/></td><td>1 x 4-Pin Header, 1.27 mm Pitch </td></tr> +<tr> +<td>RS485</td><td>Number of RS485 Connectors</td><td>N/A</td><td>RS485</td><td><feature type="RS485" n="1" name="DB9 Male Connector"/></td><td>1 x DB9 Male Connector </td></tr> +<tr> +<td>CAN</td><td>Number of CAN Connectors</td><td>N/A</td><td>CAN</td><td><feature type="CAN" n="1" name="DB9 Male Connector"/></td><td>1 x DB9 Male Connector </td></tr> +<tr> +<td>IrDA</td><td>Number of IrDA Diodes</td><td>N/A</td><td>Diode</td><td><feature type="IrDA" n="1" name="Diode Transceiver"/></td><td>1 x Diode Transceiver </td></tr> +<tr> +<td>LineIn</td><td>Number of Line In Jacks</td><td>N/A</td><td>Line In</td><td><feature type="LineIn" n="1" name="TRS Audio Jack"/></td><td>1 x TRS Audio Jack </td></tr> +<tr> +<td>LineOut</td><td>Number of Line Out Jacks</td><td>N/A</td><td>Line Out</td><td><feature type="LineOut" n="1" name="TRS Audio Jack"/></td><td>1 x TRS Audio Jack </td></tr> +<tr> +<td>MIC</td><td>Number of Microphone Jacks</td><td>N/A</td><td>Microphone</td><td><feature type="MIC" n="1" name="TS Audio Jack (Mono)"/></td><td>1 x TS Audio Jack (Mono) </td></tr> +<tr> +<td>Edge</td><td>n Rows</td><td>m Columns</td><td>Edge</td><td><feature type="Edge" n="2" m="24"/></td><td>2 x 24 Pin Edge </td></tr> +<tr> +<td>ConnOther</td><td>Number of Other Connectors</td><td>N/A</td><td>Other Connector Type</td><td><feature type="ConnOther" n="1" name="My Other Connector"/></td><td>1 x My Other Connector </td></tr> +<tr> +<td>Button</td><td>Number of Push-Buttons</td><td>N/A</td><td>Push-buttons</td><td><feature type="Button" n="3" name="Push-buttons: Reset, Wake Up, User"/></td><td>3 Push-buttons: Reset, Wake Up, User </td></tr> +<tr> +<td>Poti</td><td>Number of Potentiometer</td><td>N/A</td><td>Potentiometer</td><td><feature type="Poti" n="1"/></td><td>1 x Potentiometer </td></tr> +<tr> +<td>Joystick</td><td>Number of Joysticks</td><td>N/A</td><td>Joystick</td><td><feature type="Joystick" n="1" name="5-position Joystick"/></td><td>1 x 5-position Joystick </td></tr> +<tr> +<td>Touch</td><td>Number of Touch Keys</td><td>N/A</td><td>Touch Keys/Area</td><td><feature type="Touch" n="1"/></td><td>1 x Touch Keys/Area </td></tr> +<tr> +<td>ContOther</td><td>Number of Other Controls</td><td>N/A</td><td>Other Control</td><td><feature type="ContOther" n=1 name="My Other Control Feature"/></td><td>1 x My Other Control Feature </td></tr> +<tr> +<td>Accelerometer</td><td>Number of Accelerometer</td><td>N/A</td><td>Accelerometer</td><td><feature type="Accelerometer" n="1" name="3-axis digital Accelerometer"/></td><td>1 x 3-axis digital Accelerometer </td></tr> +<tr> +<td>Gyro</td><td>Number of Gyroscopes</td><td>N/A</td><td>Gyroscope</td><td><feature type="Gyro" n="1" name="3-axis digital Gyroscope"/></td><td>1 x 3-axis digital Gyroscope </td></tr> +<tr> +<td>Compass</td><td>Number of Compass</td><td>N/A</td><td>Digital Compass</td><td><feature type="Compass" n="1" name="High-Precision Digital Compass"/></td><td>1 x High-Precision Digital Compass </td></tr> +<tr> +<td>TempSens</td><td>Number of Temperature Sensors</td><td>N/A</td><td>Temperature Sensor</td><td><feature type="TempSens" n="1"/></td><td>1 x Temperature Sensor </td></tr> +<tr> +<td>PressSens</td><td>Number of Pressure Sensors</td><td>N/A</td><td>Pressure Sensor</td><td><feature type="PressSens" n="1"/></td><td>1 x Pressure Sensor </td></tr> +<tr> +<td>LightSens</td><td>Number of Light Sensors</td><td>N/A</td><td>Ambient Light Sensor</td><td><feature type="LightSens" n="1"/></td><td>1 x Ambient Light Sensor </td></tr> +<tr> +<td>SensOther</td><td>Number of Other Sensors</td><td>N/A</td><td>Other Sensor</td><td><feature type="SensOther" n=1 name="My Other Sensor Feature"/></td><td>1 x My Other Sensor Feature </td></tr> +<tr> +<td>CustomFF</td><td>x [mm]</td><td>y [mm]</td><td>Custom Formfactor</td><td><feature type="CustomFF" n="54" m="26" name="40-Pin DIP with 0.1-inch Pitch"/></td><td>54 mm x 26 mm, 40-Pin DIP with 0.1-inch Pitch </td></tr> +<tr> +<td>ArduinoFF</td><td>1</td><td>N/A</td><td>Arduino Formfactor</td><td><feature type="ArduinoFF" n="1"/></td><td>Arduino Formfactor </td></tr> +<tr> +<td>FreedomFF</td><td>1</td><td>N/A</td><td>Freedom Formfactor</td><td><feature type="FreedomFF" n="1"/></td><td>Freedom Formfactor </td></tr> +<tr> +<td>TowerFF</td><td>1</td><td>N/A</td><td>Tower Formfactor</td><td><feature type="TowerFF" n="1"/></td><td>Tower Formfactor </td></tr> +<tr> +<td>LED</td><td>Number of LEDs</td><td>N/A</td><td>LEDs</td><td><feature type="LED" n="3" name="Multicolor LEDs"/></td><td>3 x Multicolor LEDs </td></tr> +<tr> +<td>Camera</td><td>Number of Camera Interfaces</td><td>N/A</td><td>Camera</td><td><feature type="Camera" n="1" name="Digital VGA Camera"/></td><td>1 x Digital VGA Camera </td></tr> +<tr> +<td>LCD</td><td>Number of Segment LCD Controller</td><td>Com.Seg as a decimal number (see example)</td><td>LCD</td><td><feature type="LCD" n="1" m="16.40" name="Segment LCD Controller"/></td><td>1 x 16 x 40 Segment LCD Controller </td></tr> +<tr> +<td>GLCD</td><td>Number of Graphic LCD Controller</td><td>Maximum Resolution as a decimal number (see example)</td><td>GLCD</td><td><feature type="GLCD" n="1" m="320.240" name="2.4 inch Color TFT LCD with resistive touchscreen"/></td><td>320 x 240 Pixel 2.4 inch Color TFT LCD with resistive touchscreen </td></tr> +<tr> +<td>Speaker</td><td>Number of Speakers</td><td>N/A</td><td>Speaker</td><td><feature type="Speaker" n="1"/></td><td>1 x Speaker </td></tr> +<tr> +<td>Other</td><td>Number of Other Features</td><td>N/A</td><td>Other Feature</td><td><feature type="Other" n=1 name="My Other Feature"/></td><td>1 x My Other Feature </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_mountedDevice"></a> +/package/boards/board/mountedDevice</h1> +<p>The element specifies the devices mounted on the board. At least one device must be specified.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><mountedDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span> Dname=<span class="stringliteral">"STM32F429ZI"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Boards mountedDevice"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>deviceIndex </td><td>Index number of the device (in case more than one device is present on the board). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvendor </td><td>Is the name of vendor of the device specified by <span class="XML-Token">Dname</span>. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. </td><td>DeviceVendorEnum </td><td>required </td></tr> +<tr> +<td>Dfamily </td><td>Is the name of the target device family used on the board. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>DsubFamily </td><td>Is the name of the target device sub family used on the board. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dname </td><td>Is the name of the target device used on the board. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_compatibleDevice"></a> +/package/boards/board/compatibleDevice</h1> +<p>This element contains information about devices that are compatible to the device used on the board. Compatible means that the user is able to generate code for compatible devices and test it on the development board. At least one compatible device must be specified.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><compatibleDevice deviceIndex=<span class="stringliteral">"0"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span> Dfamily=<span class="stringliteral">"STM32F4 Series"</span> DsubFamily=<span class="stringliteral">"STM32F429 Line"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Board compatibleDevice"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>deviceIndex </td><td>Index number of the device (in case more than one device is present on the board). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvendor </td><td>Vendor name of the target device specified by <b>Dname</b>. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. This element is required if at least one of the following attributs is defined: <b>Dname</b>, <b>DsubFamily</b>, <b>Dfamily</b>. </td><td>DeviceVendorEnum </td><td>optional </td></tr> +<tr> +<td>Dfamily </td><td>Name of the target device family used on the board. Requires <b>Dvendor</b> to be specified. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>DsubFamily </td><td>Name of the target device sub-family used on the board. Requires <b>Dvendor</b> to be specified. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dname </td><td>Name of the target device used on the board. Requires <b>Dvendor</b> to be specified. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_image"></a> +/package/boards/board/image</h1> +<p>This element specifies the picture of a development board. Maximum one image element can be specified. None must be specified. Two different picture types (<span class="XML-Token">small</span> and <span class="XML-Token">large</span>) can be specified for the same image element at the same time.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><image small=<span class="stringliteral">"Images\board_image_small.png"</span> large=<span class="stringliteral">"Images\board_image.png"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Board Image"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>small </td><td>Specifies the path to a small image. The path is relative to the Pack base directory. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>large </td><td>Specifies the path to a large image. The path is relative to the Pack base directory. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the Pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_debugInterface"></a> +/package/boards/board/debugInterface</h1> +<p>This element describes the debug interface of a board. At least debug interface must be specified.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><debugInterface adapter=<span class="stringliteral">"JTAG/SW"</span> connector=<span class="stringliteral">"20-pin Arm Standard JTAG Connector (0.1 inch connector)"</span>/></div> +<div class="line"><debugInterface adapter=<span class="stringliteral">"JTAG/SW"</span> connector=<span class="stringliteral">"10-pin Cortex Debug Connector (0.05 inch connector)"</span>/></div> +<div class="line"><debugInterface adapter=<span class="stringliteral">"JTAG/SW"</span> connector=<span class="stringliteral">"20-pin Cortex Debug + ETM Connector (0.05 inch connector)"</span>/></div> +<div class="line"><debugInterface adapter=<span class="stringliteral">"ST-Link"</span> connector=<span class="stringliteral">"Mini-USB"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: BoardDebugInterface"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>adapter </td><td>String describing the debug adapter. Common adapters are: <span class="XML-Token">JTAG/SW</span> (for all adapters supporting JTAG and Serial-Wire Debug), <span class="XML-Token">CMSIS-DAP</span>, <span class="XML-Token">OpenSDA</span>, <span class="XML-Token">J-Link</span>, <span class="XML-Token">ST-Link</span>, <span class="XML-Token">Nu-Link</span>. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>connector </td><td>String describing the debug connector. Usually one of these: <span class="XML-Token">10-pin Cortex Debug Connector</span>, <span class="XML-Token">20-pin Arm Standard JTAG Connector</span>, <span class="XML-Token">20-pin Cortex Debug + ETM Connector</span>, <span class="XML-Token">Mini-USB</span>, <span class="XML-Token">Micro-USB</span>. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_board_book"></a> +/package/boards/board/book</h1> +<p>The element provides information about documentation parts related to a development board. At least one book must be defined.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><book category=<span class="stringliteral">"setup"</span> name=<span class="stringliteral">"Documents/UM1662.pdf"</span> title=<span class="stringliteral">"Getting Started"</span>/></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Books"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_board">board</a> </td><td colspan="3"><a class="el" href="pdsc_boards_pg.html#element_board">/package/boards/board</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>category </td><td>Describes the type of documentation. Use predefined values as defined in the table <a class="el" href="pdsc_boards_pg.html#BoardBookCategoryEnum">Board Book Categories</a>. </td><td>BoardBookCategoryEnum </td><td>optional </td></tr> +<tr> +<td>name </td><td>Is the name of the document (including the path within the Pack). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>title </td><td>Is the title of the document to be displayed in the <b>Books</b> window of uVision. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="BoardBookCategoryEnum"></a><b>Table: Board Book Categories</b></p> +<p>The table lists values to identify a specific type of documentation for development boards. </p> +<table class="cmtable" summary="Type: BoardBookCategoryEnum"> +<tr> +<th>category= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">setup </td><td>Documentation about how to setup the development board. </td></tr> +<tr> +<td class="XML-Token">schematic </td><td>Schematics of the development board. </td></tr> +<tr> +<td class="XML-Token">overview </td><td>Overview/data sheet of the development board. </td></tr> +<tr> +<td class="XML-Token">manual </td><td>User manual of the development board </td></tr> +<tr> +<td class="XML-Token">layout </td><td>PCB layout file of the board (e.g. in Gerber format) </td></tr> +<tr> +<td class="XML-Token">other </td><td>All other documentation. </td></tr> +</table> +<p> </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_components_pg.html b/docs/Pack/html/pdsc_components_pg.html new file mode 100644 index 0000000..ac5c62e --- /dev/null +++ b/docs/Pack/html/pdsc_components_pg.html @@ -0,0 +1,540 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/components element</title> +<title>CMSIS-Pack: /package/components element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_components_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/components element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The element <a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> describes software components contained in the Pack. A component lists the files that belong to a component and that are relevant for a project. The component itself or each individual file may refer to a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> that must resolve to true; if it is false the component or file is not applicable in the given context.</p> +<p>Each component must have a Class (Cclass=), a Group (Cgroup=), and a Version (Cversion=) which is used to identify the component. Optionally a component may have a Sub-Group (Csub=) and Variant (Cvariant=) to add further categories. The Class, Group, Sub-Group, Variant and Version is used together with the vendor specified by the Pack, to identify a component. A component vendor must ensure that the combination Class, Group, Sub-Group and Version is unique and not used by multiple components.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <components></div> +<div class="line"> <!-- component has dependency described by <span class="stringliteral">"CMSIS Core"</span> condition --></div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span> Cversion=<span class="stringliteral">"3.1.0"</span> condition=<span class="stringliteral">"CMSIS Core"</span>></div> +<div class="line"> <description>CMSIS-Core (Cortex-M) for Cortex-M, SC000, and SC300 processor.</description></div> +<div class="line"> <files></div> +<div class="line"> <!-- CPU independent --></div> +<div class="line"> <file category="doc" name="CMSIS/Documentation/Core/html/index.html"/></div> +<div class="line"> <file category="header" name="CMSIS/Include/core_cmFunc.h"/></div> +<div class="line"> <file category="header" name="CMSIS/Include/core_cmInstr.h"/></div> +<div class="line"> <!-- CPU dependent --></div> +<div class="line"> <file category="header" condition="CM0" name="CMSIS/Include/core_cm0.h"/></div> +<div class="line"> <file category="header" condition="CM0+" name="CMSIS/Include/core_cm0plus.h"/></div> +<div class="line"> <file category="header" condition="CM3" name="CMSIS/Include/core_cm3.h"/></div> +<div class="line"> <file category="header" condition="CM4" name="CMSIS/Include/core_cm4.h"/></div> +<div class="line"> <file category="header" condition="CM4" name="CMSIS/Include/core_cm4_simd.h"/></div> +<div class="line"> <file category="header" condition="SC000" name="CMSIS/Include/core_sc000.h"/></div> +<div class="line"> <file category="header" condition="SC300" name="CMSIS/Include/core_sc300.h"/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"></div> +<div class="line"> <component Cclass="CMSIS" Cgroup="DSP" Cversion="1.1.0" condition="CMSIS DSP"></div> +<div class="line"> <description>CMSIS-DSP Library for Cortex-M0, Cortex-M3 and Cortex-M4 as well as SC000 and SC300 processor based devices</description></div> +<div class="line"></div> +<div class="line"> <files></div> +<div class="line"> <!-- CPU independent --></div> +<div class="line"> <file category="doc" name="CMSIS/Documentation/DSP/html/index.html"/></div> +<div class="line"> <file category="header" name="CMSIS/Include/arm_math.h"/></div> +<div class="line"> <!-- CPU and Compiler dependent --></div> +<div class="line"> <!-- ARMCC --></div> +<div class="line"> <file category="library" condition="CM0_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0l_math.lib"/></div> +<div class="line"> <file category="library" condition="CM0_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0b_math.lib"/></div> +<div class="line"> <file category="library" condition="CM3_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3l_math.lib"/></div> +<div class="line"> <file category="library" condition="CM3_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3b_math.lib"/></div> +<div class="line"> <file category="library" condition="CM4_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4l_math.lib"/></div> +<div class="line"> <file category="library" condition="CM4_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4b_math.lib"/></div> +<div class="line"> <file category="library" condition="CM4F_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4lf_math.lib"/></div> +<div class="line"> <file category="library" condition="CM4F_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4bf_math.lib"/></div> +<div class="line"> <!-- GCC --></div> +<div class="line"> <file category="library" condition="CM0_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM0l_math.a"/></div> +<div class="line"> <file category="library" condition="CM3_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM3l_math.a"/></div> +<div class="line"> <file category="library" condition="CM4_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4l_math.a"/></div> +<div class="line"> <file category="library" condition="CM4F_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4lf_math.a"/></div> +<div class="line"> <!-- G++ --></div> +<div class="line"> <file category="library" condition="CM0_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM0l_math.a"/></div> +<div class="line"> <file category="library" condition="CM3_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM3l_math.a"/></div> +<div class="line"> <file category="library" condition="CM4_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4l_math.a"/></div> +<div class="line"> <file category="library" condition="CM4F_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4lf_math.a"/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"></div> +<div class="line"> <component condition="ARM_CM0" Cclass="Device" Cgroup="Startup" Cversion="3.1.1"></div> +<div class="line"> <description>System Startup for generic Arm Cortex-M0 device</description></div> +<div class="line"> <files></div> +<div class="line"> <file category="header" name="Device/ARM/ARMCM0/Include/ARMCM0.h"/></div> +<div class="line"> <file category="header" name="Device/ARM/ARMCM0/Include/system_ARMCM0.h"/></div> +<div class="line"> <file category="source" condition="Compiler_ARM" name="Device/ARM/ARMCM0/Source/ARM/startup_ARMCM0.s"/></div> +<div class="line"> <file category="source" condition="Compiler_GCC" name="Device/ARM/ARMCM0/Source/GCC/startup_ARMCM0.S"/></div> +<div class="line"> <file category="source" condition="Compiler_G++" name="Device/ARM/ARMCM0/Source/G++/startup_ARMCM0.S"/></div> +<div class="line"> <file category="source" condition="Compiler_IAR" name="Device/ARM/ARMCM0/Source/IAR/startup_ARMCM0.s"/></div> +<div class="line"> <file category="source" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="template"/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> </components></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<h1><a class="anchor" id="Component_Bundle"></a> +Component Bundle</h1> +<p>In case multiple inter-dependent components that belong to the same <b>Cclass</b> form part of a solution, these can be grouped into a <em>bundle</em>. A <em>bundle</em> specifies identical attributes <b>Cclass</b>, <b>Cversion</b> and optionally <b>Cgroup</b> and <b>Cvendor</b> for several components. Components within a bundle inherit these attributes set by the bundle and cannot alter these attributes. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different Software Packs.</p> +<p>An example of a <b>bundle</b> is shown in the <a class="el" href="createPackBoard.html#cp_BundleExample">Create a BSP Bundle</a> section where the bundle is used to deliver board support files for a certain development platform.</p> +<h1><a class="anchor" id="Component_Files"></a> +Component Files</h1> +<p>The files of a Software Component will be used in development tool-chains to build an application. Depending on the attributes, the files are handled differently:</p> +<ul> +<li>Libraries, source, and header files without an attribute cannot be modified. These files are stored in the folders of the Software Component and get directly included from this location into the project.</li> +<li>Source and header files that have the attribute <code>"config"</code> are copied to the project so that they can be edited by the user and tailored to the needs of the application. If a Software Component allows multiple instances of files, they can be copied multiple times to a project and will get a suffix <em>_%Instance%</em> (see <a class="el" href="pdsc_components_pg.html#Component_Instances">Component Instances</a>). Please note that header files that are used with the attribute <code>"config"</code> need to be stored separately from other header files (for example in an extra directory) to avoid that due to the include path search order of the compiler, the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).</li> +<li>Source and header files that have the attribute <code>"template"</code> are part of <a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> and can be added to a project manually by the user.</li> +</ul> +<p>The following image shows the dependency between the attribute and the display in a development environment:</p> +<div class="image"> +<img src="component_files.png" alt="component_files.png"/> +<div class="caption"> +Display of files of a Software Component in development tools</div></div> + <h1><a class="anchor" id="Component_Instances"></a> +Component Instances</h1> +<p>Modern microcontrollers often have multiple instances of the same peripheral interface (for example UART, SPI, USB, etc.). To be able to have separate configuration files for each of these instances, Software Components can have multiple instances as well. The attribute <b>maxInstances</b> declares the maximum number of instances that can be used in a project for a certain Software Component.</p> +<p>If the user selects for example two instances of the same component, all files with the attribute <code>"config"</code> will be copied twice to the project. The name of the component (for example <code>config_mylib.h</code>) will be expanded with an <code>_%Instance%</code> number:</p> +<ol type="1"> +<li>Instance: config_mylib<em>_0</em>.h</li> +<li>Instance: config_mylib<em>_1</em>.h</li> +</ol> +<p>The availability of instances in a project can be made public in the <code>RTE_Components.h</code> file. This can be used to check for the availability of a certain instance in the user application code:</p> +<div class="fragment"><div class="line"><RTE_Components_h></div> +<div class="line"> <!-- the following content goes into file <span class="stringliteral">'RTE_Components.h'</span> --></div> +<div class="line"> #define RTE_FileSystem_Drive_NOR_%Instance% <span class="comment">/* File System NOR Flash Drive %Instance% */</span></div> +<div class="line"></RTE_Components_h></div> +</div><!-- fragment --><p> <br/> +</p> +<div class="image"> +<img src="Component_Instances.png" alt="Component_Instances.png"/> +<div class="caption"> +Component instances in PDSC file and in development tools</div></div> + <h1><a class="anchor" id="RTE_Components_h"></a> +RTE_Components.h</h1> +<p>The build environment should generate a C/C++ include file with the name <b>RTE_Components.h</b> that contains:</p> +<ul> +<li>The statements of the related <RTE_Components_h> element for all selected software components.</li> +<li>The header file name specified in the <compile> element of the <a class="el" href="pdsc_devices_pg.html">/package/devices element</a>.</li> +</ul> +<p><b>Example</b> </p> +<p>The following example shows a sample content of a file <b>RTE_Components.h</b>. It contains the statements that are specified with the element <b>RTE_Components_h</b> of four software components.</p> +<div class="fragment"><div class="line"><span class="comment">/*</span></div> +<div class="line"><span class="comment"> * Auto generated Run-Time-Environment Component Configuration File</span></div> +<div class="line"><span class="comment"> *** Do not modify ! ***</span></div> +<div class="line"><span class="comment"> */</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#ifndef RTE_COMPONENTS_H</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_COMPONENTS_H</span></div> +<div class="line"><span class="preprocessor"></span></div> +<div class="line"><span class="comment">/*</span></div> +<div class="line"><span class="comment"> * Define the Device Header File: </span></div> +<div class="line"><span class="comment"> */</span></div> +<div class="line"><span class="preprocessor">#define CMSIS_device_header "stm32f10x.h"</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"><span class="preprocessor">#define RTE_Network_Interface_ETH_0 </span><span class="comment">/* Network Interface ETH 0 */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_BSD </span><span class="comment">/* Network Socket BSD */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_TCP </span><span class="comment">/* Network Socket TCP */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_UDP </span><span class="comment">/* Network Socket UDP */</span><span class="preprocessor"></span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"><span class="preprocessor">#endif </span><span class="comment">/* RTE_COMPONENTS_H */</span><span class="preprocessor"></span></div> +</div><!-- fragment --><p>The typical usage of the <b>RTE_Components.h</b> file is in header files to control for example the inclusion of files that are related to other components for the same Software Pack.</p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "RTE_Components.h"</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#ifdef RTE_Network_Interface_ETH_0 // generated when software component Network Interface ETH 0 is included</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#include "Net_Config_ETH_0.h"</span> <span class="comment">// add the related configuration file for these component </span></div> +<div class="line"><span class="preprocessor">#endif</span></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_components"></a> +/package/components</h1> +<p>Grouping element containing a choice of at least one bundle or component. No more than one element <em>components</em> can exist in a Pack.</p> +<table class="cmtable" summary="Element: Components"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>generator </td><td>Specifies the generator ID of the generator that has been used to generate all components within this section. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_bundle">bundle</a> </td><td>Grouping element for a collection of inter-operable components belonging to the same Cclass </td><td>ComponentType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td>Grouping element for components </td><td>ComponentType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_bundle"></a> +/package/components/bundle</h1> +<p>A bundle describes a named collection of inter-operable components of the identical <em>Cvendor</em>, <em>Cclass</em> and <em>Cversion</em>. Components enclosed in a bundle must not specify any of the following attributes <em>Cvendor</em>, <em>Cclass</em> and <em>Cversion</em>.</p> +<table class="cmtable" summary="Element: Bundle"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cbundle </td><td>Defines the name of the bundle. It becomes a mandatory part of the component ID. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Cvendor </td><td>Defines the component vendor all components of this bundle belong to. If not explicitly set the component vendor is derived from the package vendor. The component vendor is a mandatory part of the component ID. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cclass </td><td>Defines the component class to which all components in the bundle belong. Is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>CclassType </td><td>required </td></tr> +<tr> +<td>Cversion </td><td>Defines the version of all components contained in the bundle. The component version is a mandatory part of the component ID. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Brief description of the bundle </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>doc </td><td>Documentation for the bundle: File path, file name, and file extension in the format <b>path/name.extension</b>. The file path is relative to the root directory of the Pack. </td><td>xs:string </td><td><p class="starttd">1..1 </p> +<p class="endtd"></p> +</td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td>Grouping element for components. </td><td>ComponentType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_component"></a> +/package/components/.../component</h1> +<p>A component describes a collection of files (source, header, configuration, library) that can be versioned and categorized.</p> +<table class="cmtable" summary="Element: Component"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_bundle">/package/components/bundle</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cvendor </td><td>Defines the component vendor this component is shipped by. It is a mandatory part of the component ID and will be inherited from the package vendor if not specified. <br/> + <span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cclass </td><td>Defines the component class to which the component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. <br/> + <span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>CclassType </td><td>required </td></tr> +<tr> +<td>Cgroup </td><td>Defines the component group to whoch the component belongs. Is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>required </td></tr> +<tr> +<td>Csub </td><td>Defines the component subgroup. Is an optional part of the component ID. The type is described in <a class="el" href="pdsc_components_pg.html#CsubType">Component Subgroups</a>. </td><td>CsubType </td><td>optional </td></tr> +<tr> +<td>Cvariant </td><td>Defines a variant of a component. Is an optional part of the component ID. The variant specifier is a brief string (for example: <span class="XML-Token">release</span>, <span class="XML-Token">debug</span>). </td><td>xs:string [3..32] </td><td>optional </td></tr> +<tr> +<td>Cversion </td><td>Defines the version of this component. Is a mandatory part of the component ID. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. <br/> + <span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>VersionType </td><td>required </td></tr> +<tr> +<td>Capiversion </td><td>For components that are based on an API, it defines the version of the API used by this component. It ensures that the API header file with this or any higher version is acceptable for using that component. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +<tr> +<td>condition </td><td>Enter the <b>id</b> of a <a class="el" href="pdsc_conditions_pg.html#element_conditions">condition</a>. The component is available and can be selected when the condition is true. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>maxInstances </td><td>Maximum allowed instances of a component in a project. Default is <span class="XML-Token">1</span> for one instance. The range is [<span class="XML-Token">1..10</span>]. </td><td>xs:integer </td><td>optional </td></tr> +<tr> +<td>isDefaultVariant </td><td>Identifies this component variant to be the preferred variant for tool driven selection [Version 1.4.0] </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>generator </td><td>This links the component with a generator description located in the same file. If this component is selected by the run time configuration, the tool will test whether the configured <a class="el" href="pdsc_generators_pg.html">gpdsc file</a> does already exist or not. If the file is not present, then the command specified by the referenced generator section, will be invoked. If the gpdsc file already exists it will be included into the project </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>deprecated </td><td>When set to <span class="XML-Token">true</span>, then the component is deprecated and no longer maintained. Default is <span class="XML-Token">false</span> to indicate an actively maintained component. </td><td>xs:boolean </td><td>0..1 </td></tr> +<tr> +<td>description </td><td>Brief description of the component. </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>RTE_Components_h </td><td>Source code that is copied into the file <a class="el" href="pdsc_components_pg.html#RTE_Components_h">RTE_Components.h</a> when the component is included into a software project. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td>Grouping element for all files that are part of this component. </td><td>group </td><td>1 </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="CsubType"></a><b>Component Subgroups</b></p> +<p>Component Subgroups are specified by the element <em><b>Csub</b>,</em> and create subcategories within Component Classes (<em><b>Cclass</b>)</em> and Component Groups (<em><b>Cgroup</b>)</em>. A <em><b>Csub</b> name</em> is of type <em>xs:string</em> with a length between 3 and 32 characters. No <b><em>Csub</em> names</b> have been predefined.</p> +<p>Subgroups exists in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a></li> +<li><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">/package/examples/example/attributes/component</a></li> +</ul> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><... Csub=<span class="stringliteral">"MyRTOS"</span> Cgroup=<span class="stringliteral">"RTOS"</span> Cclass=<span class="stringliteral">"CMSIS"</span>...></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_files"></a> +/package/.../files</h1> +<p>The group <b>files</b> can appear in various Pack elements. This group is the frame for defining individual file properties.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <apis></div> +<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver UART"</span> exclusive=<span class="stringliteral">"0"</span>></div> +<div class="line"> <files></div> +<div class="line"> ...</div> +<div class="line"> </files></div> +<div class="line"> </api></div> +<div class="line"> </apis></div> +<div class="line"> ...</div> +<div class="line"> <components></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span> Cversion=<span class="stringliteral">"3.1.1"</span> > </div> +<div class="line"> <files></div> +<div class="line"> ...</div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> </components></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Files"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_apis_pg.html#element_api">api</a> </td><td colspan="3"><a class="el" href="pdsc_apis_pg.html#element_api">/package/apis/api</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_component">/package/components/component</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_component">/package/components/bundle/component</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_file">file</a> </td><td>Frame for the individual <a class="el" href="pdsc_components_pg.html#element_file">file</a> of a component. </td><td>group </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_file"></a> +/package/.../files/file</h1> +<p>The element <b>file</b> is the mechanism to attach files to the software. The file purpose is defined through the <b>category</b> attribute. The <b>name</b> attribute identifies the file.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <apis></div> +<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver UART"</span> exclusive=<span class="stringliteral">"0"</span>></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Driver/Doc/UART/html/index.html"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Driver/Include/Driver_UART.h"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </api></div> +<div class="line"> </apis></div> +<div class="line"> ...</div> +<div class="line"> <components></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span> Cversion=<span class="stringliteral">"3.1.1"</span> > </div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Device/Include/system_stm32f2xx.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/ARM/startup_stm32f2xx.s"</span> attr=<span class="stringliteral">"template"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/system_stm32f2xx.c"</span> attr=<span class="stringliteral">"template"</span>/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> </components></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: File"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/apis/api/files</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/components/component/files</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/components/bundle/component/files</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_gen_project_files">/package/generators/generator/project_files</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>File path, file name, and file extension in the format <b>path/name.extension</b>. The file path is relative to the root directory of the Pack. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>category </td><td>Defines the purpose of the file. Select the predefined value as listed in the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Categories</a>. </td><td>FileCategoryEnum </td><td>required </td></tr> +<tr> +<td>attr </td><td>Defines the special use and handling of a file. Select a predefined value as defined in the table <a class="el" href="pdsc_components_pg.html#FileAttributeEnum">File Attributes</a>. </td><td>FileAttributeEnum </td><td>optional </td></tr> +<tr> +<td>condition </td><td>Enter the identifier (attribute <em><b>id</b></em>) of a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a>. The element is used if the condition resolves to <span class="XML-Token">true</span>. If the condition resolves to <span class="XML-Token">false</span>, then the element will be ignored. For example, a library might be specific for a certain toolchain or processor instruction set. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>select </td><td>Brief description and purpose of the file. The <b><em>select</em></b> attribute is <b>required</b> when <b><em>attr</em></b> is set to <span class="XML-Token">template</span> or <span class="XML-Token">interface</span>. When multiple template files of a component have the same <b><em>select</em></b> string, they are treated as a single selectable template. This way, multiple template or interface files can be bundled. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>src </td><td>Path information. The path is specified relative to the Pack Description File. If <em><b>category</b> is</em> set to <span class="XML-Token">library</span>, then the <em><b>src</b> string</em> can contain a list of directory paths separated by semicolons. A debugger will search those paths for locating the source files of the modules archived in the library supporting the debugging of library code. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>version </td><td>File-specific version information. This is used particularly for files copied into the project workspace. Before a file gets copied, a version check avoids unnecessary copy actions. If a file does not have a version, then the component version is used. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="FileAttributeEnum"></a><b>Table: File Attributes</b></p> +<p>The file attribute defines the special handling in the project when being used as configuration, template, or interface file. The table lists the values available as a file attribute. </p> +<table class="cmtable" summary="Type: FileAttributeEnum"> +<tr> +<th>attr= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">config </td><td>The file is a configuration file of the component. It is expected that only configuration options are modified. The file is managed as part of the component, as a project-specific file typically copied into the component section of the project. </td></tr> +<tr> +<td class="XML-Token">template </td><td><p class="starttd">The file is used as a source code template file. It is expected to be edited and extended by the software developer. The file can be copied into a user section of the project. </p> +<p class="endtd"></p> +</td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd>Header files with the attribute <span class="XML-Token">config</span> must be located in a directory within the pack that is not otherwise specified as an "include folder" of this or any other component's files of the category "header" or "include". For example: <pre class="fragment"><file category="header" name="src/config/user_config.h" attr="config" version="1.0.0" /> +</pre> Config files are copied into the project folder and are adopted specifically for that project. Due to the include path search order of the compiler, chances exist that the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).</dd></dl> +<p> </p> +<p><a class="anchor" id="FileCategoryEnum"></a><b>Table: File Categories</b></p> +<p>File category types define the use of component files within the application. Typically, these files are added to the project and processed by the build tools.</p> +<p>File categories are used in the following elements:</p> +<ul> +<li><a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a></li> +<li><a class="el" href="pdsc_generators_pg.html#element_gen_file">/package/generators/generator/files/file</a></li> +<li><a class="el" href="cpdsc_pg.html#element_component_file">/package/create/project/select/component/file</a></li> +</ul> +<p>The table lists the predefined values for a file category. </p> +<table class="cmtable" summary="Type: FileCategoryEnum"> +<tr> +<th>category= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">doc </td><td>Documentation </td></tr> +<tr> +<td class="XML-Token">header </td><td>Header file used in the component. Sets an include file path. </td></tr> +<tr> +<td class="XML-Token">include </td><td>Sets an include file path. </td></tr> +<tr> +<td class="XML-Token">library </td><td>Library file </td></tr> +<tr> +<td class="XML-Token">object </td><td>Object file that can be added to the application </td></tr> +<tr> +<td class="XML-Token">source </td><td>Startup-, system-, and other C/C++, assembler, etc. source files </td></tr> +<tr> +<td class="XML-Token">sourceC </td><td>C source file </td></tr> +<tr> +<td class="XML-Token">sourceCpp </td><td>C++ source file </td></tr> +<tr> +<td class="XML-Token">sourceAsm </td><td>Assembly source file </td></tr> +<tr> +<td class="XML-Token">linkerScript </td><td>linker script file that can be selected by tool-chains </td></tr> +<tr> +<td class="XML-Token">utility </td><td>a command line tool that can be configured for pre- or post-processing during the build process </td></tr> +<tr> +<td class="XML-Token">image </td><td>Files of image type are marked for special processing into a File System Image embedded into the application. This category requires the <em>attr</em> being set to <em>template</em>. </td></tr> +<tr> +<td class="XML-Token">other </td><td>Other file types not covered in the list above </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_conditions_pg.html b/docs/Pack/html/pdsc_conditions_pg.html new file mode 100644 index 0000000..c89587c --- /dev/null +++ b/docs/Pack/html/pdsc_conditions_pg.html @@ -0,0 +1,333 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/conditions element</title> +<title>CMSIS-Pack: /package/conditions element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_conditions_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/conditions element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The grouping element <a class="el" href="pdsc_conditions_pg.html#element_conditions">/package/conditions</a> contains all conditions defined for the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</p> +<p>A condition describes dependencies on device, processor, and tool attributes as well as the presence of other components. The <b>conditions</b> are used to define AND and OR rules used to make components conditional and therefore only available under certain circumstances, e.g. for specific devices or processors. The conditions are also used to express dependencies between components.</p> +<p>Each condition has an <b>id</b> that is unique within the scope of a the description. An <b>id</b> can be referenced in the condition attribute of components, apis, examples, files and other conditions to become conditional. If a condition resolves to false during the processing of the description, the respective element will be ignored.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><conditions></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CM4"</span>> <!-- defines the condition with the ID <span class="stringliteral">"CM4"</span> --></div> +<div class="line"> <description>True <span class="keywordflow">if</span> the active device has a Cortex-M4 processor</description></div> +<div class="line"> <require Dcore=<span class="stringliteral">"Cortex-M4"</span>/> <!-- device has a Cortex-M4 processor --></div> +<div class="line"> </condition></div> +<div class="line"></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"Cortex-M"</span>> <!-- defines the condition with the ID <span class="stringliteral">"Cortex-M"</span> --></div> +<div class="line"> <description>True <span class="keywordflow">if</span> the active device has a Cortex-M0 or Cortex-M0+ or Cortex-M3 or Cortex-M4 or SC000 or SC3000 processor </description></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M0"</span>/> <!-- any of the following cores will make the condition resolve to <span class="keyword">true</span> --></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M0+"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M23"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M3"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M33"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"Cortex-M4"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"SC000"</span>/></div> +<div class="line"> <accept Dcore=<span class="stringliteral">"SC300"</span>/></div> +<div class="line"> </condition></div> +<div class="line"></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CMSIS-Core"</span>> <!-- defines the condition with the ID <span class="stringliteral">"CMSIS-Core"</span> --></div> +<div class="line"> <description>True <span class="keywordflow">if</span> the component Device Startup is selected and the device has a Cortex-M processor</description></div> +<div class="line"> <require Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span>/> <!-- needs a software component Device Startup AND ... --></div> +<div class="line"> <require condition=<span class="stringliteral">"Cortex-M"</span>/> <!-- ... needs that condition with ID=Cortex-M to be <span class="keyword">true</span>. --></div> +<div class="line"> </condition></div> +<div class="line"></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"CMSIS-DSP"</span>> <!-- defines the condition with the ID <span class="stringliteral">"CMSIS-DSP"</span> --></div> +<div class="line"> <description>True <span class="keywordflow">if</span> CMSIS-Core == TRUE and either GCC or ARMCC and device running in little-endian byte ordering</description></div> +<div class="line"> <require condition=<span class="stringliteral">"CMSIS-Core"</span>/> <!-- needs a software component Device Startup AND ... --></div> +<div class="line"> <accept Tcompiler=<span class="stringliteral">"GCC"</span>/> <!-- ... works either with the GCC compiler OR ... --></div> +<div class="line"> <accept Tcompiler=<span class="stringliteral">"ARMCC"</span>/> <!-- ... the ARMCC compiler AND ... --></div> +<div class="line"> <require Dendian=<span class="stringliteral">"Little-endian"</span>/> <!-- ... requires a device running in little-endian byte ordering --></div> +<div class="line"> </condition></div> +<div class="line"></div> +<div class="line"> <condition <span class="keywordtype">id</span>=<span class="stringliteral">"No STM32"</span>> <!-- defines the condition with ID <span class="stringliteral">"No STM32"</span> --></div> +<div class="line"> <description>False <span class="keywordflow">if</span> the device is from ST and the device name starts with <span class="stringliteral">"STM32"</span></description></div> +<div class="line"> <deny Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span> Dname=<span class="stringliteral">"STM32*"</span>/> <!-- device name must not start with STM32 and be from vendor ST--></div> +<div class="line"> </condition></div> +<div class="line"></conditions></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_conditions"></a> +/package/conditions</h1> +<p>This element groups all conditions used in the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</p> +<table class="cmtable" summary="Element: Conditions"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> </td><td>Define the individual dependency condition. </td><td>xs:string </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_condition"></a> +/package/conditions/condition</h1> +<p>Conditions are dependency rules that can apply to elements such as a <a class="el" href="pdsc_components_pg.html#element_component">component</a> or <a class="el" href="pdsc_components_pg.html#element_file">file</a>. Other elements can refer to a rule using their attribute <b>condition</b>, which links to the attribute <b>id</b> of a condition. If a condition resolves to <span class="XML-Token">false</span>, then the component or file description is ignored.</p> +<table class="cmtable" summary="Element: Condition"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_conditions">conditions</a> </td><td colspan="3"><a class="el" href="pdsc_conditions_pg.html#element_conditions">/package/conditions</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>id </td><td>Condition identifier which is unique within a <a class="el" href="cp_SWComponents.html">Software Pack</a>. The condition identifier is referenced by other elements with the attribute <b>condition</b>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Descriptive (comment) text that explains the condition in an human readable way. </td><td>xs:string </td><td>0..1 </td></tr> +<tr class="choice"> +<td><a class="el" href="pdsc_conditions_pg.html#element_accept">accept</a><sup>1</sup> </td><td>At least one <a class="el" href="pdsc_conditions_pg.html#element_accept">accept</a> must be true to signal a true for the complete condition (<b>OR-Rule</b>) </td><td>FilterType </td><td>0..* </td></tr> +<tr class="choice"> +<td><a class="el" href="pdsc_conditions_pg.html#element_require">require</a><sup>1</sup> </td><td>All <a class="el" href="pdsc_conditions_pg.html#element_require">require</a> must be true to signal a true for the complete condition (<b>AND-Rule</b>). </td><td>FilterType </td><td>0..* </td></tr> +<tr class="choice"> +<td><a class="el" href="pdsc_conditions_pg.html#element_deny">deny</a><sup>1</sup> </td><td>If one <a class="el" href="pdsc_conditions_pg.html#element_deny">deny</a> is true the complete condition becomes false. This element overrules <a class="el" href="pdsc_conditions_pg.html#element_require">require</a> and <a class="el" href="pdsc_conditions_pg.html#element_accept">accept</a> (<b>AND-NOT-Rule</b>). </td><td>FilterType </td><td>0..* </td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd><b>1</b>: At least one of these elements must be present in any condition.</dd></dl> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_accept"></a> +/package/conditions/condition/accept</h1> +<h1><a class="anchor" id="element_require"></a> +/package/conditions/condition/require</h1> +<h1><a class="anchor" id="element_deny"></a> +/package/conditions/condition/deny</h1> +<p>All attributes set in an <a class="el" href="pdsc_conditions_pg.html#element_accept">accept</a>, <a class="el" href="pdsc_conditions_pg.html#element_require">require</a>, or <a class="el" href="pdsc_conditions_pg.html#element_deny">deny</a> must resolve to true for the element to become true. A <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> becomes <span class="XML-Token">true</span> when:</p> +<ul> +<li>At least one <a class="el" href="pdsc_conditions_pg.html#element_accept">accept</a> element is true, AND</li> +<li>all <a class="el" href="pdsc_conditions_pg.html#element_require">require</a> elements are true, AND</li> +<li>no <a class="el" href="pdsc_conditions_pg.html#element_deny">deny</a> element is true.</li> +</ul> +<table class="cmtable" summary="Type: FilterType"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_condition">accept</a> </td><td colspan="3"><a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition/accept</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_condition">require</a> </td><td colspan="3"><a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition/require</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_condition">deny</a> </td><td colspan="3"><a class="el" href="pdsc_conditions_pg.html#element_condition">/package/conditions/condition/deny</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Dfamily<b>*</b> </td><td>Specifies the device family name (for example: STM32F2 Series). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>DsubFamily<b>*</b> </td><td>Specifies the device sub-family name (for example: STM32F205 Series). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvariant<b>*</b> </td><td>Specifies the variant name of a device (for example: Step A). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvendor </td><td>Specifies the silicon vendor of the device. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. </td><td>DeviceVendorEnum </td><td>optional </td></tr> +<tr> +<td>Dname<b>*</b> </td><td>Specifies the name of the device. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Specifies the processor instance in case of multi processor devices. This allows to describe distinct conditions for a specific processor. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dcore </td><td>Specifies a processor core. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DcoreEnum">Device Cores</a>. </td><td>DcoreEnum </td><td>optional </td></tr> +<tr> +<td>Dfpu </td><td>Specifies whether a Floating Point Unit (FPU) must be present or not. Predefined values can be used as listed in the table <a class="el" href="pdsc_family_pg.html#DfpuEnum">Device FPU</a>. </td><td>DfpuEnum </td><td>optional </td></tr> +<tr> +<td>Dmpu </td><td>Specifies whether a Memory Protection Unit (MPU) must be present or not. Predefined values can be used as listed in the table <a class="el" href="pdsc_family_pg.html#DmpuEnum">Device MPU</a>. </td><td>DmpuEnum </td><td>optional </td></tr> +<tr> +<td>Dtz </td><td>Specifies whether TrustZone (TZ) must be supported by the device or not. Predefined values can be used as listed in the table <a class="el" href="pdsc_family_pg.html#DtzEnum">Device TrustZone</a>. </td><td>DtzEnum </td><td>optional </td></tr> +<tr> +<td>Dsecure </td><td>Specifies whether the application is configured to run in secure or non-secure mode. Predefined values can be used as listed in the table <a class="el" href="pdsc_family_pg.html#DsecureEnum">Software Model Secure</a>. </td><td>DsecureEnum </td><td>optional </td></tr> +<tr> +<td>Ddsp </td><td>Specifies whether Digital Signal Processing (DSP) instruction set must be supported by the device or not. Predefined values can be uses as listed in the table <a class="el" href="pdsc_family_pg.html#DdspEnum">Device DSP</a>. </td><td>DdspEnum </td><td>optional </td></tr> +<tr> +<td>Dendian </td><td>Specifies the endianess of a device. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DendianEnum">Endianess</a>. </td><td>DendianEnum </td><td>optional </td></tr> +<tr> +<td>Cvendor<b>*</b> </td><td>Specifies a component vendor name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cbundle<b>*</b> </td><td>Specifies a component class bundle name. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cclass<b>*</b> </td><td>Specifies a component class name. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>CclassType </td><td>optional </td></tr> +<tr> +<td>Cgroup<b>*</b> </td><td>Specifies a software Component Group. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>optional </td></tr> +<tr> +<td>Csub<b>*</b> </td><td>Specifies a software component subgroup. The type is described in <a class="el" href="pdsc_components_pg.html#CsubType">Component Subgroups</a>. </td><td>CsubType </td><td>optional </td></tr> +<tr> +<td>Cvariant<b>*</b> </td><td>Specifies a software component variant. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Cversion </td><td>Specifies a software component version.<ul> +<li><b>require Cversion:</b>condition is true if version of component is equal or higher than requested.</li> +<li><b>deny Cversion:</b> condition is true if version of component is lower than requested.</li> +<li>Version ranges are specified with <em>min_version</em><b>:</b><em>max_version</em>. The condition is true if the version of the component is equal or higher than <em>min_version</em> and lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal the version must match. For more information refer to <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </li> +</ul> +</td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>optional </td></tr> +<tr> +<td>Capiversion </td><td>Specifies an API version.<ul> +<li><b>require Capiversion:</b>condition is true if version of API is equal or higher than requested.</li> +<li><b>deny Capiversion:</b> condition is true if version of API is lower than requested.</li> +<li>Version ranges are specified with <em>min_version</em><b>:</b><em>max_version</em>. The condition is true if the version of the API is equal or higher than <em>min_version</em> and lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal the version must match. For more information refer to <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </li> +</ul> +</td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>optional </td></tr> +<tr> +<td>Tcompiler </td><td>Specifies a compiler toolchain (ARMCC, GCC, IAR, Tasking, ...). Use predefined values as listed in table <a class="el" href="pdsc_conditions_pg.html#CompilerEnumType">Compiler Types</a>. </td><td>CompilerEnumType </td><td>optional </td></tr> +<tr> +<td>Toptions </td><td><p class="starttd">Specifies compiler specific options being active. For <em>Tcompiler="ARMCC"</em> available Toptions are:</p> +<ul> +<li><b>AC5</b>: Arm Compiler Version 5 is in used</li> +<li><b>AC6</b>: Arm Compiler Version 6 (armclang) is in use</li> +<li><b>AC6LTO</b>: Arm Compiler Version 6 with Link Time Optimization (LTO) is in use</li> +</ul> +<p class="endtd">This attribute can be used to select compatible libraries for the selected compiler version or optimization mode. </p> +</td><td>CompilerEnumType </td><td>optional </td></tr> +<tr> +<td>condition </td><td>Refers to another condition identified through the attribute <em><b>id</b>.</em> </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><b>*)</b> Wild-cards can be used to match names with the following definitions:</p> +<ul> +<li>'*' matches any substring</li> +<li>'?' matches any single character</li> +<li>[abc] matches any character in the set (a,b,c)</li> +</ul> +<p> </p> +<p><a class="anchor" id="CompilerEnumType"></a><b>Table: Compiler Types</b></p> +<p>The tale list values representing a C/C++ compiler toolchains from a specific tool vendor. The tokens can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +</ul> +<table class="cmtable" summary="Enumeration: CompilerEnumType"> +<tr> +<th>Tcompiler= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">GCC </td><td>GNU Tools for Arm Embedded Processors. Refer to <a href="https://launchpad.net/gcc-arm-embedded/4.7" target="_blank">Arm GCC</a>. </td></tr> +<tr> +<td class="XML-Token">G++ </td><td>Code Sourcery GCC compiler for C and C++ (is now Mentor Graphics CodeBench). </td></tr> +<tr> +<td class="XML-Token">ARMCC </td><td>Arm Compiler for C and C++. Refer to <a href="http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.coretools/index.html" target="_blank">Arm Compiler</a>. </td></tr> +<tr> +<td class="XML-Token">IAR </td><td>IAR compiler for C and C++. </td></tr> +<tr> +<td class="XML-Token">Tasking </td><td>TASKING compiler for C and C++. </td></tr> +<tr> +<td class="XML-Token">GHS </td><td>Green Hills Software compiler for C, C++, and EC++. </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_devices_pg.html b/docs/Pack/html/pdsc_devices_pg.html new file mode 100644 index 0000000..19ddc5e --- /dev/null +++ b/docs/Pack/html/pdsc_devices_pg.html @@ -0,0 +1,252 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/devices element</title> +<title>CMSIS-Pack: /package/devices element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_devices_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/devices element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The level <b><devices></b> contains all devices for which support is provided by the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</p> +<p>Devices can be organized in hierarchy groups to limit redundancy. The hierarchy levels are:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_family">family</a>: the attributes of a device family which includes also the processor.</li> +<li><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a>: attributes of an optional sub-family; this adds or modifies features of a family.</li> +</ul> +<p>Device characteristics can be defined in:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_device">device</a>: attributes of a specific silicon device</li> +<li><a class="el" href="pdsc_family_pg.html#element_variant">variant</a>: attributes of a device variant (for example, with different package or temperature range) or an OEM device or board that integrates the device.</li> +</ul> +<p>A device is described by the following properties:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_description">description</a>: textual device description</li> +<li><a class="el" href="pdsc_family_pg.html#element_feature">feature</a>: categorized list of device peripherals and features</li> +<li><a class="el" href="pdsc_family_pg.html#element_book">book</a>: documentation about the device and its processor(s)</li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">processor</a>: processor and processor features embedded in the device</li> +<li><a class="el" href="pdsc_family_pg.html#element_compile">compile</a>: device specific general settings for the build tools</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a>: default settings for a debug connection</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a>: global debug access variables for use in sequences.</li> +<li><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a>: debug access sequences.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a>: debug port description of the device for the debugger to configure a debug connection.</li> +<li><a class="el" href="pdsc_family_pg.html#element_debug">debug</a>: device specific information for the debugger to configure a debug connection including System View Description files.</li> +<li><a class="el" href="pdsc_family_pg.html#element_trace">trace</a>: device specific information for the debugger to configure trace.</li> +<li><a class="el" href="pdsc_family_pg.html#element_memory">memory</a>: memory layout of the device for internal and external RAM and ROM regions</li> +<li><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a>: device specific Flash programming algorithms</li> +</ul> +<p>A device will inherit the specifications from both the family and sub-family levels. Some properties are required to be unique. For example, the name of the svd file attribute of the <b><debug></b> property. Therefore, the svd file specified on the family level can be redefined by the attribute on the sub-family or device level. Information like the description and feature entries are concatenated, starting with the information from the family and sub-family level and finalizing with the information on the device level.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <devices></div> +<div class="line"> <!-- family level --></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"STM32F2"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-M3"</span> DcoreVersion=<span class="stringliteral">"r2p1"</span></div> +<div class="line"> Dfpu=<span class="stringliteral">"NO_FPU"</span> Dmpu=<span class="stringliteral">"MPU"</span> Dendian=<span class="stringliteral">"Little-endian"</span> Dclock=<span class="stringliteral">"120000000"</span>/></div> +<div class="line"></div> +<div class="line"> <compile header=<span class="stringliteral">"Device/Include/stm32f2xx.h"</span> define=<span class="stringliteral">"STM32F2XX"</span>/></div> +<div class="line"> <debug svd=<span class="stringliteral">"SVD/STM32F20x.svd"</span>/></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_OPT.flm"</span> start=<span class="stringliteral">"0x1FFFC000"</span> size=<span class="stringliteral">"0x00000010"</span> style=<span class="stringliteral">"Keil"</span>/></div> +<div class="line"> <book name=<span class="stringliteral">"doc/STM32F2.PDF"</span> title=<span class="stringliteral">"STM32F2 Reference Manual"</span>/></div> +<div class="line"></div> +<div class="line"> <description></div> +<div class="line"> Arm 32-bit Cortex-M3 CPU based Microcontroller</div> +<div class="line"> - 120 MHz maximum frequency producing 150 DMIPS/1.25 DMIPS/MHz</div> +<div class="line"> - Memory Protection Unit</div> +<div class="line"> - Flexible <span class="keyword">static</span> memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories)</div> +<div class="line"> - LCD parallel interface, 8080/6800 modes</div> +<div class="line"> - Clock, reset and supply management</div> +<div class="line"> </description></div> +<div class="line"></div> +<div class="line"> <feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"10"</span> m=<span class="stringliteral">"32"</span> name=<span class="stringliteral">"General Purpose Timer with 60 MHz"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"2"</span> m=<span class="stringliteral">"16"</span> name=<span class="stringliteral">"Advanced Control Timer with 120 MHz"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"2"</span> m=<span class="stringliteral">"16"</span> name=<span class="stringliteral">"Basic Timer with 60 MHz"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"TimerOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Independent Watchdog Timer"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"TimerOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Window Watchdog Timer"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"DAC"</span> n=<span class="stringliteral">"2"</span> m=<span class="stringliteral">"12"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"SPI"</span> n=<span class="stringliteral">"3"</span> name=<span class="stringliteral">"SPI Interface (two of them can be used as I2S)"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"I2C"</span> n=<span class="stringliteral">"3"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"USART"</span> n=<span class="stringliteral">"4"</span> name=<span class="stringliteral">"USART Interface up to 7.5 Mbit/s"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"UART"</span> n=<span class="stringliteral">"2"</span> name=<span class="stringliteral">"UART Interface up to 3.75 Mbit/s"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"USBOTG"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"USB OTG (Full-Speed) with PHY and ULPI"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"USBOTG"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"USB OTG (High-Speed) with PHY and ULPI"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"CAN"</span> n=<span class="stringliteral">"2"</span> name=<span class="stringliteral">"CAN Interface (2.0b Active)"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"SDIO"</span> n=<span class="stringliteral">"1"</span> m=<span class="stringliteral">"8"</span> name=<span class="stringliteral">"Supporting SD/MicroSD/MMC"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"VCC"</span> n=<span class="stringliteral">"1.8"</span> m=<span class="stringliteral">"3.6"</span>/></div> +<div class="line"></div> +<div class="line"> <!-- sub family level --></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"128 Flash"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"SRAM"</span> access=<span class="stringliteral">"rwx"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x10000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"Flash"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x20000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <!-- device level --></div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F205RB"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"51"</span> name=<span class="stringliteral">"Input and Output Ports"</span>/></div> +<div class="line"> <variant Dvariant=<span class="stringliteral">"STM32F205RBT6"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> count=<span class="stringliteral">"64"</span> name=<span class="stringliteral">"LQFP 64 10x10x1.4"</span> /></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"85"</span> name=<span class="stringliteral">"Industrial Temperature Range"</span>/></div> +<div class="line"> </variant></div> +<div class="line"> <variant Dvariant=<span class="stringliteral">"STM32F205RBT7"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> count=<span class="stringliteral">"64"</span> name=<span class="stringliteral">"LQFP 64 10x10x1.4"</span> /></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"105"</span> name=<span class="stringliteral">"Extended Temperature Range"</span>/></div> +<div class="line"> </variant></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F205VB"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"82"</span> name=<span class="stringliteral">"Input and Output Ports"</span>/></div> +<div class="line"> <variant Dvariant=<span class="stringliteral">"STM32F205VBT6"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> count=<span class="stringliteral">"100"</span> name=<span class="stringliteral">"LQFP 100 14x14x1.4"</span> /></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"85"</span> name=<span class="stringliteral">"Industrial Temperature Range"</span>/></div> +<div class="line"> </variant></div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"> </div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_devices"></a> +/package/devices</h1> +<p>Group level containing device <a class="el" href="pdsc_family_pg.html">family</a> descriptions. A package can contain only one element <b><devices></b>. The group is not mandatory.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <devices></div> +<div class="line"> ...</div> +<div class="line"> </devices></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: devices"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#element_package">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html#element_package">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td>Device family group. Define all properties that are in common to devices of a family. </td><td>complexType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_devices_pg.js b/docs/Pack/html/pdsc_devices_pg.js new file mode 100644 index 0000000..737520f --- /dev/null +++ b/docs/Pack/html/pdsc_devices_pg.js @@ -0,0 +1,40 @@ +var pdsc_devices_pg = +[ + [ "/package/devices", "pdsc_devices_pg.html#element_devices", null ], + [ "/package/devices/family element", "pdsc_family_pg.html", [ + [ "/package/devices/family", "pdsc_family_pg.html#element_family", null ], + [ "/package/devices/family/subFamily", "pdsc_family_pg.html#element_subFamily", null ], + [ "/package/devices/family/../device", "pdsc_family_pg.html#element_device", null ], + [ "/package/devices/family/.../algorithm", "pdsc_family_pg.html#element_algorithm", null ], + [ "/package/devices/family/.../flashinfo", "pdsc_family_pg.html#element_flashinfo", null ], + [ "/package/devices/family/.../flashinfo/block", "pdsc_family_pg.html#element_flashblock", null ], + [ "/package/devices/family/.../flashinfo/gap", "pdsc_family_pg.html#element_flashgap", null ], + [ "/package/devices/family/.../book", "pdsc_family_pg.html#element_book", null ], + [ "/package/devices/family/.../compile", "pdsc_family_pg.html#element_compile", null ], + [ "/package/devices/family/.../description", "pdsc_family_pg.html#element_description", null ], + [ "/package/devices/family/.../environment", "pdsc_family_pg.html#element_environment", null ], + [ "/package/devices/family/.../feature", "pdsc_family_pg.html#element_feature", null ], + [ "/package/devices/family/.../memory", "pdsc_family_pg.html#element_memory", null ], + [ "/package/devices/family/.../processor", "pdsc_family_pg.html#element_processor", null ], + [ "/package/devices/family/.../debugconfig", "pdsc_family_pg.html#element_debugconfig", null ], + [ "/package/devices/family/.../debugvars", "pdsc_family_pg.html#element_debugvars", null ], + [ "/package/devices/family/.../debugport", "pdsc_family_pg.html#element_debugport", null ], + [ "/package/devices/family/.../debugport/jtag", "pdsc_family_pg.html#element_dp_jtag", null ], + [ "/package/devices/family/.../debugport/swd", "pdsc_family_pg.html#element_dp_swd", null ], + [ "/package/devices/family/.../debugport/cjtag", "pdsc_family_pg.html#element_dp_cjtag", null ], + [ "/package/devices/family/.../sequences", "pdsc_family_pg.html#element_sequences", null ], + [ "/package/devices/family/.../sequences/sequence", "pdsc_family_pg.html#element_sequence", null ], + [ "/package/devices/family/.../sequences/sequence/control", "pdsc_family_pg.html#element_seq_control", null ], + [ "/package/devices/family/.../sequences/sequence/block", "pdsc_family_pg.html#element_seq_block", [ + [ "Debug access syntax rules", "pdsc_family_pg.html#DebugSyntaxRules", null ], + [ "Expression rules", "pdsc_family_pg.html#ExpressionType", null ] + ] ], + [ "/package/devices/family/.../debug", "pdsc_family_pg.html#element_debug", null ], + [ "/package/devices/family/.../debug/datapatch", "pdsc_family_pg.html#element_dbg_datapatch", null ], + [ "/package/devices/family/.../trace", "pdsc_family_pg.html#element_trace", null ], + [ "/package/devices/family/.../trace/serialwire", "pdsc_family_pg.html#element_trace_serialwire", null ], + [ "/package/devices/family/.../trace/traceport", "pdsc_family_pg.html#element_trace_traceport", null ], + [ "/package/devices/family/.../trace/tracebuffer", "pdsc_family_pg.html#element_trace_tracebuffer", null ], + [ "/package/devices/family/.../device/variant", "pdsc_family_pg.html#element_variant", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/Pack/html/pdsc_examples_pg.html b/docs/Pack/html/pdsc_examples_pg.html new file mode 100644 index 0000000..2d4cc6a --- /dev/null +++ b/docs/Pack/html/pdsc_examples_pg.html @@ -0,0 +1,336 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/examples element</title> +<title>CMSIS-Pack: /package/examples element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_examples_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/examples element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The element <a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> describes fully defined examples contained in the Pack. An example lists the files that belong to an example. The example itself and each individual file may refer to a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> that must resolve to true; if it is false the example or file will be ignored. The board element is used to reference to one or more board descriptions using the board vendor and name an example is targeted for. Each example can specify attributes listing related components using Class (Cclass=), Group (Cgroup=), Subgroup (Csub) and a Version (Cversion=)</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><examples></div> +<div class="line"> <example name=<span class="stringliteral">"Blinky"</span> folder=<span class="stringliteral">"Boards/MCBSTM32F200/Blinky"</span> doc=<span class="stringliteral">"Abstract.txt"</span> version=<span class="stringliteral">"1.0"</span>></div> +<div class="line"> <description>This is a basic example demonstrating the development flow and letting the LED on the board blink</description></div> +<div class="line"> <board vendor=<span class="stringliteral">"STMicroelectronics"</span> name=<span class="stringliteral">"32F429IDISCOVERY"</span>/></div> +<div class="line"> <project></div> +<div class="line"> <environment name=<span class="stringliteral">"uv"</span> load=<span class="stringliteral">"ARM/Blinky.uvproj"</span>/></div> +<div class="line"> <environment name=<span class="stringliteral">"iar"</span> load=<span class="stringliteral">"IAR/Blinky.ewarm"</span> /></div> +<div class="line"> </project></div> +<div class="line"> <attributes></div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span>/></div> +<div class="line"> <keyword>Blinky</keyword></div> +<div class="line"> <keyword>Getting Started</keyword></div> +<div class="line"> </attributes></div> +<div class="line"> </example></div> +<div class="line"></examples> </div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_examples"></a> +/package/examples</h1> +<p>Grouping element for examples. No more than one such group can exist in a Pack.</p> +<table class="cmtable" summary="Element: Example"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example">example</a> </td><td>Description of fully specified project </td><td>ExampleType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example"></a> +/package/examples/example</h1> +<p>An example section is used to provide the required information for accessing an example project contained in a Pack. All examples contained in the installed packs can be listed including a brief description. A selected example will get copied into a user selected destination folder. Based on the user selected environment the respective project file will be loaded. The ID of an example is the combination of the Pack vendor, the board information and the example name and version. Examples with the same ID are treated as a single example.</p> +<table class="cmtable" summary="Element: Example"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_examples">examples</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_examples">/package/examples</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the example </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>folder </td><td>Relative path to the example base folder within the package. If selected, then the directory including all sub-folders and files will be copied, unless the archive attribute gets set. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>archive </td><td>Filename and extension of the archive file containing all files and sub-folders of the example. The archive is located in the path specified by the attribute <b><em>folder</em></b>. If selected, then the whole archive will be extracted. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>doc </td><td>Document that describes the example. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>version </td><td>Example version number. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Briefly documents the purpose and scope of the example. The test can be displayed in an example selector. </td><td>xs:string </td><td>1 </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_board">board</a> </td><td>Complex type providing a reference to a board description using board name and vendor.. </td><td>BoardReferenceType </td><td>1 </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_project">project</a> </td><td>Complex type describing the project files for different environments </td><td>ExampleProjectType </td><td>1..* </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_attributes">attributes</a> </td><td>Group element for project attributes, which list required components, define example categories, and set keywords to filter and search for examples. </td><td>ExampleAttributesType </td><td>1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example_board"></a> +/package/examples/example/board</h1> +<p>This element specifies the board that can be used with the example project.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><board name=<span class="stringliteral">"MV1000A"</span> vendor=<span class="stringliteral">"MyVendor"</span>/></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Example Board"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example">example</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>vendor </td><td>Vendor name of the board. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>name </td><td>Commercial name of the board. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Dvendor </td><td>Vendor name of the device used on the board. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. </td><td>DeviceVendorEnum </td><td>optional </td></tr> +<tr> +<td>Dfamily </td><td>Name of the target device family used on the board. This attribute is optional if either DsubFamily or Dname is already specified. <br/> + <b><span class="XML-Token">Deprecated since version 1.1</span></b> </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>DsubFamily </td><td>Name of the target device sub-family used on the board. This attribute is optional if either Dfamily or Dname is already specified. <br/> + <b><span class="XML-Token">Deprecated since version 1.1</span></b> </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dname </td><td>Name of the target device used on the board. This attribute is optional if either Dfamily or DsubFamily is already specified. <br/> + <b><span class="XML-Token">Deprecated since version 1.1</span></b>. </td><td>xs:string </td><td>optional </td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd>Values for <b><span class="XML-Token">deprecated attributes</span></b> are read from the board description element <a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">/package/boards/board/mountedDevice</a>.</dd></dl> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example_project"></a> +/package/examples/project</h1> +<p>A project element is a sequence of <em>environment</em> elements that describe the name of the environment and the project file to be loaded.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><project></div> +<div class="line"> <environment ... /></div> +<div class="line"> <environment ... /></div> +<div class="line"></project></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Example Project"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example">example</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> </td></tr> +<tr> +<th>Element </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_project_env">environment</a> </td><td>Specifies the environment and project file with extension. </td><td>xs:complexType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example_project_env"></a> +/package/examples/project/environment</h1> +<p>The environment element describes the name of the environment and the project file to be loaded.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><project></div> +<div class="line"> <environment name=<span class="stringliteral">"uv"</span> load=<span class="stringliteral">"ARM/Blinky.uvproj"</span>/></div> +<div class="line"> <environment name=<span class="stringliteral">"iar"</span> load=<span class="stringliteral">"IAR/Blinky.ewarm"</span> /></div> +<div class="line"></project></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Example Project"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_project">project</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_example_project">/package/examples/project</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the required tool-chain (for example: <span class="XML-Token">uv</span>, <span class="XML-Token">iar</span>, etc.) </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>load </td><td>Specifies the project file with extension. A path relative to <em>folder</em> attribute of the element <a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> can be appended. </td><td>xs:string </td><td>required </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example_attributes"></a> +/package/examples/example/attributes</h1> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><example></div> +<div class="line"> <attributes></div> +<div class="line"> <category>Example Project</category></div> +<div class="line"> <category>For a specific board</category></div> +<div class="line"> ...</div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span>/></div> +<div class="line"> ...</div> +<div class="line"> <keyword>Blinky</keyword></div> +<div class="line"> <keyword>Getting Started</keyword></div> +<div class="line"> </attributes></div> +<div class="line"></example></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Example Attributes"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example">example</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>category </td><td>Free form string defining an example category. A category can be used to filter examples in an example browser. </td><td>xs:string </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">component</a> </td><td>Group for defining the components used in the example. </td><td>ComponentCategoryType </td><td>0..* </td></tr> +<tr> +<td>keyword </td><td>Free form string defining a keyword that relates to the example. A keyword can be used to search for examples. </td><td>xs:string </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_example_attribute_component"></a> +/package/examples/example/attributes/component</h1> +<p>The component element specifies the Cclass to which the example belongs. This can be used to list all related components within an example.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><attributes></div> +<div class="line"> ...</div> +<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span>/></div> +<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span>/></div> +<div class="line"> ...</div> +<div class="line"></attributes></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Attribute Component"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_example_attributes">attribute</a> </td><td colspan="3"><a class="el" href="pdsc_examples_pg.html#element_example_attributes">/package/examples/example/attributes</a> </td></tr> +<tr> +<th>Attribute </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Cclass </td><td>Free form string defining an example class. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>CclassType </td><td>required </td></tr> +<tr> +<td>Cgroup </td><td>Free form string defining an example group. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>optional </td></tr> +<tr> +<td>Csub </td><td>Free form string defining an example subgroup. The type is described in <a class="el" href="pdsc_components_pg.html#CsubType">Component Subgroups</a>. </td><td>CsubType </td><td>optional </td></tr> +<tr> +<td>Cversion </td><td>Free form string defining an example version. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +<tr> +<td>Cvendor </td><td>Free form string defining the vendor of the example. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_family_pg.html b/docs/Pack/html/pdsc_family_pg.html new file mode 100644 index 0000000..c06e92f --- /dev/null +++ b/docs/Pack/html/pdsc_family_pg.html @@ -0,0 +1,2263 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/devices/family element</title> +<title>CMSIS-Pack: /package/devices/family element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_family_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/devices/family element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h1><a class="anchor" id="element_family"></a> +/package/devices/family</h1> +<p>Define properties that are in common to all devices of a family. These properties are inherited by subgroups or elements. This is a mechanism of granulation to reduce redundancy. Multiple <family> groups can be defined.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><devices></div> +<div class="line"> ...</div> +<div class="line"> <family Dfamily=<span class="stringliteral">"STM32F2"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> <processor .../></div> +<div class="line"> <debugconfig .../></div> +<div class="line"> <debugvars .../></div> +<div class="line"> <sequences .../></div> +<div class="line"> <compile .../></div> +<div class="line"> <memory .../></div> +<div class="line"> <algorithm .../></div> +<div class="line"> <book .../></div> +<div class="line"> <description> Write texte here </description></div> +<div class="line"> <environment> ... </environment></div> +<div class="line"> <feature .../></div> +<div class="line"> <debugport .../></div> +<div class="line"> <debug .../></div> +<div class="line"> <trace .../></div> +<div class="line"> </div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"..."</span>></div> +<div class="line"> ...</div> +<div class="line"> <device Dname=<span class="stringliteral">"..."</span>></div> +<div class="line"> ...</div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"> </subFamily></div> +<div class="line"> ...</div> +<div class="line"> </family></div> +<div class="line"> ...</div> +<div class="line"></devices></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: family"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_devices_pg.html#element_devices">devices</a> </td><td colspan="3"><a class="el" href="pdsc_devices_pg.html#element_devices">/package/devices</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Dfamily </td><td>Name of the device family. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Dvendor </td><td>Device vendor name. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. </td><td><a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">DeviceVendorEnum</a> </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_processor">processor</a> </td><td>List all processors that are in common to devices of the family. </td><td>ProcessorType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a> </td><td>Specify default settings for the debug connection relevant to all devices of the family. </td><td>DebugConfigType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_compile">compile</a> </td><td>Specify compile or translate options that are relevant to all devices of the family. </td><td>CompileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a> </td><td>Define global debug access variables for settings relevant to all devices of the family unless replaced by debugvars on subFamily, device or variant level </td><td>DebugVarsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> </td><td>Describe debug access sequences relevant to all devices of the family. </td><td>SequencesType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td>Describe a debug port relevant to all devices of the family. </td><td>DebugPortType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> </td><td>Specify debug options that are relevant to all devices of the family. </td><td>DebugType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td>Specify trace options that are relevant to all devices of the family. </td><td>TraceType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_memory">memory</a> </td><td>Specify memory areas that are available for all devices of the family. </td><td>MemoryType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a> </td><td>Specify Flash programming algorithms that are suitable for all devices. </td><td>AlgorithmType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> </td><td>Specify additional information required to download application code into Flash that is available for all devices of the family. </td><td>FlashInfoType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_book">book</a> </td><td>Specify documents that are relevant for all devices of a family. </td><td>BookType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_description">description</a> </td><td>Describe the device family. </td><td>DescriptionType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_environment">environment</a> </td><td>Specify tool specific settings. </td><td>EnvironmentType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">feature</a> </td><td>Specify features that are available in all members of the device family. </td><td>FeatureType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td>A optional sub-family that is used to group devices. </td><td>group </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td>Individual devices that belong to the device family. </td><td>DeviceType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_subFamily"></a> +/package/devices/family/subFamily</h1> +<p>Define properties that are in common to all devices of a subFamily. This is another mechanism of granulation to reduce redundancy. These properties are inherited by subgroups or elements. Multiple <subFamily> groups can be defined.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F2"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ... </div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"..."</span>></div> +<div class="line"> <processor .../></div> +<div class="line"> <debugconfig .../></div> +<div class="line"> <debugvars .../></div> +<div class="line"> <sequences .../></div> +<div class="line"> <compile .../></div> +<div class="line"> <memory .../></div> +<div class="line"> <algorithm .../></div> +<div class="line"> <book .../></div> +<div class="line"> <description> Write texte here </description></div> +<div class="line"> <feature .../></div> +<div class="line"> <debugport .../></div> +<div class="line"> <debug .../></div> +<div class="line"> <trace .../></div> +<div class="line"> <device Dname=<span class="stringliteral">"..."</span>></div> +<div class="line"> ...</div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F2xx"</span>></div> +<div class="line"> ...</div> +<div class="line"> </subFamily></div> +<div class="line"></div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: subFamily"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>DsubFamily </td><td>Name of the device sub family. </td><td>xs:string </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_processor">processor</a> </td><td>Specify processors that are available in all devices of the sub-family. </td><td>ProcessorType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_compile">compile</a> </td><td>Specify compile or translate options that are relevant to all devices of the sub-family. </td><td>CompileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a> </td><td>Specify default settings for the debug connection relevant to all devices of the sub-family. </td><td>DebugConfigType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a> </td><td>Define global debug access variables for user-defined settings relevant to all devices of the sub-family. </td><td>DebugVarsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> </td><td>Describe debug access sequences relevant to all devices of the sub-family. </td><td>SequencesType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td>Describe a debug port relevant to all devices of the sub-family. </td><td>DebugPortType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> </td><td>Specify debug options that are relevant to all devices of the sub-family. </td><td>DebugType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td>Specify trace options that are relevant to all devices of the sub-family. </td><td>TraceType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_memory">memory</a> </td><td>Specify memory areas that are available in all device of the sub-family. </td><td>MemoryType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a> </td><td>Specify Flash programming algorithms that can be used by all device of the sub-family. </td><td>AlgorithmType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> </td><td>Specify additional information required to download application code into Flash that is available for all devices of the sub-family. </td><td>FlashInfoType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_book">book</a> </td><td>Specify documents relevant for all device of the sub-family. </td><td>BookType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_description">description</a> </td><td>Description of the device family. </td><td>DescriptionType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">feature</a> </td><td>Specify features available in devices of the sub-family. </td><td>FeatureType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td>List individual devices that belong to the device sub-family. </td><td>DeviceType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_device"></a> +/package/devices/family/../device</h1> +<p>Define properties that are specific to a device. Properties defined on upper levels get inherited, unless they can be overwritten. Multiple <device> elements can be defined.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><subFamily DsubFamily=<span class="stringliteral">"STM32F405"</span>></div> +<div class="line"> ...</div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F405OE"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"Flash"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x80000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F4xx_1024.flm"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x80000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> style=<span class="stringliteral">"Keil"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"72"</span> name=<span class="stringliteral">"Input and Output Ports"</span>/></div> +<div class="line"> </device></div> +<div class="line"></div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F405OG"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"Flash"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x100000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F4xx_1024.flm"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x100000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> style=<span class="stringliteral">"Keil"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"72"</span> name=<span class="stringliteral">"Input and Output Ports"</span>/></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"></subFamily></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: device"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Dname </td><td>Specifies the name of the device. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_processor">processor</a> </td><td>Specify processors that are specific to this device. </td><td>ProcessorType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a> </td><td>Specify default settings for the debug connection specific to this device. </td><td>DebugConfigType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_compile">compile</a> </td><td>Specify compile or translate options specific to this device. </td><td>CompileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_memory">memory</a> </td><td>Specify memory areas that specific to this device. </td><td>MemoryType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a> </td><td>Specify Flash programming algorithms that can be used by this device. </td><td>AlgorithmType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> </td><td>Specify additional information required to download application code into Flash that is specific to this device. </td><td>FlashInfoType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_book">book</a> </td><td>Specify documents specific to this device. </td><td>BookType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_description">description</a> </td><td>Description specific to this device. </td><td>DescriptionType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">feature</a> </td><td>Specify the features of this device. </td><td>FeatureType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">environment</a> </td><td>Specify tool options. </td><td>EnvironmentType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td>Describe a debug port specific to this device. </td><td>DebugPortType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> </td><td>Specify debug options specific to this device. </td><td>DebugType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td>Specify trace options specific to this device. </td><td>TraceType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a> </td><td>Define debug access variables for user-defined settings specific to this device. </td><td>DebugVarsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> </td><td>Describe debug access sequences specific to this device. </td><td>SequencesType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_variant">variant</a> </td><td>Complex element specifying a variant of a device. </td><td>xs:ComplexType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_algorithm"></a> +/package/devices/family/.../algorithm</h1> +<p>Specify Flash programming algorithms with the address range and its size. An algorithm with <default> set to <span class="XML-Token">true</span> gets configured automatically to the download options of the project. Algorithms can be defined on various levels. Multiple <algorithm> elements are possible. If the memory range and style are identical, the one on the lower level takes precedence.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <!-- use <span class="keywordflow">for</span> all devices of the family --></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash\STM32F2xx_512.flm"</span> start=0x08000000 size=0x10000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> style=<span class="stringliteral">"Keil"</span>/></div> +<div class="line"> </div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F405"</span>></div> +<div class="line"> <!-- use <span class="keywordflow">for</span> all devices of a subFamily --></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_1024.flm"</span> start=0x08000000 size=0x20000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> style=<span class="stringliteral">"Keil"</span>/> </div> +<div class="line"></div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F405OE"</span>></div> +<div class="line"> <!-- <span class="keywordflow">finally</span>, <span class="keyword">this</span> is the <span class="keywordflow">default</span> <span class="keywordflow">for</span> the device --></div> +<div class="line"> <algorithm name=<span class="stringliteral">"Flash/STM32F2xx_2048.flm"</span> start=0x08000000 size=0x40000 <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span> style=<span class="stringliteral">"Keil"</span>/></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Type: AlgorithmType"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors that require different algorithms</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>name </td><td>Flash Programming Algorithm file including the path, which is relative to the root folder of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>start </td><td>Base address for the Flash programming algorithm. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>size </td><td>Size covered by the Flash programming algorithm. End address = start + size - 1 </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>RAMstart </td><td>Base address for the RAM where the Flash programming algorithm will be executed from. If specified, the <a class="el" href="pdsc_family_pg.html#element_memory">memory</a> element does not require a <code>default</code> attribute. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>RAMsize </td><td>Maximum size of RAM available for the execution of the Flash programming algorithm. End address = start + size - 1 is used for the Stack. If specified, the <a class="el" href="pdsc_family_pg.html#element_memory">memory</a> element does not require a <code>default</code> attribute. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>default </td><td>If <span class="XML-Token">true</span>, then this is the default Flash programming algorithm that gets configured in a project. If not specified or set to <span class="XML-Token">false</span>, then the Flash programming algorithm can be configured on a lower level. However, the Flash programming algorithm of a project can be changed manually at any time during development. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>style </td><td>[Version 1.4.0] Today, different toolchains support different styles of incompatible flash programming algorithms. The attribute specifies the style of the specified flash programming algorithm. For backward compatibility the default value is <span class="XML-Token">Keil</span>. The aim is to converge to the <em>CMSIS</em> style. </td><td><a class="el" href="pdsc_family_pg.html#AlgorithmStyleEnum">AlgorithmStyleEnum</a> </td><td><p class="starttd">optional </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_flashinfo"></a> +/package/devices/family/.../flashinfo</h1> +<p>Specify Flash information that the debugger can use to erase and program Flash memories without the use of target RAM based Flash download algorithms.<br/> + The child elements <block> and <gap> describe the memory and programming layout of a flash device:</p> +<ul> +<li>The first child element has the base address <span class="XML-Token">start</span>.</li> +<li>The base address of the second child element is <span class="XML-Token">start</span> incremented by the size of the first child element.</li> +<li>The base address of all following child elements calculates respectively.</li> +</ul> +<p>Flash information can be defined on various levels. Multiple <flashinfo> elements are possible. If the memory range is identical, the one on the lower level takes precedence. Overlap of Flash information ranges is not allowed.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><device ... ></div> +<div class="line"> ...</div> +<div class="line"> <!-- Flash Device Info <span class="keywordflow">for</span> <span class="keyword">this</span> device --></div> +<div class="line"> <flashinfo name=<span class="stringliteral">"Internal Flash 1"</span> start=<span class="stringliteral">"0"</span> pagesize=<span class="stringliteral">"64"</span> emptyval=<span class="stringliteral">"0xFFFFFFFF"</span> filler=<span class="stringliteral">"0xFFFFFFFF"</span> ptime=<span class="stringliteral">"3000"</span> etime=<span class="stringliteral">"3000"</span> Pname=<span class="stringliteral">"Cortex-M23"</span>></div> +<div class="line"> <block count=<span class="stringliteral">"1"</span> size=<span class="stringliteral">"0x100"</span> arg=<span class="stringliteral">"0"</span>/></div> +<div class="line"> <block count=<span class="stringliteral">"10"</span> size=<span class="stringliteral">"0x100"</span> arg=<span class="stringliteral">"0"</span>/></div> +<div class="line"> <gap size=<span class="stringliteral">"0x10000"</span> /></div> +<div class="line"> <block count=<span class="stringliteral">"2"</span> size=<span class="stringliteral">"0x100"</span> arg=<span class="stringliteral">"1"</span> /></div> +<div class="line"> </flashinfo></div> +<div class="line"> ...</div> +<div class="line"></device></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Type: FlashInfoType"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the specified flash device. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>start </td><td>Base address of the specified flash device as mapped into target memory system. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>pagesize </td><td>Programming page size. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>blankval </td><td>Expected memory value for unprogrammed address ranges (64-bit value). The access size used to read back programmed memory defines the number of least significant bytes of this value that are compared. Defaults to <span class="XML-Token">0xFFFFFFFFFFFFFFFF</span> if not specified. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>filler </td><td>Value that a debugger uses to fill the remainder of a programming page (64-bit value). The access size used in <a class="el" href="debug_description.html#DebugFunctions">FlashBufferWrite</a> defines the number of least significant bytes of this value to write. Defaults to <span class="XML-Token">0xFFFFFFFFFFFFFFFF</span> if not specified. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>ptime </td><td>Timeout in milliseconds for programming a page. Defaults to <span class="XML-Token">100</span> if not specified. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>etime </td><td>Timeout in milliseconds for erasing a sector. Defaults to <span class="XML-Token">300</span> if not specified. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors that require different algorithms</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashblock">block</a> </td><td><a class="el" href="pdsc_family_pg.html#element_flashblock">/package/devices/family/.../flashinfo/block</a> </td><td>FlashInfoBlockType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashgap">gap</a> </td><td><a class="el" href="pdsc_family_pg.html#element_flashgap">/package/devices/family/.../flashinfo/gap</a> </td><td>FlashInfoGapType </td><td><p class="starttd">0..* </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_flashblock"></a> +/package/devices/family/.../flashinfo/block</h1> +<p>Specify properties of one or multiple subsequent blocks of flash device that have the attributes. Its base address calculates from the parent <flashinfo> <span class="XML-Token">start</span> address incremented by the size of all previous <block> and <gap> elements of this flash device.</p> +<table class="cmtable" summary="Type: FlashInfoBlockType"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_flashinfo">/package/devices/family/.../flashinfo</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>count </td><td>Number of subsequent blocks of this flash device with identical properties. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>size </td><td>Block size in bytes. The overall memory size that is covered by this <block> element is <span class="XML-Token">count</span> times <span class="XML-Token">size</span>. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>arg </td><td>An optional argument to pass to flash operation sequence.<br/> + A debugger writes this value to the pre-defined debug access variable <b>__FlashArg</b> at start of a flash operation. It is a non-negative number specific to this device. Defaults to <span class="XML-Token">0</span> if not specified. </td><td>NonNegativeInteger </td><td><p class="starttd">optional </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_flashgap"></a> +/package/devices/family/.../flashinfo/gap</h1> +<p>Specify a gap between <block> elements of the parent. Its base address calculates from the parent <flashinfo> <span class="XML-Token">start</span> address incremented by the size of all previous <block> and <gap> elements of this flash device.</p> +<table class="cmtable" summary="Type: FlashInfoGapType"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_flashinfo">flashinfo</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_flashinfo">/package/devices/family/.../flashinfo</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>size </td><td>Gap size in bytes. </td><td>NonNegativeInteger </td><td><p class="starttd">required </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_book"></a> +/package/devices/family/.../book</h1> +<p>Specifies documents related to a device. Books can be entered on various levels. The book element contains the location, filename, and extension of the file. The title is used for display purposes.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <book name=<span class="stringliteral">"Documents/STM32F40x_DS.PDF"</span> title=<span class="stringliteral">"STM32F40x Data Sheet"</span>/> <!-- valid <span class="keywordflow">for</span> all devices of the family --></div> +<div class="line"></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F405"</span>></div> +<div class="line"> <book name=<span class="stringliteral">"Documents/STM32F4xx_RM.pdf"</span> title=<span class="stringliteral">"STM32F4 Series Reference Manual"</span>/> <!-- valid <span class="keywordflow">for</span> all devices of a subFamily --></div> +<div class="line"></div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F405OE"</span>></div> +<div class="line"> <book name=<span class="stringliteral">"Documents/STM32F405OE_DS.PDF"</span> title=<span class="stringliteral">"STM32F405OE - Data Sheet"</span>/> <!-- valid <span class="keywordflow">for</span> <span class="keyword">this</span> device; Inherits all above --></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Type: BookType"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors and where the book refers to a single processor only</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>name </td><td>File name of the document including the extension. The document path is relative to the package base folder. Directory/file names are case-sensitive. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>title </td><td>Book title. Can be used for being displayed in various environments. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_compile"></a> +/package/devices/family/.../compile</h1> +<p>Specify header files and preprocessor defines for programming. This element can occur on various levels. Multiple elements are allowed. The last occurrence in the hierarchy determines the actual define.</p> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>In the example below, the device <b>STM32F407IG</b> will have a define <code>STM32F407IG</code>. Previous defines are overridden.</li> +<li>It is good practice to add both attributes (<code>header</code> and <code>define</code>) in the attributes list of the <code>compile</code> element together. This clarifies the relationship between header file and define.</li> +<li>The name of the header file should be exported by the IDE to the <a class="el" href="pdsc_components_pg.html#RTE_Components_h">RTE_Components.h</a> file using the #define CMSIS_device_header.</li> +</ul> +</dd></dl> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <compile header=<span class="stringliteral">"Device/Include/stm32f4xx.h"</span>/></div> +<div class="line"></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F407"</span>></div> +<div class="line"> ...</div> +<div class="line"> <compile header=<span class="stringliteral">"Device/Include/stm32f4xx.h"</span> define=<span class="stringliteral">"STM32F40XX"</span>/></div> +<div class="line"></div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F407IG"</span>></div> +<div class="line"> <compile header=<span class="stringliteral">"Device/Include/stm32f4xx.h"</span> define=<span class="stringliteral">"STM32F407IG"</span>/></div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"></family></div> +</div><!-- fragment --><table class="cmtable" summary="Element: compile"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors if the header and define is different for each processor</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>header </td><td>C-header file with path relative to the installation. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>define </td><td>C-file name with device specific preprocessor defines. The path is relative to the installation. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_description"></a> +/package/devices/family/.../description</h1> +<p>Brief description of the element. Can occur on various levels. Should only contain the unique features of the device. Number of bullet points should not exceed ten. To create a detailed feature list use the <a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a> instead.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"STM32F2"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> </div> +<div class="line"> <description></div> +<div class="line"> STM32F2 devices are designed <span class="keywordflow">for</span> medical, industrial and consumer</div> +<div class="line"> applications and provide rich connectivity peripherals.</div> +<div class="line"> - At 120 MHz CPU clock: 150 DMIPS executing from Flash memory </div> +<div class="line"> - ART Accelerator <span class="keywordflow">for</span> low-power Flash execution (175 µA/MHz @ 120 MHz)</div> +<div class="line"> - Flexible Memory Controller supports Compact Flash, SRAM, PSRAM, NOR and NAND</div> +<div class="line"> </description></div> +<div class="line"> </div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"></package></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: description"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors and where the description is specific to a single processor</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_environment"></a> +/package/devices/family/.../environment</h1> +<p>Tool-specific elements for a device.</p> +<p>Can occur on various levels.</p> +<p>Contains information that is specific for a <b>development tool</b> identified by the <em>name</em> attribute. The structure of the <em>element</em> is not specified in the schema file which gives the <b>development tool</b> full control of the <em>element</em> usage.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"MySeries"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> ... </div> +<div class="line"> <environment name=<span class="stringliteral">"MyConfigTool"</span>></div> +<div class="line"> <file>MyConfigFile.cfg</file></div> +<div class="line"> <control>MyControlString</control></div> +<div class="line"> ...</div> +<div class="line"> </environment></div> +<div class="line"> ...</div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"></package></div> +</div><!-- fragment --><div class="fragment"><div class="line"><package></div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"XMC1000 Series"</span> Dvendor=<span class="stringliteral">"Infineon:7"</span>></div> +<div class="line"> ... </div> +<div class="line"> <environment name=<span class="stringliteral">"uv"</span> Pname=<span class="stringliteral">"M0"</span>></div> +<div class="line"> <CMisc>--C99</CMisc></div> +<div class="line"> ...</div> +<div class="line"> </environment></div> +<div class="line"> ...</div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"></package></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: description"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the development tool (for example, "uv" for uVision) </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Pname </td><td>Identifies the processor the setting belongs to. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>any </td><td>Any element that is available for the specified development tool.<br/> + For uVision, the following elements are available: <CMisc>, <AMisc>, <LMisc>, <preBuild1>, <preBuild2>, <preRun1>, <preRun2>, <postBuild1>, <postBuild2>, <postRun1>, <postRun>. </td><td>xs:anyAttribute </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_feature"></a> +/package/devices/family/.../feature</h1> +<p>This element specifies peripherals that devices can have. This can be used on <b>web</b> <b>sites</b> for the display of device features.</p> +<p>Many device feature types are already predefined, such as timers, converters, Ethernet, USB, etc (for a complete list refer to table <a class="el" href="pdsc_family_pg.html#DeviceFeatureTypeEnum">Device Feature Types</a>). Features can be defined on various levels. Inner elements supersede outer elements.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <!-- Features that are in common to <span class="keyword">this</span> device family. --></div> +<div class="line"> <feature type=<span class="stringliteral">"TimerOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Independent Watchdog Timer"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"TimerOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Window Watchdog Timer"</span>/> <!-- The same feature type can be specified multiple times --></div> +<div class="line"> <feature type=<span class="stringliteral">"Other"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"Temperature Sensor"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"CoreOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"96-bit Unique Identifier"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"CoreOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"CRC Calculation Unit"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"DMA"</span> n=<span class="stringliteral">"16"</span> name=<span class="stringliteral">"General Purpose DMA with Centralized FIFO and Burst Support"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"PowerOther"</span> n=<span class="stringliteral">"1"</span> name=<span class="stringliteral">"POR, PDR, PVD, and BOR"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"XTAL"</span> n=<span class="stringliteral">"4000000"</span> m=<span class="stringliteral">"26000000"</span> name=<span class="stringliteral">"Crystal Oscillator"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"IntRC"</span> n=<span class="stringliteral">"16000000"</span> name=<span class="stringliteral">"Internal Factory-Trimmed RC"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"IntRC"</span> n=<span class="stringliteral">"32000"</span> name=<span class="stringliteral">"Internal RC with Calibration"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"RTC"</span> n=<span class="stringliteral">"32000"</span> name=<span class="stringliteral">"RTC with 32 kHz calibrated Oscillator and Battery Backup"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"PowerMode"</span> n=<span class="stringliteral">"3"</span> name=<span class="stringliteral">"Run, Stop, Standby"</span>/></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"85"</span>/> </div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"105"</span>/> </div> +<div class="line"> <feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"4"</span> m=<span class="stringliteral">"16"</span> name=<span class="stringliteral">"General Purpose Timer"</span>/></div> +<div class="line"> ...</div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F407"</span>></div> +<div class="line"> <!-- Features that are in common to <span class="keyword">this</span> subFamily. --></div> +<div class="line"> <feature type=<span class="stringliteral">"IOs"</span> n=<span class="stringliteral">"36"</span>/> <!-- Adds <span class="keyword">new</span> feature to subFamily --></div> +<div class="line"> <feature type=<span class="stringliteral">"Timer"</span> n=<span class="stringliteral">"7"</span> m=<span class="stringliteral">"32"</span> name=<span class="stringliteral">"General Purpose Timer"</span>/> <!-- Adds to settings from <family> --></div> +<div class="line"></div> +<div class="line"> </div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F407IE"</span>></div> +<div class="line"> <!-- Feature specific to <span class="keyword">this</span> device. All above features are inherited. --></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> n=<span class="stringliteral">"176"</span> name=<span class="stringliteral">"LQFP 176 24x24x1.4"</span>/></div> +<div class="line"> </device></div> +<div class="line"> </subFamily></div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"></package></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: feature"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>type </td><td>A feature (peripheral), such as <span class="XML-Token">CAN</span>, <span class="XML-Token">DMA</span>, <span class="XML-Token">I/O</span>, <span class="XML-Token">LCD</span>, etc. Predefined values must be used as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceFeatureTypeEnum">Device Feature Types</a>. </td><td>DeviceFeatureTypeEnum </td><td>required </td></tr> +<tr> +<td>n </td><td>Depends on the element <em><b>type</b>.</em> Check table <a class="el" href="pdsc_family_pg.html#DeviceFeatureTypeEnum">Device Feature Types</a>. </td><td>xs:decimal </td><td>optional </td></tr> +<tr> +<td>m </td><td>Depends on the elemen <em><b>type</b>.</em> Check table <a class="el" href="pdsc_family_pg.html#DeviceFeatureTypeEnum">Device Feature Types</a>. </td><td>xs:decimal </td><td>optional </td></tr> +<tr> +<td>name </td><td>Descriptive name of the feature. For example, "16-bit down counting timer". If omitted, the <b>Default Name</b> is used as described in the table <a class="el" href="pdsc_family_pg.html#DeviceFeatureTypeEnum">Device Feature Types</a>. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><br/> +</p> +<p><a class="anchor" id="DeviceFeatureTypeEnum"></a><b>Table: Device Feature Types</b></p> +<p>The table lists predefined device features (peripherals). </p> +<dl class="section note"><dt>Note</dt><dd>The attribute <em>name</em> of the element <a class="el" href="pdsc_family_pg.html#element_feature">/package/devices/family/.../feature</a> is a descriptive text for a feature. If <em>name</em> is omitted, then the <b>Default Name</b> is used.</dd></dl> +<table class="doxtable"> +<tr> +<th>type=</th><th>n=</th><th>m=</th><th>Default Name</th><th>Example</th><th>Example shown as </th></tr> +<tr> +<td>NVIC</td><td>Number of NVIC Interrupts</td><td>N/A</td><td>NVIC</td><td><feature type="NVIC" n="120" name="NVIC"/></td><td>NVIC with 120 interrupt sources </td></tr> +<tr> +<td>DMA</td><td>Number of DMA Channels</td><td>N/A</td><td>DMA</td><td><feature type="DMA" n="16" name="High-Speed DMA"/></td><td>16-channel High-Speed DMA </td></tr> +<tr> +<td>Crypto</td><td>Bitwidth, given as decimal Number (see example)</td><td>N/A</td><td>Cryptographic Engine</td><td><feature type="Crypto" n="128.256" name="HW accelerated AES Encryption Engine"/></td><td>128/256-bit HW accelerated AES Encryption Engine </td></tr> +<tr> +<td>RNG</td><td>Number of RNGs</td><td>N/A</td><td>Random Number Generator</td><td><feature type="RNG" name="True Random Number Generator"/></td><td>True Random Number Generator </td></tr> +<tr> +<td>CoreOther</td><td>Number of Features</td><td>N/A</td><td>Other Core Feature</td><td><feature type="CoreOther" n=1 name="96-bit Unique Identifier"/></td><td>1 x 96-bit Unique Identifier </td></tr> +<tr> +<td>Memory</td><td>Number of Bytes</td><td>N/A</td><td>Memory</td><td><feature type="Memory" n="128" name="EEPROM"/></td><td>128 byte EEPROM </td></tr> +<tr> +<td>MemoryOther</td><td>Number of Memories</td><td>N/A</td><td>Other Memory Type</td><td><feature type="MemoryOther" n="1" name="1 kB MRAM"/></td><td>1 x 1 kB MRAM </td></tr> +<tr> +<td>ExtBus</td><td>Bitwidth of Bus Interface</td><td>N/A</td><td>External Bus Interface</td><td><feature type="ExtBus" n="16" name="External Bus Interface for SRAM Communication"/></td><td>16-bit External Bus Interface for SRAM Communication </td></tr> +<tr> +<td>XTAL</td><td>Minimum Frequency in Hz</td><td>Maximum Frequency in Hz</td><td>External Crystal Oscillator</td><td><feature type="XTAL" n="4000000" m="25000000" name="External Crystal Oscillator"/></td><td>4 MHz .. 25 MHz External Crystal Oscillator </td></tr> +<tr> +<td>IntRC</td><td>Minimum Frequency in Hz</td><td>Maximum Frequency in Hz</td><td>Internal RC Oscillator</td><td><feature type="IntRC" n="16000000" name="Internal RC Oscillator with +/- 1% accuracy"/></td><td>16 MHz Internal RC Oscillator with +/- 1% accuracy </td></tr> +<tr> +<td>PLL</td><td>Number of PLLs</td><td>N/A</td><td>PLL</td><td><feature type="PLL" n="3" name="Internal PLL"/></td><td>3 Internal PLL </td></tr> +<tr> +<td>RTC</td><td>RTC Frequency</td><td>N/A</td><td>RTC</td><td><feature type="RTC" n="32000" name="Internal RTC"/></td><td>32 kHz Internal RTC </td></tr> +<tr> +<td>ClockOther</td><td>Number of Peripherals</td><td>N/A</td><td>Other Clock Peripheral</td><td><feature type="ClockOther" name="My special clock feature"/></td><td>My special clock feature </td></tr> +<tr> +<td>PowerMode</td><td>Number of Power Modes</td><td>N/A</td><td>Power Modes</td><td><feature type="Mode" n="3" name="Run, Sleep, Deep-Sleep"/></td><td>3 Power Modes: Run, Sleep, Deep-Sleep </td></tr> +<tr> +<td>VCC</td><td>Minimum Supply Voltage</td><td>Maximum Supply Voltage</td><td>Operating Voltage</td><td><feature type="VCC" n="1.8" m="3.6"/></td><td>1.8 V .. 3.6 V </td></tr> +<tr> +<td>Consumption</td><td>Minimum Power Consumption</td><td>Typical Power Consumption</td><td>Power Consumption</td><td><feature type="Consumption" n="0.00004" m="0.002" name="Ultra-Low Power Consumption"/></td><td>40 uW/MHz .. 2 mW/MHz Ultra-Low Power Consumption </td></tr> +<tr> +<td>PowerOther</td><td>Number of Features</td><td>N/A</td><td>Other Power Feature</td><td><feature type="PowerOther" n="1" name="POR"/></td><td>1 x POR </td></tr> +<tr> +<td>BGA</td><td>Number of Balls</td><td>N/A</td><td>BGA</td><td><feature type="BGA" n="256" name="Plastic Ball Grid Array"/></td><td>256-ball Plastic Ball Grid Array </td></tr> +<tr> +<td>CSP</td><td>Number of Leads</td><td>N/A</td><td>CSP</td><td><feature type="CSP" n="28" name="Wafer-Level Chip-Scale Package"/></td><td>28-ball Wafer-Level Chip-Scale Package </td></tr> +<tr> +<td>PLCC</td><td>Number of Leads</td><td>N/A</td><td>PLCC</td><td><feature type="PLCC" n="20" name="PLCC Package"/></td><td>20-lead PLCC Package </td></tr> +<tr> +<td>QFN</td><td>Number of Leads</td><td>N/A</td><td>QFN</td><td><feature type="QFN" n="33" name="QFN Package"/></td><td>33-pad QFN Package </td></tr> +<tr> +<td>QFP</td><td>Number of Leads</td><td>N/A</td><td>QFP</td><td><feature type="QFP" n="128" name="Low-Profile QFP Package"/></td><td>128-lead Low-Profile QFP Package </td></tr> +<tr> +<td>SOP</td><td>Number of Leads</td><td>N/A</td><td>SOP</td><td><feature type="SOP" n="16" name="SSOP Package"/></td><td>16-lead SSOP Package </td></tr> +<tr> +<td>DIP</td><td>Number of Leads</td><td>N/A</td><td>SOP</td><td><feature type="DIP" n="16" name="Dual In-Line Package"/></td><td>16-lead Dual In-Line Package </td></tr> +<tr> +<td>PackageOther</td><td>Number of Pins</td><td>N/A</td><td>Other Package Type</td><td><feature type="PackageOther" n="44" name="My other Package"/></td><td>44-contacts My other Package </td></tr> +<tr> +<td>IOs</td><td>Number of I/Os</td><td>N/A</td><td>Inputs/Outputs</td><td><feature type="IOs" n="112" name="General Purpose I/Os, 5V tolerant"/></td><td>112 General Purpose I/Os, 5V tolerant </td></tr> +<tr> +<td>ExtInt</td><td>Number of External Interrupts</td><td>N/A</td><td>External Interrupts</td><td><feature type="ExtInt" n="12"/></td><td>12 External Interrupts </td></tr> +<tr> +<td>Temp</td><td>Minimum Operating Temperature</td><td>Maximum Operating Temperature</td><td>Operating Temperature Range</td><td><feature type="Temp" n="-40" m="105" name="Extended Operating Temperature Range"/></td><td>-40 °C .. +105 °C Extended Operating Temperature Range </td></tr> +<tr> +<td>ADC</td><td>Number of Channels</td><td>Resolution in Bit</td><td>ADC</td><td><feature type="ADC" n="5" m="12" name="High-Performance ADC"/></td><td>5-channel x 12-bit High-Performance ADC </td></tr> +<tr> +<td>DAC</td><td>Number of Channels</td><td>Resolution in Bit</td><td>DAC</td><td><feature type="DAC" n="2" m="10"/></td><td>2 x 12-bit DAC </td></tr> +<tr> +<td>TempSens</td><td>Number of Sensors</td><td>N/A</td><td>Temperature Sensor</td><td><feature type="TempSens" n="1"/></td><td>1 x Temperature Sensor </td></tr> +<tr> +<td>AnalogOther</td><td>Number of Features</td><td>N/A</td><td>Other Analog Peripheral</td><td><feature type="AnalogOther" n="1" name="My Analog"/></td><td>1 x My Analog </td></tr> +<tr> +<td>Timer</td><td>Number of Channels</td><td>Resolution in Bit</td><td>Timer/Counter Module</td><td><feature type="Timer" n="2" m="32" name="Timer Module with Quadrature Encoding"/></td><td>2 x 32-bit Timer Module with Quadrature Encoding </td></tr> +<tr> +<td>PWM</td><td>Number of Channels</td><td>Resolution in Bit</td><td>PWM</td><td><feature type="PWM" n="2" m="16" name="Pulse Width Modulation"/></td><td>2 x 16-bit Pulse Width Modulation </td></tr> +<tr> +<td>WDT</td><td>Number of Watchdogs</td><td>N/A</td><td>Watchdog</td><td><feature type="WDT" n="1"/></td><td>1 x Watchdog Timer </td></tr> +<tr> +<td>TimerOther</td><td>Number of Features</td><td>N/A</td><td>Other Timer Peripheral</td><td><feature type="TimerOther" n="1" name="Quadrature En-/Decoder"/></td><td>1 x Quadrature En-/Decoder </td></tr> +<tr> +<td>MPSerial</td><td>Number of Serial Peripherals</td><td>N/A</td><td>Multi-Purpose Serial Peripheral</td><td><feature type="MPSerial" n="4" name="Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART"/></td><td>4 x Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART </td></tr> +<tr> +<td>CAN</td><td>Number of CAN Interfaces</td><td>N/A</td><td>CAN</td><td><feature type="CAN" n="2" name="CAN 2.0b Controller"/></td><td>2 x CAN 2.0b Controller </td></tr> +<tr> +<td>ETH</td><td>Number of Ethernet Interfaces</td><td>Data Rate in Bit/s</td><td>Ethernet</td><td><feature type="ETH" n="1" m="10000000" name="Integrated Ethernet MAC with PHY"/></td><td>1 x 10 Mbit/s Integrated Ethernet MAC with PHY </td></tr> +<tr> +<td>I2C</td><td>Number of I2C Interfaces</td><td>N/A</td><td>I2C</td><td><feature type="I2C" n="2"name="Low-Power I2C"/></td><td>2 x Low-Power I2C </td></tr> +<tr> +<td>I2S</td><td>Number of I2S Interfaces</td><td>N/A</td><td>I2S</td><td><feature type="I2S" n="3"/></td><td>3 x I2S </td></tr> +<tr> +<td>LIN</td><td>Number of LIN Interfaces</td><td>N/A</td><td>LIN</td><td><feature type="LIN" n="4"/></td><td>4 x LIN </td></tr> +<tr> +<td>SDIO</td><td>Number of SDIO Interfaces</td><td>Bitwidth of SDIO Interface</td><td>SDIO</td><td><feature type="SDIO" n="1" m="4" name="SDIO Interface"/></td><td>1 x 4-bit SDIO Interface </td></tr> +<tr> +<td>SPI</td><td>Number of SPI Interfaces</td><td>Data Rate in Bit/s</td><td>SPI</td><td><feature type="SPI" n="2" m="20000000" name="SPI Interface"/></td><td>2 x 20 Mbit/s SPI Interface </td></tr> +<tr> +<td>UART</td><td>Number of UART Interfaces</td><td>Data Rate in Bit/s</td><td>UART</td><td><feature type="UART" n="4" m="3000000" name="High-Speed UART Interface"/></td><td>4 x 3 Mbit/s High-Speed UART Interface </td></tr> +<tr> +<td>USART</td><td>Number of USART Interfaces</td><td>Data Rate in Bit/s</td><td>USART</td><td><feature type="USART" n="2" m="1000000" name="High-Speed USART Interface"/></td><td>2 x 1 Mbit/s High-Speed USART Interface </td></tr> +<tr> +<td>USBD</td><td>Number of USB Dvice Interfaces</td><td>N/A</td><td>USB Device</td><td><feature type="USBD" n="2" name="Full-Speed USB Device"/></td><td>2 x Full-Speed USB Device </td></tr> +<tr> +<td>USBH</td><td>Number of USB Host Interfaces</td><td>N/A</td><td>USB Host</td><td><feature type="USBH" n="2" name="High-Speed USB Host"/></td><td>2 x High-Speed USB Host </td></tr> +<tr> +<td>USBOTG</td><td>Number of USB OTG Interfaces</td><td>N/A</td><td>USB OTG</td><td><feature type="USBOTG" n="1" name="High-Speed USB OTG with PHY"/></td><td>1 x High-Speed USB OTG with PHY </td></tr> +<tr> +<td>ComOther</td><td>Number of other Communication Peripherals</td><td>N/A</td><td>Other Communication Peripheral</td><td><feature type="ComOther" n="1" name="ZigBee"/></td><td>1 x ZigBee </td></tr> +<tr> +<td>Camera</td><td>Number of Camera Interface</td><td>Resolution in Bit</td><td>Camera Interface</td><td><feature type="Camera" n="1" m="8" name="Digital Camera Interface"/></td><td>1 x 8-bit Digital Camera Interface </td></tr> +<tr> +<td>GLCD</td><td>Number of Graphic LCD Controller</td><td>Maximum Resolution as a decimal number (see example)</td><td>Graphic LCD Controller</td><td><feature type="GLCD" n="1" m="320.240" name="TFT LCD Controller"/></td><td>1 x 320 x 480 pixel TFT LCD Controller </td></tr> +<tr> +<td>LCD</td><td>Number of Segment LCD Controller</td><td>Com.Seg as a decimal number (see example)</td><td>Segment LCD Controller</td><td><feature type="LCD" n="1" m="16.40" name="Segment LCD Controller"/></td><td>1 x 16 x 40 Segment LCD Controller </td></tr> +<tr> +<td>Touch</td><td>Number of Touch Channels</td><td>N/A</td><td>Capacitive Touch Inputs</td><td><feature type="Touch" n="10" name="Capacitive Touch Inputs"/></td><td>10 x Capacitive Touch Inputs </td></tr> +<tr> +<td>Other</td><td>Number of Features</td><td>N/A</td><td>Other Feature</td><td><feature type="Other" n="2" name="My other Interface"/></td><td>2 x My other Interface </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_memory"></a> +/package/devices/family/.../memory</h1> +<p>This element specifies memory regions that devices can have. Memory types are predefined and can be selected. This element can be defined on various levels. Inner memory elements supersede outer elements.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"></package></div> +<div class="line"> ...</div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"SRAM"</span> access=<span class="stringliteral">"rwx"</span> start=<span class="stringliteral">"0x20000000"</span> size=<span class="stringliteral">"0x20000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"></div> +<div class="line"> <subFamily DsubFamily=<span class="stringliteral">"STM32F407"</span>></div> +<div class="line"> <debug __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> svd=<span class="stringliteral">"SVD/STM32F40x.svd"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"SRAM1"</span> access=<span class="stringliteral">"rwx"</span> start=<span class="stringliteral">"0x20020000"</span> size=<span class="stringliteral">"0x20000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <memory name=<span class="stringliteral">"SRAM2"</span> access=<span class="stringliteral">"rwx"</span> start=<span class="stringliteral">"0x10000000"</span> size=<span class="stringliteral">"0x10000"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <device Dname=<span class="stringliteral">"STM32F407IE"</span>></div> +<div class="line"> <memory name=<span class="stringliteral">"Flash"</span> access=<span class="stringliteral">"rx"</span> start=<span class="stringliteral">"0x08000000"</span> size=<span class="stringliteral">"0x80000"</span> startup=<span class="stringliteral">"1"</span> <span class="keywordflow">default</span>=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> </subFamily></div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: memory"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>id (deprecated in Version 1.4.0) </td><td>(deprecated Version 1.4.0) Identifier of the memory region consisting of a type indicator and an index (for example, <span class="XML-Token">IRAM1</span>). Predefind values can be selected as defined in <a class="el" href="pdsc_family_pg.html#MemoryIDTypeEnum">MemoryIDTypeEnum</a>. </td><td>MemoryIDTypeEnum </td><td>optional </td></tr> +<tr> +<td>name (new in Version 1.4.0) </td><td>unique name of the memory (new in Version 1.4.0) to be used in conjunction with <em>access</em> </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>access (new in Version 1.4.0) </td><td>access permission of the memory. See MemoryAccessTypeString for details (new in Version 1.4.0). </td><td><a class="el" href="pdsc_family_pg.html#MemoryAccessTypeString">MemoryAccessTypeString</a> </td><td>optional </td></tr> +<tr> +<td>start </td><td>Base address of the memory using a hexadecimal value. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>size </td><td>Size of the memory in bytes using a hexadecimal value. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>default </td><td>Indicates a general purpose memory region, that does not require any special considerations (access speed, remapping, protection, etc.). If <span class="XML-Token">true</span>, then an IRAM memory region will be used by the linker for locating any data and an IROM memory region will for locating any code. Every device needs at least one default IRAM region. If an <a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a> element is specified (without <code>RAMstart</code> and <code>RAMsize</code> attributes), the first listed IRAM region with default="1" will also be used for executing the flash programming algorithm. Default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>startup </td><td>If <span class="XML-Token">true</span>, the startup code of the application will be placed into this memory region. Default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>alias(new in Version 1.4.0) </td><td>reference to another memory description which shares the same physical memory. Some physical memory is made accessible via different addresses, for example, chached vs. non-cached accesses. This avoids the impression that the device has twice as much memory available. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><br/> + <a class="anchor" id="MemoryIDTypeEnum"></a><b>Table: Memory ID Types</b></p> +<p>The table lists identifiers for memory types. </p> +<table class="cmtable" summary="Enumeration: MemoryIDTypeEnum"> +<tr> +<th>id= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">RAM<em>x</em> </td><td>External RAM. <em>x</em> can have a value between 1..8 </td></tr> +<tr> +<td class="XML-Token">ROM<em>x</em> </td><td>External ROM. <em>x</em> can have a value between 1..8 </td></tr> +<tr> +<td class="XML-Token">IRAM<em>x</em> </td><td>Internal RAM. <em>x</em> can have a value between 1..8 </td></tr> +<tr> +<td class="XML-Token">IROM<em>x</em> </td><td>Internal ROM. <em>x</em> can have a value between 1..8 </td></tr> +</table> +<p> </p> +<hr/> +<p><a class="anchor" id="MemoryAccessTypeString"></a><b>Table: Memory Access Attribute String</b></p> +<p>The table lists the letters and their meaning for use in the access attribute string. The values can be used in:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_memory">/package/devices/family/.../memory</a></li> +<li><a class="el" href="cpdsc_pg.html#element_target_memory">/package/create/project/target/memory</a></li> +</ul> +<table class="cmtable" summary="Memory Access Permission Attributes"> +<tr> +<th>access= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">r </td><td><em>R</em>eadable </td></tr> +<tr> +<td class="XML-Token">w </td><td><em>W</em>ritable </td></tr> +<tr> +<td class="XML-Token">x </td><td>e<em>X</em>ecutable </td></tr> +<tr> +<td class="XML-Token">p </td><td><em>P</em>eripheral area. Details described in SVD. </td></tr> +<tr> +<td class="XML-Token">s </td><td><em>S</em>ecure attribute </td></tr> +<tr> +<td class="XML-Token">n </td><td><em>N</em>on-secure attribute </td></tr> +<tr> +<td class="XML-Token">c </td><td>non-secure <em>C</em>allable attribute </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_processor"></a> +/package/devices/family/.../processor</h1> +<p>Specifies attributes of the device processor. The element can occur on various levels. The attributes add-up over the different levels (family -> subFamily -> device). Elements of multi-processor devices can be associated with a specific processor using the attribute <b><Pname></b>. If the information is relevant to all processors, no processor must be specified in <b><Pname></b>.</p> +<p><b>Example</b> <b>1</b> </p> +<div class="fragment"><div class="line"><package></div> +<div class="line"> ...</div> +<div class="line"> <devices></div> +<div class="line"> <family Dfamily=<span class="stringliteral">"K20 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-M4"</span> DcoreVersion=<span class="stringliteral">"r0p1"</span>/></div> +<div class="line"> <!-- ****************************** MK20DN128xxx5 ****************************** --></div> +<div class="line"> <device Dname=<span class="stringliteral">"MK20DN128xxx5"</span>></div> +<div class="line"> <processor Dfpu=<span class="stringliteral">"0"</span> Dmpu=<span class="stringliteral">"0"</span> Dendian=<span class="stringliteral">"Little-endian"</span> Dclock=<span class="stringliteral">"50000000"</span>/></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"> </family></div> +<div class="line"> </devices></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --><p><b>Example</b> <b>2</b> </p> +<div class="fragment"><div class="line"><device name=<span class="stringliteral">"MCIMX7D"</span>></div> +<div class="line"> ...</div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-A7"</span> DcoreVersion=<span class="stringliteral">"r0p5"</span> Pname=<span class="stringliteral">"Cortex-A7"</span> Punits=<span class="stringliteral">"2"</span> /></div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-M4"</span> DcoreVersion=<span class="stringliteral">"r0p1"</span> Pname=<span class="stringliteral">"Cortex-M4"</span>/></div> +<div class="line"> ...</div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-A7"</span> Punit=<span class="stringliteral">"0"</span> svd=<span class="stringliteral">"SVD/iMX7D_A7.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"1"</span> address=<span class="stringliteral">"0x80070000"</span>/> </div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-A7"</span> Punit=<span class="stringliteral">"1"</span> svd=<span class="stringliteral">"SVD/iMX7D_A7.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"1"</span> address=<span class="stringliteral">"0x80072000"</span>/></div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-M4"</span> svd=<span class="stringliteral">"SVD/iMX7D_M4.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"4"</span>/></div> +<div class="line"> ...</div> +<div class="line"></device></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: processor"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. Each processor needs a unique identifier and must be used consistently in the <b>Pname</b> attribute of the elements within the scope of the current device family section. Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>required for all multi-core devices </td></tr> +<tr> +<td>Punits </td><td>Specifies the number of processor units in a symmetric multi-processor core (MPCore). Defaults to single-core CPU (<span class="XML-Token">1</span>) when left empty. </td><td>InstancesType </td><td>required for all multi-core devices </td></tr> +<tr> +<td>Dcore </td><td>Specifies the processor core. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DcoreEnum">Device Cores</a>. </td><td>DcoreEnum </td><td>required </td></tr> +<tr> +<td>Dfpu </td><td>Specifies whether a hardware Floating Point Unit is present in the processor. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DfpuEnum">Device FPU</a>. </td><td>DfpuEnum </td><td>required </td></tr> +<tr> +<td>Dmpu </td><td>Specifies whether a Memory Protection Unit is present in the processor. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DmpuEnum">Device MPU</a>. </td><td>DmpuEnum </td><td>required </td></tr> +<tr> +<td>Dtz </td><td>Specifies whether an Armv8-M based device implements TrustZone. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DtzEnum">Device TZ</a>. </td><td>DtzEnum </td><td>required for ARMv8-M based devices </td></tr> +<tr> +<td>Ddsp </td><td>Specifies whether a device supports the DSP instructions set. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DdspEnum">Device DSP</a>. </td><td>DdspEnum </td><td>required </td></tr> +<tr> +<td>Dendian </td><td>Specifies the endianess of the processor. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DendianEnum">Endinaness</a>. </td><td>DendianEnum </td><td>required </td></tr> +<tr> +<td>Dclock </td><td>Specifies the max clock frequency of the processor subsystem </td><td>xs:unsignedInt </td><td>required </td></tr> +<tr> +<td>DcoreVersion </td><td>Hardware revision of the processor core </td><td>xs:string </td><td>required </td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd>While the different attributes can be spreaded over the family levels, they add-up and at the leaf (device level), a complete set of attributes should be present (at least Dcore, Dfpu, Dmpu, Ddsp, Dendian, Dclock, and DcoreVersion). Adding-up means that you can overwrite previous attributes on the next level. For example, if you have a subFamily that has a general Dclock of 50000000 (50 Mhz), you can still specify for one of the subFamily members a different Dclock (such as 66000000).</dd></dl> +<p> </p> +<p><a class="anchor" id="DeviceVendorEnum"></a><b>Table: Device Vendors</b></p> +<p>The table lists predefined values representing device vendors. The list is extended from time to time (on request by new vendors). Contact <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a> to ask for an extension. These values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_boards_pg.html#element_board_mountedDevice">/package/boards/board/mountedDevice</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_examples_pg.html#element_example_board">/package/examples/example/board</a></li> +<li><a class="el" href="pdsc_boards_pg.html#element_board_compatibleDevice">/package/boards/board/compatibleDevice</a></li> +<li><a class="el" href="pdsc_generators_pg.html#element_gen_select">/package/generators/generator/select</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DeviceVendorEnum"> +<tr> +<th>Dvendor </th><th>Description </th><th>Web Link </th></tr> +<tr> +<td class="XML-Token">ABOV Semiconductor:126 </td><td>ABOV Semiconductor </td><td><a href="http://www.abov.co.kr/en/">http://www.abov.co.kr/en/</a> </td></tr> +<tr> +<td class="XML-Token">Active-Semi:140 </td><td>Active-Semi </td><td><a href="http://www.active-semi.com">http://www.active-semi.com</a> </td></tr> +<tr> +<td class="XML-Token">Ambiq Micro:120 </td><td>Ambiq Micro </td><td><a href="http://www.ambiqmicro.com">http://www.ambiqmicro.com</a> </td></tr> +<tr> +<td class="XML-Token">Amiccom:147 </td><td>Amiccom </td><td><a href="http://www.amiccom.com.tw">http://www.amiccom.com.tw</a> </td></tr> +<tr> +<td class="XML-Token">Analog Devices:1 </td><td>Analog Devices </td><td><a href="http://www.analog.com">http://www.analog.com</a> </td></tr> +<tr> +<td class="XML-Token">ARM:82 </td><td>ARM Ltd. </td><td><a href="http://www.arm.com">http://www.arm.com</a> </td></tr> +<tr> +<td class="XML-Token">ArteryTek:143 </td><td>ArteryTek </td><td><a href="http://www.arterytek.com">http://www.arterytek.com</a> </td></tr> +<tr> +<td class="XML-Token">Atmel:3 </td><td>Atmel Corporation (now Microchip) </td><td><a href="http://www.microchip.com">http://www.microchip.com</a> </td></tr> +<tr> +<td class="XML-Token">Autochips:150 </td><td>Autochips Inc. </td><td><a href="http://www.autochips.com/en/index.php">http://www.autochips.com/en/index.php</a> </td></tr> +<tr> +<td class="XML-Token">CSR:118 </td><td>CSR </td><td><a href="http://www.csr.com">http://www.csr.com</a> </td></tr> +<tr> +<td class="XML-Token">Cypress:19 </td><td>Cypress Semiconductor </td><td><a href="http://www.cypress.com">http://www.cypress.com</a> </td></tr> +<tr> +<td class="XML-Token">Dialog Semiconductor:113 </td><td>Dialog Semiconductor </td><td><a href="http://www.dialog-semiconductor.com">http://www.dialog-semiconductor.com</a> </td></tr> +<tr> +<td class="XML-Token">Elmos Semiconductor AG:138 </td><td>Elmos Semiconductor AG </td><td><a href="http://www.elmos.com">http://www.elmos.com</a> </td></tr> +<tr> +<td class="XML-Token">Generic:5 </td><td>Generic: Not a vendor specific device </td><td></td></tr> +<tr> +<td class="XML-Token">Generalplus:151 </td><td>Generalplus Technology Inc. </td><td><a href="http://www.generalplus.com">http://www.generalplus.com</a> </td></tr> +<tr> +<td class="XML-Token">GigaDevice:123 </td><td>GigaDevice </td><td><a href="http://www.gigadevice.com">http://www.gigadevice.com</a> </td></tr> +<tr> +<td class="XML-Token">HDSC:145 </td><td>HUADA Semiconductor </td><td><a href="http://www.hdsc.com.cn">http://www.hdsc.com.cn</a> </td></tr> +<tr> +<td class="XML-Token">Hilscher:88 </td><td>Hilscher Gesellschaft für Systemautomation mbH </td><td><a href="http://www.hilscher.com">http://www.hilscher.com</a> </td></tr> +<tr> +<td class="XML-Token">Holtek:106 </td><td>Holtek Microelectronics </td><td><a href="http://www.holtek.com.tw">http://www.holtek.com.tw</a> </td></tr> +<tr> +<td class="XML-Token">Infineon:7 </td><td>Infineon Technologies </td><td><a href="http://www.infineon.com">http://www.infineon.com</a> </td></tr> +<tr> +<td class="XML-Token">Lapis Semiconductor:10 </td><td>Lapis Semiconductor </td><td><a href="http://www.lapis-semi.com">http://www.lapis-semi.com</a> </td></tr> +<tr> +<td class="XML-Token">Linear Technolgy:136 </td><td>Linear Technolgy </td><td><a href="http://www.linear.com/">http://www.linear.com/</a> </td></tr> +<tr> +<td class="XML-Token">Maxim:23 </td><td>Maxim Integrated </td><td><a href="http://www.maximintegrated.com">http://www.maximintegrated.com</a> </td></tr> +<tr> +<td class="XML-Token">MediaTek:129 </td><td>MediaTek </td><td><a href="http://www.mediatek.com">http://www.mediatek.com</a> </td></tr> +<tr> +<td class="XML-Token">MegaChips:128 </td><td>MegaChips </td><td><a href="http://www.megachips.com">http://www.megachips.com</a> </td></tr> +<tr> +<td class="XML-Token">Megawin:70 </td><td>Megawin </td><td><a href="http://www.megawin.com.tw">http://www.megawin.com.tw</a> </td></tr> +<tr> +<td class="XML-Token">Microchip:3 </td><td>Microchip (previously Atmel) </td><td><a href="http://www.microchip.com">http://www.microchip.com</a> </td></tr> +<tr> +<td class="XML-Token">MicroSemi:112 </td><td>Microsemi </td><td><a href="http://www.microsemi.com">http://www.microsemi.com</a> </td></tr> +<tr> +<td class="XML-Token">Milandr:99 </td><td>Milandr </td><td><a href="http://www.milandr.ru">http://www.milandr.ru</a> </td></tr> +<tr> +<td class="XML-Token">MindMotion:132 </td><td>MindMotion </td><td><a href="http://www.mindmotion.com.cn">http://www.mindmotion.com.cn</a> </td></tr> +<tr> +<td class="XML-Token">Nordic Semiconductor:54 </td><td>Nordic Semiconductor </td><td><a href="http://www.nordicsemi.com">http://www.nordicsemi.com</a> </td></tr> +<tr> +<td class="XML-Token">Nuvoton:18 </td><td>Nuvoton Technolgy Corp. </td><td><a href="http://www.nuvoton.com">http://www.nuvoton.com</a> </td></tr> +<tr> +<td class="XML-Token">NXP:11 </td><td>NXP </td><td><a href="http://www.nxp.com">http://www.nxp.com</a> </td></tr> +<tr> +<td class="XML-Token">ONSemiconductor:141 </td><td>ON Semiconductor </td><td><a href="https://www.onsemi.com">https://www.onsemi.com</a> </td></tr> +<tr> +<td class="XML-Token">Panasonic:131 </td><td>Panasonic </td><td><a href="http://www.panasonic.com/industrial">http://www.panasonic.com/industrial</a> </td></tr> +<tr> +<td class="XML-Token">Realtek Semiconductor:124 </td><td>Realtek Semiconductor </td><td><a href="http://www.realtek.com.tw">http://www.realtek.com.tw</a> </td></tr> +<tr> +<td class="XML-Token">Redpine Signals:125 </td><td>Repine Signals </td><td><a href="http://www.redpinesignals.com">http://www.redpinesignals.com</a> </td></tr> +<tr> +<td class="XML-Token">RelChip:146 </td><td>RelChip </td><td><a href="http://www.relchip.com/">http://www.relchip.com/</a> </td></tr> +<tr> +<td class="XML-Token">Renesas:117 </td><td>Renesas </td><td><a href="http://www.renesas.com">http://www.renesas.com</a> </td></tr> +<tr> +<td class="XML-Token">ROHM:103 </td><td>ROHM </td><td><a href="http://www.rohm.com">http://www.rohm.com</a> </td></tr> +<tr> +<td class="XML-Token">Samsung:47 </td><td>Samsung Semiconductor </td><td><a href="http://www.samsung.com">http://www.samsung.com</a> </td></tr> +<tr> +<td class="XML-Token">Silergy Corp:139 </td><td>Silergy Corporation </td><td><a href="http://silergy.com/">http://silergy.com/</a> </td></tr> +<tr> +<td class="XML-Token">Silicon Labs:21 </td><td>Silicon Labs </td><td><a href="http://www.silabs.com">http://www.silabs.com</a> </td></tr> +<tr> +<td class="XML-Token">Sinowealth:149 </td><td>Sino Wealth Electronic Ltd. </td><td><a href="http://www.sinowealth.com">http://www.sinowealth.com</a> </td></tr> +<tr> +<td class="XML-Token">Spansion:100 </td><td>Spansion (previously Fujitsu) </td><td><a href="http://www.spansion.com">http://www.spansion.com</a> </td></tr> +<tr> +<td class="XML-Token">STMicroelectronics:13 </td><td>STMicroelectronics </td><td><a href="http://www.st.com">http://www.st.com</a> </td></tr> +<tr> +<td class="XML-Token">Synwit:144 </td><td>Synwit Technology Co.,LTD. </td><td><a href="http://www.synwit.cn">http://www.synwit.cn</a> </td></tr> +<tr> +<td class="XML-Token">Texas Instruments:16 </td><td>Texas Instruments </td><td><a href="http://www.ti.com">http://www.ti.com</a> </td></tr> +<tr> +<td class="XML-Token">Toshiba:92 </td><td>Toshiba Semiconductor </td><td><a href="http://toshiba.semicon-storage.com">http://toshiba.semicon-storage.com</a> </td></tr> +<tr> +<td class="XML-Token">Triad Semiconductor:104 </td><td>Triad Semiconductor </td><td><a href="http://www.triadsemi.com">http://www.triadsemi.com</a> </td></tr> +<tr> +<td class="XML-Token">Vorago:137 </td><td>Vorago Technologies </td><td><a href="http://www.voragotech.com">http://www.voragotech.com</a> </td></tr> +<tr> +<td class="XML-Token">WIZnet:122 </td><td>WIZnet </td><td><a href="http://www.wiznet.co.kr">http://www.wiznet.co.kr</a> </td></tr> +<tr> +<td class="XML-Token">Xinnova:135 </td><td>Xinnova Technology </td><td><a href="http://www.xinnovatech.com/en">http://www.xinnovatech.com/en</a> </td></tr> +<tr> +<td class="XML-Token">Zilog:89 </td><td>Zilog </td><td><a href="http://zilog.com/">http://zilog.com/</a> </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="AlgorithmStyleEnum"></a><b>Table: Algorithm Styles</b></p> +<p>The table lists the predefined Flash algorithm style. These values can be used in:</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_algorithm">/package/devices/family/.../algorithm</a></li> +<li><a class="el" href="cpdsc_pg.html#element_target_algorithm">/package/create/project/target/algorithm</a></li> +</ul> +<table class="cmtable" summary="Enumeration: AlgorithmStyleEnum"> +<tr> +<th>style= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">Keil </td><td><a class="el" href="flashAlgorithm.html">Flash Programming</a> as defined by Arm/Keil </td></tr> +<tr> +<td class="XML-Token">IAR </td><td>Flash Programming Algorithm as defined by IAR </td></tr> +<tr> +<td class="XML-Token">CMSIS </td><td><p class="starttd">To be agreed under CMSIS </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DcoreEnum"></a><b>Table: Device Cores</b></p> +<p>The table lists available device cores. The list is extended from time to time to reflect new processor cores. These values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DcoreEnum"> +<tr> +<th>Dcore= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">Cortex-M0 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m0" target="_blank">Arm Cortex-M0</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M0+ </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m0-plus" target="_blank">Arm Cortex-M0+</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M1 </td><td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m1.php" target="_blank">Arm Cortex-M1</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M3 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m3" target="_blank">Arm Cortex-M3</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M4 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m4" target="_blank">Arm Cortex-M4</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M7 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m7" target="_blank">Arm Cortex-M7</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M23 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m23" target="_blank">Arm Cortex-M23</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-M33 </td><td><a href="http://developer.arm.com/products/processors/cortex-m/cortex-m33" target="_blank">Arm Cortex-M33</a> processor based device </td></tr> +<tr> +<td class="XML-Token">SC000 </td><td>SecurCore <a href="http://developer.arm.com/products/processors/cortex-m/sc000-processor" target="_blank">SC000</a> based on technology of Cortex-M0. </td></tr> +<tr> +<td class="XML-Token">SC300 </td><td>SecurCore <a href="http://developer.arm.com/products/processors/cortex-m/sc300-processor" target="_blank">SC300</a> based on technology of Cortex-M3. </td></tr> +<tr> +<td class="XML-Token">ARMV8MBL </td><td>Processor <a href="http://developer.arm.com/products/architecture/m-profile" target="_blank">ArmV8MBL</a> compliant with the Armv8-M Baseline Architecture. </td></tr> +<tr> +<td class="XML-Token">ARMV8MML </td><td>Processor <a href="http://developer.arm.com/products/architecture/m-profile" target="_blank">ArmV8MML</a> compliant with the Armv8-M Mainline Architecture. </td></tr> +<tr> +<td class="XML-Token">Cortex-R4 </td><td><a href="http://developer.arm.com/products/processors/cortex-r/cortex-r4" target="_blank">Arm Cortex-R4</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-R5 </td><td><a href="http://developer.arm.com/products/processors/cortex-r/cortex-r5" target="_blank">Arm Cortex-R5</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-R7 </td><td><a href="http://developer.arm.com/products/processors/cortex-r/cortex-r7" target="_blank">Arm Cortex-R7</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-R8 </td><td><a href="http://developer.arm.com/products/processors/cortex-r/cortex-r8" target="_blank">Arm Cortex-R8</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A5 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a5" target="_blank">Arm Cortex-A5</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A7 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a7" target="_blank">Arm Cortex-A7</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A8 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a8" target="_blank">Arm Cortex-A8</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A9 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a9" target="_blank">Arm Cortex-A9</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A15 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a15" target="_blank">Arm Cortex-A15</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A17 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a17" target="_blank">Arm Cortex-A17</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A32 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a32" target="_blank">Arm Cortex-A32</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A35 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a35" target="_blank">Arm Cortex-A35</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A53 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a53" target="_blank">Arm Cortex-A53</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A57 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a57" target="_blank">Arm Cortex-A57</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A72 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a72" target="_blank">Arm Cortex-A72</a> processor based device </td></tr> +<tr> +<td class="XML-Token">Cortex-A73 </td><td><a href="http://developer.arm.com/products/processors/cortex-a/cortex-a73" target="_blank">Arm Cortex-A73</a> processor based device </td></tr> +<tr> +<td class="XML-Token">* </td><td>Device based on any processor </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DfpuEnum"></a><b>Table: Device FPU</b></p> +<p>The table lists values that identicate whether a CPU has an Floating Point Unit (FPU). The tokens can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +<li><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DfpuEnum"> +<tr> +<th>Dfpu= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">NO_FPU </td><td>Hardware Floating Point Unit not present </td></tr> +<tr> +<td class="XML-Token">FPU </td><td>Hardware Floating Point Unit present </td></tr> +<tr> +<td class="XML-Token">SP_FPU </td><td>Single Precision Hardware Floating Point Unit present </td></tr> +<tr> +<td class="XML-Token">DP_FPU </td><td>Double Precision Hardware Floating Point Unit present </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DmpuEnum"></a><b>Table: Device MPU</b></p> +<p>The table shows predefined values that identify whether a CPU has an Memory Protection Unit (MPU). The values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +<li><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DmpuEnum"> +<tr> +<th>Dmpu= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">MPU </td><td>Memory Protection Unit is present </td></tr> +<tr> +<td class="XML-Token">NO_MPU </td><td>No Memory Protection Unit is present </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DtzEnum"></a><b>Table: Device Trust Zone </b></p> +<p>The table shows predefined values that identify whether a CPU implements TrustZone(TZ). The values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DtzEnum"> +<tr> +<th>Dtz= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">TZ </td><td>TrustZone is present </td></tr> +<tr> +<td class="XML-Token">NO_TZ </td><td>No TrustZone is present </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DsecureEnum"></a><b>Table: Software Model Secure </b></p> +<p>The table shows predefined values that identify whether an application will run in secure mode. The values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DsecureEnum"> +<tr> +<th>Dsecure= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">Secure </td><td>Application is built to run in secure mode </td></tr> +<tr> +<td class="XML-Token">Non-secure </td><td>Application is built to run in non-secure mode </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DdspEnum"></a><b>Table: Device implements DSP Instructions</b></p> +<p>The table shows predefined values that identify whether a CPU implements DSP instructions (DSP). The values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DdspEnum"> +<tr> +<th>Ddsp= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">DSP </td><td>DSP instructions supported </td></tr> +<tr> +<td class="XML-Token">NO_DSP </td><td>No DSP instructions supported </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DendianEnum"></a><b>Table: Endianness</b></p> +<p>The table lists values representing the endianness of a device. The values can be used in the elements:</p> +<ul> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li> +<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li> +<li><a class="el" href="pdsc_family_pg.html#element_processor">/package/devices/family/.../processor</a></li> +<li><a class="el" href="cpdsc_pg.html#cpdsc_target_pg">/package/create/project/target</a></li> +<li><a class="el" href="cpdsc_pg.html#element_target_algorithm">/package/create/project/target/algorithm</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DendianEnum"> +<tr> +<th>Dendian= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">Little-endian </td><td>The least significant byte of a multi-byte access is located at the specified address. </td></tr> +<tr> +<td class="XML-Token">Big-endian </td><td>The most significant byte of a multi-byte access is located at the specified address. </td></tr> +<tr> +<td class="XML-Token">Configurable </td><td>The byte ordering of multi-byte accesses is configurable. </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_debugconfig"></a> +/package/devices/family/.../debugconfig</h1> +<p>Default debugger configuration for a target connection.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugconfig <span class="keywordflow">default</span>=<span class="stringliteral">"jtag"</span> clock=<span class="stringliteral">"10000000"</span> swj=<span class="stringliteral">"1"</span> sdf=<span class="stringliteral">"Debug/SDF/lpc4300.sdf"</span>/></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: debugconfig"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>default </td><td>Specifies the default debug protocol to use for target connections. Predefined tokens must be used as defined in <a class="el" href="pdsc_family_pg.html#DebugProtocolEnum">Table: Debug Protocol Type</a>. Default value is <span class="XML-Token">swd</span>. </td><td>DebugProtocolEnum </td><td>optional </td></tr> +<tr> +<td>clock </td><td>Specifies the default debug clock setting in Hz for a target connection. Default value is <span class="XML-Token">10000000</span>. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>swj </td><td>The device is accessed via a CoreSight SWJ-DP capable of switching between Serial Wire Debug (SWD) and JTAG protocols. Default value is <span class="XML-Token">true</span>. </td><td>xs:bool </td><td>optional </td></tr> +<tr> +<td>sdf </td><td>This attribute specifies the filename and path of the system description file (SFD). The system description file contains information about CoreSight components, there versions and how they are interconnected and hooked to debug and access ports. If not specified an autodetection needs to be initiated by the debugger at connection time. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DebugProtocolEnum"></a><b>Table: Debug Protocol Type</b></p> +<p>The table lists the values for debug protocol types. The values can be used in</p> +<ul> +<li><a class="el" href="pdsc_family_pg.html#element_debugconfig">/package/devices/family/.../debugconfig</a></li> +<li><a class="el" href="cpdsc_pg.html#element_debugProbe">/package/create/project/target/debugProbe</a></li> +</ul> +<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum"> +<tr> +<th>type= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">jtag </td><td>JTAG debug protocol. </td></tr> +<tr> +<td class="XML-Token">swd </td><td>Arm Serial Wire Debug (SWD) protocol. </td></tr> +<tr> +<td class="XML-Token">cjtag </td><td>CJTAG concurrent jtag debug protocol. </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_debugvars"></a> +/package/devices/family/.../debugvars</h1> +<p>Specify <a class="el" href="debug_description.html#DebugVars">global debug access variables</a>. Use these in addition to the <a class="el" href="debug_description.html#PredefinedDebugVars">pre-defined variables</a> in order to query settings from a debug access sequences.<br/> + <br/> + Define debug access variables with statements of the following form. </p> +<div class="fragment"><div class="line">__var uservar = value; <span class="comment">// Comment: Define "uservar" and initialize to "value"</span></div> +</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd><ul> +<li>Initialization values must be constant unsigned numbers. No expressions are allowed.</li> +<li>User-defined debug access variables are <b>read-only</b> in a debug access sequence.</li> +<li>Pre-defined debug access variables cannot be set in this element.</li> +</ul> +</dd></dl> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"EFM32WG Series"</span> Dvendor=<span class="stringliteral">"Energy Micro:97"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugvars configfile=<span class="stringliteral">"Debug/EFM32WGxxx.dbgconf"</span> version=<span class="stringliteral">"1.0"</span>></div> +<div class="line"> </div> +<div class="line"> __var __TPIU_pinlocation = 0; <span class="comment">// Select one of four possible TPIU pin locations</span></div> +<div class="line"> </div> +<div class="line"> __var __SWO_pinlocation = 0; <span class="comment">// Select one of four possible SWO pin locations</span></div> +<div class="line"> </div> +<div class="line"> </debugvars></div> +<div class="line"> ...</div> +<div class="line"> <sequences></div> +<div class="line"> <sequence name=<span class="stringliteral">"TraceStart"</span>></div> +<div class="line"> ...</div> +<div class="line"> <block <span class="keywordflow">if</span>=<span class="stringliteral">"__TPIU_pinlocation == 2"</span>></div> +<div class="line"> ...</div> +<div class="line"> <!-- Configure device to use pins as defined <span class="keywordflow">for</span> TPIU pin location 2 --></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> </sequences></div> +<div class="line"> ...</div> +<div class="line"> <debug __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span>/></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: debugvars"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>configfile </td><td>Configuration file with path relative to the package base folder (extension *.DBGCONF). This file contains assignments of a default value to global debug access variables. This file gets copied to the project folder and is editable by the end-user. This file is read by the debugger after processing the global debug access variables. By editing the values of the debug access variables, the end-user effectively controls the behavior of sequences. The file can only assign new values but must not specify any new debug access variables. <a class="el" href="configWizard.html">Configuration Wizard Annotations</a> shall be used within the file to provide a graphical user interface for editing configuration options. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html#VersionType">version</a> </td><td>Version refers to the file version of the configfile attribute. If a configfile is specified the version attribute becomes mandatory. The version shall be incremented if any changes have been made to the global debug access variable names or default values. Based on the version information the tool environment will load a configfile with the version required by the debug description. The end-user may be required to update the settings after updating to a new version. </td><td><a class="el" href="pdsc_package_pg.html#VersionType">VersionType</a> </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set for this <b>debugvars</b> element, the debug access variables and <b>configfile</b> of this element are only valid for a debug connection to the referenced processor. Otherwise, they are valid for all processors. <b>This attribute must be set if defining multiple <em>debugvars</em> sections for a device.</b> Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +</table> +<p> </p> +<p><b>Example:</b> Configuration File </p> +<div class="fragment"><div class="line"><span class="comment">// File: EFM32WGxxx.dbgconf </span></div> +<div class="line"><span class="comment">// Version: 1.0</span></div> +<div class="line"><span class="comment">// <<< Use Configuration Wizard in Context Menu >>></span></div> +<div class="line"><span class="comment">// <h>Trace Pin Setup</span></div> +<div class="line"> <span class="comment">// <o> TPIU Pin Location</span></div> +<div class="line"><span class="comment">// <0=> Pin Location 0</span></div> +<div class="line"><span class="comment">// <1=> Pin Location 1</span></div> +<div class="line"><span class="comment">// <2=> Pin Location 2</span></div> +<div class="line"><span class="comment">// <3=> Pin Location 3</span></div> +<div class="line"><span class="comment">// <i> Select TPIU pin location for your board configuration:</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 0 (TRACECLK: PD7, TRACEDATA0: PD6, TRACEDATA1: PD3, TRACEDATA2: PD4, TRACEDATA3: PD5)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 1 (TRACECLK: PF8, TRACEDATA0: PF9, TRACEDATA1: PD13, TRACEDATA2: PB15, TRACEDATA3: PF3)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 2 (TRACECLK: PC6, TRACEDATA0: PC7, TRACEDATA1: PD3, TRACEDATA2: PD4, TRACEDATA3: PD5)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 3 (TRACECLK: PA6, TRACEDATA0: PA2, TRACEDATA1: PA3, TRACEDATA2: PA4, TRACEDATA3: PA5)</span></div> +<div class="line"><span class="comment">// <i> Default: Pin Location 0</span></div> +<div class="line">__TPIU_pinlocation = 0;</div> +<div class="line"> </div> +<div class="line"><span class="comment">// <o> SWO Pin Location</span></div> +<div class="line"><span class="comment">// <0=> Pin Location 0</span></div> +<div class="line"><span class="comment">// <1=> Pin Location 1</span></div> +<div class="line"><span class="comment">// <2=> Pin Location 2</span></div> +<div class="line"><span class="comment">// <3=> Pin Location 3</span></div> +<div class="line"><span class="comment">// <i> Select SWO pin location for your board configuration:</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 0 (SWO: PF2)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 1 (SWO: PC15)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 2 (SWO: PD1)</span></div> +<div class="line"><span class="comment">// <i> - Pin Location 3 (SWO: PD2)</span></div> +<div class="line"><span class="comment">// <i> Default: Pin Location 0</span></div> +<div class="line">__SWO_pinlocation = 0;</div> +<div class="line"> </div> +<div class="line"><span class="comment">// </h></span></div> +<div class="line"><span class="comment">// <<< end of configuration section >>></span></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="element_debugport"></a> +/package/devices/family/.../debugport</h1> +<p>Describes a CoreSight debug port of the device and its capabilities. The element can occur on various levels. Use unique ID values for the attribute <b>__dp</b> to distinguish multiple <b>debugport</b> elements in later references.</p> +<p><b>debugport</b> elements are required for targets with multiple debug ports. These elements can be omitted for devices with a single debug port. If no <b>debugport</b> element exists, then the only allowed <b>__dp</b> ID in later references is <span class="XML-Token">0</span>.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugconfig <span class="keywordflow">default</span>=<span class="stringliteral">"jtag"</span> clock=<span class="stringliteral">"10000000"</span> swj=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <debugport __dp=<span class="stringliteral">"0"</span>></div> +<div class="line"> <jtag tapindex=<span class="stringliteral">"0"</span>/></div> +<div class="line"> <swd/></div> +<div class="line"> </debugport></div> +<div class="line"> </div> +<div class="line"> <debugport __dp=<span class="stringliteral">"1"</span>></div> +<div class="line"> <jtag tapindex=<span class="stringliteral">"1"</span>/> </div> +<div class="line"> </debugport></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: debugport"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>__dp </td><td>Unique ID of this <b>debugport</b>. It must be used consistently in references within the scope of the parent section. </td><td>xs:unsignedInt </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_dp_jtag">jtag</a> </td><td>Describe JTAG Test Access Port (TAP) properties of this debug port. </td><td>JtagType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_dp_swd">swd</a> </td><td>Describe CoreSight Serial Wire Debug Port (SW-DP) properties of this debug port. </td><td>SwdType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_dp_cjtag">cjtag</a> </td><td>Describe CJTAG Test Access Port (TAP) properties of this debug port. </td><td>CjtagType </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_dp_jtag"></a> +/package/devices/family/.../debugport/jtag</h1> +<p>Indicates availability of a JTAG interface for the <b>debugport</b> parent element. Its attributes allow the manual override of a debugger's automatic JTAG Test Access Port (TAP) detection.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugconfig <span class="keywordflow">default</span>=<span class="stringliteral">"swd"</span> clock=<span class="stringliteral">"10000000"</span> swj=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <debugport __dp=<span class="stringliteral">"0"</span>></div> +<div class="line"> <jtag tapindex=<span class="stringliteral">"0"</span> idcode=<span class="stringliteral">"0x4BA00477"</span> irlen=<span class="stringliteral">"4"</span>/></div> +<div class="line"> <swd idcode=<span class="stringliteral">"0x2BA01477"</span>/></div> +<div class="line"> </debugport></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: jtag"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_debugport">/package/devices/family/.../debugport</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>tapindex </td><td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index if the device is part of an extended scan chain. Default value is <span class="XML-Token">0</span>. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>idcode </td><td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td><td>NonNegativeInteger </td><td><p class="starttd">optional </p> +<p class="endtd"></p> +</td></tr> +<tr> +<td>irlen </td><td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td><td>xs:unsignedInt </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_dp_swd"></a> +/package/devices/family/.../debugport/swd</h1> +<p>Indicates availability of an Arm Serial Wire Debug (SWD) interface for the <b>debugport</b> parent element. Its attributes allow the manual override of SWD port characteristics as read from the target and provide information for the port selection in a system with multi-drop SWD support.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugconfig <span class="keywordflow">default</span>=<span class="stringliteral">"swd"</span> clock=<span class="stringliteral">"10000000"</span> swj=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <debugport __dp=<span class="stringliteral">"0"</span>></div> +<div class="line"> <jtag tapindex=<span class="stringliteral">"0"</span> idcode=<span class="stringliteral">"0x4BA00477"</span> irlen=<span class="stringliteral">"4"</span>/></div> +<div class="line"> <swd idcode=<span class="stringliteral">"0x2BA01477"</span>/></div> +<div class="line"> </debugport></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: swd"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_debugport">/package/devices/family/.../debugport</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>idcode </td><td>Specifies the IDCODE of the SWD port. It overrides the value read from the port's IDCODE register. </td><td>NonNegativeInteger </td><td><p class="starttd">optional </p> +<p class="endtd"></p> +</td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_dp_cjtag"></a> +/package/devices/family/.../debugport/cjtag</h1> +<p>Indicates availability of a CJTAG interface for the <b>debugport</b> parent element. Its attributes allow the manual override of a debugger's automatic CJTAG Test Access Port (TAP) detection.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"STM32F4"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debugconfig <span class="keywordflow">default</span>=<span class="stringliteral">"swd"</span> clock=<span class="stringliteral">"10000000"</span> swj=<span class="stringliteral">"1"</span>/></div> +<div class="line"> </div> +<div class="line"> <debugport __dp=<span class="stringliteral">"0"</span>></div> +<div class="line"> <cjtag tapindex=<span class="stringliteral">"0"</span> idcode=<span class="stringliteral">"0x4BA00477"</span> irlen=<span class="stringliteral">"4"</span>/></div> +<div class="line"> <swd idcode=<span class="stringliteral">"0x2BA01477"</span>/></div> +<div class="line"> </debugport></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: cjtag"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_debugport">/package/devices/family/.../debugport</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>tapindex </td><td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index if the device is part of an extended scan chain. Default value is <span class="XML-Token">0</span>. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>idcode </td><td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>irlen </td><td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td><td>xs:unsignedInt </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_sequences"></a> +/package/devices/family/.../sequences</h1> +<p>Container for debug access sequences for this device.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <sequences></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"DebugCoreStart"</span> Pname=<span class="stringliteral">"Cortex-M0"</span>></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"ResetSystem"</span> Pname=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"TraceStart"</span> Pname=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> </sequences></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: sequences"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> </td><td>Describe a debug access sequence. </td><td>SequenceType </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_sequence"></a> +/package/devices/family/.../sequences/sequence</h1> +<p>Describes a Debug Access Sequence which contains <b>control</b> and <b>block</b> elements. <b>block</b> elements contains statements including calls to <a class="el" href="debug_description.html#DebugFunctions">Debug Access Functions</a>. A Debug Access Sequence overrides or extends the default functionality of a development tool. Refer to <a class="el" href="debug_description.html#usage_of_sequences">Usage of debug access sequences</a> for details.<br/> +</p> +<dl class="section note"><dt>Note</dt><dd><ul> +<li><b>control</b> elements can contain other <b>control</b> and <b>block</b> elements. <b>The maximum nesting of <em>control</em> elements is 10.</b></li> +</ul> +</dd></dl> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"Generic Family"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> ...</div> +<div class="line"> <sequences></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"UserSequence"</span>></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Define variables and do debug accesses"</span>></div> +<div class="line"> __var tpWidth = (__traceout &amp; 0x003F0000) >> 16;</div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"__traceout &amp; 0x2"</span> info=<span class="stringliteral">"Parallel Trace Port enabled"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Do something generic for parallel trace port trace</span></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"tpWidth == 1"</span> info=<span class="stringliteral">"Configure device for 1-bit TPIU trace."</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Do debug accesses</span></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"tpWidth == 2"</span> info=<span class="stringliteral">"Configure device for 2-bit TPIU trace."</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Do debug accesses</span></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"tpWidth == 4"</span> info=<span class="stringliteral">"Configure device for 4-bit TPIU trace."</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Do debug accesses</span></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"></div> +<div class="line"> </control></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> </sequences></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: sequence"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_sequences">/package/devices/family/.../sequences</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the Debug Access Sequence:<br/> +<ul> +<li>Pre-defined names are executed by the development tool described under <a class="el" href="debug_description.html#usage_of_sequences">Usage of debug access sequences</a>.</li> +<li>Any Debug Access Sequence can be executed the <a class="el" href="debug_description.html#DebugFunctions">debug access function</a> <b>Sequence</b>. </li> +</ul> +</td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Pname </td><td>Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set for this <b>sequence</b> element, a debugger executes the debug access sequence only for a debug connection to the referenced processor. Otherwise, it is executed for all processors. <b>This attribute must be set if defining multiple implementations of the same debug access sequence.</b> Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>disable </td><td>Disables execution of the <a class="el" href="debug_description.html#default_sequences">Default Debug Access Sequence</a>. </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>info </td><td>Descriptive text to display for example for error diagnostics. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_control">control</a> </td><td>Describe a debug access sequence flow control element. </td><td>SequenceControlType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_block">block</a> </td><td>Describe a block of debug accesses. </td><td>SequenceBlockType </td><td>0..* </td></tr> +</table> +<h1><a class="anchor" id="element_seq_control"></a> +/package/devices/family/.../sequences/sequence/control</h1> +<p>Describes flow control like <b>if</b> and <b>while</b> blocks for debug access sequences.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"Generic Family"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> ...</div> +<div class="line"> <sequences></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"UserSequence"</span>></div> +<div class="line"> ...</div> +<div class="line"> <block info=<span class="stringliteral">"Define variables and do debug accesses"</span>></div> +<div class="line"> __var doIfBlock = 1;</div> +<div class="line"> __var whileCondition = 1;</div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> ...</div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"doIfBlock"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Do debug accesses</span></div> +<div class="line"> ...</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> ...</div> +<div class="line"> <control <span class="keywordflow">while</span>=<span class="stringliteral">"whileCondition"</span> timeout=<span class="stringliteral">"5000"</span>></div> +<div class="line"> </div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// Execute while "whileCondition" different from '0' with a timeout of 5ms</span></div> +<div class="line"> whileCondition = 0;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> </control></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> </sequences></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: control"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_sequence">/package/devices/family/.../sequences/sequence</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_control">control</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_seq_control">/package/devices/family/.../sequences/sequence/control</a> </td></tr> +<tr> +<th>Attribute </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>if </td><td>Expression describing the condition under which to execute this sequence block. The block is skipped if the condition resolved to <span class="XML-Token">false</span>. Defaults to <span class="XML-Token">true</span> if not set. Refer to <a class="el" href="debug_description.html#ExpressionType">Expression Rules</a> for the syntax. </td><td>ExpressionType </td><td>optional </td></tr> +<tr> +<td>while </td><td>Expression describing a while-condition. The execution of the block contents is repeated while the condition resolves to <span class="XML-Token">true</span>, or until an optional <b>timeout</b> is reached. Refer to <a class="el" href="debug_description.html#ExpressionType">Expression Rules</a> for the syntax. </td><td>ExpressionType </td><td>optional </td></tr> +<tr> +<td>timeout </td><td>Timeout in microseconds for a <b>block</b> with a <b>while</b> condition. A debugger must extend the timeout to the closest possible time granularity. If the timeout is reached, the current iteration including a last evaluation of the <b>while</b> condition must finish. A value of <span class="XML-Token">0</span> disables the timeout.<br/> + This attribute defaults to <span class="XML-Token">0</span>. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>info </td><td>Descriptive text to display for example for error diagnostics. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_control">control</a> </td><td>Describe a debug access sequence flow control element. </td><td>SequenceControlType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_block">block</a> </td><td>Describe a block of debug accesses. </td><td>SequenceBlockType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_seq_block"></a> +/package/devices/family/.../sequences/sequence/block</h1> +<p>Describes a block of debug accesses. See <a class="el" href="debug_description.html#DebugSyntaxRules">Debug Access Syntax Rules</a> for details on the allowed syntax of the block contents.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"Generic Family"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> ...</div> +<div class="line"> <sequences></div> +<div class="line"> ...</div> +<div class="line"> <sequence name=<span class="stringliteral">"UserSequence"</span>></div> +<div class="line"> ...</div> +<div class="line"> <block info=<span class="stringliteral">"Define condition variales for later use in block elements."</span>></div> +<div class="line"> <span class="comment">// Variable definition by __var keyword</span></div> +<div class="line"> __var doIfBlock = 1;</div> +<div class="line"> __var whileCondition = 1;</div> +<div class="line"> </block></div> +<div class="line"> ...</div> +<div class="line"> </sequence></div> +<div class="line"> ...</div> +<div class="line"> </sequences></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: block"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequence">sequence</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_sequence">/package/devices/family/.../sequences/sequence</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_seq_control">control</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_seq_control">/package/devices/family/.../sequences/sequence/control</a> </td></tr> +<tr> +<th>Attribute </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>atomic </td><td>Instruct the debugger to execute the block contents atomically; a debugger needs to download and buffer all debug accesses to the debug probe and finish the execution without further communication to the host PC. If a debugger cannot support an atomic block it must abort the execution of the debug access sequence.<br/> + </td><td>xs:boolean </td><td>optional </td></tr> +<tr> +<td>info </td><td>Descriptive text to display for example for error diagnostics. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><b>Atomic Blocks:</b></p> +<ul> +<li>Within an atomic block a variable must no longer be used as an r-value after a result from a target access has been assigned to it.</li> +<li>Support for atomic blocks is highly debugger dependent. Keep them as short and simple as possible to address a wide range of debuggers.</li> +<li><b>Query</b> and <b>Sequence</b> debug access functions must not be used in an atomic block.</li> +</ul> +<p> </p> +<p><a class="anchor" id="DebugSyntaxRules"></a><b>Debug Access Syntax Rules</b></p> +<p>Debug accesses are described in <b>block</b> elements of a debug access sequence (<b>sequence</b> element). The following syntax is used for this purpose:</p> +<ul> +<li>The contents of a <b>block</b> element is a series of statements.</li> +<li>Each statement must begin in a new line and is terminated by a <span class="XML-Token">;</span> character.</li> +<li>A typical statement consists of variable, followed by a <span class="XML-Token">=</span> character and an expression, where the <span class="XML-Token">=</span> character is an assignment of the <a class="el" href="debug_description.html#ExpressionType">expression</a> result to the variable: <div class="fragment"><div class="line">variable = expression;</div> +</div><!-- fragment --></li> +<li>Alternatively, a statement can be a sole <a class="el" href="debug_description.html#ExpressionType">expression</a> without storing its result to a variable. <div class="fragment"><div class="line">expression;</div> +</div><!-- fragment --></li> +<li>Comments begin with two slashes (<span class="XML-Token">//</span>) and end with a linebreak: <div class="fragment"><div class="line"><span class="comment">// Whole line is a comment</span></div> +<div class="line">variable = expression; <span class="comment">// Comment appended to statement</span></div> +</div><!-- fragment --></li> +<li>Variables must be defined using the keyword <span class="XML-Token">__var</span>. The definition must include an initalization of the variable: <div class="fragment"><div class="line">__var variable = 0;</div> +</div><!-- fragment --></li> +<li>Variables can be defined only once within a scope. Scopes begin with entering a debug access sequence or a <b>control</b> element. They are extended to child <b>control</b> elements. Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.<br/> + <b><em>block</em> elements do not begin a new scope.</b> <div class="fragment"><div class="line"><sequence name=<span class="stringliteral">"MySequence"</span>></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 1"</span>></div> +<div class="line"> __var condvar = 1;</div> +<div class="line"> __var myvar1 = 5;</div> +<div class="line"> __var myvar2 = 0;</div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"> <control <span class="keywordflow">if</span>=<span class="stringliteral">"condvar"</span>></div> +<div class="line"> <block></div> +<div class="line"> <span class="comment">// __var myvar1 = 2; // Redefinition, not allowed!</span></div> +<div class="line"> __var myvar3 = 2;</div> +<div class="line"> myvar2 = myvar1 + myvar3; <span class="comment">// Assign value (5+2) = 7</span></div> +<div class="line"> </block></div> +<div class="line"> </control></div> +<div class="line"> </div> +<div class="line"> <block info=<span class="stringliteral">"Block 2"</span>></div> +<div class="line"> myvar1 = myvar2 + 1; <span class="comment">// Variable myvar1 holds the value '8' after this statement</span></div> +<div class="line"> <span class="comment">// myvar2 = myvar3; // myvar3 does not exist in this scope, not allowed!</span></div> +<div class="line"> </block></div> +<div class="line"> </div> +<div class="line"></sequence></div> +</div><!-- fragment --></li> +<li>The debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> can be modified within a debug access sequence. An assigned value is held until leaving the sequence. Calling another sequence by the <b>Sequence</b> debug access function will push their values on a sequence execution stack. The values are restored when returning from such a call.</li> +<li>The debug access variable <b>__Result</b> can be modified within a debug access sequence. Its value is held until the debug access sequence returns to the debugger. Hence its value is <b>not</b> pushed on a sequence execution stack when calling into another sequence by the <b>Sequence</b> debug access function.</li> +</ul> +<p><a class="anchor" id="ExpressionType"></a><b>Expression Rules</b></p> +<p>Expressions are used in various places to describe one of the following:</p> +<ul> +<li>A value as assigned in a <a class="el" href="debug_description.html#DebugSyntaxRules">debug access statement</a>.</li> +<li>A condition to use in the <b>if</b> attribute of a <b>control</b> element.</li> +<li>A condition to use in the <b>while</b> attribute of a <b>control</b> element.</li> +<li>A parameter to a debug access function as described below.</li> +</ul> +<p>An expression may consist of the following:</p> +<ul> +<li>Constant numbers in decimal and hexadecimal representation (prefix <span class="XML-Token">0x</span>).</li> +<li>Arithmetic operators such as <span class="XML-Token">+</span>, <span class="XML-Token">-</span>, <span class="XML-Token">*</span>, <span class="XML-Token">/</span>, and <span class="XML-Token">%</span>.</li> +<li>Bit-arithmetic operators such as <span class="XML-Token">&</span>, <span class="XML-Token">|</span>, <span class="XML-Token">~</span>, <span class="XML-Token">^</span>, <span class="XML-Token">>></span>, and <span class="XML-Token"><<</span>.</li> +<li>Comparison-operators such as <span class="XML-Token">==</span>, <span class="XML-Token">!=</span>, <span class="XML-Token"><</span>, <span class="XML-Token">></span>, <span class="XML-Token"><=</span>, and <span class="XML-Token">>=</span>.</li> +<li>Logic operators such as <span class="XML-Token">!</span>, <span class="XML-Token">&&</span>, <span class="XML-Token">||</span>, and <span class="XML-Token">==</span>.</li> +<li>Conditional expression operations like:<div class="fragment"><div class="line">(x < y) ? a : b </div> +</div><!-- fragment --></li> +<li>Precedence of sub-expressions is indicated by brackets (<span class="XML-Token">(</span>, <span class="XML-Token">)</span>). C-like precedence applies if brackets are omitted.</li> +<li>References to <a class="el" href="debug_description.html#DebugVars">debug access variables</a> for evaluating debug settings.</li> +<li>Calls to <a class="el" href="debug_description.html#DebugFunctions">debug access functions</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>All values used in expressions resolve to 64-bit unsigned integer values.</li> +<li>All logic-operations and comparisons resolve to the value <span class="XML-Token">1</span> if true, to <span class="XML-Token">0</span> otherwise.</li> +<li>XML prohibits the use of the characters <span class="XML-Token">&</span>, <span class="XML-Token"><</span>, and <span class="XML-Token">></span>. Use the corresponding XML entity names instead: <span class="XML-Token">&amp;</span>, <span class="XML-Token">&lt;</span>, and <span class="XML-Token">&gt;</span>.</li> +</ul> +</dd></dl> +<h1><a class="anchor" id="element_debug"></a> +/package/devices/family/.../debug</h1> +<p>Describes configuration settings, default values, and patches for data accesses for a debug connection. Multiple <b>debug</b> elements can be defined which are either specific to a processor identified by attribute <b>Pname</b>, or which apply to all connections.</p> +<p><b>Example</b> <b>1</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-M4"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> svd=<span class="stringliteral">"SVD/LPC43xx.svd"</span>></div> +<div class="line"> ...</div> +<div class="line"> </debug></div> +<div class="line"> ...</div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-M0"</span> __dp=<span class="stringliteral">"1"</span> __ap=<span class="stringliteral">"0"</span> svd=<span class="stringliteral">"SVD/LPC43xx.svd"</span>></div> +<div class="line"> ...</div> +<div class="line"> </debug></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p><b>Example</b> <b>2</b> </p> +<div class="fragment"><div class="line"><device name=<span class="stringliteral">"MCIMX7D"</span>></div> +<div class="line"> ...</div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-A7"</span> DcoreVersion=<span class="stringliteral">"r0p5"</span> Pname=<span class="stringliteral">"Cortex-A7"</span> Punits=<span class="stringliteral">"2"</span> /></div> +<div class="line"> <processor Dcore=<span class="stringliteral">"Cortex-M4"</span> DcoreVersion=<span class="stringliteral">"r0p1"</span> Pname=<span class="stringliteral">"Cortex-M4"</span>/></div> +<div class="line"> ...</div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-A7"</span> Punit=<span class="stringliteral">"0"</span> svd=<span class="stringliteral">"SVD/iMX7D_A7.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"1"</span> address=<span class="stringliteral">"0x80070000"</span>/> </div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-A7"</span> Punit=<span class="stringliteral">"1"</span> svd=<span class="stringliteral">"SVD/iMX7D_A7.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"1"</span> address=<span class="stringliteral">"0x80072000"</span>/></div> +<div class="line"> <debug Pname=<span class="stringliteral">"Cortex-M4"</span> svd=<span class="stringliteral">"SVD/iMX7D_M4.svd"</span> __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"4"</span>/></div> +<div class="line"> ...</div> +<div class="line"></device></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: debug"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>__dp </td><td>Default debug port ID to use for target accesses in this debug connection. The allowed values are defined in <b>debugport</b> elements for this device. If no <b>debugport</b> element exists, the only allowed value is <span class="XML-Token">0</span>.<br/> + The debug access variable <b>__dp</b> is initialized to this value when entering a pre-defined debug access sequence because of a debug event.<br/> + This attribute defaults to <span class="XML-Token">0</span> if not set. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>__ap </td><td>Default access port index to use for target accesses in this debug connection.<br/> + The debug access variable <b>__ap</b> is initialized to this value when entering a pre-defined debug access sequence because of a debug event.<br/> + This attribute defaults to <span class="XML-Token">0</span> if not set. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>address </td><td>Base "address" of the CPU debug block referenced by "Pname" (and "Punit" in an MPCore system). Use in combination with attributes "_dp" and "_ap". Mandatory if multiple CPU debug blocks are accessible via a single AP. Optional if an AP hosts a single CPU debug block. Then a debugger can determine its base address in by analyzing the ROM table behind __dp and __ap. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>svd </td><td>The system viewer description (*.SVD) file to load for this debug connection. The file path is relative to the package base folder. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set this <b>debug</b> element's settings and data patches only apply for target connections to the referenced processor. Otherwise, they apply for all processors. <b>This attribute must be set if defining multiple <em>debug</em> elements within the same section.</b> Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<td>Punit </td><td>Use "Punit" in addition to "Pname" to select a specific processor unit of a symmetric MPCore that the <debug> configuration applies to. "Punit" is a '0'-based index and must be less than "Punits" of <processor>. If "Punit" is not specified, the <debug> configuration applies to all processor units of the MPCore. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>defaultResetSequence </td><td>Specifies the debug sequence that is to be used for the device. Refer to <a class="el" href="debug_description.html#writing_sequences">Writing debug access sequences</a> for more information. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_dbg_datapatch">datapatch</a> </td><td>Define a patch to apply for data reads in this debug connection. </td><td>DataPatchType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_dbg_datapatch"></a> +/package/devices/family/.../debug/datapatch</h1> +<p>Describes a patch a debugger shall apply when reading data from the device.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"M0 Series"</span> Dvendor=<span class="stringliteral">"Generic:5"</span>></div> +<div class="line"> ...</div> +<div class="line"> <debug></div> +<div class="line"> <!-- Patched ROM Table <span class="keywordflow">for</span> a Cortex-M0+ --></div> +<div class="line"> <datapatch type=”AP”__dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xF8"</span> value=<span class="stringliteral">"0xE00FF003"</span> info=<span class="stringliteral">"AP BASE Register, ROM Table at 0xE00FF000"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FF000"</span> value=<span class="stringliteral">"0xFFF0F003"</span> info=<span class="stringliteral">"ROM Table pointer to SCS at 0xE000E000"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FF004"</span> value=<span class="stringliteral">"0xFFF02003"</span> info=<span class="stringliteral">"ROM Table pointer to DWT at 0xE0001000"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FF008"</span> value=<span class="stringliteral">"0xFFF03003"</span> info=<span class="stringliteral">"ROM Table pointer to BPU at 0xE0002000"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FF00C"</span> value=<span class="stringliteral">"0x00000000"</span> info=<span class="stringliteral">"ROM Table End Marker"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFCC"</span> value=<span class="stringliteral">"0x00000001"</span> info=<span class="stringliteral">"ROM Table MEMTYPE"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFD0"</span> value=<span class="stringliteral">"0x00000004"</span> info=<span class="stringliteral">"ROM Table Peripheral ID4"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFD4"</span> value=<span class="stringliteral">"0x00000000"</span> info=<span class="stringliteral">"ROM Table Peripheral ID5"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFD8"</span> value=<span class="stringliteral">"0x00000000"</span> info=<span class="stringliteral">"ROM Table Peripheral ID6"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFDC"</span> value=<span class="stringliteral">"0x00000000"</span> info=<span class="stringliteral">"ROM Table Peripheral ID7"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFE0"</span> value=<span class="stringliteral">"0x000000C0"</span> info=<span class="stringliteral">"ROM Table Peripheral ID0"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFE4"</span> value=<span class="stringliteral">"0x000000B4"</span> info=<span class="stringliteral">"ROM Table Peripheral ID1"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFE8"</span> value=<span class="stringliteral">"0x0000000B"</span> info=<span class="stringliteral">"ROM Table Peripheral ID2"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFEC"</span> value=<span class="stringliteral">"0x00000000"</span> info=<span class="stringliteral">"ROM Table Peripheral ID3"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFF0"</span> value=<span class="stringliteral">"0x0000000D"</span> info=<span class="stringliteral">"ROM Table Component ID0"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFF4"</span> value=<span class="stringliteral">"0x00000010"</span> info=<span class="stringliteral">"ROM Table Component ID1"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFF8"</span> value=<span class="stringliteral">"0x00000005"</span> info=<span class="stringliteral">"ROM Table Component ID2"</span>/></div> +<div class="line"> <datapatch __dp=<span class="stringliteral">"0"</span> __ap=<span class="stringliteral">"0"</span> address=<span class="stringliteral">"0xE00FFFFC"</span> value=<span class="stringliteral">"0x000000B1"</span> info=<span class="stringliteral">"ROM Table Component ID3"</span>/></div> +<div class="line"> </debug></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: datapatch"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_debug">/package/devices/family/.../debug</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>type </td><td>The type of data access to patch. Predefined tokens must be used as defined in <a class="el" href="pdsc_family_pg.html#DataPatchAccessTypeEnum">Table: Data Patch Access Type</a>. This attribute defaults to <span class="XML-Token">Mem</span> if not set. </td><td>DataPatchAccessTypeEnum </td><td>optional </td></tr> +<tr> +<td>address </td><td>The address for which to apply the patch. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>__dp </td><td>The debug port ID to apply the patch for. The allowed values are defined by the <b>__dp</b> attribute of <b>debugport</b> elements for this device. If no debugport element exists, the only allowed value is 0. If this attribute is not set, the debug port ID for the data patch is set to the default <b>__dp</b> of this <b>debug</b> section. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>__ap </td><td>The CoreSight access port index to apply the patch for. If this attribute is not set, the access port index for the data patch is set to the default <b>__ap</b> of this <b>debug</b> section. </td><td>xs:unsignedInt </td><td>optional </td></tr> +<tr> +<td>value </td><td>The value with which the debugger patches the data access. <b>value</b> is specified in little-endian format. </td><td>NonNegativeInteger </td><td>required </td></tr> +<tr> +<td>mask </td><td>The bits of the data access to patch. The mask value is specified in little-endian format. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>info </td><td>Descriptive text to display for example for error diagnostics. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="DataPatchAccessTypeEnum"></a><b>Table: Data Patch Access Type</b></p> +<p>The table lists the allowed values for data patch access types. </p> +<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum"> +<tr> +<th>type= </th><th>Description </th></tr> +<tr> +<td class="XML-Token">DP </td><td>CoreSight Debug Port register access.<br/> + <b>Note:</b> This type refers to accesses via the <b>DPACC</b> instruction for <b>CoreSight JTAG-DPs</b>. Please refer to the corresponding documentation for differences in the register interface between JTAG and Serial Wire debug ports. </td></tr> +<tr> +<td class="XML-Token">AP </td><td>CoreSight Access Port register access. </td></tr> +<tr> +<td class="XML-Token">Mem </td><td>Memory access. </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_trace"></a> +/package/devices/family/.../trace</h1> +<p>Describes device capabilities and possible configuration settings for capturing trace. Multiple <b>trace</b> elements can be defined which are either specific to a processor identified by attribute <b>Pname</b>, or which apply to all connections.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <trace Pname=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> <serialwire/></div> +<div class="line"> <traceport width=<span class="stringliteral">"0x0000000B"</span>/> <!-- support <span class="keywordflow">for</span> port widths 1, 2, and 4 --></div> +<div class="line"> <tracebuffer start=<span class="stringliteral">"0x2000C000"</span> size=<span class="stringliteral">"0x4000"</span>/></div> +<div class="line"> </trace></div> +<div class="line"> ...</div> +<div class="line"> <trace Pname=<span class="stringliteral">"Cortex-M0"</span>></div> +<div class="line"> <!-- Empty trace section <span class="keywordflow">for</span> Cortex-M0, no trace capabilities --></div> +<div class="line"> </trace></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: trace"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_family">family</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_family">/package/devices/family</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_subFamily">subFamily</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_subFamily">/package/devices/family/subFamily</a> </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Pname </td><td>Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set this <b>trace</b> section only applies for target connections to the referenced processor. Otherwise, it applies for all processors. <b>This attribute must be set if defining multiple <em>trace</em> elements within the same section.</b> Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td><td>RestrictedString </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace_serialwire">serialwire</a> </td><td>Describe the serial wire trace output capabilities of the processor. </td><td>SerialWireType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace_traceport">traceport</a> </td><td>Describe the parallel trace port output capabilities of the processor. </td><td>TracePortType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace_tracebuffer">tracebuffer</a> </td><td>Describe the on-device trace buffer capabilities of the processor. </td><td>TraceBufferType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_trace_serialwire"></a> +/package/devices/family/.../trace/serialwire</h1> +<p>Indicates serial wire trace output capabilities of the specified processor.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <trace Pname=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> ...</div> +<div class="line"> <serialwire/></div> +<div class="line"> ...</div> +<div class="line"> </trace></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: serialwire"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_trace">/package/devices/family/.../trace</a> </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_trace_traceport"></a> +/package/devices/family/.../trace/traceport</h1> +<p>Indicates parallel trace port output capabilities of the specified processor. This element describes possible configuration settings for capturing trace.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <trace Pname=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> ...</div> +<div class="line"> <traceport width=<span class="stringliteral">"0x0000000B"</span>/> <!-- support <span class="keywordflow">for</span> port widths 1, 2, and 4 --></div> +<div class="line"> ...</div> +<div class="line"> </trace></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: traceport"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_trace">/package/devices/family/.../trace</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>width </td><td>Parallel trace port widths supported for the processor connection (see table below). </td><td>NonNegativeInteger </td><td>optional </td></tr> +</table> +<p>The attribute <b>width</b> specifies the available trace port width that is supported by the device. Each bit of this value represents an available trace port size. If bit <span class="XML-Token">n</span> is set a trace port width of <span class="XML-Token">n+1</span> is supported. The value <b>width=0x00008088</b> (as shown in the table) indicates that three port sizes (16-bit, 8-bit, and 4-bit) are supported by the device.</p> +<table class="cmtable" summary="Element: traceportwidth"> +<tr> +<th>Bit </th><th>31 </th><th>30 </th><th>29 </th><th>28 </th><th>27 </th><th>26 </th><th>25 </th><th>24 </th><th>23 </th><th>22 </th><th>21 </th><th>20 </th><th>19 </th><th>18 </th><th>17 </th><th>16 </th><th>15 </th><th>14 </th><th>13 </th><th>12 </th><th>11 </th><th>10 </th><th>9 </th><th>8 </th><th>7 </th><th>6 </th><th>5 </th><th>4 </th><th>3 </th><th>2 </th><th>1 </th><th>0 </th></tr> +<tr> +<td>width </td><td>32 </td><td>31 </td><td>30 </td><td>29 </td><td>28 </td><td>27 </td><td>26 </td><td>25 </td><td>24 </td><td>23 </td><td>22 </td><td>21 </td><td>20 </td><td>19 </td><td>18 </td><td>17 </td><td>16 </td><td>15 </td><td>14 </td><td>13 </td><td>12 </td><td>11 </td><td>10 </td><td>9 </td><td>8 </td><td>7 </td><td>6 </td><td>5 </td><td>4 </td><td>3 </td><td>2 </td><td>1 </td></tr> +<tr> +<td>Value </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>1 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>1 </td><td>0 </td><td>0 </td><td>0 </td><td>1 </td><td>0 </td><td>0 </td><td>0 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_trace_tracebuffer"></a> +/package/devices/family/.../trace/tracebuffer</h1> +<p>Indicates on-device trace buffer capabilities of the specified processor. This element describes possible configuration settings for capturing trace and reading it from the buffer.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><family Dfamily=<span class="stringliteral">"LPC4300 Series"</span> Dvendor=<span class="stringliteral">"NXP:11"</span>></div> +<div class="line"> ...</div> +<div class="line"> <trace Pname=<span class="stringliteral">"CoreCM4"</span>></div> +<div class="line"> ...</div> +<div class="line"> <tracebuffer start=<span class="stringliteral">"0x2000C000"</span> size=<span class="stringliteral">"0x4000"</span>/></div> +<div class="line"> ...</div> +<div class="line"> </trace></div> +<div class="line"> ...</div> +<div class="line"></family></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: tracebuffer"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_trace">/package/devices/family/.../trace</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>start </td><td>Start address of the on-chip memory used as trace buffer for a supported configuration. </td><td>NonNegativeInteger </td><td>optional </td></tr> +<tr> +<td>size </td><td>Size of the on-chip memory used as trace buffer in bytes for a supported configuration. </td><td>NonNegativeInteger </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_variant"></a> +/package/devices/family/.../device/variant</h1> +<p>Defines a device variant. The element is optional. Can exist multiple times.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><device Dname=<span class="stringliteral">"STM32F205RB"</span>></div> +<div class="line"> ...</div> +<div class="line"> <variant Dvariant=<span class="stringliteral">"STM32F205RBT6"</span>></div> +<div class="line"> <book name=<span class="stringliteral">"doc\STM32F2_RM.PDF"</span> title=<span class="stringliteral">"STM32F2 Reference Manual"</span>/></div> +<div class="line"> <description>Use <span class="keyword">this</span> device as an alternative.</description></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> count=<span class="stringliteral">"64"</span> name=<span class="stringliteral">"LQFP 64 10x10x1.4"</span> /></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"85"</span> name=<span class="stringliteral">"Industrial Temperature Range"</span>/></div> +<div class="line"> </variant></div> +<div class="line"> <variant Dvariant=<span class="stringliteral">"STM32F205RBT7"</span>></div> +<div class="line"> <feature type=<span class="stringliteral">"QFP"</span> count=<span class="stringliteral">"64"</span> name=<span class="stringliteral">"LQFP 64 10x10x1.4"</span> /></div> +<div class="line"> <feature type=<span class="stringliteral">"Temp"</span> n=<span class="stringliteral">"-40"</span> m=<span class="stringliteral">"105"</span> name=<span class="stringliteral">"Extended Temperature Range"</span>/></div> +<div class="line"> </variant></div> +<div class="line"> ...</div> +<div class="line"></device></div> +</div><!-- fragment --><p><br/> + </p> +<table class="cmtable" summary="Element: variant"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_device">device</a> </td><td colspan="3"><a class="el" href="pdsc_family_pg.html#element_device">/package/devices/family/../device</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Dvariant </td><td>Name of the device variant. Only alphabetical characters, decimal digits, '-' and '_' are allowed </td><td>RestrictedStringDname </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_processor">processor</a> </td><td>Specify processors that are specific to this device. </td><td>ProcessorType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugconfig">debugconfig</a> </td><td>Specify default settings for the debug connection specific to this device. </td><td>DebugConfigType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_compile">compile</a> </td><td>Specify compile or translate options specific to this device. </td><td>CompileType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_memory">memory</a> </td><td>Specify memory areas that specific to this device. </td><td>MemoryType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_algorithm">algorithm</a> </td><td>Specify Flash programming algorithms that can be used by this device. </td><td>AlgorithmType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_book">book</a> </td><td>Specify documents specific to this device. </td><td>BookType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_description">description</a> </td><td>Description specific to this device. </td><td>DescriptionType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">feature</a> </td><td>Specify the features of this device. </td><td>FeatureType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_feature">environment</a> </td><td>Specify tool options. </td><td>EnvironmentType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugport">debugport</a> </td><td>Describe a debug port specific to this device. </td><td>DebugPortType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debug">debug</a> </td><td>Specify debug options specific to this device. </td><td>DebugType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_trace">trace</a> </td><td>Specify trace options specific to this device. </td><td>TraceType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_debugvars">debugvars</a> </td><td>Define debug access variables for user-defined settings specific to this device. </td><td>DebugVarsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_family_pg.html#element_sequences">sequences</a> </td><td>Describe debug access sequences specific to this device. </td><td>SequencesType </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li><li class="navelem"><a class="el" href="pdsc_devices_pg.html">/package/devices element</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_generators_pg.html b/docs/Pack/html/pdsc_generators_pg.html new file mode 100644 index 0000000..1832180 --- /dev/null +++ b/docs/Pack/html/pdsc_generators_pg.html @@ -0,0 +1,554 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package/generators element</title> +<title>CMSIS-Pack: /package/generators element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_generators_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package/generators element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The element <a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> specifies a tool or utility that is used to generate and/or configure software (source code, header files, configuration files, etc.) in the context of a project. For this purpose, a generator package description file (GPDSC) needs to be created (see <a class="el" href="pdsc_generators_pg.html#pdsc_generators_gpdsc"><gpdsc></a>). The GPDSC file details the selected device, components, project files and conditions, as well as information about the generator and how it can be launched again for iterative development cycles. A GPDSC file follows the same schema as a static Pack. However, the files generated by the utility are not installed and managed centrally in the Pack folder, but locally within the project folder.</p> +<p>A generator can be associated with a component by it's name. Selecting the component will automatically include the files provided by the generator in the project. If the specified GPDSC file is not present, the generator command is executed by the environment to generate the files and GPDSC. In this way project specific configurations can be made, files being generated and included and maintained as part of the project.</p> +<p><a class="anchor" id="pdsc_generators_gen_sec"></a><b>Example</b> Generator Section </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span> = <span class="stringliteral">"MyGen"</span>></div> +<div class="line"> <gpdsc name =<span class="stringliteral">"$P/RTE/MyGen/myGen.gpdsc"</span>/></div> +<div class="line"> <exe></div> +<div class="line"> <command host = <span class="stringliteral">"win"</span>>MyGen.bat</command></div> +<div class="line"> <command host = <span class="stringliteral">"linux"</span>>MyGen.script</command></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"linux"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"--device="</span>>#D</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"win"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"/device="</span>>#D</argument></div> +<div class="line"> </exe></div> +<div class="line"> </div> +<div class="line"> <eclipse plugin=<span class="stringliteral">"com.mygen.plugin"</span> <span class="keyword">class</span>=<span class="stringliteral">"com.mygen.plugin.generator.launcher"</span> method=<span class="stringliteral">"launch"</span> ></div> +<div class="line"> <argument>#D</argument></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> </eclipse></div> +<div class="line"> </div> +<div class="line"> <web url=<span class="stringliteral">"http://mygen.com/mygen"</span>></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"device"</span>>#D</argument></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"gpdsc"</span>>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> </web></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --><p><a class="anchor" id="pdsc_generators_gpdsc"></a><b>Example</b> Generator Package Description File (gpdsc) </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"UTF-8"</span>?></div> +<div class="line"></div> +<div class="line"><<span class="keyword">package </span>xmlns:xs="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xs:noNamespaceSchemaLocation="PACK.xsd"></span></div> +<div class="line"> <vendor>Keil</vendor></div> +<div class="line"> <name>FrameworkCubeMX</name></div> +<div class="line"> <description>STM32CubeMX generated pack description</description></div> +<div class="line"> <url>project-path</url></div> +<div class="line"> <releases></div> +<div class="line"> <release version="1.0.0"></div> +<div class="line"> - Generated: 08/11/2016 09:20:21</div> +<div class="line"> </release></div> +<div class="line"> </releases></div> +<div class="line"> <generators></div> +<div class="line"> <generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0"></div> +<div class="line"> <description>STM32CubeMX Environment</description></div> +<div class="line"> <select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/></div> +<div class="line"> <exe></div> +<div class="line"> <command host = "win">$SMDK/CubeMX/STM32CubeMXLauncher.exe</command></div> +<div class="line"> <command host = "linux">$SMDK/CubeMX/STM32CubeMXLauncher</command></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> <argument>#D.ioc</argument></div> +<div class="line"> </exe></div> +<div class="line"> <workingDir>$PRTE/Device/STM32F746NGHx</workingDir></div> +<div class="line"> <project_files></div> +<div class="line"> <file category="source" name="STCubeGenerated/Src/main.c" /></div> +<div class="line"> <file category="header" name="STCubeGenerated/Inc/stm32f7xx_it.h"/></div> +<div class="line"> <file category="source" name="STCubeGenerated/Src/stm32f7xx_it.c"/></div> +<div class="line"> </project_files></div> +<div class="line"> </generator></div> +<div class="line"> </generators></div> +<div class="line"> <taxonomy></div> +<div class="line"> <description Cclass="Device" Cgroup="STM32Cube Framework" generator="STM32CubeMX">STM32Cube Framework</description></div> +<div class="line"> </taxonomy></div> +<div class="line"> <conditions></div> +<div class="line"> <condition id="STCubeMX"></div> +<div class="line"> <description>Condition to include CMSIS-Core (Cortex-M) and Device Startup components</description></div> +<div class="line"> <require Dvendor="STMicroelectronics:13" Dname="STM32F7*"/></div> +<div class="line"> <require Cclass="CMSIS" Cgroup="Core" Csub=""/></div> +<div class="line"> <require Cclass="Device" Cgroup="Startup"/></div> +<div class="line"> <require Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common"/></div> +<div class="line"> <require Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO"/></div> +<div class="line"> </condition></div> +<div class="line"> </conditions></div> +<div class="line"> <components></div> +<div class="line"> <component generator="STM32CubeMX" Cvendor="Keil" Cclass="Device" Cgroup="STM32Cube Framework" Csub="STM32CubeMX" Cversion="1.0.0" condition="STCubeMX"></div> +<div class="line"> <description>Configuration via STM32CubeMX</description></div> +<div class="line"> <RTE_Components_h></div> +<div class="line"> #define RTE_DEVICE_FRAMEWORK_CUBE_MX</div> +<div class="line"> </RTE_Components_h></div> +<div class="line"> <files></div> +<div class="line"> <file category="header" name="MX_Device.h"/></div> +<div class="line"> <file category="header" name="STCubeGenerated/Inc/stm32f7xx_hal_conf.h"/></div> +<div class="line"> <file category="source" name="STCubeGenerated/Src/stm32f7xx_hal_msp.c"/></div> +<div class="line"> </files></div> +<div class="line"> </component></div> +<div class="line"> </components></div> +<div class="line"></package></div> +</div><!-- fragment --> <p> </p> +<hr/> +<h1><a class="anchor" id="element_generators"></a> +/package/generators</h1> +<p>Grouping element for <b>generators</b>. Only one such group can exist in a Pack.</p> +<table class="cmtable" summary="Element: Generator"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td>Description of the generator and the related files </td><td><a class="el" href="pdsc_generators_pg.html#element_generator">GeneratorType</a> </td><td>1..* </td></tr> +</table> +<p>The following variables can be used in the elements <code><command></code>, <code><workingDir></code>, <code><argument></code>, <code><gpdsc></code>:</p> +<table class="cmtable" summary="Supported Variables within Generator"> +<tr> +<th>Variable </th><th>Description </th></tr> +<tr> +<td>$P </td><td>PATH to current project </td></tr> +<tr> +<td>#P </td><td>PATH and name of the current project </td></tr> +<tr> +<td>$S </td><td>PATH to Pack folder containing the Device description used by the current project </td></tr> +<tr> +<td>$D </td><td>Name of the device configured in the current project </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_generator"></a> +/package/generators/generator</h1> +<p>The generator section is used to provide the details about the tool that has been used to create the GPDSC file. At least one generator element must exist.</p> +<table class="cmtable" summary="Element: Generator"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generators">generators</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generators">/package/generators</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>id </td><td>Identifier of the generator tool. Can be used by other elements to determine the generator. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>Gvendor </td><td>Vendor name of the generator tool. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Gtool </td><td>Plain text name of the generator. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Gversion </td><td>Version of the generator tool. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>description </td><td>Briefly describes the generator tool. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_select">select</a> </td><td>Complex type specifying the configured device. A device is uniquely identified by vendor, name or variant and processor name in case of devices with multiple processors. </td><td>GeneratorSelectType </td><td>0..1 </td></tr> +<tr> +<td>workingDir </td><td>Directory to be set as current directory before launching the <code><command></code>. This is either an absolute or relative path to PDSC or GPDSC file. If not specified, the current directory is the directory of the project configured by the environment. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td>command </td><td><span class="XML-Token">Deprecated; use exe, web and/or eclipse</span>. Invocation command for the generator tool. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td>arguments </td><td><span class="XML-Token">Deprecated; use argument tags under exe, web and/or eclipse</span>. </td><td>GeneratorCommandArgumentsType </td><td>0..1 </td></tr> +<tr> +<td>gpdsc </td><td>Path and name of the GPDSC that the generator creates and updates. The path is either absolute or relative to the working directory. If no explicit gpdsc file is provided, then a gpdsc file named after the project with extension gpdsc in the working directory is assumed (<code><project></code>.gpdsc). </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_exe">exe</a> </td><td>Section to specify a binary/executable to generate the GPDSC file. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_eclipse">eclipse</a> </td><td>Section to specify an Eclipse plug-in to generate the GPDSC file. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_web">web</a> </td><td>Section to specify a web page to generate the GPDSC file. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_project_files">project_files</a> </td><td>Grouping element for all project files generated by the tool. </td><td>group </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td>Grouping element for generator tool files. </td><td>group </td><td>0..1 </td></tr> +<tr> +<td>extensions </td><td>Generator vendor specific section ignored by other tools </td><td>N/A </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_select"></a> +/package/generators/generator/select</h1> +<p>This element contains information about the vendor and device the GPDSC file has been generated for. Only one such element can exist in <code><generators></code>.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span>=<span class="stringliteral">"STM32CubeMX"</span> Gvendor=<span class="stringliteral">"STMicroelectronics"</span> Gtool=<span class="stringliteral">"STM32CubeMX"</span> Gversion=<span class="stringliteral">"4.10.0"</span>></div> +<div class="line"> <select Dname=<span class="stringliteral">"STM32F746NGHx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>/></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Generator Select"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>Dvendor </td><td>Vendor name of the targeted device. Use predefined values as listed in the table <a class="el" href="pdsc_family_pg.html#DeviceVendorEnum">Device Vendor</a>. </td><td>DeviceVendorEnum </td><td>required </td></tr> +<tr> +<td>Dname </td><td>Name of the targeted device. If no Dvariant is specified this tag is required </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Dvariant </td><td>Name of the targeted device variant. If a variant is specified, the device name will be ignored and the variant rules. If no Dname is specified, this tag is required. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>Pname </td><td>Name of the targeted processor of a device with multiple processors. For devices with multiple processors this tag is required. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_exe"></a> +/package/generators/generator/exe</h1> +<p>This element contains information about the generation binary/executable.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><exe></div> +<div class="line"> <command host = <span class="stringliteral">"win"</span>>MyGen.bat</command></div> +<div class="line"> <command host = <span class="stringliteral">"linux"</span>>MyGen.script</command></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"linux"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"--device="</span>>#D</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"win"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"/device="</span>>#D</argument></div> +<div class="line"></exe></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Exe"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_command">command</a> </td><td>Invocation command for the generator tool. Command line options should be passed via <code><arguments></code>. </td><td><a class="el" href="pdsc_generators_pg.html#element_gen_command">GeneratorCommandType</a> </td><td>1..4 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">argument</a> </td><td>Arguments passed along with the <code><command></code> of the format <code><argument</code> <code>switch="-data">myFileName</argument></code>. Path information for files can be specified absolute or relative to the location (path) of the GPDSC file. </td><td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">GeneratorCommandArgumentType</a> </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_eclipse"></a> +/package/generators/generator/eclipse</h1> +<p>This element contains information about the Eclipse based generation tool.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><eclipse plugin=<span class="stringliteral">"com.mygen.plugin"</span> <span class="keyword">class</span>=<span class="stringliteral">"com.mygen.plugin.generator.launcher"</span> method=<span class="stringliteral">"launch"</span> ></div> +<div class="line"> <argument>#D</argument></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"></eclipse></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Eclipse"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>plugin </td><td>Name of the plugin. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>class </td><td>Plugin's class name. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>method </td><td>Method used to launch the plugin. </td><td>xs:string </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">argument</a> </td><td>Arguments passed to the plugin. </td><td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">GeneratorCommandArgumentType</a> </td><td>1..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_web"></a> +/package/generators/generator/web</h1> +<p>This element contains information about the web generation application.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><web url=<span class="stringliteral">"http://mygen.com/mygen"</span>></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"device"</span>>#D</argument></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"gpdsc"</span>>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"></web></div> +</div><!-- fragment --> <p> </p> +<table class="cmtable" summary="Element: Web"> +<tr> +<th>Parent </th><th colspan="3">Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>url </td><td>Specifies the URL of the web service. </td><td>URL </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">argument</a> </td><td>Arguments passed along to the web service. </td><td><a class="el" href="pdsc_generators_pg.html#element_gen_argument">GeneratorCommandArgumentType</a> </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_command"></a> +/package/generators/generator/.../command</h1> +<p>This element describes a single command line for launching the generator. Arguments should be passed along with an <a class="el" href="pdsc_generators_pg.html#element_gen_argument">argument</a>.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><exe></div> +<div class="line"> <command host = <span class="stringliteral">"win"</span>>MyGen.bat</command></div> +<div class="line"> <command host = <span class="stringliteral">"linux"</span>>MyGen.script</command></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"linux"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"--device="</span>>#D</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"win"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"/device="</span>>#D</argument></div> +<div class="line"></exe></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Generator Command Argument"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_exe">exe</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_gen_exe">/package/generators/generator/exe</a> </td></tr> +<tr> +<th>Current </th><th>Description </th><th colspan="2">Type </th></tr> +<tr> +<td>command </td><td>generator command line </td><td colspan="2">xs:string </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>host </td><td>Specifies the host operating system. Possible values are <code>all</code>, <code>win</code>, <code>linux</code>, <code>mac</code>, <code>other</code>. Only available with element <a class="el" href="pdsc_generators_pg.html#element_gen_exe">exe</a>. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_argument"></a> +/package/generators/generator/.../argument</h1> +<p>This element describes one or multiple arguments passed along with the parent element.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span> = <span class="stringliteral">"MyGen"</span>></div> +<div class="line"> <gpdsc name =<span class="stringliteral">"$P/RTE/MyGen/myGen.gpdsc"</span>/></div> +<div class="line"> <exe></div> +<div class="line"> <command host = <span class="stringliteral">"win"</span>>MyGen.bat</command></div> +<div class="line"> <command host = <span class="stringliteral">"linux"</span>>MyGen.script</command></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"linux"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"--device="</span>>#D</argument></div> +<div class="line"> <argument host=<span class="stringliteral">"win"</span> <span class="keywordflow">switch</span>=<span class="stringliteral">"/device="</span>>#D</argument></div> +<div class="line"> </exe></div> +<div class="line"> </div> +<div class="line"> <eclipse plugin=<span class="stringliteral">"com.mygen.plugin"</span> <span class="keyword">class</span>=<span class="stringliteral">"com.mygen.plugin.generator.launcher"</span> method=<span class="stringliteral">"launch"</span> ></div> +<div class="line"> <argument>#D</argument></div> +<div class="line"> <argument>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> </eclipse ></div> +<div class="line"> </div> +<div class="line"> <web url=<span class="stringliteral">"http://mygen.com/mygen"</span>></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"device"</span>>#D</argument></div> +<div class="line"> <argument <span class="keywordflow">switch</span>=<span class="stringliteral">"gpdsc"</span>>$P/RTE/MyGen/myGen.gpdsc</argument></div> +<div class="line"> </web></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Generator Command Argument"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_exe">exe</a>, <a class="el" href="pdsc_generators_pg.html#element_gen_eclipse">eclipse</a>, <a class="el" href="pdsc_generators_pg.html#element_gen_web">web</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_gen_exe">/package/generators/generator/exe</a>, <a class="el" href="pdsc_generators_pg.html#element_gen_eclipse">/package/generators/generator/eclipse</a>, <a class="el" href="pdsc_generators_pg.html#element_gen_web">/package/generators/generator/web</a> </td></tr> +<tr> +<th>Current </th><th>Description </th><th colspan="2">Type </th></tr> +<tr> +<td>argument </td><td>value of argument without command line switch </td><td colspan="2">xs:string </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>host </td><td>Specifies the host operating system. Possible values are <code>all</code>, <code>win</code>, <code>linux</code>, <code>mac</code>, <code>other</code>. Only available with element <a class="el" href="pdsc_generators_pg.html#element_gen_command">command</a>. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>switch </td><td>Specifies the command line switch separated from the argument value. Not available with element <a class="el" href="pdsc_generators_pg.html#element_gen_eclipse">eclipse</a>. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_project_files"></a> +/package/generators/generator/project_files</h1> +<p>The group <b>project_files</b> specifies all files that are required for the project setup. Only one such group can exist.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span>=<span class="stringliteral">"STM32CubeMX"</span> Gvendor=<span class="stringliteral">"STMicroelectronics"</span> Gtool=<span class="stringliteral">"STM32CubeMX"</span> Gversion=<span class="stringliteral">"4.10.0"</span>></div> +<div class="line"> <description>STM32CubeMX Environment</description></div> +<div class="line"> <select Dname=<span class="stringliteral">"STM32F746NGHx"</span> Dvendor=<span class="stringliteral">"STMicroelectronics:13"</span>/></div> +<div class="line"> <command>$SMDK/CubeMX/STM32CubeMXLauncher</command></div> +<div class="line"> <workingDir>$PRTE/Device/STM32F746NGHx</workingDir></div> +<div class="line"> <project_files></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"STCubeGenerated/Src/main.c"</span> /></div> +<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"STCubeGenerated/Inc/stm32f7xx_it.h"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"STCubeGenerated/Src/stm32f7xx_it.c"</span>/></div> +<div class="line"> </project_files></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Project Files"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_file">file</a> </td><td>Frame for files created by the generator and used in a project. </td><td>group </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_files"></a> +/package/generators/generator/files</h1> +<p>The group <b>files</b> specifies files that are required by the generator tool. Only one such group can exist.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span>=<span class="stringliteral">"MyGenerator"</span>></div> +<div class="line"> <files></div> +<div class="line"> ...</div> +<div class="line"> <files></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Generator Files"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generator">generator</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_generator">/package/generators/generator</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_file">file</a> </td><td>Frame for files used by the generator. </td><td>group </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="element_gen_file"></a> +/package/generators/generator/files/file</h1> +<p>This element contains information about files used by a generator.</p> +<p><b>Example</b> </p> +<div class="fragment"><div class="line"><generators></div> +<div class="line"> <generator <span class="keywordtype">id</span>=<span class="stringliteral">"MyGenerator"</span>></div> +<div class="line"> <files></div> +<div class="line"> <file category=<span class="stringliteral">"generator"</span> name=<span class="stringliteral">"Main.c"</span>/></div> +<div class="line"> <file category=<span class="stringliteral">"you_name_it"</span> name=<span class="stringliteral">"database/connection.odbc"</span> version=<span class="stringliteral">"1.2.3"</span>/></div> +<div class="line"> ...</div> +<div class="line"> <files></div> +<div class="line"> </generator></div> +<div class="line"></generators></div> +</div><!-- fragment --><p> </p> +<table class="cmtable" summary="Element: Generator File"> +<tr> +<th>Parent </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_gen_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_gen_files">/package/generators/generator/files</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>condition </td><td>Reference using the name of the respective condition specified in the conditions section of this package (<a class="el" href="pdsc_conditions_pg.html#element_conditions">/package/conditions</a>). If the condition resolves to <span class="XML-Token">false</span>, then the element will be ignored and treated as if not present. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>category </td><td>Describes the file type (for example: <span class="XML-Token">doc</span>, <span class="XML-Token">header</span>, <span class="XML-Token">library</span>). You can use predefined values as listed in the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Categories</a>, however, this is not mandatory. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>name </td><td>Can consist of the path (relative to the Pack base directory) and the file name with extension. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>version </td><td>File-specific version information. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr> +</table> +<p> </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/pdsc_package_pg.html b/docs/Pack/html/pdsc_package_pg.html new file mode 100644 index 0000000..6e0df64 --- /dev/null +++ b/docs/Pack/html/pdsc_package_pg.html @@ -0,0 +1,271 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>/package element</title> +<title>CMSIS-Pack: /package element</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pdsc_package_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/package element </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The basic package information captures the package vendor, the package name, a brief description of the package, and the schema version. Additional elements support the logistics of handling packages. The url specifies the origin of the description. It may be left empty if the pack will not be uploaded onto a web server. A license file might point to license agreements. A list of keywords assists searching for packages.</p> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><<span class="keyword">package </span>schemaVersion="1.4" xmlns:xs="http:<span class="comment">//www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd"></span></div> +<div class="line"> <vendor>ExampleVendor</vendor></div> +<div class="line"> <name>STM32F2xx_DFP</name> <!-- name of package --></div> +<div class="line"> <description>Device Family Package for STMicroelectronics STM32F2 Family of Arm Cortex-M3 based Microcontroller</description></div> +<div class="line"> <url></url></div> +<div class="line"> <supportContact>http:<span class="comment">//www.arm.com/support</supportContact></span></div> +<div class="line"> <license>./END_USER_LICENCE_AGREEMENT.rtf</license></div> +<div class="line"> <releases></div> +<div class="line"> <release version="1.0.0" date="2014-12-14"></div> +<div class="line"> First Release version of STM32F2 Device Family Pack.</div> +<div class="line"> </release></div> +<div class="line"> <release version="0.9.0"></div> +<div class="line"> Beta version of STM32F2 Device Family Pack.</div> +<div class="line"> </release></div> +<div class="line"> </releases></div> +<div class="line"> </div> +<div class="line"> <keywords> <!-- keywords for indexing --></div> +<div class="line"> <keyword>ST</keyword></div> +<div class="line"> <keyword>Device Support</keyword></div> +<div class="line"> <keyword>Device Family Package ST</keyword></div> +<div class="line"> <keyword>STM32F2</keyword></div> +<div class="line"> <keyword>STM32F2xx</keyword></div> +<div class="line"> </keywords></div> +<div class="line"> </div> +<div class="line"> <taxonomy> <!-- class and group descriptions --></div> +<div class="line"> <description Cclass="Board Support"></div> +<div class="line"> Generic Interfaces and Templates for Evaluation and Development Boards</div> +<div class="line"> </description></div> +<div class="line"> </taxonomy></div> +<div class="line"> ...</div> +<div class="line"></package></div> +</div><!-- fragment --> <p> </p> +<h1><a class="anchor" id="element_package"></a> +/package</h1> +<table class="cmtable" summary="Root Element: Package"> +<tr> +<th>Parent Element </th><th colspan="3">Element Chain </th></tr> +<tr> +<td>root </td><td colspan="3">Document root </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>schemaVersion </td><td>CMSIS-PDSC schema version used for describing the <a class="el" href="cp_SWComponents.html">Software Pack</a> (for example, <span class="XML-Token">"1.2"</span>). The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>required </td></tr> +<tr> +<td>xmlns:xs </td><td>Is set to: <span class="XML-Token">"http://www.w3.org/2001/XMLSchema-instance"</span> to indicate compliance to the XML format. </td><td>xs:decimal </td><td>required </td></tr> +<tr> +<td>xs:noNamespaceSchemaLocation </td><td>Path and file name of the PACK.xsd Schema. For example, <span class="XML-Token">"PACK.xsd"</span>. </td><td>xs:string </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td>name </td><td>Name of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. Could be displayed by an installer. </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>vendor </td><td>Name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>description </td><td>Brief description of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>xs:string </td><td>1..1 </td></tr> +<tr> +<td>url </td><td><a href="https://en.wikipedia.org/wiki/Uniform_resource_locator" target="_blank">HTTP URL</a> or <a href="https://en.wikipedia.org/wiki/File_URI_scheme" target="_blank">file URI</a> location of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. The URL can be used by installers for downloading, updating, or checking versions. If left empty, the Pack cannot be updated automatically from a server location. </td><td>xs:anyURI </td><td>1..1 </td></tr> +<tr> +<td>supportContact </td><td>HTTP URL or e-mail address for users to get support for the content of the Pack </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td>license </td><td>Path to a license document. </td><td>xs:string </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="element_requirements_pg.html#element_requirements">requirements</a> </td><td>Specifies other CMSIS-Packs, programming languages and compiler as well as their respective version or version range required by the components in this pack. </td><td>RequirementsType </td><td>0..1 </td></tr> +<tr> +<td>create </td><td>Use only when creating CMSIS software projects. Refer to <a class="el" href="cpdsc_pg.html">Project Description (*.cpdsc) Format</a> for details. </td><td>CreateType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="element_repository.html">repository</a> </td><td>URL of a public repository the pack originates from. </td><td>xs:anyURI </td><td><p class="starttd">0..1 </p> +<p class="endtd"></p> +</td></tr> +<tr> +<td><a class="el" href="element_releases.html">releases</a> </td><td>Version release history with brief information about a <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>ReleasesGroup </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="element_keywords.html">keywords</a> </td><td>Defines keywords that might be used to find a <a class="el" href="cp_SWComponents.html">Software Pack</a>. Keywords may be also exported to web page to provide information for search engines, such as Google. </td><td>group </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_generators_pg.html#element_generators">generators</a> </td><td>Specifies generator tools that have been used to create the <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>GeneratorsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_devices_pg.html#element_devices">devices</a> </td><td>Defines the device family, the devices, and optionally variants (such as boards). </td><td>group </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_boards_pg.html#element_boards">boards</a> </td><td>Defines the development board support package. </td><td>BoardsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="element_taxonomy.html">taxonomy</a> </td><td>Contains the description for a component class or for the combination between a component class and component group. </td><td>TaxonomyType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_apis_pg.html#element_apis">apis</a> </td><td>Defines the API (Application Programming Interfaces) specifications contained in the <a class="el" href="cp_SWComponents.html">Software Pack</a>. </td><td>ApisType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_conditions_pg.html#element_conditions">conditions</a> </td><td>Is a group that contains dependency definitions used within the Pack. These rules can describe dependencies on various levels: device attributes, components, or tools. Conditions are referenced by components and files. </td><td>ConditionsType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_examples_pg.html#element_examples">examples</a> </td><td>Lists the examples that are included in the Pack. </td><td>group </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td>Lists the software components that are included in the Pack. </td><td>group </td><td>0..1 </td></tr> +</table> +<p> </p> +<p><a class="anchor" id="VersionType"></a><b>Version Type</b></p> +<p>CMSIS-Pack version specification is inspired by the <a href="http://semver.org" target="_blank">Semantic Versioning 2.0.0</a>. Under this scheme, version numbers and the way they are incremented convey a meaning about the underlying content quality and the significance of changes from one version to the next. A version consists of 3 mandatory and 2 optional sections:</p> +<div class="fragment"><div class="line">MAJOR.MINOR.PATCH[-Pre Release][+Build Metadata]</div> +</div><!-- fragment --><ol type="1"> +<li><b>MAJOR:</b> increment MAJOR for backwards incompatible changes<ul> +<li>non-negative integer</li> +<li>0 indicates initial development, unstable and anything may change at any time <div class="fragment"><div class="line">ARM.CMSIS.0.9.0.pack < ARM.CMSIS.1.0.0.pack</div> +</div><!-- fragment --></li> +</ul> +</li> +<li><b>MINOR:</b> increment MINOR for backwards compatible additions and changes<ul> +<li>non-negative integer</li> +<li>accepted: – trailing zeros are accepted but effectively ignored for version comparison <div class="fragment"><div class="line">ARM.CMSIS.1.02.0.pack equal to ARM.CMSIS.1.2.0.pack</div> +</div><!-- fragment --></li> +</ul> +</li> +<li><b>PATCH:</b> increment PATCH for bug fixes not affecting compatibility<ul> +<li>non-negative integer</li> +<li>accepted:<ul> +<li>trailing zeros are accepted but effectively ignored for version comparison</li> +<li>a version ending after MINOR without specifying PATCH. In this case PATCH == 0 is assumed. <div class="fragment"><div class="line">ARM.CMSIS.1.1.pack equal to ARM.CMSIS.1.1.0.pack</div> +</div><!-- fragment --></li> +</ul> +</li> +</ul> +</li> +<li><em>pre release:</em> the optional pre-release string must start with a hyphen ('-') immediately after the <em>PATCH</em> and consists of a series of dot separated ASCII alphanumerics and hyphen ([0-9A-Za-z-]).<ul> +<li>accepted: the pre-release string immediately following the PATCH without a hyphen if the first item is a character. <div class="fragment"><div class="line">ARM.CMSIS.4.3.0-alpha.1</div> +</div><!-- fragment --></li> +</ul> +</li> +<li><em>build metadata:</em> the optional build metadata must be denoted by appending a plus sign ('+') and a series of dot separated identifiers. Identifiers comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]+. Two versions that differ only in the build metadata, have the same precedence. <div class="fragment"><div class="line">ARM.CMSIS.4.3.0-alpha.1+build.102 </div> +</div><!-- fragment --></li> +</ol> +<p>The above is extending the recommendation that was given in previous version of this specification.:</p> +<p>Version types are used in:</p> +<ul> +<li><a class="el" href="pdsc_package_pg.html#element_package">/package</a> (attribute: <em>schemaVersion</em>)</li> +<li><a class="el" href="element_releases.html#element_release">/package/releases/release</a> (attribute: <em>version</em>)</li> +<li><a class="el" href="pdsc_apis_pg.html#element_api">/package/apis/api</a> (attribute: <em>Capiversion</em>)</li> +<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a> (attributes: <em>Capiversion</em> and <em>Cversion</em>)</li> +<li><a class="el" href="pdsc_components_pg.html#element_bundle">/package/components/bundle</a> (attribute: <em>Cversion</em>)</li> +<li><a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a> (attributes: <em>Capiversion</em> and <em>Cversion</em>)</li> +<li><a class="el" href="pdsc_examples_pg.html#element_example">/package/examples/example</a> (attribute: <em>version</em>)</li> +<li><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">/package/examples/example/attributes/component</a> (attribute: <em>Cversion</em>)</li> +</ul> +<p><b>Example:</b> this example applies to <a class="el" href="element_releases.html#element_release">/package/releases/release</a>. </p> +<div class="fragment"><div class="line"><release version=<span class="stringliteral">"1.4.2-RC2"</span> ...></div> +</div><!-- fragment --><p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li> + <li class="footer">Generated on Wed Aug 1 2018 17:12:42 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/printComponentTabs.js b/docs/Pack/html/printComponentTabs.js new file mode 100644 index 0000000..8afdb6b --- /dev/null +++ b/docs/Pack/html/printComponentTabs.js @@ -0,0 +1,39 @@ +var strgURL = location.pathname; // path of current component + +// constuctor for the array of objects +function tabElement(id, folderName, tabTxt ) { + this.id = id; // elementID as needed in html; + this.folderName = folderName; // folder name of the component + this.tabTxt = tabTxt; // Text displayed as menu on the web + this.currentListItem = '<li id="' + this.id + '" class="current"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>'; + this.listItem = '<li id="' + this.id + '"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>'; +}; + +// array of objects +var arr = []; + +// fill array + arr.push( new tabElement( "GEN", "/General/html/", "General") ); + arr.push( new tabElement( "CORE_A", "/Core_A/html/", "CMSIS-Core(A)") ); + arr.push( new tabElement( "CORE_M", "/Core/html/", "CMSIS-Core(M)") ); + arr.push( new tabElement( "DRV", "/Driver/html/", "Driver") ); + arr.push( new tabElement( "DSP", "/DSP/html/", "DSP") ); + arr.push( new tabElement( "NN", "/NN/html/", "NN") ); + arr.push( new tabElement( "RTOSv1", "/RTOS/html/", "RTOS v1") ); + arr.push( new tabElement( "RTOSv2", "/RTOS2/html/", "RTOS v2") ); + arr.push( new tabElement( "PACK", "/Pack/html/", "Pack") ); + arr.push( new tabElement( "SVD", "/SVD/html/", "SVD") ); + arr.push( new tabElement( "DAP", "/DAP/html/", "DAP") ); + arr.push( new tabElement( "ZONE", "/Zone/html/", "Zone") ); + +// write tabs +// called from the header file. +function writeComponentTabs() { + for ( var i=0; i < arr.length; i++ ) { + if (strgURL.search(arr[i].folderName) > 0) { // if this is the current folder + document.write(arr[i].currentListItem); // then print and hightlight the tab + } else { + document.write(arr[i].listItem); // else, print the tab + } + } +}; diff --git a/docs/Pack/html/resize.js b/docs/Pack/html/resize.js new file mode 100644 index 0000000..304fcb6 --- /dev/null +++ b/docs/Pack/html/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/docs/Pack/html/sdf_pg.html b/docs/Pack/html/sdf_pg.html new file mode 100644 index 0000000..d4d118a --- /dev/null +++ b/docs/Pack/html/sdf_pg.html @@ -0,0 +1,987 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>System Description File (*.SDF) Format</title> +<title>CMSIS-Pack: System Description File (*.SDF) Format</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-Pack +  <span id="projectnumber">Version 1.5.0</span> + </div> + <div id="projectbrief">Delivery Mechanism for Software Packs</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.6 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('sdf_pg.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>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">System Description File (*.SDF) Format </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>An SDF file enables the silicon provider to describe more complex debug topologies than with a <a class="el" href="debug_description.html">Debug Description</a> in a tool agnostic way. Multiple debug and access ports and the setup of the different debug/trace components can be described consistently. Also, mandatory settings for a debugger can be described, such as trace signal delay settings, availability/usability of certain reset methods or timings, etc. This information is used by the debugger to access the right components that are requested by the user or application. The SDF format provides the XML elements for defining the debug system view of a device. These are "expert" settings that cannot be specified in a PDSC file.</p> +<dl class="section note"><dt>Note</dt><dd>SDF files are referenced in a PDSC file via the <code><debugconfig></code> element.</dd></dl> +<p><b>Example CMSIS System Description File (*.SDF)</b> </p> +<div class="fragment"><div class="line"><?xml version=<span class="stringliteral">"1.0"</span> encoding=<span class="stringliteral">"utf-8"</span> standalone=<span class="stringliteral">"no"</span>?></div> +<div class="line"><system_description version=<span class="stringliteral">"2.0"</span>></div> +<div class="line"> <debug_and_trace_config></div> +<div class="line"> <!-- Not filled at the moment --></div> +<div class="line"> <!-- Means <span class="keyword">using</span> defaults in <span class="keyword">this</span> area --></div> +<div class="line"> </debug_and_trace_config></div> +<div class="line"> <platform></div> +<div class="line"> <!-- Description of the scanchain --></div> +<div class="line"> <scanchain></div> +<div class="line"> </div> +<div class="line"> <!-- ARM Cortex-M0APP --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM0APP"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x0BA01477</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M0APP AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <!-- Cortex-M0APP AHB-AP Components --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_CPU"</span> type=<span class="stringliteral">"Cortex-M0"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE000E000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_DWT"</span> type=<span class="stringliteral">"CSDWT"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0001000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_FPB"</span> type=<span class="stringliteral">"CSFPB"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0002000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> </dap></div> +<div class="line"> </div> +<div class="line"> <!-- ARM Cortex-M4 --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM4"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"SWD:JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x4BA00477</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M4 AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <!-- Cortex-M4 AHB-AP Components --></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_CPU"</span> type=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE000E000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_DWT"</span> type=<span class="stringliteral">"CSDWT"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0001000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_FPB"</span> type=<span class="stringliteral">"CSFPB"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0002000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ITM"</span> type=<span class="stringliteral">"CSITM"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0000000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_TPIU"</span> type=<span class="stringliteral">"CSTPIU"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ARCHITECTURE"</span> >V7-M</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTED_FORMATTER_MODES"</span>>CONTINUOUS</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTED_PORT_SIZES"</span> >1;2;4</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0040000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ETM"</span> type=<span class="stringliteral">"CSETM"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"VERSION"</span>>3.5</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTS_CYCLE_ACCURATE"</span>><span class="keyword">true</span></device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0041000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ETB"</span> type=<span class="stringliteral">"CSETB"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"MEM_WIDTH"</span> >32</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"RAM_SIZE_BYTES"</span>>0x4000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0042000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> </dap></div> +<div class="line"> </div> +<div class="line"> </scanchain></div> +<div class="line"> </div> +<div class="line"> <topology></div> +<div class="line"> <!-- Trace Links --></div> +<div class="line"> <!-- Core Trace - Cortex-M4 --></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_DWT"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_ITM"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_ETM"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ETM"</span> slave=<span class="stringliteral">"CM4_TPIU"</span> slave_interface=<span class="stringliteral">"0"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ITM"</span> slave=<span class="stringliteral">"CM4_TPIU"</span> slave_interface=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <!-- Trace - Cortex-M4 ETB (Direct Connection ETM -> ETB) --></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ETM"</span> slave=<span class="stringliteral">"CM4_ETB"</span>/></div> +<div class="line"> </topology></div> +<div class="line"> </platform></div> +<div class="line"></system_description></div> +</div><!-- fragment --><h1><a class="anchor" id="sdf_structure"></a> +SDF top level structure</h1> +<p>The XML schema file <b>sdf_schema.xsd</b> defines the sections used in a <b>*.SDF</b> file. The current <b>sdf_schema.xsd</b> can be found under the ARM.CMSIS.*.Pack in the .\CMSIS\Utilities-directory.</p> +<h1><a class="anchor" id="sdf_element_system_description"></a> +/system_description</h1> +<table class="cmtable" summary="Element: CPDSC package"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td>root </td><td colspan="3">description root point for SDF </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>schemaVersion </td><td>Version of sdf_schema.xsd the description is compatible with </td><td>xs:decimal </td><td>required </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_debug_and_trace_config">/system_description/debug_and_trace_config</a> </td><td>Description how to configure debug and trace. </td><td>complexType </td><td>1..1 </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_platform">/system_description/platform</a> </td><td>Overall platform description. </td><td>complexType </td><td>1..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_debug_and_trace_config"></a> +/system_description/debug_and_trace_config</h1> +<p>Describes the recommended debug and trace configuration for the device.</p> +<table class="cmtable" summary="Element: debug_and_trace_config"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_system_description">system_description</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_system_description">/system_description</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_debug">/system_description/debug_and_trace_config/debug</a> </td><td>Describes the debug connection configuration </td><td>complexType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_trace">/system_description/debug_and_trace_config/trace</a> </td><td>Describes the trace configuration </td><td>complexType </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_debug"></a> +/system_description/debug_and_trace_config/debug</h1> +<p>Describes the recommended debug configuration for the device.</p> +<table class="cmtable" summary="Element: debug"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_debug_and_trace_config">debug_and_trace_config</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_debug_and_trace_config">/system_description/debug_and_trace_config</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_item">/system_description/.../config_item</a> </td><td>Describes a configuration item attribute/value pair </td><td>xs:string </td><td>0..* </td></tr> +</table> +<p>For a list of applicable configuration items, refer to <a class="el" href="sdf_pg.html#sdf_element_config_item">config_item</a>. </p> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_config_item"></a> +/system_description/.../config_item</h1> +<p>A <b>config_item</b> can appear in various SDF elements. This group contains individual configuration items.</p> +<table class="cmtable" summary="Element: config_item"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_debug">debug</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_debug">/system_description/debug_and_trace_config/debug</a> </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_trace_capture">trace_capture</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_trace_capture">/system_description/debug_and_trace_config/trace/trace_capture</a> </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_items">config_items</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_config_items">/system_description/platform/scanchain/../config_items</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Name of the configuration item. </td><td>xs:string </td><td>required </td></tr> +</table> +<h2>Debug element </h2> +<p>The <b>config_items</b> applicable to the <a class="el" href="sdf_pg.html#sdf_element_debug">debug</a> element are the following:</p> +<table class="doxtable"> +<tr> +<th>Item </th><th>Description </th></tr> +<tr> +<td>TRSTOnConnect </td><td>Debugger should perform TAP reset on connect (True/False) - Default Value:True </td></tr> +<tr> +<td>SRSTOnConnect </td><td>Debugger should perform a System reset on connect (True/False) - Default Value:False </td></tr> +<tr> +<td>AllowTRST </td><td>Allow the Debugger to perform TAP reset (True/False) - Default Value:True </td></tr> +<tr> +<td>DoSoftTRST </td><td>Debugger should perform a Soft Reset (True/False) - Default Value:True </td></tr> +<tr> +<td>TRSTHoldTime </td><td>TAP reset hold time in milliseconds - Default Value:10 </td></tr> +<tr> +<td>TRSTPostResetTime </td><td>Delay after TAP reset before next operation - Default Value:10 </td></tr> +<tr> +<td>ResetHoldTime </td><td>Time in milliseconds that the target is held in a hardware reset state - Default Value:100 </td></tr> +<tr> +<td>PostResetDelay </td><td>Time in milliseconds that the target will wait after reset is released before attempting any other debugging operations - Default Value:10 </td></tr> +<tr> +<td>Linked_SRST_TRST </td><td>Target hardware has System Reset and TAP reset physically linked (True/False) - Default Value:False </td></tr> +</table> +<h2>Device element </h2> +<p>The <b>config_items</b> applicable to the <a class="el" href="sdf_pg.html#sdf_element_device">device</a> element are the following (only applicable for devices that are child elements of another device or DAP):</p> +<table class="doxtable"> +<tr> +<th>Item </th><th>Description </th><th>Use </th></tr> +<tr> +<td>CORESIGHT_BASE_ADDRESS </td><td>the 4K aligned base address of a CoreSight device </td><td>Required </td></tr> +<tr> +<td>CORESIGHT_AP_INDEX </td><td>the access port index of the device </td><td>Required </td></tr> +</table> +<h2>Trace element </h2> +<p>The <b>config_items</b> applicable to the <a class="el" href="sdf_pg.html#sdf_element_trace">trace</a> element are the following:</p> +<ol type="1"> +<li>Parallel trace capture device configuration items ("type" = "parallel"). These "config_items" enable you to configure delays on the trace lines by a specified amount of time relative to the trace capture device defaults. These delays are used to allow for variations in target hardware. These configuration items have default values if not present. <table class="doxtable"> +<tr> +<th>Item </th><th>Description </th><th>Default </th></tr> +<tr> +<td>CLOCK_EDGE </td><td>Set to 0 or 1 to specify the clock edge on which to capture data </td><td>1 </td></tr> +<tr> +<td>DELAY_TRACE_CLOCK </td><td>Adjust the sampling point for the trace clock by the specified number of picoseconds </td><td>0 </td></tr> +<tr> +<td>DELAY_TRACE_SIGNAL_1 to DELAY_TRACE_SIGNAL_n </td><td>Adjust the sampling point for parallel trace signal 'n' by the specified number of picoseconds </td><td>0 </td></tr> +</table> +</li> +<li>High-speed serial trace configuration items ("type"="HSSTP"). These configuration items do not have any default values. If they are not present in the SDF file then HSSTP trace is not supported by the target. <table class="doxtable"> +<tr> +<th>Item </th><th>Description </th></tr> +<tr> +<td>HSSTP_LANES </td><td>The number of lanes (1-6) </td></tr> +<tr> +<td>HSSTP_SPEED </td><td>The HSSTP link speed (HSSTP_2_5Gbps, , HSSTP_3_0Gbps, HSSTP_3_125Gbps, HSSTP_4_25Gbps, HSSTP_5_0Gbps, HSSTP_6_0Gbps, HSSTP_6_25Gbps, HSSTP_8_0Gbps, HSSTP_10_0Gbps, HSSTP_10_3125Gbps, HSSTP_12_0Gbps, HSSTP_12_5Gbps, HSSTP_SETM_1_5Gbps, HSSTP_SETM_3_0Gbps, HSSTP_SETM_6_0Gbps) </td></tr> +<tr> +<td>HSSTP_PROTOCOL </td><td>The HSSTP protocol (HSSTP_PROTOCOL_ARM_HSSTP, HSSTP_PROTOCOL_8_BIT_SETM, HSSTP_PROTOCOL_16_BIT_SETM, HSSTP_PROTOCOL_32_BIT_SETM) </td></tr> +<tr> +<td>HSSTP_NDALT </td><td>Reverse byte bit-ordering (HSSTP_NDALT_Disabled/HSSTP_NDALT_Enabled) </td></tr> +<tr> +<td>HSSTP_CONNECTOR </td><td>The physical connector type (HSSTP_CONNECTOR_HSSTP/HSSTP_CONNECTOR_SMA) </td></tr> +<tr> +<td>HSSTP_RX_EQUALIZATION </td><td>The RX equalization type (RX_EQUALIZATION_DFE/RX_EQUALIZATION_LPM) </td></tr> +<tr> +<td>HSSTP_CRC </td><td>The type of CRC to use (HSSTP_CRC_Enabled, HSSTP_CRC_Disabled, HSSTP_CRC_Reversed, HSSTP_CRC_Ignored) </td></tr> +</table> +<b>Example</b> </li> +</ol> +<div class="fragment"><div class="line">...</div> +<div class="line"><device name=<span class="stringliteral">"CM4_ETM"</span> type=<span class="stringliteral">"CSETM"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"VERSION"</span>>3.5</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTS_CYCLE_ACCURATE"</span>><span class="keyword">true</span></device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0041000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"></device></div> +<div class="line">...</div> +</div><!-- fragment --> <p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_trace"></a> +/system_description/debug_and_trace_config/trace</h1> +<p>Describes the recommended trace configuration for the device.</p> +<table class="cmtable" summary="Element: trace"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_debug_and_trace_config">debug_and_trace_config</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_debug_and_trace_config">/system_description/debug_and_trace_config</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_trace_capture">/system_description/debug_and_trace_config/trace/trace_capture</a> </td><td>Describes the trace capture device </td><td>complexType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_trace_capture"></a> +/system_description/debug_and_trace_config/trace/trace_capture</h1> +<p>Describes settings for the trace capture device.</p> +<table class="cmtable" summary="Element: trace_capture"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_trace">trace</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_trace">/system_description/debug_and_trace_config/trace</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_item">/system_description/.../config_item</a> </td><td>Describes a configuration item attribute/value pair </td><td>complexType </td><td>0..* </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>type </td><td>Trace capture type: for example parallel or HSSTP. </td><td>xs:string </td><td>required </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_platform"></a> +/system_description/platform</h1> +<p>Describes the platform configuration (scanchain, topology and cluster arrangement).</p> +<table class="cmtable" summary="Element: platform"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_system_description">system_description</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_system_description">/system_description</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_scanchain">/system_description/platform/scanchain</a> </td><td>Lists all DAPs/Devices in the order that they appear on the scanchain (Note - order is reverse to DAP references in PDSC files). The first device in the scanchain is one closest to target's TDI pin. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_topology">/system_description/platform/topology</a> </td><td>Describes the system topology </td><td>complexType </td><td>0..1 </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_clusters">/system_description/platform/clusters</a> </td><td>Describes the cluster arrangement </td><td>complexType </td><td>0..1 </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_scanchain"></a> +/system_description/platform/scanchain</h1> +<p>Lists all DAPs/devices in the order that they appear on the scanchain.</p> +<dl class="section note"><dt>Note</dt><dd>The order is reverse to the DAP references in PDSC files. The first device in the scanchain is the one closest to the target's TDI pin.</dd></dl> +<table class="cmtable" summary="Element: scanchain"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_platform">platform</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_platform">/system_description/platform</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_dap">/system_description/platform/scanchain/dap</a> </td><td>Describes a DAP and a list of devices associated with that DAP. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">/system_description/platform/scanchain/device</a> </td><td>Describes a single device on the scan chain. </td><td>complexType </td><td>0..* </td></tr> +</table> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line">...</div> +<div class="line"><!-- Description of the scanchain --></div> +<div class="line"><scanchain></div> +<div class="line"></div> +<div class="line"> <!-- ARM Cortex-M0APP --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM0APP"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x0BA01477</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M0APP AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <!-- Cortex-M0APP AHB-AP Components --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_CPU"</span> type=<span class="stringliteral">"Cortex-M0"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE000E000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_DWT"</span> type=<span class="stringliteral">"CSDWT"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0001000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_FPB"</span> type=<span class="stringliteral">"CSFPB"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0002000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> </dap></div> +<div class="line"> </div> +<div class="line"> <!-- ARM Cortex-M4 --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM4"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"SWD:JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x4BA00477</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M4 AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <!-- Cortex-M4 AHB-AP Components --></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_CPU"</span> type=<span class="stringliteral">"Cortex-M4"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE000E000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_DWT"</span> type=<span class="stringliteral">"CSDWT"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0001000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_FPB"</span> type=<span class="stringliteral">"CSFPB"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0002000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ITM"</span> type=<span class="stringliteral">"CSITM"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0000000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_TPIU"</span> type=<span class="stringliteral">"CSTPIU"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ARCHITECTURE"</span> >V7-M</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTED_FORMATTER_MODES"</span>>CONTINUOUS</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTED_PORT_SIZES"</span> >1;2;4</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0040000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ETM"</span> type=<span class="stringliteral">"CSETM"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"VERSION"</span>>3.5</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"SUPPORTS_CYCLE_ACCURATE"</span>><span class="keyword">true</span></device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0041000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM4_ETB"</span> type=<span class="stringliteral">"CSETB"</span>></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"MEM_WIDTH"</span> >32</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"RAM_SIZE_BYTES"</span>>0x4000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0042000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> </dap></div> +<div class="line"> </div> +<div class="line"></scanchain></div> +<div class="line">...</div> +</div><!-- fragment --> <p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_dap"></a> +/system_description/platform/scanchain/dap</h1> +<p>Describes a DAP and a list of devices associated with that DAP.</p> +<table class="cmtable" summary="Element: dap"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_scanchain">scanchain</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_scanchain">/system_description/platform/scanchain</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">/system_description/platform/scanchain/device</a> </td><td>List of devices associated with this DAP. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device_info_items">/system_description/platform/scanchain/../../device_info_items</a> </td><td>Contains implementation details for the DAP. Applicable items for a DAP are "JTAG_IDCODE" (the JTAG ID code for the DAP) or "DPIDR" (the Debug Port Identification Register contents). </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_items">/system_description/platform/scanchain/../../config_items</a> </td><td>Configuration items specific to a DAP type. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Unique name of the DAP. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>type </td><td>Specifies the type of the DAP (e.g. ARMCS-DP). </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>irLength </td><td>Specifies the IR length of the DAP (default value: 4). </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>protocol </td><td>Colon delimited list of protocols via which the DAP can be use. Possible values are SWD, JTAG, and cJTAG. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>targetsel </td><td>Specifies the SW-DPv2 TARGETSEL register value that selects this DAP in a serial-wire debug multi-drop system. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><system_description version=<span class="stringliteral">"2.0"</span>></div> +<div class="line"> <debug_and_trace_config></div> +<div class="line"> <!-- Not filled at the moment --></div> +<div class="line"> <!-- Means <span class="keyword">using</span> defaults in <span class="keyword">this</span> area --></div> +<div class="line"> </debug_and_trace_config></div> +<div class="line"> <platform></div> +<div class="line"> <!-- Description of the scanchain --></div> +<div class="line"> <scanchain></div> +<div class="line"> </div> +<div class="line"> <!-- ARM Cortex-M0APP --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM0APP"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x0BA01477</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M0APP AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> </div> +<div class="line"> <!-- Cortex-M0APP AHB-AP Components --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_CPU"</span> type=<span class="stringliteral">"Cortex-M0"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE000E000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_DWT"</span> type=<span class="stringliteral">"CSDWT"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0001000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_FPB"</span> type=<span class="stringliteral">"CSFPB"</span>></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_BASE_ADDRESS"</span>>0xE0002000</config_item></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> </device></div> +<div class="line"> </dap></div> +<div class="line"> ...</div> +<div class="line"></system_description></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_device"></a> +/system_description/platform/scanchain/device</h1> +<table class="cmtable" summary="Element: device"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_scanchain">scanchain</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_scanchain">/system_description/platform/scanchain</a> </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_dap">dap</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_dap">/system_description/platform/scanchain/dap</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">/system_description/platform/scanchain/device</a> </td><td>Describes a single nested device associated with this device. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device_info_items">/system_description/platform/scanchain/../../device_info_items</a> </td><td>Describes a sequence of device information items. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_items">/system_description/platform/scanchain/../../config_items</a> </td><td>Configuration items specific to this device. </td><td>complexType </td><td>0..* </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Unique name of the device. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>type </td><td>Specifies the device type (see below). </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>irLength </td><td>Specifies the IR length of the device (default value: 4). </td><td>xs:string </td><td>optional </td></tr> +</table> +<p>Depending on the context, a device type can be one of the following types:</p> +<ol type="1"> +<li>A core device, where the type is usually specified as "Cortex-xx" (such as Cortex-A72,Cortex-M0+, Cortex-R5). It can also be a vendor-specific core type, or an older JTAG ARM core. Current cores are: <br/> + "Cortex-A5", "Cortex-A7", "Cortex-A8", "Cortex-A9", "Cortex-A12", "Cortex-A15", "Cortex-A17", "Cortex-A32", "Cortex-A35", "Cortex-A53", "Cortex-A57", "Cortex-A72", "Cortex-A73", "Cortex-M0", "Cortex-M0+", "Cortex-M0+_JTAG-AP", "Cortex-M1", "Cortex-M23", "Cortex-M3", "Cortex-M33", "Cortex-M3_JTAG-AP", "Cortex-M4", "Cortex-M7", "Cortex-R4", "Cortex-R5", "Cortex-R7", "Cortex-R8", "Cortex-R52", "SC000", "SC100D", "SC200D", "SC300", "ThunderX", "ThunderX-r2", "ARMV8MBL", "ARMV8MML", "88FR101", "88FR111", "88FR331", "88SV581x-v7_PJ4", "88SV581x-v7_PJ4_TZ", "ARM1136JF-S", "ARM1136JF-S_JTAG-AP", "ARM1156T2F-S", "ARM1156T2F-S_JTAG-AP", "ARM1176JZF-S", "ARM1176JZF-S_JTAG-AP", "ARM11MPCore", "ARM11MPCore_JTAG-AP", "ARM710T", "ARM720T", "ARM720T_r4", "ARM740T", "ARM7EJ-S", "ARM7EJ-S_JTAG-AP", "ARM7TDMI", "ARM7TDMI_JTAG-AP", "ARM7TDMI_r4", "ARM7TDMI_r4_JTAG-AP", "ARM920T", "ARM922T", "ARM925T", "ARM926EJ-S", "ARM926EJ-S_JTAG-AP", "ARM940T", "ARM946E-S", "ARM946E-S_JTAG-AP", "ARM966E-S", "ARM966E-S_JTAG-AP", "ARM968E-S", "ARM968E-S_JTAG-AP", "ARM968E-Srd", "ARM996HS", "ARM9E-S", "ARM9EJ-S", "ARM9EJ-S_JTAG-AP", "ARM9TDMI", "V7A-Generic", "V8-Generic", "V8M-Generic", "V8R-Generic", "V8_1-Generic", "V8_2-Generic".</li> +<li>An Access Port (AP) type such as "CSAUTHAP", "CSJTAGAP" or "CSMEMAP".</li> +<li>A CoreSight device type that can be one of "CSCTI", "CSETM", "CSITM", "CSMTB", "CSPMU", "CSPTM", "CSTFunnel", "CSTMC", "CSTPIU","CSSTM", "CSSWO", "CSELA", "CSATBReplicator", "CSGPR", "CSETB", "CSDWT", "CSETB", "CSTSGEN", "CSHTM", "CSFPB"</li> +<li>A JTAG device, which is directly on the scanchain (e.g. ARM11).</li> +</ol> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><system_description version=<span class="stringliteral">"2.0"</span>></div> +<div class="line"> <debug_and_trace_config></div> +<div class="line"> <!-- Not filled at the moment --></div> +<div class="line"> <!-- Means <span class="keyword">using</span> defaults in <span class="keyword">this</span> area --></div> +<div class="line"> </debug_and_trace_config></div> +<div class="line"> <platform></div> +<div class="line"> <!-- Description of the scanchain --></div> +<div class="line"> <scanchain></div> +<div class="line"> <device name=<span class="stringliteral">"My Custom TAP"</span> type=<span class="stringliteral">"Other"</span> irLength=<span class="stringliteral">"5"</span>></div> +<div class="line"> <!-- JTAG-TAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x04560014</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +<div class="line"></system_description></div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_config_items"></a> +/system_description/platform/scanchain/../../config_items</h1> +<p>The configuration items are specific to the device type or DAP. Refer to <a class="el" href="sdf_pg.html#sdf_element_config_item">/system_description/.../config_item</a> for a list of applicable device information items and a code example.</p> +<table class="cmtable" summary="Element: config_items"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">device</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_device">/system_description/platform/../device</a> </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_dap">dap</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_dap">/system_description/platform/scanchain/dap</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_config_item">/system_description/.../config_item</a> </td><td>Describes a configuration item. </td><td>complexType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_device_info_items"></a> +/system_description/platform/scanchain/../../device_info_items</h1> +<p>The device information items are specific to the type of device or DAP and describe implementation specific details. Refer to <a class="el" href="sdf_pg.html#sdf_element_device_info_item">/system_description/platform/scanchain/../../device_info_items/device_info_item</a> for a list of applicable device information items and a code example.</p> +<table class="cmtable" summary="Element: device_info_items"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">device</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_device">/system_description/platform/../device</a> </td></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device">dap</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_dap">/system_description/platform/scanchain/dap</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device_info_item">/system_description/platform/scanchain/../../device_info_items/device_info_item</a> </td><td>Describes a sequence of device information items. </td><td>xs:string </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_device_info_item"></a> +/system_description/platform/scanchain/../../device_info_items/device_info_item</h1> +<p>Describes implementation specific details of the specified device or DAP.</p> +<table class="cmtable" summary="Element: device_info_item"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_device_info_items">device_info_items</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_device_info_items">/system_description/platform/../../device_info_items</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Unique name for the device information item. </td><td>xs:string </td><td>required </td></tr> +</table> +<p>The following device information items are applicable for each type of "device":</p> +<table class="doxtable"> +<tr> +<th>Device </th><th>Device Information Item </th><th>Description </th></tr> +<tr> +<td><b>CSMEMAP</b> </td><td>AP_TYPE </td><td>Access port type is one of AHB-AP, APB-AP-M, APB-AP and AXI-AP </td></tr> +<tr> +<td></td><td>ROM_TABLE_BASE_ADDRESS </td><td>The ROM table base address (in hex) </td></tr> +<tr> +<td><b>CSETM</b> </td><td>VERSION </td><td>The ETM Version (e.g. 4.0 - required) </td></tr> +<tr> +<td></td><td>SUPPORTS_CONTEXT_IDS </td><td>Supports Context ID Tracing (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_VIRTUAL_CONTEXT_IDS </td><td>Supports Virtual Context ID Tracing (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_CYCLE_ACCURATE </td><td>Supports Cycle Accurate Trace (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_DATA_VALUE_TRACE </td><td>Supports Data Value Trace (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_DATA_ADDRESS_TRACE </td><td>Supports Data Address Trace (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_DATA_ONLY_MODE </td><td>Supports Data Only Trace Mode (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_TIMESTAMPS </td><td>Supports Timestamps(True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_TRACE_RANGES </td><td>Supports Trace Ranges (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_BRANCH_BROADCAST </td><td>Supports Branch Broadcasting (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_CONDITIONAL_INSTRUCTIONS </td><td>Supports tracing conditional non-branch instruction (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_Q_ELEMENTS </td><td>Supports Q Elements (True/False - Default Value:False) </td></tr> +<tr> +<td><b>CSMTB</b> </td><td>RAM_SIZE_BYTES </td><td>MTB SRAM buffer size in bytes </td></tr> +<tr> +<td></td><td>SUPPORTS_USER_PRIV </td><td>User/Privileged support present </td></tr> +<tr> +<td><b>CSTPM</b> </td><td>VERSION </td><td>The PTM Version (eg 1.1) - Required </td></tr> +<tr> +<td></td><td>SUPPORTS_VMID </td><td>VMID Tracing support (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_CONTEXT_IDS </td><td>Context ID Tracing support (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_RETURN_STACK </td><td>Return stack support (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_CYCLE_ACCURATE </td><td>Cycle Accurate trace support (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_BRANCH_BROADCAST </td><td>Supports Branch Broadcasting (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_TIMESTAMPS </td><td>Supports Timestamping (True/False - Default Value:False) </td></tr> +<tr> +<td></td><td>SUPPORTS_FIFOFULL </td><td>Supports FIFOFULL (True/False - Default Value:False) </td></tr> +<tr> +<td><b>CSTMC</b> </td><td>CONFIG_TYPE </td><td>The TMC device configuration can be one of (ETR, ETF or ETB) - required </td></tr> +<tr> +<td></td><td>RAM_SIZE_BYTES </td><td>The SRAM memory size used in ETF and ETR configurations (512 Bytes to 4 GiB) - Default: 512 Bytes </td></tr> +<tr> +<td><b>CSTPIU</b> </td><td>SUPPORTED_PORT_SIZES </td><td>Semicolon separated list of supported port sizes (in bits) - required </td></tr> +<tr> +<td></td><td>ARCHITECTURE </td><td>The TPIU variant is one of (Coresight, TPIU-Lite, V7-M or V8-M) - Required </td></tr> +</table> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><system_description version=<span class="stringliteral">"2.0"</span>></div> +<div class="line"> ...</div> +<div class="line"> <platform></div> +<div class="line"> <!-- Description of the scanchain --></div> +<div class="line"> <scanchain></div> +<div class="line"> <!-- ARM Cortex-M0APP --></div> +<div class="line"> <dap name=<span class="stringliteral">"ARMCS-DP_CM0APP"</span> type=<span class="stringliteral">"ARMCS-DP"</span> irLength=<span class="stringliteral">"4"</span> protocol=<span class="stringliteral">"JTAG"</span>></div> +<div class="line"> <!-- CoreSight DAP Info --></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"JTAG_IDCODE"</span>>0x00000000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> <!-- Access Ports --></div> +<div class="line"> <device name=<span class="stringliteral">"CM0APP_AHB-AP"</span> type=<span class="stringliteral">"CSMEMAP"</span>> <!-- Cortex-M0APP AHB-AP --></div> +<div class="line"> <config_items></div> +<div class="line"> <config_item name=<span class="stringliteral">"CORESIGHT_AP_INDEX"</span>>0</config_item></div> +<div class="line"> </config_items></div> +<div class="line"> <device_info_items></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"AP_TYPE"</span>>AHB-AP</device_info_item></div> +<div class="line"> <device_info_item name=<span class="stringliteral">"ROM_TABLE_BASE_ADDRESS"</span>>0xE00FF000</device_info_item></div> +<div class="line"> </device_info_items></div> +<div class="line"> </device></div> +<div class="line"> ...</div> +</div><!-- fragment --><p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_topology"></a> +/system_description/platform/topology</h1> +<p>Describes the system topology.</p> +<table class="cmtable" summary="Element: topology"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_platform">platform</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_platform">/system_description/platform</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_topology_link">/system_description/platform/topology/topology_link</a> </td><td>Describes how CoreSight devices and cores are connected. </td><td>complexType </td><td>0..* </td></tr> +</table> +<p><b>Example:</b> </p> +<div class="fragment"><div class="line"><system_description version=<span class="stringliteral">"2.0"</span>></div> +<div class="line"> <debug_and_trace_config></div> +<div class="line"> </debug_and_trace_config></div> +<div class="line"> <platform></div> +<div class="line"> ...</div> +<div class="line"> <topology></div> +<div class="line"> <!-- Trace Links --></div> +<div class="line"> <!-- Core Trace - Cortex-M4 --></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_DWT"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_ITM"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"CoreTrace"</span> master=<span class="stringliteral">"CM4_CPU"</span> slave=<span class="stringliteral">"CM4_ETM"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ETM"</span> slave=<span class="stringliteral">"CM4_TPIU"</span> slave_interface=<span class="stringliteral">"0"</span>/></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ITM"</span> slave=<span class="stringliteral">"CM4_TPIU"</span> slave_interface=<span class="stringliteral">"1"</span>/></div> +<div class="line"> <!-- Trace - Cortex-M4 ETB (Direct Connection ETM -> ETB) --></div> +<div class="line"> <topology_link type=<span class="stringliteral">"ATB"</span> master=<span class="stringliteral">"CM4_ETM"</span> slave=<span class="stringliteral">"CM4_ETB"</span>/></div> +<div class="line"> </topology></div> +<div class="line"> </platform></div> +<div class="line"></system_description></div> +</div><!-- fragment --> <p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_topology_link"></a> +/system_description/platform/topology/topology_link</h1> +<p>Describes how CoreSight devices and cores are connected.</p> +<table class="cmtable" summary="Element: topology_link"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_platform">topology</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_topology">/system_description/platform/topology</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Unique name for the link. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>type </td><td>Specifies the link type. Can be on of the following: ATB, CoreTrace, or CTITrigger. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>master </td><td>Unique name of the master device in the link. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>slave </td><td>Unique name of the slave device in the link. </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>mater_interface </td><td>Specifies the mater interface number. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>slave_interface </td><td>Specifies the slave interface number. </td><td>xs:string </td><td>optional </td></tr> +<tr> +<td>trigger </td><td>Specifies the trigger number. </td><td>xs:string </td><td>optional </td></tr> +</table> +<p><b>Example:</b> </p> +<p>A complete set of links for a Cortex-A7 implementation with ETM and TPIU might look like this: </p> +<div class="fragment"><div class="line">master=<span class="stringliteral">"Cortex-A7_0"</span> slave=<span class="stringliteral">"CSCTI_6"</span> trigger=<span class="stringliteral">"7"</span> type=<span class="stringliteral">"CTITrigger"</span></div> +<div class="line">master=<span class="stringliteral">"CSETM_0"</span> slave=<span class="stringliteral">"CSCTI_6"</span> trigger=<span class="stringliteral">"6"</span> type=<span class="stringliteral">"CTITrigger"</span></div> +<div class="line">master=<span class="stringliteral">"Cortex-A7_0"</span> slave=<span class="stringliteral">"CSETM_0"</span> type=<span class="stringliteral">"CoreTrace"</span></div> +<div class="line">master=<span class="stringliteral">"CSETM_0"</span> slave=<span class="stringliteral">"CSTFunnel_2"</span> slave_interface=<span class="stringliteral">"0"</span> type=<span class="stringliteral">"ATB"</span></div> +<div class="line">master=<span class="stringliteral">"CSTFunnel_2"</span> slave=<span class="stringliteral">"CSTFunnel_0"</span> slave_interface=<span class="stringliteral">"1"</span> type=<span class="stringliteral">"ATB"</span></div> +<div class="line">master=<span class="stringliteral">"CSTFunnel_0"</span> slave=<span class="stringliteral">"CSTMC_0"</span> type=<span class="stringliteral">"ATB"</span></div> +<div class="line">master=<span class="stringliteral">"CSTMC_0"</span> slave=<span class="stringliteral">"CSTPIU"</span> type=<span class="stringliteral">"ATB"</span></div> +</div><!-- fragment --> <p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_clusters"></a> +/system_description/platform/clusters</h1> +<p>Describes the cluster arrangement.</p> +<table class="cmtable" summary="Element: clusters"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_platform">platform</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_platform">/system_description/platform</a> </td></tr> +<tr> +<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_cluster">/system_description/platform/clusters/cluster</a> </td><td>Lists the devices that make up the cluster and a unique name for the cluster. </td><td>complexType </td><td>0..* </td></tr> +</table> +<p> </p> +<hr/> +<h1><a class="anchor" id="sdf_element_cluster"></a> +/system_description/platform/clusters/cluster</h1> +<p>Lists the devices that make up the cluster.</p> +<table class="cmtable" summary="Element: cluster"> +<tr> +<th>Parents </th><th colspan="3">Element Chain </th></tr> +<tr> +<td><a class="el" href="sdf_pg.html#sdf_element_clusters">clusters</a> </td><td colspan="3"><a class="el" href="sdf_pg.html#sdf_element_clusters">/system_description/platform/clusters</a> </td></tr> +<tr> +<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr> +<tr> +<td>name </td><td>Unique name for the cluster (for example Cortex-A15_SMP_0). </td><td>xs:string </td><td>required </td></tr> +<tr> +<td>devices </td><td>Colon separated list of named devices in the cluster, for example "Cortex-A15_0:Cortex-A15_1:Cortex-A15_2:Cortex-A15_3". </td><td>xs:string </td><td>required </td></tr> +</table> +<p> </p> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Aug 1 2018 17:12:43 for CMSIS-Pack by Arm Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_0.html b/docs/Pack/html/search/all_0.html new file mode 100644 index 0000000..17b6da8 --- /dev/null +++ b/docs/Pack/html/search/all_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_0.js b/docs/Pack/html/search/all_0.js new file mode 100644 index 0000000..db171fe --- /dev/null +++ b/docs/Pack/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['algorithm_20functions',['Algorithm Functions',['../algorithmFunc.html',1,'flashAlgorithm']]] +]; diff --git a/docs/Pack/html/search/all_1.html b/docs/Pack/html/search/all_1.html new file mode 100644 index 0000000..e290644 --- /dev/null +++ b/docs/Pack/html/search/all_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_1.js b/docs/Pack/html/search/all_1.js new file mode 100644 index 0000000..05a8b6b --- /dev/null +++ b/docs/Pack/html/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['configuration_20wizard_20annotations',['Configuration Wizard Annotations',['../configWizard.html',1,'']]], + ['cmsis_2dpack_20index_20files',['CMSIS-Pack Index Files',['../packIndexFile.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_2.html b/docs/Pack/html/search/all_2.html new file mode 100644 index 0000000..95ded12 --- /dev/null +++ b/docs/Pack/html/search/all_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_2.js b/docs/Pack/html/search/all_2.js new file mode 100644 index 0000000..d58a54a --- /dev/null +++ b/docs/Pack/html/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['debug_20setup_20with_20cmsis_2dpack',['Debug Setup with CMSIS-Pack',['../coresight_setup.html',1,'']]], + ['debug_20description',['Debug Description',['../debug_description.html',1,'coresight_setup']]] +]; diff --git a/docs/Pack/html/search/all_3.html b/docs/Pack/html/search/all_3.html new file mode 100644 index 0000000..4d312d0 --- /dev/null +++ b/docs/Pack/html/search/all_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_3.js b/docs/Pack/html/search/all_3.js new file mode 100644 index 0000000..e62ee24 --- /dev/null +++ b/docs/Pack/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flash_20programming',['Flash Programming',['../flashAlgorithm.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_4.html b/docs/Pack/html/search/all_4.html new file mode 100644 index 0000000..d72a910 --- /dev/null +++ b/docs/Pack/html/search/all_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_4.js b/docs/Pack/html/search/all_4.js new file mode 100644 index 0000000..a7d98d6 --- /dev/null +++ b/docs/Pack/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pack_20with_20software_20components',['Pack with Software Components',['../cp_SWComponents.html',1,'']]], + ['project_20description_20_28_2a_2ecpdsc_29_20format',['Project Description (*.cpdsc) Format',['../cpdsc_pg.html',1,'']]], + ['pack_20with_20device_20support',['Pack with Device Support',['../createPack_DFP.html',1,'']]], + ['pack_20with_20board_20support',['Pack with Board Support',['../createPackBoard.html',1,'']]], + ['publish_20a_20pack',['Publish a Pack',['../createPackPublish.html',1,'']]], + ['pack_20example',['Pack Example',['../pack_Example.html',1,'']]], + ['packchk_2eexe',['packChk.exe',['../packChk.html',1,'createPackUtil']]], + ['pack_20description_20_28_2a_2epdsc_29_20format',['Pack Description (*.pdsc) Format',['../packFormat.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_5.html b/docs/Pack/html/search/all_5.html new file mode 100644 index 0000000..99ef726 --- /dev/null +++ b/docs/Pack/html/search/all_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_5.js b/docs/Pack/html/search/all_5.js new file mode 100644 index 0000000..3e18830 --- /dev/null +++ b/docs/Pack/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history_20of_20cmsis_2dpack',['Revision History of CMSIS-Pack',['../pack_revisionHistory.html',1,'index']]] +]; diff --git a/docs/Pack/html/search/all_6.html b/docs/Pack/html/search/all_6.html new file mode 100644 index 0000000..6133ab3 --- /dev/null +++ b/docs/Pack/html/search/all_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_6.js b/docs/Pack/html/search/all_6.js new file mode 100644 index 0000000..14fed29 --- /dev/null +++ b/docs/Pack/html/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['software_20packs_20overview',['Software Packs Overview',['../cp_Packs.html',1,'']]], + ['system_20description_20file_20_28_2a_2esdf_29_20format',['System Description File (*.SDF) Format',['../sdf_pg.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_7.html b/docs/Pack/html/search/all_7.html new file mode 100644 index 0000000..5748125 --- /dev/null +++ b/docs/Pack/html/search/all_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_7.js b/docs/Pack/html/search/all_7.js new file mode 100644 index 0000000..dd07669 --- /dev/null +++ b/docs/Pack/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilities_20for_20creating_20packs',['Utilities for Creating Packs',['../createPackUtil.html',1,'']]] +]; diff --git a/docs/Pack/html/search/all_8.html b/docs/Pack/html/search/all_8.html new file mode 100644 index 0000000..0179bdd --- /dev/null +++ b/docs/Pack/html/search/all_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_8.js b/docs/Pack/html/search/all_8.js new file mode 100644 index 0000000..4bda4c3 --- /dev/null +++ b/docs/Pack/html/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xml_20editors',['XML Editors',['../cp_Editors.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/all_9.html b/docs/Pack/html/search/all_9.html new file mode 100644 index 0000000..cd46d44 --- /dev/null +++ b/docs/Pack/html/search/all_9.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_9.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/all_9.js b/docs/Pack/html/search/all_9.js new file mode 100644 index 0000000..01cd4b4 --- /dev/null +++ b/docs/Pack/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zip_20compression_20tools',['ZIP Compression Tools',['../cp_ZIPTool.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/close.png b/docs/Pack/html/search/close.png Binary files differnew file mode 100644 index 0000000..9342d3d --- /dev/null +++ b/docs/Pack/html/search/close.png diff --git a/docs/Pack/html/search/mag_sel.png b/docs/Pack/html/search/mag_sel.png Binary files differnew file mode 100644 index 0000000..81f6040 --- /dev/null +++ b/docs/Pack/html/search/mag_sel.png diff --git a/docs/Pack/html/search/nomatches.html b/docs/Pack/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/Pack/html/search/nomatches.html @@ -0,0 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="NoMatches">No Matches</div> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_0.html b/docs/Pack/html/search/pages_0.html new file mode 100644 index 0000000..c51c834 --- /dev/null +++ b/docs/Pack/html/search/pages_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_0.js b/docs/Pack/html/search/pages_0.js new file mode 100644 index 0000000..db171fe --- /dev/null +++ b/docs/Pack/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['algorithm_20functions',['Algorithm Functions',['../algorithmFunc.html',1,'flashAlgorithm']]] +]; diff --git a/docs/Pack/html/search/pages_1.html b/docs/Pack/html/search/pages_1.html new file mode 100644 index 0000000..2a98fce --- /dev/null +++ b/docs/Pack/html/search/pages_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_1.js b/docs/Pack/html/search/pages_1.js new file mode 100644 index 0000000..05a8b6b --- /dev/null +++ b/docs/Pack/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['configuration_20wizard_20annotations',['Configuration Wizard Annotations',['../configWizard.html',1,'']]], + ['cmsis_2dpack_20index_20files',['CMSIS-Pack Index Files',['../packIndexFile.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_2.html b/docs/Pack/html/search/pages_2.html new file mode 100644 index 0000000..0711a0b --- /dev/null +++ b/docs/Pack/html/search/pages_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_2.js b/docs/Pack/html/search/pages_2.js new file mode 100644 index 0000000..d58a54a --- /dev/null +++ b/docs/Pack/html/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['debug_20setup_20with_20cmsis_2dpack',['Debug Setup with CMSIS-Pack',['../coresight_setup.html',1,'']]], + ['debug_20description',['Debug Description',['../debug_description.html',1,'coresight_setup']]] +]; diff --git a/docs/Pack/html/search/pages_3.html b/docs/Pack/html/search/pages_3.html new file mode 100644 index 0000000..4310311 --- /dev/null +++ b/docs/Pack/html/search/pages_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_3.js b/docs/Pack/html/search/pages_3.js new file mode 100644 index 0000000..e62ee24 --- /dev/null +++ b/docs/Pack/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flash_20programming',['Flash Programming',['../flashAlgorithm.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_4.html b/docs/Pack/html/search/pages_4.html new file mode 100644 index 0000000..ae5ce18 --- /dev/null +++ b/docs/Pack/html/search/pages_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_4.js b/docs/Pack/html/search/pages_4.js new file mode 100644 index 0000000..a7d98d6 --- /dev/null +++ b/docs/Pack/html/search/pages_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pack_20with_20software_20components',['Pack with Software Components',['../cp_SWComponents.html',1,'']]], + ['project_20description_20_28_2a_2ecpdsc_29_20format',['Project Description (*.cpdsc) Format',['../cpdsc_pg.html',1,'']]], + ['pack_20with_20device_20support',['Pack with Device Support',['../createPack_DFP.html',1,'']]], + ['pack_20with_20board_20support',['Pack with Board Support',['../createPackBoard.html',1,'']]], + ['publish_20a_20pack',['Publish a Pack',['../createPackPublish.html',1,'']]], + ['pack_20example',['Pack Example',['../pack_Example.html',1,'']]], + ['packchk_2eexe',['packChk.exe',['../packChk.html',1,'createPackUtil']]], + ['pack_20description_20_28_2a_2epdsc_29_20format',['Pack Description (*.pdsc) Format',['../packFormat.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_5.html b/docs/Pack/html/search/pages_5.html new file mode 100644 index 0000000..02c1114 --- /dev/null +++ b/docs/Pack/html/search/pages_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_5.js b/docs/Pack/html/search/pages_5.js new file mode 100644 index 0000000..3e18830 --- /dev/null +++ b/docs/Pack/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['revision_20history_20of_20cmsis_2dpack',['Revision History of CMSIS-Pack',['../pack_revisionHistory.html',1,'index']]] +]; diff --git a/docs/Pack/html/search/pages_6.html b/docs/Pack/html/search/pages_6.html new file mode 100644 index 0000000..afb70af --- /dev/null +++ b/docs/Pack/html/search/pages_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_6.js b/docs/Pack/html/search/pages_6.js new file mode 100644 index 0000000..14fed29 --- /dev/null +++ b/docs/Pack/html/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['software_20packs_20overview',['Software Packs Overview',['../cp_Packs.html',1,'']]], + ['system_20description_20file_20_28_2a_2esdf_29_20format',['System Description File (*.SDF) Format',['../sdf_pg.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_7.html b/docs/Pack/html/search/pages_7.html new file mode 100644 index 0000000..9d7ba25 --- /dev/null +++ b/docs/Pack/html/search/pages_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_7.js b/docs/Pack/html/search/pages_7.js new file mode 100644 index 0000000..dd07669 --- /dev/null +++ b/docs/Pack/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilities_20for_20creating_20packs',['Utilities for Creating Packs',['../createPackUtil.html',1,'']]] +]; diff --git a/docs/Pack/html/search/pages_8.html b/docs/Pack/html/search/pages_8.html new file mode 100644 index 0000000..3377887 --- /dev/null +++ b/docs/Pack/html/search/pages_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_8.js b/docs/Pack/html/search/pages_8.js new file mode 100644 index 0000000..4bda4c3 --- /dev/null +++ b/docs/Pack/html/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xml_20editors',['XML Editors',['../cp_Editors.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/pages_9.html b/docs/Pack/html/search/pages_9.html new file mode 100644 index 0000000..203934e --- /dev/null +++ b/docs/Pack/html/search/pages_9.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.6"> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_9.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/Pack/html/search/pages_9.js b/docs/Pack/html/search/pages_9.js new file mode 100644 index 0000000..01cd4b4 --- /dev/null +++ b/docs/Pack/html/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zip_20compression_20tools',['ZIP Compression Tools',['../cp_ZIPTool.html',1,'createPackUtil']]] +]; diff --git a/docs/Pack/html/search/search.css b/docs/Pack/html/search/search.css new file mode 100644 index 0000000..1746d13 --- /dev/null +++ b/docs/Pack/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 24px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 3px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/docs/Pack/html/search/search.js b/docs/Pack/html/search/search.js new file mode 100644 index 0000000..2fe3a78 --- /dev/null +++ b/docs/Pack/html/search/search.js @@ -0,0 +1,795 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "acdfprsuxz", + 1: "acdfprsuxz" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i<search.length;i++) + { + var c = search.charAt(i); + var cn = c.charCodeAt(0); + if (c.match(/[a-z0-9\u0080-\uFFFF]/)) + { + result+=c; + } + else if (cn<16) + { + result+="_0"+cn.toString(16); + } + else + { + result+="_"+cn.toString(16); + } + } + return result; +} + +function getXPos(item) +{ + var x = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; +} + +function getYPos(item) +{ + var y = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; +} + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, inFrame, label) +{ + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.insideFrame = inFrame; + this.searchLabel = label; + + // ----------- DOM Elements + + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); + + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + + // stop selection hide timer + if (this.hideTimeout) + { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { + this.OnSearchSelectShow(); + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + child.focus(); + return; + } + } + return; + } + else if (window.frames.MSearchResults.searchResults) + { + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); + } + } + else if (e.keyCode==27) // Escape out of the search field + { + this.DOMSearchField().blur(); + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + this.Activate(false); + return; + } + + // strip whitespaces + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) // search value has changed + { + if (searchValue != "") // non-empty search + { + // set timer for search update + this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeoutLength); + } + else // empty search field + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + } + } + } + + this.SelectItemCount = function(id) + { + var count=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + count++; + } + } + return count; + } + + this.SelectItemSet = function(id) + { + var i,j=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + var node = child.firstChild; + if (j==id) + { + node.innerHTML='•'; + } + else + { + node.innerHTML=' '; + } + j++; + } + } + } + + // Called when an search filter selection is made. + // set item with index id as the active item + this.OnSelectItem = function(id) + { + this.searchIndex = id; + this.SelectItemSet(id); + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down + { + this.searchIndex++; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of <Search()>. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e<searchData.length; e++) + { + var id = searchData[e][0]; + var srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + var srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + var srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+e); + setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = searchData[e][1][0]; + srEntry.appendChild(srLink); + if (searchData[e][1].length==2) // single result + { + srLink.setAttribute('href',searchData[e][1][1][0]); + if (searchData[e][1][1][1]) + { + srLink.setAttribute('target','_parent'); + } + var srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = searchData[e][1][1][2]; + srEntry.appendChild(srScope); + } + else // multiple results + { + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + var srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (var c=0; c<searchData[e][1].length-1; c++) + { + var srChild = document.createElement('a'); + srChild.setAttribute('id','Item'+e+'_c'+c); + setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); + setClassAttr(srChild,'SRScope'); + srChild.setAttribute('href',searchData[e][1][c+1][0]); + if (searchData[e][1][c+1][1]) + { + srChild.setAttribute('target','_parent'); + } + srChild.innerHTML = searchData[e][1][c+1][2]; + srChildren.appendChild(srChild); + } + srEntry.appendChild(srChildren); + } + srResult.appendChild(srEntry); + results.appendChild(srResult); + } +} + diff --git a/docs/Pack/html/search/search_l.png b/docs/Pack/html/search/search_l.png Binary files differnew file mode 100644 index 0000000..c872f4d --- /dev/null +++ b/docs/Pack/html/search/search_l.png diff --git a/docs/Pack/html/search/search_m.png b/docs/Pack/html/search/search_m.png Binary files differnew file mode 100644 index 0000000..b429a16 --- /dev/null +++ b/docs/Pack/html/search/search_m.png diff --git a/docs/Pack/html/search/search_r.png b/docs/Pack/html/search/search_r.png Binary files differnew file mode 100644 index 0000000..97ee8b4 --- /dev/null +++ b/docs/Pack/html/search/search_r.png diff --git a/docs/Pack/html/simplepack_rte.png b/docs/Pack/html/simplepack_rte.png Binary files differnew file mode 100644 index 0000000..e5c824e --- /dev/null +++ b/docs/Pack/html/simplepack_rte.png diff --git a/docs/Pack/html/sync_off.png b/docs/Pack/html/sync_off.png Binary files differnew file mode 100644 index 0000000..3b443fc --- /dev/null +++ b/docs/Pack/html/sync_off.png diff --git a/docs/Pack/html/sync_on.png b/docs/Pack/html/sync_on.png Binary files differnew file mode 100644 index 0000000..e08320f --- /dev/null +++ b/docs/Pack/html/sync_on.png diff --git a/docs/Pack/html/tab_a.png b/docs/Pack/html/tab_a.png Binary files differnew file mode 100644 index 0000000..3b725c4 --- /dev/null +++ b/docs/Pack/html/tab_a.png diff --git a/docs/Pack/html/tab_b.png b/docs/Pack/html/tab_b.png Binary files differnew file mode 100644 index 0000000..e2b4a86 --- /dev/null +++ b/docs/Pack/html/tab_b.png diff --git a/docs/Pack/html/tab_h.png b/docs/Pack/html/tab_h.png Binary files differnew file mode 100644 index 0000000..fd5cb70 --- /dev/null +++ b/docs/Pack/html/tab_h.png diff --git a/docs/Pack/html/tab_s.png b/docs/Pack/html/tab_s.png Binary files differnew file mode 100644 index 0000000..ab478c9 --- /dev/null +++ b/docs/Pack/html/tab_s.png diff --git a/docs/Pack/html/tab_topnav.png b/docs/Pack/html/tab_topnav.png Binary files differnew file mode 100644 index 0000000..b257b77 --- /dev/null +++ b/docs/Pack/html/tab_topnav.png diff --git a/docs/Pack/html/tabs.css b/docs/Pack/html/tabs.css new file mode 100644 index 0000000..ffbab50 --- /dev/null +++ b/docs/Pack/html/tabs.css @@ -0,0 +1,71 @@ +.tabs, .tabs1, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 10px; +} + +.tabs1 { + background-image: url('tab_topnav.png'); + font-size: 12px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; + line-height: 24px; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + list-style: none; +} + +.tabs1 .tablist li { + float: left; + display: table-cell; + background-image: url('tab_topnav.png'); + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} |