´ÙÀ½ ÀÌÀü Â÷·Ê

1. ±âº»ÀûÀÎ USB ¼³Á¤

ÃֽŠ¹öÀüÀÇ Ä¿³ÎÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ¹öÀü 2.2.7 À̳ª ÀÌ ÀÌÈĹöÀüÀÇ Ä¿³ÎÀº USB Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÀÌ»óÀûÀ¸·Î´Â ´ÙÀ½¹öÀüÀÇ ¸ðµç pre-patches¸¦ Æ÷ÇÔÇÑ ÃֽŠ2.3.x Ä¿³ÎÀ» »ç¿ëÇÏ°í ÀÖÀ¸¸é ÁÁ´Ù. 2.2.x Ä¿³Î¿¡¼­ 2.3.x USB Äڵ带 »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù - ÀÚ¼¼ÇÑ °ÍÀº ÀÌ ÀåÀÇ µÞºÎºÐÀ» »ìÆì º¸¶ó. USB ÄÚµå´Â »ç½Ç Ãʱ⠰³¹ß´Ü°è¿¡ Àֱ⠶§¹®¿¡ °¢ ¹öÀü¸¶´ÙÀÇ º¯°æ( ¹× ¹ö±×µé)Àº ¸Å¿ì »¡¸® º¯ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ÃֽŠ¹öÀü¿¡ °üÇÑ °ÍÀº µå¹°Áö¸¸ ¸ÞÀϸµ¸®½ºÆ®´Â °ÅÀÇ ´ëºÎºÐ¿¡ °üÇÑ ³»¿ëÀ» ´Ù·ç°í ÀÖ´Ù.

¸ÞÀϸµ¸®½ºÆ®´Â linux-usb@suse.comÀÌ´Ù. °¡ÀÔÇÏ·Á¸é majordomo@suse.com¿¡°Ô subscribe linux-usb ¶ó°í ¾´ ¸ÞÀÏÀ» º¸³»¶ó. ¸ÞÀϸµ¸®½ºÆ®ÀÇ ±ÛµéÀ» ±×¸¸ º¸°í ½ÍÀ¸¸é majordomo@suse.com¿¡°Ô unsubscribe linux-usb ¶ó°í ½á¼­ º¸³»¶ó.

Ä¿³Î¿¡ USB ¼³Á¤À» ÇØ¾ß ÇÑ´Ù. make menuconfig°¡ ÁÁÀ» °ÍÀÌ´Ù. USB drivers - not for the faint of heart Ç׸ñ¿¡¼­ Support for USB(EXPERIMENTAL!)¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ UHCI (intel PIIX4 and others) support, OHCI (compaq and some others) support,¶Ç´Â OHCI-HCD (other OHCI opt. Virt. Root Hub) support °¡¿îµ¥ Çϳª¸¦ ¼±ÅÃÇÑ´Ù. UHCI, OHCI ¹× OHCI-HCD¸¦ µ¿½Ã¿¡ °°ÀÌ »ç¿ëÇϸé Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù(UHCI´Â ÀÛµ¿ÇÒ °ÍÀÌ´Ù). ¾î´À °ÍÀ» °í¸¦ °ÍÀ̳Ĵ ´ç½ÅÀÌ ¾î¶² ¸¶´õº¸µå³ª ¾î´ðÅ͸¦ °®°í ÀÖ´À³Ä¿¡ ´Þ·Á ÀÖ´Ù. Intel°ú Via ¸¶´õº¸µå´Â UHCIÀÌ´Ù. ÄÄÆÑ°ú NEC ¸¶´õº¸µå, iMac°ú Opti Ĩ(¸ðµç Ĩ Á¾·ù¸¦ Æ÷ÇÔ)À» ¾²´Â ¸ðµç ¾î´ðÅÍ´Â OHCIÀ̸ç OHCI³ª OHCI-HCD °¡¿îµ¥ Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¾î¶² ÄÁÆ®·Ñ·¯¸¦ ¼±ÅÃÇؾßÇÒÁö ¸ð¸£°Ú´Ù¸é ¸¶´õº¸µå ¹®¼­¸¦ º¸¶ó. ¶ÇÇÑ /proc/pci¿¡¼­ ÈùÆ®¸¦ ¾òÀ» ¼ö ÀÖ´Ù. USB Ç׸ñÀÌ 0xHHHHÇü½ÄÀ¸·Î µÇ¾î ÀÖÀ» ¶§´Â(HHHH´Â 16Áø¼öÀÌ´Ù - ¿¹¸¦ µé¾î I/O at 0xe400) UHCIÀÌ´Ù. 32 bit memory at 0xHH000000 ÀÏ ¶§´Â(HH´Â 16Áø¼öÀÌ´Ù - ¿¹¸¦ µé¾î 32 bit memory at 0xee000000) OHCIÀÌ´Ù. À̰͵µ ºÒ°¡´ÉÇÏ¸é ¾Æ¹«°Å³ª Çϳª ½ÃµµÇغ¸¶ó.

´ÙÀ½À¸·Î ¾î¶² ÀåÄ¡¸¦ »ç¿ëÇÒ °ÍÀÎÁö¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î xUSB mouse support´Â USB ¸¶¿ì½º, USB keyboard support´Â USB Å°º¸µå, USB hub support´Â Çãºê, USB communications Devices Class (ACM) support´Â POTS ¶Ç´Â ISDN¸ðµ©, USB Printer support´Â USB ÇÁ¸°ÅÍ, USB SCSI Support´Â ´ë¿ë·® ÀúÀåÀåÄ¡¿ë, USB CPiA Camera support´Â Vision CPiA Ĩ¼ÂÀ» »ç¿ëÇÑ Ä«¸Þ¶ó, EZUSB Firmware downloader´Â Anchor ChipsUSB ¸¶ÀÌÅ©·ÎÄÜÆ®·Ñ·¯Å¶¿¡ ´ëÇÑ ´Ù¿î·Îµå, USS7270 parport driver´Â º´·Ä Æ÷Æ® ¾î´ðÅÍ¿ë µîÀÌ´Ù. ¸ðµâ°ú Ä¿³Î Á÷Á¢ Áö¿ø(kernel only), º°µµÀÇ(split) ¸ðµâ, Ä¿³ÎÄÚµå µîÀ» »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀåÄ¡µéÀ» ·çÆ® Çãºê¿¡ ²È¾Æ »ç¿ëÇؼ­ Çãºê°¡ ²À ÇÊ¿äÇÏÁö ¾Ê´Ù ÇÏ´õ¶óµµ Çãºê Áö¿øÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁ´Ù.

USB audio parsing support´Â ÇöÀç±îÁö´Â Áö¿øµÇÁö ¾Ê´Â´Ù. ÀÌ ¹®¼­¿¡ ¿­°ÅµÇÁö ¾ÊÀº ÀåÄ¡´Â ÀÌ ±ÛÀ» ¾²´Â ½ÃÁ¡¿¡¼­´Â Áö¿øµÇÁö ¾Ê´Â °ÍµéÀÌ´Ù. ±×·¯³ª °³¹ßÀÚµéÀº ÇöÀç Äڵ忡 µµ¿òÀ» ÁÖ´Â °Í(contribute)Àº ¾ðÁ¦µçÁö ȯ¿µÇÑ´Ù.

¾ÈÁ¤ Ä¿³Î(2.2.x)À» ¾²°íÀÚ ÇÑ´Ù¸é °³¹ßÄ¿³Î(2.3.x)ÀÇ Äڵ带 drivers/usb µð·ºÅ丮¿¡ º¹»çÇØ ³ÖÀ¸¸é µÈ´Ù. arch/i386/config.in¿¡¼­ ¾Æ·¡¿Í °°Àº ÇàÀÇ ÁÖ¼®À» ¾ø¾Ö¾ß ÇÑ´Ù.

# source drivers/usb/Config.in

´Ù¸¥ ¾ÆÅ°ÅØóµµ ºñ½ÁÇÒ °ÍÀÌ´Ù. drivers/usb/usb.hÀÇ Ã¹ºÎºÐ¿¡ ¾Æ·¡¿Í °°Àº ¸î ÁÙÀÇ Á¤ÀÇ(definition)¸¦ Ãß°¡ÇØ¾ß ÇÑ´Ù.

#if LINUX_VERSION_CODE < 0x020300
#define DECLARE_WAIT_QUEUE_HEAD(w)     struct wait_queue *w = NULL
#define DECLARE_WAITQUEUE(w,c)         struct wait_queue w = {(c), NULL}
#define wait_queue_head_t              struct wait_queue *
#define init_waitqueue_head(w)         *(w) = 0
#define DECLARE_MUTEX_LOCKED(sem)      struct semaphore sem = MUTEX_LOCKED
#endif

Ä¿³ÎÀ» ÀçÄÄÆÄÀÏÇÏ°í (¸ðµâ·Î ¼³Á¤Çß´Ù¸é) ¸ðµâµµ ÄÄÆÄÀÏ ÇÑ ´ÙÀ½ »õ·Î¿î Ä¿³Î°ú ¸ðµâÀ» ¼³Ä¡Ç϶ó. ½Ã½ºÅÛÀ» ÀçºÎÆÃÇÑ´Ù.

¸ðµâÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é ¸ðµâÀ» Á¤ÇØÁø ¼ø¼­¿¡ µû¶ó ÀûÀç(load) ÇØ¾ß ÇÑ´Ù. usbcore.o¸¦ ¸ÕÀú ÀûÀçÇÏ°í mouse.o, keyboard.o, hub.o µîÀÇ µå¶óÀ̹öµéÀ» ÀûÀçÇÑ ´ÙÀ½ ¸¶Áö¸·À¸·Î È£½ºÆ® ÄÁÆ®·Ñ·¯(¿¹¸¦ µé¾î usb-uhci.o ¶Ç´Â usb-ohci.o)¸¦ ÀûÀçÇÑ´Ù.

Ä¿³Î ·Î±×¸¦ »ìÆ캸¶ó. ¾Æ·¡¿Í °°Àº ³»¿ëµéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù(UHCI¿Í ¿ÜºÎ Çãºê¸¦ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù).

.......
Jul 19 20:46:02 rachel kernel: USB HID boot protocol mouse registered.
.......
Jul 19 20:46:02 rachel kernel: uhci_control_thread at c01b8c5c
Jul 19 20:46:02 rachel kernel: New bus registered
Jul 19 20:46:02 rachel kernel: USB hub driver registered
Jul 19 20:46:02 rachel kernel: uhci_connect_change: called for 0
.......
Jul 19 20:46:02 rachel kernel: USB hub found
Jul 19 20:46:02 rachel kernel: hub: 4-ports detected
Jul 19 20:46:02 rachel kernel: hub: individual port power switching
Jul 19 20:46:02 rachel kernel: hub: standalone hub
Jul 19 20:46:02 rachel kernel: hub: individual port over current protection
Jul 19 20:46:02 rachel kernel: hub: power on to power good time: 100ms
Jul 19 20:46:02 rachel kernel: hub: hub controller current requirement: 100mA
Jul 19 20:46:02 rachel kernel: hub:  port 1 is removable
Jul 19 20:46:02 rachel kernel: hub:  port 2 is removable
Jul 19 20:46:02 rachel kernel: hub:  port 3 is removable
Jul 19 20:46:02 rachel kernel: hub:  port 4 is removable
Jul 19 20:46:02 rachel kernel: hub: local power source is good
Jul 19 20:46:02 rachel kernel: hub: no over current condition exists
Jul 19 20:46:02 rachel kernel: enabling power on all ports
Jul 19 20:46:02 rachel kernel: uhci_connect_change: called for 1
.......
Jul 19 20:46:02 rachel kernel: hub: port 3 connection change
.......

OHCI¿Í OHCI-HCD´Â À¯»çÇÑ ±â´ÉÀ» ¼öÇàÇÒ °ÍÀÌ´Ù. ±×·¯³ª µÎ °³¸¦ ¹Ù²Ù´Â °Í¿¡ ½ÇÆÐÇÑ °Í¿¡ ´ëÇØ ±×¸® Å©°Ô °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. º°´Ù¸¥ ¿µÇâÀ» ¹ÌÄ¡´Â ¾Ê´Â »ç¼ÒÇÑ ¹ö±×ÀÌ´Ù. USB¿¡ °ü·ÃµÈ ³»¿ë(hubs, usb, ohci, uhci ¸¦ Ç¥½ÃÇÏ´Â ÁÙ)ÀÌ ÀüÇô ¾ø´Ù¸é ¾Æ¸¶µµ À߸øµÈ µå¶óÀ̹ö¸¦ »ç¿ëÇÏ°í Àְųª(OHCI¸¦ ½á¾ß Çϴµ¥ UHCI¸¦ ¾²´Â °æ¿ì³ª ±× ¹Ý´ëÀÇ °æ¿ì), Çϵå¿þ¾î°¡ ¹°¸®ÀûÀ¸·Î ¼³Ä¡µÇÁö ¾ÊÀº °æ¿ì, BIOS¿¡¼­ USB ±â´ÉÀ» ²¨µÐ °æ¿ì, Ä¿³ÎÀÇ À߸øµÈ ¼³Á¤À̳ª ¼³Ä¡ ¶§¹®ÀÏ °ÍÀÌ´Ù.


´ÙÀ½ ÀÌÀü Â÷·Ê