2023-11-22 15:17:09 +01:00

735 lines
21 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Release Notes for STM32Cube USB Host Library</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="_htmresc/mini-st.css" />
<link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="row">
<div class="col-sm-12 col-lg-4">
<center>
<h1 id="release-notes-for-stm32cube-usb-host-library">Release Notes for
<mark>STM32Cube USB Host Library</mark></h1>
<p>Copyright © 2015 STMicroelectronics<br />
</p>
<a href="https://www.st.com" class="logo"><img
src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
</center>
<h1 id="purpose">Purpose</h1>
<p>The USB host library comes on top of the STM32Cube™ USB host HAL
driver and offers all the APIs required to develop an USB host
application.</p>
<p>The main USB host library features are:</p>
<ul>
<li>Support of multi packet transfer features allowing the reception of
big amount of data without splitting it into max packet size
transfers.</li>
<li>Support of most common USB Class drivers (HID, CDC, MSC, MTP,
AUDIO1.0)</li>
<li>Configuration files to interface with Cube HAL and change the
library configuration without changing the library code (Read
Only).</li>
<li>32-bits aligned data structures to handle DMA based transfer in High
speed modes.</li>
</ul>
<p>Here is the list of references to user documents:</p>
<ul>
<li><a
href="https://www.st.com/resource/en/user_manual/dm00105256-stm32cube-usb-host-library-stmicroelectronics.pdf">UM1720</a>
: STM32Cube USB host library User Manual</li>
<li><a href="https://wiki.st.com/stm32mcu/wiki/USB_overview">Wiki
Page</a> : STM32Cube USB Wiki Page</li>
</ul>
</div>
<section id="update-history" class="col-sm-12 col-lg-8">
<h1>Update History</h1>
<div class="collapse">
<input type="checkbox" id="collapse-section18" checked aria-hidden="true"><label for="collapse-section18" aria-hidden="true">V3.5.1 / 10-January-2023</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Ensure the number of endpoints parsed does not exceed defined USBH_MAX_NUM_ENDPOINTS</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Use correct endpoint length for audio midi subclass devices</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>HID Class</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">Prevent buffer overflow during HID get descriptors</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section17" aria-hidden="true"><label for="collapse-section17" aria-hidden="true">V3.5.0 / 05-August-2022</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">fix potential corruption of Endpoints MaxPacketSize</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>HID Class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Fix potential buffer overflow</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section16" aria-hidden="true"><label for="collapse-section16" aria-hidden="true">V3.4.1 / 04-April-2022</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Update the way to declare licenses</td>
</tr>
<tr class="even">
<td style="text-align: left;">Fix code spelling and improve code
style</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>HID Class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Modify some variables names to avoid
duplication versus device for HID class</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section15" aria-hidden="true"><label for="collapse-section15" aria-hidden="true">V3.4.0 / 23-April-2021</label>
<div>
<h2 id="main-changes-1">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Fixes added to free RTOS resource during
USB host DeInit</td>
</tr>
<tr class="odd">
<td style="text-align: left;">CodeSpell and mcuAstlye fixes</td>
</tr>
<tr class="even">
<td style="text-align: left;">Multiple MisraC 2012 fixes</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>All Classes:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">CodeSpell and mcuAstlye fixes</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Multiple MisraC 2012 fixes</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section14" aria-hidden="true"><label for="collapse-section14" aria-hidden="true">V3.3.5 / 26-January-2021</label>
<div>
<h2 id="main-changes-2">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Improve enumeration phase by adding some
specifications requirements checks.</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Add error signaling for some out of
specification devices descriptors fields.</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>MSC Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">usbh_msc.c: add checking on both IN and
OUT pipes construction.</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>HID Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">Fix wrong keyboard key defines.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section13" aria-hidden="true"><label for="collapse-section13" aria-hidden="true">V3.3.4 / 08-January-2020</label>
<div>
<h2 id="main-changes-3">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Improve enumeration phase and avoid silent
responses.</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Add device reset trial mechanism during
enumeration phase.</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>MSC Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">usbh_msc.c: update max_lun field to be
uint8_t instead of uint32_t.</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>HID Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">Get HID descriptor by parsing the device
descriptor in order to improve interoperability with buggy devices that
Stall host Get HID descriptor request.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section12" aria-hidden="true"><label for="collapse-section12" aria-hidden="true">V3.3.3 / 29-April-2019</label>
<div>
<h2 id="main-changes-4">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Fix misra-C 2012 high severity
violations</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">usbh_core.c: Rework USB host Core process
in order to improve Device connection / disconnection robustness</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>MSC Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">usbh_msc.c: Update USBH_MSC_GetMaxLUN() to
prevent corruption of supported LUNs</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>HID Class:</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">Prevent race between USB buffer and
Application fifo buffer, this was ensured by allocating a dedicated
buffer for received report</td>
</tr>
<tr class="even">
<td style="text-align: left;">Prevent overflow on USB buffer for devices
that could have report size greater than 4bytes</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section11" aria-hidden="true"><label for="collapse-section11" aria-hidden="true">V3.3.2 / 24-January-2019</label>
<div>
<h2 id="main-changes-5">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_core.c: fix on USBH_Deinit() API,
prevent freeing pActiveClass-&gt;pData pointer during host Deinit, this
is manged by the Class drivers.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section10" aria-hidden="true"><label for="collapse-section10" aria-hidden="true">V3.3.1 / 09-July-2018</label>
<div>
<h2 id="main-changes-6">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Fix interoperability issue with HP
mouse</td>
</tr>
<tr class="even">
<td style="text-align: left;">Add compatibility with FreeRTOS CMSIS V2
API changes</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Update License section and add link to get
copy of ST Ultimate Liberty license SLA0044</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section9" aria-hidden="true"><label for="collapse-section9" aria-hidden="true">V3.3.0 / 23-January-2018</label>
<div>
<h2 id="main-changes-7">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Update license section to Ultimate
Liberty</td>
</tr>
<tr class="even">
<td style="text-align: left;">Update some functions to be MISRA-C 2004
compliant</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Improve USB Core enumeration state
machine</td>
</tr>
<tr class="even">
<td style="text-align: left;">Fix Device fast plug/unplug issue</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Improve interoperability with non
compliant USB devices</td>
</tr>
<tr class="even">
<td style="text-align: left;">Add support of Host set remote wakeup
enable feature</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Fix USB Host MSC set correct sector
size</td>
</tr>
<tr class="even">
<td style="text-align: left;">MSC: Set correct LUN number if returned
LUN number exceeds max supported value</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section8" aria-hidden="true"><label for="collapse-section8" aria-hidden="true">V3.2.2 / 07-July-2015</label>
<div>
<h2 id="main-changes-8">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>MSC Class:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_msc.c: Fix MSC Get Ready Delay
issue</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section7" aria-hidden="true"><label for="collapse-section7" aria-hidden="true">V3.2.1 / 26-June-2015</label>
<div>
<h2 id="main-changes-9">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_def.h: update USBH_MAX_PIPES_NBR
literal definition to be conditioned by #ifndef directive, to allow
application code to change its value (i.e. in the compiler
preprocessor)</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>MSC Class:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_msc.c:</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Update USBH_MSC_GetMaxLUN() to return the
correct number of supported LUNs (was returning 0xFF)</td>
</tr>
<tr class="even">
<td style="text-align: left;">Fix timeout calculation issue</td>
</tr>
<tr class="odd">
<td style="text-align: left;">usbh_msc.h:</td>
</tr>
<tr class="even">
<td style="text-align: left;">update MAX_SUPPORTED_LUN literal
definition to be conditioned by #ifndef directive, to allow application
code to change its value (i.e.in the compiler preprocessor)</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>HID Class:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_hid.h: fix HIDs handle “Timer” type
to uint32_t instead of uint16_t</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>MTP Class:</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_mtp.c : Fix timeout calculation
issue</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section6" aria-hidden="true"><label for="collapse-section6" aria-hidden="true">V3.2.0 / 04-November-2014</label>
<div>
<h2 id="main-changes-10">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Update all drivers to be C++
compliant</td>
</tr>
<tr class="even">
<td style="text-align: left;">Miscellaneous source code comments
update</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">usbh_core.c: remove HOST_IDLE state in
USBH_LL_Connect() function</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>MSC class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Update to manage correctly older USB Keys
that do not support GetMaxLun request</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section5" aria-hidden="true"><label for="collapse-section5" aria-hidden="true">V3.1.0 / 19-June-2014</label>
<div>
<h2 id="main-changes-11">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>Core driver</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Add a new define USBH_PROCESS_STACK_SIZE
in the usbh_conf.h file to change the default internal USB host process
stack. Note that by omitting this define, the default stack size (2KB)
is used</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Add a user callback to handle
unrecoverable error case in the application</td>
</tr>
<tr class="even">
<td style="text-align: left;">Remove the wrong check on the interface
descriptor index in the USBH_FindInterface() function</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>All classes</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Update class description in files comment
by adding reference to the used USB class specification revision</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>Audio, CDC and MTP
classes</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Add full RTOS support by handling state
transitions through OS messages</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>HID class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Add new API USBH_HID_GetPollInterval() to
allow user to retrieve the needed poll time (interval between two
USBD_HID_SendReport())</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>Audio class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Add a new weak callback
USBH_AUDIO_BufferEmptyCallback() to indicate the end of audio data
processing on the user buffer</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>MSC class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Return mass storage device capacity in
Bytes in the user log message instead of MBytes</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"><label for="collapse-section4" aria-hidden="true">V3.0.0 / 18-February-2014</label>
<div>
<h2 id="main-changes-12">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Major update based on STM32Cube
specification: Library Core, Classes architecture and APIs modified
vs. V2.1.0, and thus the 2 versions are not compatible.</td>
</tr>
<tr class="even">
<td style="text-align: left;"><strong>This version has to be used only
with STM32Cube based development</strong></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"><label for="collapse-section3" aria-hidden="true">V2.1.0 / 19-March-2012</label>
<div>
<h2 id="main-changes-13">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Official support of STM32F4xx devices</td>
</tr>
<tr class="even">
<td style="text-align: left;">All source files: license disclaimer text
update and add link to the License file on ST Internet</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Add ISR structure to link the low level
driver to the Host library</td>
</tr>
<tr class="even">
<td style="text-align: left;">Change length parameter in the I/O
operations to handle large amount of data</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Enhance the configuration descriptor
parsing method to take into account multi interface devices</td>
</tr>
<tr class="even">
<td style="text-align: left;">Miscellaneous bug fix</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>HID class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Remove blocking even frame synchronization
loop</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>MSC class</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">Handle correctly the BOT transfer with
length &lt; max length</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Handle multi sector length data in the FAT
FS interface</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"><label for="collapse-section2" aria-hidden="true">V2.0.0 / 22-July-2011</label>
<div>
<h2 id="main-changes-14">Main Changes</h2>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">econd official version supporting
STM32F105/7 and STM32F2xx devices</td>
</tr>
<tr class="even">
<td style="text-align: left;">dd support for <strong>STM32F2xx</strong>
devices</td>
</tr>
<tr class="odd">
<td style="text-align: left;">dd multi interface feature</td>
</tr>
<tr class="even">
<td style="text-align: left;">dd dynamic configuration parsing</td>
</tr>
<tr class="odd">
<td style="text-align: left;">dd USBH_DeAllocate_AllChannel function in
the Host channel management layer to clean up channels allocation table
when de-initializing the library</td>
</tr>
<tr class="even">
<td style="text-align: left;">hange the core layer to stop correctly the
host core and free all allocated channels</td>
</tr>
<tr class="odd">
<td style="text-align: left;">dd usbh_conf.h file in the application
layer to customize some user parameters</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"><label for="collapse-section1" aria-hidden="true">V1.0.0 / 29-November-2010</label>
<div>
<h2 id="main-changes-15">Main Changes</h2>
<p>Created</p>
</div>
</section>
</div>
</div>
<footer class="sticky">
<div class="columns">
<div class="column" style="width:95%;">
</div><div class="column" style="width:5%;">
<p><abbr title="Based on template cx566953 version 2.1">Info</abbr></p>
</div>
</div>
</footer>
</body>
</html>