esp32-s2_dfu/0.4/getting__started_8md_source...

194 lines
19 KiB
HTML

<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>tinyusb: doxygen/getting_started.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">tinyusb
&#160;<span id="projectnumber">0.4</span>
</div>
</td>
<td align="right">
<a href="https://pledgie.com/campaigns/24694"><img border="0" src="https://pledgie.com/campaigns/24694.png?skin_name=chrome" alt="Click here to lend your support to tinyusb donation and make a donation at pledgie.com"></a>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('getting__started_8md.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">doxygen/getting_started.md</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor"># Getting Started #</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;&lt;!-- START doctoc generated TOC please keep comment here to allow <span class="keyword">auto</span> update --&gt;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;&lt;!-- DON<span class="stringliteral">&#39;T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral">**Table of Contents**</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="stringliteral">- [Download](#download)</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral">- [Add tinyusb to your project](#add-tinyusb-to-your-project)</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="stringliteral">&lt;!-- END doctoc generated TOC please keep comment here to allow auto update --&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="stringliteral">## Download</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="stringliteral">tinyusb uses github as online repository https://github.com/hathach/tinyusb since it is the best place for open source project. </span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="stringliteral">If you are using Linux, you already know how to what to do. But If Windows is your OS, I would suggest to install [git](http://git-scm.com/) and front-end gui such as [tortoisegit](http://code.google.com/p/tortoisegit) to begin with.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="stringliteral">After downloading/cloning, the code base is composed of</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="stringliteral">Folder | Description</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="stringliteral">----- | -------------</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="stringliteral">boards | Source files of supported boards</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="stringliteral">demos | Source &amp; project files for demonstration application</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="stringliteral">mcu | Low level mcu core &amp; peripheral drivers (e.g CMSIS )</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="stringliteral">tests | Unit tests for the stack</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="stringliteral">tinyusb | All sources files for tinyusb stack itself.</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="stringliteral">vendor | Source files from 3rd party such as freeRTOS, fatfs etc ...</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="stringliteral">*demos* is the folder where all the application &amp; project files are located. There are demos for both device and hosts. For each, there are different projects for each of supported RTOS. Click to have more information on how to [build](../demos/readme.md) and run [device](../demos/device/readme.md) or [host](../demos/host/readme.md) demo.</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="stringliteral">## Add tinyusb to your project</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="stringliteral">It is relatively simple to incorporate tinyusb to your (existing) project</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="stringliteral"></span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="stringliteral">1. Copy core folder **tinyusb** to your project. Let&#39;</span>s say it is *your_project/tinyusb*</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;2. Add all the .c in the core folder to your project settings (uvproj, ewp, makefile)</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;3. Add *your_project/tinysb* to your include path. Also make sure your current include path also contains the configuration file tusb_config.h. Or you could simply put the tusb_config.h into the tinyusb folder as well.</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;4. Make sure all required macros are all defined properly in tusb_config.h (configure file in demo application is sufficient, but you need to add a few more such as <a class="code" href="group__group__configuration.html#ga78e20d9920eacaa514c16d19638dcb06">TUSB_CFG_MCU</a>, <a class="code" href="group__group__configuration.html#ga4614c6e63e1e3e83f4e1b2525f42ee80">TUSB_CFG_OS</a>, <a class="code" href="group__group__configuration.html#gae3a0c79557690fea08f79c39003c2e8e">TUSB_CFG_OS_TASK_PRIO</a> since they are passed by IDE/compiler to maintain a unique configure <span class="keywordflow">for</span> all demo projects).</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;5. If you use the device stack, make sure you have created/modified usb descriptors <span class="keywordflow">for</span> your own need. Ultimately you need to fill out required pointers in <a class="code" href="group___t_u_s_b___c_f_g___d_e_v_i_c_e.html#ga2a5230d87078cc1195f93f00f6198ae8">tusbd_descriptor_pointers</a> <span class="keywordflow">for</span> that stack to work.</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;6. Add <a class="code" href="group__group__application__api.html#gae5e5337c5ac56048ee326db2121f415e">tusb_init</a>() call to your reset initialization code.</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;7. Implement all enabled classes&#39;s callbacks.</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;8. If you dont use any RTOSes at all, you need to continuously and/or periodically call <a class="code" href="tusb_8c.html#aa03e39232c87572815dd9b854a95163e">tusb_task_runner</a>() function. Most of the callbacks and functionality are handled and invoke within the call of that task runner.</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;~~~{.c}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; your_init_code();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="group__group__application__api.html#gae5e5337c5ac56048ee326db2121f415e">tusb_init</a>(); <span class="comment">// initialize tinyusb stack</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">while</span>(1) <span class="comment">// the mainloop</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; your_application_code();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="tusb_8c.html#aa03e39232c87572815dd9b854a95163e">tusb_task_runner</a>(); <span class="comment">// handle tinyusb event, task etc ...</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;~~~</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;[<span class="comment">//]: # (\subpage md_boards_readme)</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;[<span class="comment">//]: # (\subpage md_doxygen_started_demo)</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;[<span class="comment">//]: # (\subpage md_tools_readme)</span></div>
<div class="ttc" id="group__group__application__api_html_gae5e5337c5ac56048ee326db2121f415e"><div class="ttname"><a href="group__group__application__api.html#gae5e5337c5ac56048ee326db2121f415e">tusb_init</a></div><div class="ttdeci">tusb_error_t tusb_init(void)</div><div class="ttdoc">Initialize the usb stack. </div><div class="ttdef"><b>Definition:</b> <a href="tusb_8c_source.html#l00043">tusb.c:43</a></div></div>
<div class="ttc" id="group___t_u_s_b___c_f_g___d_e_v_i_c_e_html_ga2a5230d87078cc1195f93f00f6198ae8"><div class="ttname"><a href="group___t_u_s_b___c_f_g___d_e_v_i_c_e.html#ga2a5230d87078cc1195f93f00f6198ae8">tusbd_descriptor_pointers</a></div><div class="ttdeci">tusbd_descriptor_pointer_t tusbd_descriptor_pointers</div><div class="ttdef"><b>Definition:</b> <a href="configuration_8txt_source.html#l00064">configuration.txt:64</a></div></div>
<div class="ttc" id="tusb_8c_html_aa03e39232c87572815dd9b854a95163e"><div class="ttname"><a href="tusb_8c.html#aa03e39232c87572815dd9b854a95163e">tusb_task_runner</a></div><div class="ttdeci">void tusb_task_runner(void)</div><div class="ttdoc">Run all tinyusb&#39;s internal tasks (e.g host task, device task). </div><div class="ttdef"><b>Definition:</b> <a href="tusb_8c_source.html#l00084">tusb.c:84</a></div></div>
<div class="ttc" id="group__group__configuration_html_gae3a0c79557690fea08f79c39003c2e8e"><div class="ttname"><a href="group__group__configuration.html#gae3a0c79557690fea08f79c39003c2e8e">TUSB_CFG_OS_TASK_PRIO</a></div><div class="ttdeci">#define TUSB_CFG_OS_TASK_PRIO</div><div class="ttdoc">If TUSB_CFG_OS is configured to use a real RTOS (other than TUSB_OS_NONE). This determines the priori...</div><div class="ttdef"><b>Definition:</b> <a href="configuration_8txt_source.html#l00023">configuration.txt:23</a></div></div>
<div class="ttc" id="group__group__configuration_html_ga78e20d9920eacaa514c16d19638dcb06"><div class="ttname"><a href="group__group__configuration.html#ga78e20d9920eacaa514c16d19638dcb06">TUSB_CFG_MCU</a></div><div class="ttdeci">#define TUSB_CFG_MCU</div><div class="ttdoc">Select one of the supported MCU, the value must be from Supported MCU. </div><div class="ttdef"><b>Definition:</b> <a href="configuration_8txt_source.html#l00021">configuration.txt:21</a></div></div>
<div class="ttc" id="group__group__configuration_html_ga4614c6e63e1e3e83f4e1b2525f42ee80"><div class="ttname"><a href="group__group__configuration.html#ga4614c6e63e1e3e83f4e1b2525f42ee80">TUSB_CFG_OS</a></div><div class="ttdeci">#define TUSB_CFG_OS</div><div class="ttdoc">Select one of the supported RTOS, the value must be from Supported RTOS. </div><div class="ttdef"><b>Definition:</b> <a href="configuration_8txt_source.html#l00022">configuration.txt:22</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>getting_started.md</b></li>
<li class="footer">Generated on Thu Apr 17 2014 13:05:22 for tinyusb by
<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>