亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uhci.txt

?? ARM 嵌入式 系統(tǒng) 設(shè)計(jì)與實(shí)例開發(fā) 實(shí)驗(yàn)教材 二源碼
?? TXT
字號:
Specification and Internals for the New UHCI Driver (Whitepaper...)	brought to you by	Georg Acher, acher@in.tum.de (executive slave) (base guitar)	Deti Fliegl, deti@fliegl.de (executive slave) (lead voice)	Thomas Sailer, sailer@ife.ee.ethz.ch (chief consultant) (cheer leader) 	$Id: README.uhci,v 1.1 1999/12/14 14:03:02 fliegl Exp $This document and the new uhci sources can be found on		http://hotswap.in.tum.de/usb1. General issues1.1 Why a new UHCI driver, we already have one?!?Correct, but its internal structure got more and more mixed up by the (stillongoing) efforts to get isochronous transfers (ISO) to work.Since there is an increasing need for reliable ISO-transfers (especially for USB-audio needed by TS and for a DAB-USB-Receiver build by GA and DF), this state was a bit unsatisfying in our opinion, so we've decided (basedon knowledge and experiences with the old UHCI driver) to start from scratch with a new approach, much simpler but at the same time more powerful.It is inspired by the way Win98/Win2000 handles USB requests via URBs,but it's definitely 100% free of MS-code and doesn't crash while unplugging an used ISO-device like Win98 ;-)Some code for HW setup and root hub management was taken from the original UHCI driver, but heavily modified to fit into the new code.The invention of the basic concept, and major coding were completed in two days (and nights) on the 16th and 17th of October 1999, now known as thegreat USB-October-Revolution started by GA, DF, and TS ;-)Since the concept is in no way UHCI dependent, we hope that it will also be transferred to the OHCI-driver, so both drivers share a common API.1.2. Advantages and disadvantages+ All USB transfer types work now!+ Asynchronous operation+ Simple, but powerful interface (only two calls for start and cancel)+ Easy migration to the new API, simplified by a compatibility API+ Simple usage of ISO transfers+ Automatic linking of requests+ ISO transfers allow variable length for each frame and striping+ No CPU dependent and non-portable atomic memory access, no asm()-inlines+ Tested on x86 and Alpha- Rewriting for ISO transfers needed1.3. Is there some compatibility to the old API?Yes, but only for control, bulk and interrupt transfers. We've implemented some wrapper calls for these transfer types. The usbcore works fine with these wrappers. For ISO there's no compatibility, because the old ISO-API and its semantics were unnecessary complicated in our opinion.1.4. What's really working?As said above, CTRL and BULK already work fine even with the wrappers,so legacy code wouldn't notice the change.Regarding to Thomas, ISO transfers now run stable with USB audio.INT transfers (e.g. mouse driver) work fine, too.1.5. Are there any bugs?No ;-)Hm...Well, of course this implementation needs extensive testing on all availablehardware, but we believe that any fixes shouldn't harm the overall concept.1.6. What should be done next?A large part of the request handling seems to be identical for UHCI and OHCI, so it would be a good idea to extract the common parts and have only the HW specific stuff in uhci.c. Furthermore, all other USB device driversshould need URBification, if they use isochronous or interrupt transfers.One thing missing in the current implementation (and the old UHCI driver) is fair queueing for BULK transfers. Since this would need (in principle) the alteration of already constructed TD chains (to switch from depth to breadth execution), another way has to be found. Maybe some simple heuristics work with the same effect.---------------------------------------------------------------------------2. Internal structure and mechanismsTo get quickly familiar with the internal structures, here's a shortdescription how the new UHCI driver works. However, the ultimate source oftruth is only uhci.c!2.1. Descriptor structure (QHs and TDs)During initialization, the following skeleton is allocated in init_skel:	 framespecific           |           common chain     framelist[][  0 ]-----> TD --> TD -------\[  1 ]-----> TD --> TD --------> TD ----> QH -------> QH -------> QH ---> NULL  ...        TD --> TD -------/[1023]-----> TD --> TD ------/	     	     ^^     ^^           ^^       ^^          ^^          ^^   1024 TDs for   7 TDs for    1 TD for   Start of    Start of    End Chain	    ISO  INT (2-128ms) 1ms-INT    CTRL Chain  BULK ChainFor each CTRL or BULK transfer a new QH is allocated and the containing datatransfers are appended as (vertical) TDs. After building the whole QH with itsdangling TDs, the QH is inserted before the BULK Chain QH (for CTRL) orbefore the End Chain QH (for BULK). Since only the QH->next pointers areaffected, no atomic memory operation is required. The three QHs in thecommon chain are never equipped with TDs!For ISO or INT, the TD for each frame is simply inserted into the appropriateISO/INT-TD-chain for the desired frame. The 7 skeleton INT-TDs are scatteredamong the 1024 frames similar to the old UHCI driver.For CTRL/BULK/ISO, the last TD in the transfer has the IOC-bit set. For INT,every TD (there is only one...) has the IOC-bit set.Besides the data for the UHCI controller (2 or 4 32bit words), the descriptorsare double-linked through the .vertical and .horizontal elements in the SW data of the descriptor (using the double-linked list structures and operations), but SW-linking occurs only in closed domains, i.e. for each ofthe 1024 ISO-chains and the 8 INT-chains there is a closed cycle. This simplifies all insertions and unlinking operations and avoids costly bus_to_virt()-calls.2.2. URB structure and linking to QH/TDsDuring assembly of the QH and TDs of the requested action, these descriptorsare stored in urb->urb_list, so the allocated QH/TD descriptors are bound tothis URB.If the assembly was successful and the descriptors were added to the HW chain,the corresponding URB is inserted into a global URB list for this controller.This list stores all pending URBs.2.3. Interrupt processingSince UHCI provides no means to directly detect completed transactions, thefollowing is done in each UHCI interrupt (uhci_interrupt()):For each URB in the pending queue (process_urb()), the ACTIVE-flag of the associated TDs are processed (depending on the transfer type process_{transfer|interrupt|iso}()). If the TDs are not active anymore, they indicate the completion of the transaction and the status is calculated. Inactive QH/TDs are removed from the HW chain (since the host controlleralready removed the TDs from the QH, no atomic access is needed) and eventually the URB is marked as completed (OK or errors) and removed from the pending queue. Then the next linked URB is submitted. After (or immediately before) that, the completion handler is called.2.4. Unlinking URBsFirst, all QH/TDs stored in the URB are unlinked from the HW chain. To ensure that the host controller really left a vertical TD chain, we wait for one frame. After that, the TDs are physically destroyed.2.5. URB linking and the consequencesSince URBs can be linked and the corresponding submit_urb is called inthe UHCI-interrupt, all work associated with URB/QH/TD assembly has to beinterrupt save. This forces kmalloc to use GFP_ATOMIC in the interrupt.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香婷婷综合色啪| 成人免费精品视频| 欧美激情在线观看视频免费| 欧美日韩一区二区三区四区| 欧美日韩一区久久| 欧美一区二区三区在| 精品盗摄一区二区三区| 中文字幕二三区不卡| 一区二区三区中文字幕精品精品| 中文字幕一区日韩精品欧美| 亚洲综合色网站| 美女视频一区在线观看| 国产精品一区二区三区乱码| 91丨九色丨蝌蚪丨老版| 在线综合视频播放| 亚洲国产精品ⅴa在线观看| 一区二区三区四区视频精品免费 | 国产一区二三区好的| www.爱久久.com| 欧美三级电影网站| www日韩大片| 亚洲影院久久精品| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩va欧美va亚洲va久久| 国产在线不卡一区| 成人黄色小视频在线观看| 欧美丰满嫩嫩电影| 久久精品一区四区| 亚洲综合免费观看高清完整版在线 | 国产一区二区免费在线| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲一区二区三区美女| 老司机精品视频导航| 色综合色狠狠综合色| 亚洲精品在线免费播放| 一区二区成人在线观看| 国产一区二区剧情av在线| 欧美日韩一区在线| 成人欧美一区二区三区1314| 久久99精品国产91久久来源| 欧美三级在线播放| 国产精品嫩草99a| 久久精品国产亚洲高清剧情介绍| 在线免费观看日韩欧美| 欧美激情中文不卡| 紧缚捆绑精品一区二区| 欧美日韩国产成人在线91| 国产精品久久久久aaaa樱花| 青青国产91久久久久久| 欧美一a一片一级一片| 国产精品久久久久久久久免费桃花| 久久国产成人午夜av影院| 欧美无人高清视频在线观看| 日韩毛片在线免费观看| 免费成人av在线| 欧美精品日韩精品| 一区二区三区在线免费视频| 成人av资源网站| 久久精品视频一区二区三区| 免费精品视频在线| 51久久夜色精品国产麻豆| 亚洲男人的天堂在线aⅴ视频| 成人听书哪个软件好| 久久网站热最新地址| 久久精品国产第一区二区三区| 欧美日韩午夜精品| 尤物视频一区二区| 成人一级片网址| 久久九九99视频| 国内成人免费视频| 精品久久人人做人人爱| 免费在线观看视频一区| 欧美男男青年gay1069videost| 一区二区高清视频在线观看| 91同城在线观看| 26uuu欧美| av中文字幕在线不卡| 日日欢夜夜爽一区| 麻豆视频一区二区| 一区二区三区欧美视频| 777xxx欧美| 成人一区二区三区视频在线观看| 亚洲精品视频在线观看免费| 欧美一区二区三区在线看| 免费国产亚洲视频| 《视频一区视频二区| 欧美日韩性生活| 欧美亚洲日本国产| 蜜桃视频免费观看一区| 69久久99精品久久久久婷婷| 丝袜美腿高跟呻吟高潮一区| 欧美男男青年gay1069videost | 国产福利一区在线| 久久精品在这里| 成人免费视频网站在线观看| 中文字幕一区二区不卡 | 一级女性全黄久久生活片免费| 在线观看日韩精品| 午夜视频一区二区三区| 欧美一级高清片| 国产自产2019最新不卡| 国产视频在线观看一区二区三区| 成人中文字幕在线| 亚洲乱码国产乱码精品精小说 | 国产欧美一区视频| 丰满亚洲少妇av| 中文字幕在线不卡国产视频| 91影视在线播放| 亚洲在线视频免费观看| 欧美无人高清视频在线观看| 精品一区二区三区在线播放| 国产欧美精品区一区二区三区| 色综合欧美在线视频区| 奇米一区二区三区av| 国产亚洲一区二区三区四区| 91浏览器入口在线观看| 日产国产高清一区二区三区| 精品国产污污免费网站入口 | 在线观看日韩国产| 六月丁香综合在线视频| 国产精品美女久久久久高潮| 欧美专区日韩专区| 免费在线视频一区| 中文字幕不卡在线播放| 欧美日韩大陆在线| 国产.欧美.日韩| 亚洲久本草在线中文字幕| 欧美一区二区久久久| 亚洲一二三区在线观看| 日韩电影免费一区| 国产麻豆视频精品| 精品日产卡一卡二卡麻豆| 欧美日韩国产高清一区| 欧美一区二区三区啪啪| 欧美大白屁股肥臀xxxxxx| 日本一区二区三区国色天香 | 精品国产免费视频| 中文字幕一区二区三区乱码在线| 欧美日韩视频第一区| 国产99久久久久久免费看农村| 亚洲福利视频一区二区| 午夜成人在线视频| 国产欧美一区在线| 欧美一级久久久| 日本高清不卡一区| 国产精品88888| 亚洲成年人影院| 中文一区二区完整视频在线观看| 欧美精品在线观看播放| 99久久99久久综合| 精品一区二区三区的国产在线播放| 一区二区三区高清| 日本一区二区不卡视频| 欧美一区二区福利视频| 91丨porny丨国产| 国产精品一区二区久久精品爱涩| 亚洲第一福利一区| 国产精品国产自产拍高清av王其| 日韩欧美中文一区| 精品视频1区2区| 色悠悠亚洲一区二区| 国产一区二区在线视频| 三级影片在线观看欧美日韩一区二区| 亚洲色图色小说| 欧美极品少妇xxxxⅹ高跟鞋| 欧美一区二区精品| 欧美午夜精品一区| hitomi一区二区三区精品| 国产在线一区二区| 免费的成人av| 日本伊人色综合网| 亚洲成人黄色影院| 亚洲永久精品国产| 一区二区三区视频在线看| 国产精品午夜春色av| 欧美精品一区二区精品网| 538在线一区二区精品国产| 欧美人xxxx| 欧美日韩在线播放三区四区| 欧美在线免费观看亚洲| 色婷婷久久久综合中文字幕| 91在线精品一区二区三区| 国产盗摄女厕一区二区三区 | 宅男在线国产精品| 欧美日韩国产在线观看| 欧美三级视频在线播放| 在线观看av一区二区| 色老汉一区二区三区| 91麻豆免费视频| 色综合av在线| 欧美色区777第一页| 欧美色偷偷大香| 在线播放日韩导航| 欧美一区2区视频在线观看| 91麻豆精品国产91久久久更新时间| 7777女厕盗摄久久久| 91麻豆精品国产91久久久久| 日韩视频一区二区三区在线播放 | 日韩1区2区3区| 日本人妖一区二区|