<!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>SVDConv.exe</title> <title>CMSIS-SVD: SVDConv.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-SVD  <span id="projectnumber">Version 1.3.3</span> </div> <div id="projectbrief">CMSIS System View Description</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('svd_SVDConv_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">SVDConv.exe </div> </div> </div><!--header--> <div class="contents"> <div class="textblock"><p><b>SVDConv.exe</b> is a command-line utility to validate CMSIS-SVD files and to generate CMSIS-compliant device header files. <b>SVDConv.exe</b> is distributed with the <b>ARM::CMSIS</b> Pack (in the CMSIS\Utilities directory) together with the CMSIS-SVD schema file.</p> <p><b>SVDConv.exe</b> performs the following operations:</p> <ul> <li>Checks the syntactical and structural compliance with the specified CMSIS-SVD format.</li> <li>Checks the consistency, correctness, and completeness of the CMSIS-SVD file against the CMSIS-SVD schema file.</li> <li>Generates CMSIS-compliant device header files, which can be used for software development.</li> </ul> <dl class="section note"><dt>Note</dt><dd>Consider using --strict option to receive all pedantic warnings. Some rules are skipped by default due to backward compatibility reasons. All newly developed/updated SVD files should rather respect all rules.</dd></dl> <h2>Operation </h2> <p><b>SVDConv.exe</b> is invoked form the command line. The general command format is: </p> <div class="fragment"><div class="line">SVDConv.exe <SVD_file> <options></div> </div><!-- fragment --><p> </p> <table class="cmtable" summary="SVDConv Args"> <tr> <th><options> </th><th>Short Name </th><th>Description </th></tr> <tr> <td><em>none</em> </td><td>Validation </td><td>Perform a validation check of the SVD file. Errors and warnings are printed on screen. </td></tr> <tr> <td>-b </td><td>Log File </td><td>Specify the log file name for writing messages. Default: screen. </td></tr> <tr> <td>-o </td><td>Output Path </td><td>Specify an output path for the generated device header file or log file. Default: current directory. </td></tr> <tr> <td>--generate=header </td><td>Generate Device Header File </td><td>Generates the device header file. The name of the generated file is derived from the value of the tag <device<name> in the CMSIS-SVD file. Refer to <a class="el" href="elem_device.html">device</a>. </td></tr> <tr> <td>--generate=partition </td><td>Generate Partition file for Cortex-M Security Extensions (Armv8-M) </td><td>Generates the device partition file. The name of the generated file is composed of <em>partition_</em> and the value of the device <em><name></em> (for example, <em>partition_CMSDK_ARMv8MBL.h</em>). Refer to <a class="el" href="elem_device.html">/device element</a>. The content of the file uses Configuration Wizard annotations and is derived from the SAU-specific information of the <a class="el" href="elem_cpu.html#elem_sauRegionsConfig">/device/cpu/sauRegionsConfig element</a> and the interrupts specified in the <a class="el" href="elem_peripherals.html">/device/peripherals element</a>. </td></tr> <tr> <td>--fields=enum </td><td>Bit-field Enums </td><td>Generates enum lists for each field value description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>. </td></tr> <tr> <td>--fields=macro </td><td>Bit-field Macros </td><td>Generates position and mask C-Macros for each field description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>. </td></tr> <tr> <td>--fields=struct </td><td>Bit-field Structs </td><td>Generates bit fields for each field description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>. </td></tr> <tr> <td>--fields=struct-ansic </td><td>ANSI Bit-field Structs </td><td>Generates MISRA-compliant structures for each bitfield. The generated code <b>is not CMSIS-compliant</b>! Must be used in combination with <em>--generate=header</em>. </td></tr> <tr> <td>--strict </td><td>Strict error checking </td><td><b>RECOMMENDED!</b> Applies strict error checking and generates a lot more messages. </td></tr> </table> <h2>Return Codes </h2> <p><b>SVDConv.exe</b> returns the following codes: <br/> </p> <table class="doxtable"> <tr> <th align="center">Code </th><th align="left">Description </th><th align="left">Action </th></tr> <tr> <td align="center">0 </td><td align="left">OK </td><td align="left">No action required. Validation and conversion performed without errors. </td></tr> <tr> <td align="center">1 </td><td align="left">WARNINGS </td><td align="left">Warnings should be checked an possibly removed. The header file is created and could be used. </td></tr> <tr> <td align="center">2 </td><td align="left">ERRORS </td><td align="left">Errors in the SVD description file. Important elements are missing and must be corrected. </td></tr> <tr> <td align="center">3 </td><td align="left">Error in command line </td><td align="left">Check and correct the command line arguments. </td></tr> </table> <p><b>Examples</b> <br/> </p> <ol type="1"> <li>Retrieve help information on screen. <div class="fragment"><div class="line">SVDConv.exe </div> </div><!-- fragment --> <br/> </li> <li>Perform a consistency check by passing only the SVD file name. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv.exe ARM_Example.svd </div> </div><!-- fragment --> <br/> The result is printed on screen: <pre class="fragment"> MVCM3110.svd(1688) : info <description> missing for value '2 : MODE2' MVCM3110.svd(1692) : info <description> missing for value '3 : MODE3' MVCM3110.svd(1696) : info <description> missing for value '4 : MODE4' Area of improvements: * Description contains 267 <fields> defined without associated <enumeratedValues> Found 0 Errors and 1 Warnings Return Code: 1 (WARNINGS)</pre> <br/> </li> <li>Generate the header file. Performs a consistency check. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv.exe ARM_Example.svd --generate=header</div> </div><!-- fragment --> <br/> Code snippet from the generated header file showing the structure for <b>TIMER0</b>. <br/> <div class="fragment"><div class="line"><span class="comment">/* ================ TIMER0 ================ */</span></div> <div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ </div> <div class="line"> __IO uint32_t CR; </div> <div class="line"> __IO uint16_t SR; </div> <div class="line"> __I uint16_t RESERVED0[5];</div> <div class="line"> __IO uint16_t INT; </div> <div class="line"> __I uint16_t RESERVED1[7];</div> <div class="line"> __IO uint32_t COUNT; </div> <div class="line"> __IO uint32_t MATCH; </div> <div class="line"> <span class="keyword">union </span>{</div> <div class="line"> __O uint32_t PRESCALE_WR; </div> <div class="line"> __I uint32_t PRESCALE_RD; </div> <div class="line"> };</div> <div class="line"> __I uint32_t RESERVED2[9];</div> <div class="line"> __IO uint32_t RELOAD[4]; </div> <div class="line">} TIMER0_Type;</div> </div><!-- fragment --> <br/> </li> <li>Generate the header file containing bit fields. Performs a consistency check. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv.exe ARM_Example.svd --generate=header --fields=<span class="keyword">struct</span></div> </div><!-- fragment --> <br/> Code snippet from the generated header file showing the structure for <b>TIMER0</b>. <br/> Compare to the code snippet above. <div class="fragment"><div class="line"><span class="comment">/* ================ TIMER0 ================ */</span></div> <div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ </div> <div class="line"> <span class="keyword">union </span>{</div> <div class="line"> __IO uint32_t CR; </div> <div class="line"> <span class="keyword">struct </span>{</div> <div class="line"> __IO uint32_t EN : 1; </div> <div class="line"> __O uint32_t RST : 1; </div> <div class="line"> __IO uint32_t CNT : 2; </div> <div class="line"> __IO uint32_t MODE : 3; </div> <div class="line"> __IO uint32_t PSC : 1; </div> <div class="line"> __IO uint32_t CNTSRC : 4; </div> <div class="line"> __IO uint32_t CAPSRC : 4; </div> <div class="line"> __IO uint32_t CAPEDGE : 2; </div> <div class="line"> uint32_t : 2;</div> <div class="line"> __IO uint32_t TRGEXT : 2; </div> <div class="line"> uint32_t : 2;</div> <div class="line"> __IO uint32_t RELOAD : 2; </div> <div class="line"> __IO uint32_t IDR : 2; </div> <div class="line"> uint32_t : 3;</div> <div class="line"> __IO uint32_t S : 1; </div> <div class="line"> } CR_b; </div> <div class="line"> };</div> <div class="line"> </div> <div class="line"> <span class="keyword">union </span>{</div> <div class="line"> __IO uint16_t SR; </div> <div class="line"> <span class="keyword">struct </span>{</div> <div class="line"> __I uint16_t RUN : 1; </div> <div class="line"> uint16_t : 7;</div> <div class="line"> __IO uint16_t MATCH : 1; </div> <div class="line"> __IO uint16_t UN : 1; </div> <div class="line"> __IO uint16_t OV : 1; </div> <div class="line"> uint16_t : 1;</div> <div class="line"> __I uint16_t RST : 1; </div> <div class="line"> uint16_t : 1;</div> <div class="line"> __I uint16_t RELOAD : 2; </div> <div class="line"> } SR_b; </div> <div class="line"> };</div> <div class="line"> __I uint16_t RESERVED0[5];</div> <div class="line"> </div> <div class="line"> <span class="keyword">union </span>{</div> <div class="line"> __IO uint16_t INT; </div> <div class="line"> <span class="keyword">struct </span>{</div> <div class="line"> __IO uint16_t EN : 1; </div> <div class="line"> uint16_t : 3;</div> <div class="line"> __IO uint16_t MODE : 3; </div> <div class="line"> } INT_b; </div> <div class="line"> };</div> <div class="line"> __I uint16_t RESERVED1[7];</div> <div class="line"> __IO uint32_t COUNT; </div> <div class="line"> __IO uint32_t MATCH; </div> <div class="line"> <span class="keyword">union </span>{</div> <div class="line"> __O uint32_t PRESCALE_WR; </div> <div class="line"> __I uint32_t PRESCALE_RD; </div> <div class="line"> };</div> <div class="line"> __I uint32_t RESERVED2[9];</div> <div class="line"> __IO uint32_t RELOAD[4]; </div> <div class="line">} TIMER0_Type;</div> </div><!-- fragment --> </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 Jul 10 2019 15:21:05 for CMSIS-SVD Version 1.3.3 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>