LinuxÏÂUSB suspend/resumeÔ´Âë·ÖÎö
Linux
ÏÂ
USB
suspend/resume
Ô´Âë·ÖÎö
Author:aaron
±¾ÎÄÖ÷Òª´Ó×Ô¼º¿ª·¢µÄÒ»¸ö
USB
Çý¶¯µÄÀý×ÓÀ´ÉîÈë½²½â
linux
ÄÚºËÊÇÈçºÎÖ§³Ö
USB
É豸µÄÐÝÃߺͻ½ÐѵÄ
,
×î½üÎÒÔÚΪÎÒÃǹ«Ë¾µÄÒ»¸öÄ£¿éд
linux
ϵÄÇý¶¯
,
ÆäÖÐÖ®Ò»¾ÍÊÇÒªÖ§³Ö
USB
µÄÐÝÃß»½ÐÑÎÊÌâ
,
ʵ¼ÊÉÏ
linux
Äں˶Ô
USB
µÄÕâ¸ö¹¦ÄܵÄÖ§³Ö»¹ÊDZȽÏеÄ
,
Ò²¾ÍÊÇ×î½ü¼¸ÄêµÄÊÂ
.
Ò»
´ò¿ª
/
¹Ø±Õ
USB suspend/resuem
¹¦ÄÜ
ÒªÈÃ
linux
Ö§³Ö
usb suspend/resuem,
µ±È»ÏÈÒª°ÑÄÚºËÖÐÕâ¸ö¹¦ÄܵĴúÂë±àÒë½øÈ¥¿©
,
¼´ÒªÔÚ
make menuconfig
ʱ´ò¿ª¶ÔÕâÏÄܵÄÖ§³Ö
.
µÚÒ»¸ö´ò¿ªµÄÏîÊÇ
CONFIG_PM,
¼´Õû¸öϵͳµÄµçÔ´¹ÜÀí
, USB suspend/resuem
Ö»ÊÇÕû¸öµçÔ´¹ÜÀíµÄÒ»¸ö×Ôϵͳ
.
Ö»Óдò¿ªÁËÕâ¸ö¹¦ÄܲÅÄÜÈÃ
USB
µÄÕâ¸öÌØÐÔÄÜÓÃ
.
µÚ¶þ¸öÒª´ò¿ªµÄµ±ÈÃÊÇ
USB
×Ô¼ºµÄ¿ª¹ØÁË
CONFIG_USB_SUSPEND.
¼´´ò¿ªÁËÕâ¸ö¹¦ÄܺóÎÒÃÇÖ»ÒªÔÚÎÒÃÇ×Ô¼ºµÄÇý¶¯Àï¼òµ¥µ÷ÓÃÏÂ
USB core
ÌṩµÄº¯Êý½Ó¿Ú¾ÍÄÜʹÎÒÃǵÄÉ豸ÐÝÃßÁË
.
¶þ
Ô´Âë·ÖÎö
ÔÚ
2.6.19
֮ǰµÄ´úÂëÖв»Ö§³Ö
USB
×Ô¶¯ÐÝÃߵŦÄÜ
,
ËüÖ»ÄÜÊÇÔÚ
host
ÐÝÃßÇé¿öϲŻáÈÃ
USB
É豸ҲÐÝÃß
.
ËùÒÔÈç¹ûÎÒÃÇÒªÈÃ×Ô¼ºµÄÉ豸ÔÚ²»Ê¹ÓõÄÇé¿öϾÍÐÝÃ߾͵Ã×Ô¼ºÌí¼ÓÏàÓ¦µÄ´úÂë
,
ÐÒÔ˵ÄÊÇÎÒÃDz»ÐèÒªÌí¼Ó¸´ÔӵĴúÂë¾ÍÄÜ´ïµ½Õâ¸öÄ¿µÄ
,
ÒòΪ
USB core
ÀïÌṩÁ˼¸¸ö½Ó¿Ú¿ÉÒÔÖ±½ÓÈÃÎÒÃǵÄÇý¶¯µ÷ÓÃÒÔ°ÑÎÒÃǵÄÉ豸ÖÃÈëÐÝÃß״̬
.
ÏÂÃæÎÒÃÇÒÔ
2.6.16
µÄ´úÂëΪÀýÀ´·ÖÎöÏÂ
USB
É豸ÊÇÈçºÎ½øÈëÐÝÃßµÄ
.
Drivers\usr\core\hub.c:
int usb_suspend_device(struct usb_device *udev)
{
#ifdef
CONFIG_USB_SUSPEND
if (udev->state ==
USB_STATE_NOTATTACHED)
return -ENODEV;
return
__usb_suspend_device(udev, udev->portnum);
#else
/* NOTE:
udev->state unchanged, it's not lying ...
*/
udev->dev.power.power_state
= PMSG_SUSPEND;
return 0;
#endif
}
û´í
,
ÔÚÎÒÃǵ
Ïà¹ØÎĵµ£º
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
µÚ3Õ Linux»ù±¾ÅäÖÃ
°²×°Íê²Ù×÷ϵͳºó£¬³£³£ÐèÒª×öһЩ»ù±¾ÅäÖã¬ÒÔÂú×ã×Ô¼ºµÄÐèÇó¡£Ëæ×ÅLinux×ÀÃæµÄÈÕÇ÷³ÉÊìºÍÈËÐÔ»¯£¬ÕâÖÖËùνµÄ“»ù±¾ÅäÖÔÒѾԽÀ´Ô½ÉÙÁË¡£±¾ÕÂÑ¡ÔñÁËÈëÃÅÓû§×î³£Îʵ½µÄһЩÎÊÌ⣬ÒÔ±ã¶ÁÕßÄܹ»¾¡¿ìÉÏÊÖ¡£ ......
shellÊÇÓû§ºÍLinux²Ù×÷ϵͳ֮¼äµÄ½Ó¿Ú¡£LinuxÖÐÓжàÖÖshell£¬ÆäÖÐȱʡʹÓõÄÊÇBash¡£±¾Õ½²ÊöÁËshellµÄ¹¤×÷ÔÀí£¬shellµÄÖÖÀ࣬shellµÄÒ»°ã²Ù×÷¼°BashµÄÌØÐÔ¡£
¡¡Ê²Ã´ÊÇshell
LinuxϵͳµÄshell×÷Ϊ²Ù×÷ϵͳµÄÍâ¿Ç£¬ÎªÓû§ÌṩʹÓòÙ×÷ϵͳµÄ½Ó¿Ú¡£ËüÊÇÃüÁîÓïÑÔ¡¢ÃüÁî½âÊͳÌÐò¼°³ÌÐòÉè¼ÆÓïÑÔµÄͳ³Æ¡£
shellÊÇÓû§º ......
ÕæÕý½Ó´¥linuxµ½ÏÖÔÚ½«½ü1ÄêÁË£¬ÓÉ×î³õµÄÃÅÍ⺺£¬µ½ÏÖÔڱȽϵÃÐÄÓ¦ÊÖµÄʹÓÃlinux£¬Íê³É¼¸ºõËùÓй¤×÷£¬°üÀ¨³ÌÐò¿ª·¢¡¢±¾µØÏµÍ³Î¬»¤¡¢½»Á÷¡¢ÓéÀֵȹ¦ÄÜ£¬ËãÊÇÊÕ»ñÆÄ·áÁË¡£
×ܽáÁËÒ»ÏÂ×Ô¼ºÓÃÆðÀ´¸Ð¾õ²»´íµÄlinux¹¤¾ß£º(²»·Ö˳Ðò£¬linux·¢ÐаæÓõÄÊÇfedora 10)
1. ±à¼Æ÷: vim (Ààuinxƽ̨ÉϹ«ÈÏ×î¾µäµÄ£¬Ã»»°Ëµ)
2. ³ÌÐò¿ª ......