ãã£ã³ãã«éèš
pipe.incã³ãŒãã§usb_open_pipeãšåŒã°ããAPIã®
USBOpenPipe
é¢æ°ã¯ãæå®ããããã£ãã«ç¹æ§ãšããã€ã¹ç¹æ§ãèšé²ãããã芪ããã£ãã«ã«ãã£ãŠæ°ãããã£ãã«ãéããŸãã ãããè¡ãããã«ã圌女ã¯ïŒ
- ã³ã³ãããŒã©ãŒåºæã®é¢æ°
usb_hardware_func.AllocPipe
åŒã³åºãããšã«ããããã£ãã«ãèšè¿°ããã³ã³ãããŒã©ãŒåºæã®å¢çã«åããã*hci_pipe+usb_pipe
æ§é äœã®ãã¢ãéžæããŸãã - ã³ã³ãããŒã©åºæã®é¢æ°
usb_hardware_func.AllocTD
åŒã³åºãããšã«ããã空ã®è»¢éèšè¿°åãèšè¿°ããã³ã³ãããŒã©åºæã®å¢çã«åãããŠæ§é äœã®ãã¢*hci_gtd+usb_gtd
ãéžæããŸãã - ãã€ã³ã¿ãŒãåããŸãïŒãã£ãã«æ§é ã§ãã³ã³ãããŒã©ãŒæ§é ãžã®ãã€ã³ã¿ãŒãšãã芪ããã£ãã«ããã®ãã¹ãŠã®ãã£ãã«ã«å ±éã®ããã€ã¹ããŒã¿ãžã®ãã€ã³ã¿ãŒãã³ããŒããŸãã ãã£ãã«æ§é ãšç©ºã®èšè¿°åã®æ§é ã®éã§ããã€ã³ã¿ã®åŸåŸ©ãåããŸãã 空ã®èšè¿°åã®æ§é ã«ãããäºéèšè¿°åã®ãã£ãã«ãªã¹ãã®å¯äžã®èŠçŽ ã«ãªããŸãã
- ãã¥ãŒããã¯ã¹ãåæåããŸããããã«ããããã®ãã£ãã«ã§ã®ãã¹ãŠã®æäœãä¿è·ãããŸãã USBã³ã³ãããŒã©ãŒããã®ã€ãã³ãã®ãã¹ãŠã®åŠçã¯USBã¹ããªãŒã ã§è¡ãããŸãããAPIãžã®ã¢ã¯ã»ã¹ã«ã€ããŠãåãããšãèšããŸãããUSBãã©ãã·ã¥ãã©ã€ããããã¡ã€ã«ãèªã¿åãã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã¹ããªãŒã ã®ã³ã³ããã¹ãã§ãã¥ãŒã§è»¢éãéå§ããŸãã æ°ãã転éãå€ã転éã®å®äºãåŠçããUSBââã¹ããªãŒã ã«å¹²æžããªãããã«ããã®ãã¥ãŒããã¯ã¹ãå¿ èŠã§ãã
- ããã€ã¹ã®ãã£ãã«ã»ããã®ãã¥ãŒããã¯ã¹ããã£ããã£ããããã€ã¹ããŸã åæãããŠããªãããšã確èªããŸãã
- ã³ã³ãããŒã©ãŒã«å¯ŸããŠã°ããŒãã«ãªãã¥ãŒããã¯ã¹ã«ãã£ãŠä¿è·ãããŠãã
usb_hardware_func.InitPipe
ã®ã³ã³ãããŒã©ãŒåºæã®åæåãusb_hardware_func.InitPipe
ãŸãã - ããã€ã¹ãã£ãã«ã»ããã«æ°ãããã£ãã«ãè¿œå ãããã£ãã«ã»ãããã¥ãŒããã¯ã¹ã解æŸããŸãã
- ã¹ãããã®1ã€ã倱æããå Žåãåã®ãã¹ãŠã®ã¹ããããããŒã«ããã¯ããŸãã ã³ã³ãããŒã©ãŒåºæã®åæåãããŒã«ããã¯ããããšã¯æãé£ãããããæåŸã®æ®µéã§è¡ããããã®åŸãšã©ãŒã¯çºçããŸããã
æåŸã®ã¢ã¯ã·ã§ã³ã䜿çšããã³ã³ãããŒã©ãŒåºæã®åæåã«ããã察å¿ãããªã¹ãã«æ°ãããã£ãã«ãè¿œå ãããŸãã å¶åŸ¡ãã£ãã«ãšããŒã¿é åã®ãã£ãã«ã®å Žåããªã¹ãã¯1ã€ã ãã§ãããå²ã蟌ã¿ãã£ãã«ã®å Žåã¯ãããã€ãã®ãªãã·ã§ã³ã®ãããããéžæããå¿ èŠããããŸãã
ãããscheduler.incã®åºçªã§ãã 圌ã¯ãå²ã蟌ã¿ãã£ãã«ã®ãªã¹ãã®1ã€ãéžæããã ãã§ãªããæ°ãããã£ãã«ã«ãååãªã¹ããŒã¹ããããããšã確èªããŸãã å®æéä¿¡çšã®FullSpeedãã¹ã®ãã¹ãŠã®ãã¬ãŒã ã§ã90ïŒ ãè¶ ããæéã䜿çšããããšã¯ã§ãããHighSpeedãã¹ã®åãã€ã¯ããã¬ãŒã -80ïŒ ãè¶ ããæéã䜿çšããããšã¯ã§ããŸããã
ããã§ãäœããã®çç±ã§ç¶æ³ã«å¿ããŠåäœããUSBââå®è£ ãäœæããå Žåãã¹ã±ãžã¥ãŒã©ãå€§å¹ ã«ç¯çŽã§ããããšã«æ³šæããŠãã ããã ãã®ã·ãªãŒãºã®èšäºã§èª¬æãããŠããä»ã®ãã¹ãŠãäœããã®æ¹æ³ã§å®è£ ããå¿ èŠããããŸããã倧ããªè² è·ããªãå Žåã¯ãåãã¬ãŒã /ãã€ã¯ããã¬ãŒã ã§åŠçããããã«ããªãŒã§ã¯ãªããå²ã蟌ã¿ãã£ãã«ã®1ã€ã®ãªã¹ãã ãã§ç®¡çã§ããŸãã å®è£ ãããã»ã©è€éã«ããªããå°ãçµæžçãªã¹ããŒã ã¯ã1ã2ã4ã8ã16ã32ãã¬ãŒã ã®ååŠçééã«å¯ŸããŠ1ã€ã®ãã£ãã«ãªã¹ãã§ãã ãã¹ãã³ã³ãããŒã©ãŒããšã«å€§éã®ãã©ãã£ãã¯ãæã€è€æ°ã®ããã€ã¹ãåæã«åŠçããå¿ èŠã¯ãããŸãããããã®ã¢ãããŒãã¯æ¬æ Œçãªã¹ã±ãžã¥ãŒã©ãŒã«æ±ºããŠå£ããŸããã FullSpeedããã€ã¹ã®2ã€ä»¥äžã®ã¢ã€ãœã¯ããã¹ãã£ãã«ãŸãã¯HighSpeedããã€ã¹ã®3ã€ä»¥äžã®ã¢ã€ãœã¯ããã¹ãã£ãã«ãããç¹å®ã®æ§æã§ã¯ãåçŽãªåè·¯ãå£ããŸããããã®ãããªç¹å®ã®æ¡ä»¶ã§å®è£ ãå®è¡ãã人ã¯ããªãã§ããããïŒ
ã©ãã§ãåžžã«åäœããã¯ãã®USBå®è£ ãäœæããŠããå Žåã¯ãã¹ã±ãžã¥ãŒã©ãŒãäœæããå¿ èŠããããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³æéã®èŠç©ãã
決æžããŒã¿ãšå
éšååŒæ§é
FullSpeedé床ã®1ãããã¯ãéåžžããã¬ãŒã ã®1/12000éšåããšã«éä¿¡ãããé床ã¯12ã¡ã¬ããã/ç§ã«ãªããŸãã ã€ãŸãããã¹ãã³ã³ãããŒã©ãŒã«ãã£ãŠæž¬å®ããã1ãã¬ãŒã ã®ããµã€ãºãã¯12,000ãããã§ãã ãã¹ããšããã€ã¹ã®äž¡æ¹ã1/12000ããªç§ãã«ãŠã³ãããã¿ã€ããŒãå»ã¿ãŸã;ã¿ã€ããŒã«åŸã£ãŠããã¹ããŸãã¯ããã€ã¹ã¯æ¬¡ã®ãããã®éä¿¡ãéå§ããŸãã ãã¹ãã¿ã€ããŒã®ç²ŸåºŠèŠä»¶ã¯éåžžã«å³æ Œã§ããããã¹ãã¿ã€ããŒã¯èšç®ã§æ£ç¢ºã§ãããšèŠãªãããšãã§ããŸãã å€éšFullSpeedããã€ã¹ã®å Žåãä»æ§ã§ã¯ã±0.25ïŒ
ã®ã¿ã€ããŒãšã©ãŒãèš±å¯ãããŠããŸããã€ãŸããããã€ã¹ããã®400ãããã®åä¿¡æéã¯ã399ã401ã®ãå
¬ç§°FSããããã«çžåœããŸãã LowSpeedé床ã®1ãããã¯ãFullSpeedé床ã®8åã®é·ãã§éä¿¡ããã1.5ã¡ã¬ããã/ç§ã®é床ã«ãªããŸãã LowSpeedã¯ãããŠã¹/ããŒããŒããªã©ã®åçŽãªããã€ã¹ã®èŠä»¶ãç·©åãããã¢ãŒããšããŠèããããŸãããLowSpeedããã€ã¹ã®ã¿ã€ããŒãšã©ãŒã¯Â±1.5ïŒ
以å
ã§ããå¿
èŠããããŸããããã€ã¹ããã®50ãããã®åä¿¡æéã¯394ã406ã®ãå
¬ç§°FSããããã«çžåœ
HighSpeedé床ã®1ãããã¯ãéåžžãã€ã¯ããã¬ãŒã ã®1/60000ã§éä¿¡ããã480ã¡ã¬ããã/ç§ã®é床ãæäŸããŸãã HighSpeedããã€ã¹ã®ã¿ã€ããŒã®ç²ŸåºŠèŠä»¶ã¯Â±0.05ïŒ ã«åŒãäžããããããããã©ã³ã¶ã¯ã·ã§ã³ãèšç»ããéã«ãã¿ã€ããŒã®éãã«ãããšã©ãŒãç¡èŠã§ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã«ã¯ç¬èªã®å éšæ§é ããããŸãã åå²ããããã©ã³ã¶ã¯ã·ã§ã³ã¯èã«çœ®ããŠãããŸãããã éåžžã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŒã¯ã³ïŒããŒã¯ã³ïŒãå«ããã±ãããããŒã¿ïŒããŒã¿ïŒãå«ããªãã·ã§ã³ã®ãã±ããããªãã·ã§ã³ã®ãã£ãŒãããã¯ãã±ããïŒãã³ãã·ã§ã€ã¯ïŒãªã©ãä»ã®ãã±ãããšäº€äºã«äœ¿çšããã«USBãã¹ã«å³å¯ã«é£ç¶ããããã€ãã®ãã±ããã§æ§æãããŸã ã ãã¹ãããLowSpeedããã€ã¹ã«åãããããã±ããã®åã«ã¯ãç¹å¥ãªPREãã±ããããããŸãã ãã¹äžã®ãããLowSpeedããã€ã¹ãæ¥ç¶ãããŠããããŒãã®ãããã¯ã解é€ã§ããããã«ãPREãã±ãããšããã®åŸã«æäœ4ã€ã®ãå ¬ç§°FSãããããå¿ èŠã§ãã éåžžã®FullSpeedãã©ãã£ãã¯ã¯ããã®ãããªããŒãã«ã¯éä¿¡ãããŸããã
åãã±ããã¯ãããŒ/ãã«ã¹ããŒãã§8ããã= 1ãã€ãããã€ã¹ããŒãã§32ããã= 4ãã€ãã®SYNCã¯ããã¯ã§å§ãŸããŸãã ç¹å¥ãªPREãã±ãããé€ãåãã±ããã¯ãLow / Full Speedã§3ããããHighSpeedã§8ãããã®EOPïŒãã±ããã®çµããïŒã·ãŒã±ã³ã¹ã§çµäºããŸãã
ããŒã¯ã³ã¯ãããŒã¿ãéåä¿¡ããããã€ã¹ã®ã¢ã¯ã·ã§ã³ãéä¿¡æ¹åãã¢ãã¬ã¹ãããã³ãšã³ããã€ã³ãã決å®ããŸãã éåžžã®ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ã3ã€ã®ããŒã¯ã³ãå¯èœã§ãããããããããŒã¿ã®åä¿¡ãéä¿¡ãããã³ã³ã³ãããŒã«è»¢éã®æåã®æ®µéã®ããã®INãOUTãããã³SETUPã§ãã ããŒã¯ã³ä»ãã®ãã±ããã¯ãSYNC + EOPãã«ãŠã³ãããã«3ãã€ããåããŸãïŒãã±ããã®ã¿ã€ãã«8ããããããã€ã¹ã¢ãã¬ã¹ã«7ãããããšã³ããã€ã³ãã«4ããããCRCã«5ããããããã€ã¹ãšãšã³ããã€ã³ãã®ã¢ãã¬ã¹ãéä¿¡ãããšãã«ãšã©ãŒããªãããšã確èªããŸãã
ããŒã¿ãã±ããã«ã¯ãããã€ã¹ããéåä¿¡ãããå®éã®ããŒã¿ãšãSYNC + EOPãã«ãŠã³ãããªã3ãã€ããè¿œå ãããŸãããã±ããã®ã¿ã€ãã¯8ããããCRCããŒã¿ã¯16ãããã§ãã
ãã£ãŒãããã¯ãã±ããã¯1ãã€ãã§æ§æãããSYNC + EOPã¯ã«ãŠã³ãããŸããããã±ããã¿ã€ãã¯8ãããã§ãã ãã±ããã¯ãåã®ãã±ãããšã¯éæ¹åã«éä¿¡ãããŸãã ACKãã±ããã¯ããã¹ãŠã®ããŒã¿ãæ£åžžã«åä¿¡ãããããšãæå³ããŸãã INãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãNAKãã±ãããããŒã¿ãã±ããã®ä»£ããã«ããã€ã¹ã«ãã£ãŠéä¿¡ãããããŒã¿ããŸã ãªãããšãæå³ããŸãã ããšãã°ãã³ã³ãããŒã©ãŒãå®æçã«ããŒãªã³ã°ããŠããéãããŠã¹ã¯ãã®æ¹æ³ã§å¿çããŸãããç¶æ ã¯æåŸã®ããŒãªã³ã°ä»¥éå€æŽãããŠããŸããã OUTãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãNAKãã±ããã¯ããŒã¿ãã±ããã®åŸã«ããã€ã¹ã«ãã£ãŠéä¿¡ãããŸããããã¯ãããã€ã¹ãå éšã®åé¡ã§ããžãŒã§ããéããã¹ããåŸã§åè©Šè¡ããããšãæå³ããŸãã NAKã¯ééãã§ã¯ãããŸããã ãšã©ãŒãéç¥ããããã«ãããã€ã¹ã¯ãŸã£ããå¿çããªãããç¡å¹ãªãã±ããã§å¿çããããSTALLãã±ããã§å¿çããŸãã æåã®2ã€ã®ã±ãŒã¹ã§ã¯ãã³ã³ãããŒã©ãŒã¯ããããã¹äžã®ã©ããã®ãšã©ãŒãšèŠãªããæ倧3ååè©Šè¡ããŸãããã®åŸããããããŠãšã©ãŒãå ±åããŸãã åŸè ã®å Žåãã³ã³ãããŒã©ãŒã¯ããã«ãšã©ãŒãå ±åããŸãã
ã¢ã€ãœã¯ããã¹ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ããã£ãŒãããã¯ãã±ããã¯ãããŸããã å²ã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ããã£ãŒãããã¯ãã±ãããå¿ èŠã§ãã
USBçµç±ã§éä¿¡ãããããŒã¿ã§ã¯ã6åäœãããããšã«ãŒãããããæ¿å ¥ãããŸãã åäžãããã¯ããã¹ã®ç¶æ ãåäžãããã§å€åããªãããã«ãšã³ã³ãŒããããã¿ã€ããŒã䜿çšããŠåã ã®ããããéžæããŸãã ã¿ã€ããŒã®èš±å®¹å€ãåé¡ãåŒãèµ·ãããªãããã«ããŒãããããæ¿å ¥ãããŸãã ãããã£ãŠãææªã®å Žåãè·ç©ã®é éæéã«7/6ãæããå¿ èŠããããŸãã ä¹æ°ã¯SYNCããã³EOPã«ã¯é©çšãããŸããããããã¯ç¹å¥ãªæ¹æ³ã§ãšã³ã³ãŒãããããã¹ã®ç¶æ ã«ä¿èšŒãããå€æŽãçæããŸãã
ãã¹ãã³ã³ãããŒã©ãŒã2ã€ã®ãã±ãããé£ç¶ããŠéä¿¡ããå ŽåãFullSpeedãšLowSpeedã®å Žåã¯2ããããHighSpeedã®å Žåã¯88ãããã«å¯Ÿå¿ããçããã±ããéé 延ã§ååã§ãã ã³ã³ãããŒã©ãŒããã±ãããåä¿¡ããå¿çãã±ãããéä¿¡ããå¿ èŠãããå ŽåãäŒæ¢ã¯HighSpeedã®å Žåã¯8ãããã«ãFullSpeedãšLowSpeedã®å Žåã¯åã2ãããã«åæžãããŸãã ãã¹ãã³ã³ãããŒã©ãŒããã±ãããéä¿¡ããŠå¿çãã±ãããåŸ æ©ããŠããå Žåããã±ãããããã€ã¹ã«æž¡ãéã®é 延ãšããã€ã¹ããã®å¿çãã±ãããèæ ®ããå¿ èŠããããŸãïŒã¿ãŒã³ã¢ã©ãŠã³ãã¿ã€ã ïŒã FullSpeedããã³LowSpeedãã¹ã®å ŽåãäŒéæéã¯å¯Ÿå¿ããé床ã§18ãããã§ãããããä»æ§ã¯äž¡æ¹åã®ä¿¡å·ééãšããã€ã¹ã®å¿çãå«ãæ倧é 延ãå®çŸ©ããŸãã HighSpeedã®å Žåãæ倧é 延ã¯736ãããã®éä¿¡æéã«çžåœããŸãã
HighSpeedé床ã®1ãããã¯ãéåžžãã€ã¯ããã¬ãŒã ã®1/60000ã§éä¿¡ããã480ã¡ã¬ããã/ç§ã®é床ãæäŸããŸãã HighSpeedããã€ã¹ã®ã¿ã€ããŒã®ç²ŸåºŠèŠä»¶ã¯Â±0.05ïŒ ã«åŒãäžããããããããã©ã³ã¶ã¯ã·ã§ã³ãèšç»ããéã«ãã¿ã€ããŒã®éãã«ãããšã©ãŒãç¡èŠã§ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã«ã¯ç¬èªã®å éšæ§é ããããŸãã åå²ããããã©ã³ã¶ã¯ã·ã§ã³ã¯èã«çœ®ããŠãããŸãããã éåžžã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŒã¯ã³ïŒããŒã¯ã³ïŒãå«ããã±ãããããŒã¿ïŒããŒã¿ïŒãå«ããªãã·ã§ã³ã®ãã±ããããªãã·ã§ã³ã®ãã£ãŒãããã¯ãã±ããïŒãã³ãã·ã§ã€ã¯ïŒãªã©ãä»ã®ãã±ãããšäº€äºã«äœ¿çšããã«USBãã¹ã«å³å¯ã«é£ç¶ããããã€ãã®ãã±ããã§æ§æãããŸã ã ãã¹ãããLowSpeedããã€ã¹ã«åãããããã±ããã®åã«ã¯ãç¹å¥ãªPREãã±ããããããŸãã ãã¹äžã®ãããLowSpeedããã€ã¹ãæ¥ç¶ãããŠããããŒãã®ãããã¯ã解é€ã§ããããã«ãPREãã±ãããšããã®åŸã«æäœ4ã€ã®ãå ¬ç§°FSãããããå¿ èŠã§ãã éåžžã®FullSpeedãã©ãã£ãã¯ã¯ããã®ãããªããŒãã«ã¯éä¿¡ãããŸããã
åãã±ããã¯ãããŒ/ãã«ã¹ããŒãã§8ããã= 1ãã€ãããã€ã¹ããŒãã§32ããã= 4ãã€ãã®SYNCã¯ããã¯ã§å§ãŸããŸãã ç¹å¥ãªPREãã±ãããé€ãåãã±ããã¯ãLow / Full Speedã§3ããããHighSpeedã§8ãããã®EOPïŒãã±ããã®çµããïŒã·ãŒã±ã³ã¹ã§çµäºããŸãã
ããŒã¯ã³ã¯ãããŒã¿ãéåä¿¡ããããã€ã¹ã®ã¢ã¯ã·ã§ã³ãéä¿¡æ¹åãã¢ãã¬ã¹ãããã³ãšã³ããã€ã³ãã決å®ããŸãã éåžžã®ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ã3ã€ã®ããŒã¯ã³ãå¯èœã§ãããããããããŒã¿ã®åä¿¡ãéä¿¡ãããã³ã³ã³ãããŒã«è»¢éã®æåã®æ®µéã®ããã®INãOUTãããã³SETUPã§ãã ããŒã¯ã³ä»ãã®ãã±ããã¯ãSYNC + EOPãã«ãŠã³ãããã«3ãã€ããåããŸãïŒãã±ããã®ã¿ã€ãã«8ããããããã€ã¹ã¢ãã¬ã¹ã«7ãããããšã³ããã€ã³ãã«4ããããCRCã«5ããããããã€ã¹ãšãšã³ããã€ã³ãã®ã¢ãã¬ã¹ãéä¿¡ãããšãã«ãšã©ãŒããªãããšã確èªããŸãã
ããŒã¿ãã±ããã«ã¯ãããã€ã¹ããéåä¿¡ãããå®éã®ããŒã¿ãšãSYNC + EOPãã«ãŠã³ãããªã3ãã€ããè¿œå ãããŸãããã±ããã®ã¿ã€ãã¯8ããããCRCããŒã¿ã¯16ãããã§ãã
ãã£ãŒãããã¯ãã±ããã¯1ãã€ãã§æ§æãããSYNC + EOPã¯ã«ãŠã³ãããŸããããã±ããã¿ã€ãã¯8ãããã§ãã ãã±ããã¯ãåã®ãã±ãããšã¯éæ¹åã«éä¿¡ãããŸãã ACKãã±ããã¯ããã¹ãŠã®ããŒã¿ãæ£åžžã«åä¿¡ãããããšãæå³ããŸãã INãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãNAKãã±ãããããŒã¿ãã±ããã®ä»£ããã«ããã€ã¹ã«ãã£ãŠéä¿¡ãããããŒã¿ããŸã ãªãããšãæå³ããŸãã ããšãã°ãã³ã³ãããŒã©ãŒãå®æçã«ããŒãªã³ã°ããŠããéãããŠã¹ã¯ãã®æ¹æ³ã§å¿çããŸãããç¶æ ã¯æåŸã®ããŒãªã³ã°ä»¥éå€æŽãããŠããŸããã OUTãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãNAKãã±ããã¯ããŒã¿ãã±ããã®åŸã«ããã€ã¹ã«ãã£ãŠéä¿¡ãããŸããããã¯ãããã€ã¹ãå éšã®åé¡ã§ããžãŒã§ããéããã¹ããåŸã§åè©Šè¡ããããšãæå³ããŸãã NAKã¯ééãã§ã¯ãããŸããã ãšã©ãŒãéç¥ããããã«ãããã€ã¹ã¯ãŸã£ããå¿çããªãããç¡å¹ãªãã±ããã§å¿çããããSTALLãã±ããã§å¿çããŸãã æåã®2ã€ã®ã±ãŒã¹ã§ã¯ãã³ã³ãããŒã©ãŒã¯ããããã¹äžã®ã©ããã®ãšã©ãŒãšèŠãªããæ倧3ååè©Šè¡ããŸãããã®åŸããããããŠãšã©ãŒãå ±åããŸãã åŸè ã®å Žåãã³ã³ãããŒã©ãŒã¯ããã«ãšã©ãŒãå ±åããŸãã
ã¢ã€ãœã¯ããã¹ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ããã£ãŒãããã¯ãã±ããã¯ãããŸããã å²ã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ããã£ãŒãããã¯ãã±ãããå¿ èŠã§ãã
USBçµç±ã§éä¿¡ãããããŒã¿ã§ã¯ã6åäœãããããšã«ãŒãããããæ¿å ¥ãããŸãã åäžãããã¯ããã¹ã®ç¶æ ãåäžãããã§å€åããªãããã«ãšã³ã³ãŒããããã¿ã€ããŒã䜿çšããŠåã ã®ããããéžæããŸãã ã¿ã€ããŒã®èš±å®¹å€ãåé¡ãåŒãèµ·ãããªãããã«ããŒãããããæ¿å ¥ãããŸãã ãããã£ãŠãææªã®å Žåãè·ç©ã®é éæéã«7/6ãæããå¿ èŠããããŸãã ä¹æ°ã¯SYNCããã³EOPã«ã¯é©çšãããŸããããããã¯ç¹å¥ãªæ¹æ³ã§ãšã³ã³ãŒãããããã¹ã®ç¶æ ã«ä¿èšŒãããå€æŽãçæããŸãã
ãã¹ãã³ã³ãããŒã©ãŒã2ã€ã®ãã±ãããé£ç¶ããŠéä¿¡ããå ŽåãFullSpeedãšLowSpeedã®å Žåã¯2ããããHighSpeedã®å Žåã¯88ãããã«å¯Ÿå¿ããçããã±ããéé 延ã§ååã§ãã ã³ã³ãããŒã©ãŒããã±ãããåä¿¡ããå¿çãã±ãããéä¿¡ããå¿ èŠãããå ŽåãäŒæ¢ã¯HighSpeedã®å Žåã¯8ãããã«ãFullSpeedãšLowSpeedã®å Žåã¯åã2ãããã«åæžãããŸãã ãã¹ãã³ã³ãããŒã©ãŒããã±ãããéä¿¡ããŠå¿çãã±ãããåŸ æ©ããŠããå Žåããã±ãããããã€ã¹ã«æž¡ãéã®é 延ãšããã€ã¹ããã®å¿çãã±ãããèæ ®ããå¿ èŠããããŸãïŒã¿ãŒã³ã¢ã©ãŠã³ãã¿ã€ã ïŒã FullSpeedããã³LowSpeedãã¹ã®å ŽåãäŒéæéã¯å¯Ÿå¿ããé床ã§18ãããã§ãããããä»æ§ã¯äž¡æ¹åã®ä¿¡å·ééãšããã€ã¹ã®å¿çãå«ãæ倧é 延ãå®çŸ©ããŸãã HighSpeedã®å Žåãæ倧é 延ã¯736ãããã®éä¿¡æéã«çžåœããŸãã
ãã¹ãã³ã³ãããŒã©ãŒã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®ããããã¹ãŠã®è©³çŽ°ã®å®è£ ãé ããŸãããããèšç»ããã«ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã«ãããæéãç¥ãã ãã§ååã§ãã æéã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®ã¿ã€ãããã©ã³ã¶ã¯ã·ã§ã³ã®æ¹åãããã³ããã€ã¹ã®é床ã«ãã£ãŠç°ãªããŸãã
- å²ã蟌ã¿èªã¿åããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã€ã¹ãžã®ããŒã¯ã³ãå«ããã±ãããããã€ã¹ããã®å¿çãåŸ
æ©ãããã±ãããããã€ã¹ããã®ããŒã¿ãå«ããã±ãããåä¿¡ãã±ããã®åŸã®äžæåæ¢ãããã€ã¹ãžã®ãã£ãŒãããã¯ãå«ããã±ãããéä¿¡ãã±ããã®åŸã®äžæåæ¢ã§æ§æãããŸãã
- é«éãã¹ïŒââæåã®ãã±ããã§68ãããã736åŸ æ©ãããã2çªç®ã®ãã±ããã§40+ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããã8ãããã®äžæåæ¢ãæåŸã®ãã±ããã§49ããããããã«88ãããã®äžæåæ¢-åèš989 + 8 *ïŒ7/6ïŒ*ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- FullSpeedãã¹ïŒæåã®ãã±ããã§39ãããã18ãããã®åŸ æ©ãïŒ401/400ïŒ*ïŒ11+ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒïŒãããã§2çªç®ã®ãã±ããã2ãããã®äžæåæ¢ã20ãããã§æåŸã®ãã±ãããããã«2ãããã®äŒæ¢-åèš93 + 2807/300 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- LowSpeed-busïŒæåã®ãã±ããã«å¯Ÿããããªã¢ã³ãã«ã®16 FSããããããã³ããã®å¿çã«å¯Ÿãã4 FSããããæåã®ãã±ããã®8 * 39 FSãããã8 * 18 FSãããã®åŸ æ©ãïŒ406/50ïŒ*ïŒ11+ïŒ7 / 6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒïŒ2çªç®ã®ãã±ããã®FSãããã8 * 2 FSããŒãºããããæåŸã®ãã±ãããžã®ããªã¢ã³ãã«ã®16 FSããããããã³ããã®å¿çãžã®4 FSãããã8 * 20 FS-æåŸã®ãã±ããã®ããããããã«8 * 2ã®äžæåæ¢ããã-åèš778 + 5684/75 *ïŒããŒã¿ãµã€ãº+ 3ïŒFSãããæ倧ã
- å²ã蟌ã¿æžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã€ã¹ãžã®ããŒã¯ã³ãå«ããã±ãããéä¿¡ããããã±ããã®åŸã®äžæåæ¢ãããã€ã¹ãžã®ããŒã¿ãå«ããã±ãããããã€ã¹ããã®å¿çãåŸ
æ©ãããã±ãããããã€ã¹ããã®ãã£ãŒãããã¯ãå«ããã±ãããåä¿¡ãã±ããã®åŸã®äžæåæ¢ã§æ§æãããŸãã èªã¿ãšã®éãã¯ãçšèªã®é åºãã«ãŠã³ããããéä¿¡ã®æ¹åã®ã¿ã§ãã
- é«éãã¹ïŒââåã989 + 8 *ïŒ7/6ïŒ*ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- FullSpeedãã¹ïŒ401/400ä¹ç®åšã¯ãããŒã¿ãã±ãããããã£ãŒãããã¯ãã±ããã«ã移åãããåèšã§åèš93 + 28/3 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããã
- LowSpeedãã¹ïŒ2ã€ã®ããŒã¿ããã³ãã£ãŒãããã¯ãã±ããã®406/50ãš8ã€ã®ä¹ç®åšã亀æãããåèšã§778 + 224/3 *ïŒããŒã¿ãµã€ãº+ 3ïŒFSããããæ倧ã«ãªããŸãã
- ã¢ã€ãœã¯ããã¹èªã¿åããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã€ã¹ãžã®ããŒã¯ã³ãå«ããã±ãããããã€ã¹ããã®å¿çãåŸ
ã€ãã±ãããããã€ã¹ããã®ããŒã¿ãå«ããã±ãããåä¿¡ãããã±ããã®åŸã®äžæåæ¢ã§æ§æãããŸã
- é«éãã¹ïŒââæåã®ãã±ããã®68ããããåŸ æ©ã®736ãããã2çªç®ã®ãã±ããã®40+ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããã8ãããã®äžæåæ¢-åèš852 + 8 *ïŒ7/6ïŒ* ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- FullSpeedãã¹ïŒæåã®ãã±ããã«39ãããã18ãããã®åŸ æ©ã2çªç®ã®ãã±ããã«ïŒ401/400ïŒ*ïŒ11+ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒïŒãããã2ã€ã®ããŒãºããã-åèš71 + 2807/300 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- LowSpeedãã¹ã§ã¯ãã¢ã€ãœã¯ããã¹ãã©ã³ã¶ã¯ã·ã§ã³ã¯ä»æ§ã§èš±å¯ãããŠããŸããã
- ã¢ã€ãœã¯ããã¹æžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã€ã¹ãžã®ããŒã¯ã³ãå«ããã±ãããéä¿¡ããããã±ããã®åŸã®äžæåæ¢ãããã€ã¹ãžã®ããŒã¿ãå«ããã±ãããéä¿¡ããããã±ããã®åŸã®å¥ã®äžæåæ¢ã§æ§æãããŸãã
- é«éãã¹ïŒââæåã®ãã±ããã§68ãããã88ãããã®äžæåæ¢ã40 +ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒãããã®2çªç®ã®ãã±ãããããã«88ãããã®äžæåæ¢-åèš284 + 8 *ïŒ7/6ïŒ *ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- FullSpeedãã¹ïŒæåã®ãã±ããã«39ãããã2ã€ã®ããŒãºãããã2ã€ç®ã®ãã±ããã«11+ïŒ7/6ïŒ* 8 *ïŒããŒã¿ãµã€ãº+ 3ïŒããããããã«2ã€ã®ããŒãºããã-åèš54 + 8 *ïŒ7/6ïŒ *ïŒããŒã¿ãµã€ãº+ 3ïŒãããæ倧ã
- LowSpeedãã¹ã§ã¯ãã¢ã€ãœã¯ããã¹ãã©ã³ã¶ã¯ã·ã§ã³ã¯ä»æ§ã§èš±å¯ãããŠããŸããã
- èªã¿åãå²ã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ãšã¢ã€ãœã¯ããã¹èªã¿åããã©ã³ã¶ã¯ã·ã§ã³ãåå²ããŸãã Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯ãSPLITãã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢ãããŒã¯ã³ä»ããã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢-åèš321ãããã§æ§æãããŸãã Complete-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯ãSPLITãã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢ãããŒã¯ã³ä»ããã±ãããããã€ã¹ããã®å¿çãåŸ æ©äžãããŒã¿ãã±ãããåä¿¡ãã±ããåŸã®äžæåæ¢-åèš1017 + 8 *ïŒ7/6ïŒ*ïŒããŒã¿ãµã€ãº+ 3ïŒãããã§æ§æãããŸãã
- å²ã蟌ã¿æžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ãåå²ããŸãã Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯ãSPLITãã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢ãããŒã¯ã³ä»ããã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢ãããŒã¿ãã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢-åèš449 + 8 *ïŒ7/6ïŒ*ïŒããŒã¿ãµã€ãº+ 3ïŒãããã§æ§æãããŸãã Complete-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯ãSPLITãã±ãããéä¿¡ãã±ããåŸã®äžæåæ¢ãããŒã¯ã³ä»ããã±ãããããã€ã¹å¿çã®åŸ æ©ããã£ãŒãããã¯ãã±ãããåä¿¡ãã±ããåŸã®äžæåæ¢-åèš1026ãããã§æ§æãããŸãã
- ã¢ã€ãœã¯ããã¹æžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ãåå²ããŸãã Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ã®æ§é ã¯ãå²ã蟌ã¿æžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã®å Žåãšåãã449 + 8 *ïŒ7/6ïŒ*ïŒããŒã¿ãµã€ãº+ 3ïŒãããã§ãã ãã©ã³ã¶ã¯ã·ã§ã³å®äº-ã¹ããªããããããŸããã
ãã©ã³ããŒ
1ã€ã®ãã¬ãŒã ã®FullSpeed / LowSpeedãã¹ã§ã¯ã1ã€ã®ãã£ãã«ã«1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ããååšã§ããŸãããè€æ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ããã®è»¢éã¯è€æ°ã®ãã¬ãŒã ã«åå²ãããŸãã HighSpeedãã¹ã§ã¯ããã€ã¯ããã¬ãŒã ãããã®ãã©ã³ã¶ã¯ã·ã§ã³ã®æ倧æ°ã¯3ã«éããå¯èœæ§ããããæ倧ãã©ã³ã¶ã¯ã·ã§ã³ãµã€ãºãšãšãã«ãã£ãã«ã®ç¹æ§ã®1ã€ã§ãã
ãã£ãã«ãéããããšãã¹ã±ãžã¥ãŒã©ã¯ããã£ãã«ã䜿çšããææªã®ã±ãŒã¹ã«åºã¥ããŠããã£ãã«ã®èåŸã®ãã¬ãŒã ã®90ïŒ /ãã€ã¯ããã¬ãŒã ã®80ïŒ ã®éšåãäºçŽããå¿ èŠããããŸã-æé·ãã©ã³ã¶ã¯ã·ã§ã³ã®æ倧æ°ãæ³å®ããŸãã ãã©ã³ã¶ã¯ã·ã§ã³æéã¯åã®ã»ã¯ã·ã§ã³ã§èª¬æãããŠããŸãã ãã¹ãŠãä»ã®ãã£ãã«ã«ãã£ãŠãã§ã«ååŸãããŠãããšããäºå®ã®ããã«ãã£ãã«ã®äžéšãäºçŽã§ããªãå Žåãã¹ã±ãžã¥ãŒã©ã¯ãšã©ãŒãè¿ãå¿ èŠããããŸãã ãã©ã€ããŒããšã©ãŒãæ€åºãããšãããšãã°ãããã€ã¹ãšã®ããŽã·ãšãŒã·ã§ã³ãè©Šã¿ãŠãäœãã«ãããã©ãã£ãã¯ãæžããããããã®ãããªç¶æ³ã§ã¯äœæ¥ãäžå¯èœã§ããããšãïŒå¶åŸ¡ããã°ã©ã ãä»ããŠïŒãŠãŒã¶ãŒã«éç¥ãããããŸãã
åå²ãã©ã³ã¶ã¯ã·ã§ã³ã¯è€éããå¢ããŸãã ãŸãã2æ¬ã®ã¿ã€ã€ã®èšé²ãäºçŽããŠä¿ç®¡ããå¿ èŠããããŸãã 次ã«ããã€ã¯ããã¬ãŒã ãFullSpeed / LowSpeedãã¹ã«è¡šç€ºãããŸãããã¹ãããTTãžã®Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ããã€ã¯ããã¬ãŒã Nã«å°çãããšãTTã¯ãã®ãã©ã³ã¶ã¯ã·ã§ã³ããã€ã¯ããã¬ãŒã N + 1ã§ã®ã¿éå§ãããã®çµæããã©ã³ã¶ã¯ã·ã§ã³Complete-Splitã§æ©ãã«è¿ããŸããã€ã¯ããã¬ãŒã N + 2ã 第3ã«ãææªã®å Žåã®ãã¹ãŠã®å®æãã©ã³ã¶ã¯ã·ã§ã³ã®ãã¬ãŒã ã®æ倧90ïŒ ãæ®ã£ãŠããŸãããFS / LSãã¹ã®èšç»ã¯ããããæ¿å ¥ã®ããã®7/6ä¹æ°ãªãã®æ¥œèŠ³çãªæšå®ããè¡ãå¿ èŠããããŸããã¹ããªãããã©ã³ã¶ã¯ã·ã§ã³ãã€ãã©ã€ã³åŠçãšãããã¡ç®¡çã¯ããã®æ Œä»ãããã¹ãã±ãŒã¹ããžã§ããããšåŒã³ãŸã-ããã«ããã1ã€ã®å®æãã©ã³ã¶ã¯ã·ã§ã³ãèšç®ããããã©ã³ã¶ã¯ã·ã§ã³ãããæ©ãå®äºãã次ã®å®æãã©ã³ã¶ã¯ã·ã§ã³ãéå§ãããªãå¯èœæ§ããããããFS / LSãã¹ãã¢ã€ãã«ã«ãªãå¯èœæ§ãæžå°æ¬¡ã®ãã€ã¯ããã¬ãŒã ãããæ©ãã圌女ã®ããã«ãe Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ããŸã å°çããŠããããçŸåšã®ãã€ã¯ããã¬ãŒã ã®æ®ãã®éšåã§æ¬¡ã®éåšæçãªãã©ã³ã¶ã¯ã·ã§ã³ã«ååãªæéããããŸããã æåŸã«ããã¹ãã¯ãã©ã³ã¶ã¯ã·ã§ã³ããã€çµäºããããèªèãããçµæãä¿åããããã®TTãããã¡ãŒã¯ãŽã ã§ã¯ãªããããComplete-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãå®äºã§ãããã€ã¯ããã¬ãŒã ã«ç¶ãåãã€ã¯ããã¬ãŒã ã«1ã€ãã€ãæ°åã¹ã±ãžã¥ãŒã«ããå¿ èŠããããŸãã ç¹å®ã®èŠä»¶ã¯åãã»ã¯ã·ã§ã³11.18ã§è¡šæãããŸãïŒå²ã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã®äžéšãšããŠããã€ã¯ããã¬ãŒã Nã§å§ãŸãäºç®ããã€ã¯ããã¬ãŒã N-1ã§1ã€ã®éå§åå²ãã©ã³ã¶ã¯ã·ã§ã³ããã€ã¯ããã¬ãŒã N + 1ãN + 2ã§3ã€ã®å®å šåå²ãã©ã³ã¶ã¯ã·ã§ã³ãã¹ã±ãžã¥ãŒã«ããå¿ èŠããããŸããN + 3ã ã¢ã€ãœã¯ããã¹èªã¿åããã©ã³ã¶ã¯ã·ã§ã³ã¯ãäºç®å ã§è€æ°ã®ãã€ã¯ããã¬ãŒã Nã...ãLãå æã§ãããšããç¹ã§ã®ã¿ç°ãªããŸãããã®ãããN + 1ããL + 3ãŸã§ã®ãã€ã¯ããã¬ãŒã ã§å®å šåå²ãã©ã³ã¶ã¯ã·ã§ã³ãèšç»ããå¿ èŠããããŸãã ã¢ã€ãœã¯ããã¹ãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãComplete-Splitãã©ã³ã¶ã¯ã·ã§ã³ã¯æäŸãããŸããããè€æ°ã®Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ãååšããå¯èœæ§ããããŸããFSãã¹äžã®1ã€ã®ãã€ã¯ããã¬ãŒã ã«åãŸã188ãã€ãæªæºã§ãããããã«ããŒã¿ãããå Žåã188ã®å¶éãæã€è€æ°ã®Start-Splitãã©ã³ã¶ã¯ã·ã§ã³ã«åå²ãããŸã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ãã€ãæ°ã
KolibriOSã¹ã±ãžã¥ãŒã©ãŒã¯ããåãã¬ãŒã /ãã€ã¯ããã¬ãŒã ã«X以äžã®ç©ºãæéããããŸãããšãããã¬ãŒãºã§ãæ°Xãã§ããã ã倧ãããªãããã«ãç°ãªããã¬ãŒã /ãã€ã¯ããã¬ãŒã ã§äºçŽãããéšåã®æãåçãªåæ£ãéæããããšããŠããŸãã åãã¬ãŒã /ãã€ã¯ããã¬ãŒã ãžã®æ³šæãå¿ èŠãªãã£ãã«ãåŸã§è¡šç€ºãããå ŽåãäºçŽãæåãããã«ã¯å€§ããªXå€ãå¿ èŠã§ãã 衚瀺ãããªãå Žåã¯ãéåšæçãªéä¿¡ã«æéã圹ç«ã¡ãŸãã
æåã«ãã¹ã±ãžã¥ãŒã©ãŒã¯ããã¹ãã³ã³ãããŒã©ãŒããã£ãã«ãããŒãªã³ã°ããå®éã®ééãéžæããŸãã ããã¯ã¿ã¹ã¯ã®ç°¡åãªéšåã§ãïŒçªå·1ã2ã4ã8ã16ã32ããæ倧å€ãéžæããæå®ãããå€ä»¥äžã«ããŸãã . USB1 8 . 8 : , 8k+0, ..., , 8k+7. 32 ; 8k+0 4 0,8,16,24, . , , , 24, , 32k+24, 16k+8, 8k+0, 4k+0, 2k+0, . 0,8,16,24, 8k+0. , , 8k+1, ..., 8k+7. â , , , , . , , 90% , .
HighSpeed- USB2 USB1 : 8 ; , , , .
USB2 , . , , . FS- . , . , HS-, Start-Split Complete-Split .
USBClosePipe
API,
usb_close_pipe
pipe.inc, . , « »,
usb_close_pipe_nolock
, USB-, .
-
usb_device_disconnected
, , ,
usb_close_pipe_nolock
, , , . USB- , , .
usb_close_pipe_nolock
:
- (, );
- , , « » ( â );
- ;
- ;
- -
usb_hardware_func.UnlinkPipe
, , scheduler.inc .
- , , -
usb_pipe_closed
, :
- , callback- « » ;
- « » , , ;
- « » , , ;
- ,
DeviceDisconnected
, , , , , , , , , .
,
USBNormalTransferAsync
API,
usb_normal_transfer_async
pipe.inc, : , , , -
usb_hardware_func.AllocTransfer
, , ,
usb_hardware_func.InsertTransfer
.
, ,
USBControlTransferAsync
API,
usb_control_async
pipe.inc,
USBNormalTransferAsync
.
-
usb_hardware_func.AllocTransfer
, . . , â Toggle. USB « » , - . : Toggle=0, Toggle=1 . Toggle , .
1:
2: -
3: -
4:
5:
6: