Files
luban-lite-t3e-pro/doc/topics/sdk/usb/usb-device-listing.html
2025-01-23 16:37:00 +08:00

191 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
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" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="一个 USB 设备是否能正常使用依赖于设备有没有被正确配置。USB 设备在插入端口时会触发枚举,在这个过程中 Host 读取设备的各种描述符并且下发相应的配置。80% 的 USB 问题是发生在设备枚举过程当中的,所以 USB 开发人员必须对此有详细了解。 背景 USB 使用以下方法来满足多种类型的数据在一条共享通道上传输: 时间延迟 ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.creator" content="yan.wang"/><meta name="DC.date.created" content="2024-01-30"/><meta name="DC.date.modified" content="2024-02-04"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="usb_设备枚举简介"/><meta name="DC.language" content="zh-CN"/><title>USB 设备枚举简介</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/usb/usb-device-listing.dita"/><meta name="wh-out-relpath" content="topics/sdk/usb/usb-device-listing.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="usb_设备枚举简介" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/usb/usb-device-listing.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">USB 设备枚举简介</h1><div class="date inPage">4 Feb 2024</div><div style="color: gray;">
Read time: 1 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><p class="- topic/p p" data-ofbid="d239621e23__20250121171658">一个 USB 设备是否能正常使用依赖于设备有没有被正确配置。USB 设备在插入端口时会触发枚举,在这个过程中 Host 读取设备的各种描述符并且下发相应的配置。80% 的
USB 问题是发生在设备枚举过程当中的,所以 USB 开发人员必须对此有详细了解。</p><section class="- topic/section section" id="usb_设备枚举简介__section_hyn_f2q_g1c" data-ofbid="usb_设备枚举简介__section_hyn_f2q_g1c"><h2 class="- topic/title title sectiontitle">背景</h2>
<p class="- topic/p p" data-ofbid="d239621e30__20250121171658">USB 使用以下方法来满足多种类型的数据在一条共享通道上传输:</p>
<ul class="- topic/ul ul" id="usb_设备枚举简介__ul_iyn_f2q_g1c" data-ofbid="usb_设备枚举简介__ul_iyn_f2q_g1c"><li class="- topic/li li" data-ofbid="d239621e34__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e36__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">时间延迟</code> 。从时间维度上把数据传输切成多个时间片,在每个时间片内绝大部分份额 (最多 80%)
优先传输对时间延迟有要求的数据,如 <code class="+ topic/ph pr-d/codeph ph codeph">Interrupt Transfers</code><code class="+ topic/ph pr-d/codeph ph codeph">Isochronous
Transfers</code> 。在时间片剩下的额度内传输对时间延迟没要求的数据,如 <code class="+ topic/ph pr-d/codeph ph codeph">Control
Transfers</code><code class="+ topic/ph pr-d/codeph ph codeph">Bulk Transfers</code></p>
</li><li class="- topic/li li" data-ofbid="d239621e53__20250121171658"><p class="- topic/p p" data-ofbid="d239621e54__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">完整性校验</code> 。对需要保证数据完整性的数据加上了 CRC 校验,接收端使用 ACK 来知会发送端正确接收,如果没有收到
ACK 发端会尝试重发 3 次。</p><div class="- topic/p p" data-ofbid="d239621e58__20250121171658"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="usb_设备枚举简介__image_jyn_f2q_g1c" src="../../../images/usb/usb_microframe.png" alt="image0"/></div><br/></div><p class="- topic/p p" data-ofbid="d239621e62__20250121171658">如上图USB 从时间维度上把数据传输切成多个时间片:</p><ul class="- topic/ul ul" id="usb_设备枚举简介__ul_kyn_f2q_g1c" data-ofbid="usb_设备枚举简介__ul_kyn_f2q_g1c"><li class="- topic/li li" data-ofbid="d239621e65__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e67__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">Frames</code>。Low-speed 和 Full-speed 的时间切片大小为 1msUSB
控制器每 1ms 重新调度一下传输。</p>
</li><li class="- topic/li li" data-ofbid="d239621e72__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e74__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">Microframes</code>。High-speed 的时间切片大小为 125usUSB
控制器每 125us 重新调度一下传输。</p>
<p class="- topic/p p" data-ofbid="d239621e79__20250121171658">这个时间切片,和操作系统上 Schedule Tick 的概念是一样的。</p>
<div class="- topic/p p" data-ofbid="d239621e82__20250121171658">在数据格式传输上又会进一步细分:<ul class="- topic/ul ul" id="usb_设备枚举简介__ul_lyn_f2q_g1c" data-ofbid="usb_设备枚举简介__ul_lyn_f2q_g1c"><li class="- topic/li li" data-ofbid="d239621e85__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e87__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">Transfer</code>。每个时间片的所有传输称之为一个 Transfer或者为一个
Frames/Microframes。</p>
</li><li class="- topic/li li" data-ofbid="d239621e92__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e94__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">Transcation</code>。根据某次数据传输的目的,一个 Transfer
可以分成多个 Transcation 事务。</p>
</li><li class="- topic/li li" data-ofbid="d239621e99__20250121171658">
<p class="- topic/p p" data-ofbid="d239621e101__20250121171658"><code class="+ topic/ph pr-d/codeph ph codeph">Packet</code>。数据传输的最小单位,一个 Transcation 可能由多个
Packet 组成。</p>
</li></ul></div>
</li></ul></li></ul>
</section></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>