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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uhci.txt

?? 嵌入式系統設計與實例開發源碼
?? 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.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线不卡电影| 毛片av一区二区三区| 日韩精品中文字幕一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 午夜免费久久看| 亚洲免费在线看| 亚洲久本草在线中文字幕| 国产嫩草影院久久久久| 国产精品无人区| 中文字幕中文在线不卡住| 国产精品高潮呻吟| 亚洲国产日韩一级| 日本亚洲电影天堂| 国产一区二区三区四区在线观看| 韩国一区二区三区| 99亚偷拍自图区亚洲| 在线影院国内精品| 在线播放一区二区三区| 日韩精品一区国产麻豆| 国产农村妇女毛片精品久久麻豆 | 欧美日本国产一区| 欧美理论片在线| 国产香蕉久久精品综合网| 久久综合色8888| 中文字幕亚洲精品在线观看| 亚洲bt欧美bt精品777| 国产真实精品久久二三区| 99re66热这里只有精品3直播 | 日韩免费高清av| 亚洲欧美自拍偷拍色图| 五月天激情综合| 国产激情一区二区三区四区| 色综合天天综合网天天狠天天| 制服丝袜成人动漫| 亚洲欧洲在线观看av| 日韩av中文字幕一区二区三区| 国产成人午夜99999| 欧美伊人久久大香线蕉综合69 | 欧美日韩中文字幕一区二区| 欧美一级欧美三级| 中文字幕亚洲综合久久菠萝蜜| 午夜精品久久久久久久99樱桃 | 91污在线观看| 日韩三级.com| 一区二区三区影院| 国产高清在线精品| 91精品免费在线观看| 亚洲免费色视频| 国产成人综合在线观看| 91精品国产一区二区三区香蕉| 中文字幕一区二区视频| 色呦呦国产精品| 久久综合成人精品亚洲另类欧美| 亚洲成人自拍网| 色香蕉成人二区免费| 久久久久综合网| 久久99精品一区二区三区三区| 在线观看国产日韩| 国产精品国产三级国产有无不卡 | 91精品国产综合久久精品麻豆 | 色丁香久综合在线久综合在线观看| 欧美一区二区视频观看视频| 亚洲一区二区视频在线观看| 菠萝蜜视频在线观看一区| 久久久国产一区二区三区四区小说| 亚洲宅男天堂在线观看无病毒| 91麻豆123| 亚洲日本在线天堂| 色诱亚洲精品久久久久久| 国产精品久久久久一区 | 自拍偷在线精品自拍偷无码专区| 国产在线精品一区在线观看麻豆| 欧美一区二区大片| 日韩av一级电影| 欧美一区三区四区| 麻豆高清免费国产一区| 日韩你懂的在线播放| 国内外成人在线| 国产亚洲欧美激情| 成人18视频在线播放| 亚洲色图.com| 在线不卡a资源高清| 老司机精品视频一区二区三区| 日韩一二三四区| 精品一区二区日韩| 日本一区二区视频在线| 97精品超碰一区二区三区| 亚洲人妖av一区二区| 在线视频你懂得一区| 天天综合天天综合色| 日韩欧美的一区二区| 精品亚洲免费视频| 国产日本欧洲亚洲| 99re亚洲国产精品| 婷婷久久综合九色综合绿巨人| 日韩精品在线一区| 成人a级免费电影| 一区二区三区中文免费| 欧美日韩中字一区| 国产综合色在线| 中文字幕欧美激情| 欧美日韩一二三| 日本免费在线视频不卡一不卡二 | 久久夜色精品国产噜噜av| 加勒比av一区二区| 国产精品毛片无遮挡高清| 欧美三级电影一区| 国产精品一区二区在线看| 日本一区二区成人在线| 欧美色涩在线第一页| 国产一区二区三区不卡在线观看| 国产精品久久久久久久浪潮网站 | 欧美精品一卡二卡| 国产精品羞羞答答xxdd| 亚洲一区二区三区四区的| 久久综合久久鬼色中文字| 欧美亚洲一区三区| 欧美日韩一级二级三级| 国产一区二区三区国产| 日韩精品一二区| 国产精品电影一区二区| 日韩精品影音先锋| 欧美特级限制片免费在线观看| 国产精品99久久久久久久女警| 亚洲色图清纯唯美| 国产清纯美女被跳蛋高潮一区二区久久w| 色呦呦一区二区三区| 国产精品一品视频| 日韩精品一二三| 亚洲福利一区二区三区| 久久综合成人精品亚洲另类欧美| 欧美精品一级二级三级| 在线观看亚洲成人| 97se亚洲国产综合自在线| 国产不卡视频在线观看| 九九精品一区二区| 亚洲va在线va天堂| 亚洲日本电影在线| 亚洲精品在线观看网站| 欧美久久久一区| 在线观看免费视频综合| 丁香激情综合国产| 国产做a爰片久久毛片| 极品销魂美女一区二区三区| 免费成人av资源网| 日本va欧美va精品发布| 亚洲第一二三四区| 天天免费综合色| 日韩国产精品久久久| 全部av―极品视觉盛宴亚洲| 午夜精品免费在线| 日韩电影在线免费观看| 天天影视涩香欲综合网| 日韩福利视频网| 麻豆精品视频在线| 国产原创一区二区| 福利一区二区在线| 风间由美一区二区av101| 国产寡妇亲子伦一区二区| 美女视频黄频大全不卡视频在线播放 | 99久久久无码国产精品| 国产成人av福利| va亚洲va日韩不卡在线观看| 国产69精品一区二区亚洲孕妇| 国产91精品精华液一区二区三区 | 欧美美女黄视频| 91精品国产手机| 精品国内片67194| 亚洲国产成人一区二区三区| 综合激情成人伊人| 日韩和欧美一区二区三区| 久久爱www久久做| 成人av影院在线| 欧美最新大片在线看| 日韩一区二区在线观看视频| 欧美另类变人与禽xxxxx| 久久欧美中文字幕| ●精品国产综合乱码久久久久| 日韩美女久久久| 蜜芽一区二区三区| av电影在线观看完整版一区二区| 成人福利在线看| 欧美一级一级性生活免费录像| 日韩欧美在线不卡| 亚洲欧美视频在线观看| 九色综合国产一区二区三区| av不卡一区二区三区| 欧美日韩精品专区| 欧美极品美女视频| 日本v片在线高清不卡在线观看| 国产成人鲁色资源国产91色综| 91黄色免费看| 国产婷婷色一区二区三区四区| 亚洲成人7777| 福利一区在线观看| 日韩一级二级三级精品视频| 最新成人av在线| 狠狠色综合播放一区二区| 在线观看网站黄不卡| 欧美激情一区二区三区在线|