Linux USB Host ControllerµÄ³õʼ»¯´úÂë¿ò¼Ü·ÖÎö
usb_hcd_omap_probe (const struct hc_driver *driver) (dev/ohci/ohci-omap.c)
ÔÚÄ£¿é³õʼ»¯Ê±±»platform_driver_register()µ÷Óã¬ÓÃÀ´³õʼ»¯Óëohci_hcd_omap_driver
ÏàÆ¥ÅäµÄusbÖ÷¿ØÖÆÆ÷.
->usb_create_hcd(driver); ´´½¨Ò»¸ö´ú±íhost-controllerµÄÊý¾Ý½á¹¹(struct usb_hcd)²¢³õʼ»¯ core/hcd.h
->hcd = kzalloc(sizeof(*hcd) + driver->hcd_priv_size, GFP_KERNEL); Ϊstruct usb_hcd·ÖÅäÒ»¿éÄÚ´æ
->usb_bus_init (struct usb_bus *bus); (hcd.c) ³õʼ»¯´ú±íusb busµÄÊý¾Ý½á¹¹(struct usb_bus)
->³õʼ»¯struct usb_hcdµÄ¶¨Ê±Æ÷£¬¹¤×÷¶ÓÁÐ
->Ìî³ästruct usb_hcdµÄrsrc_start×ֶΣºhost-controller memory/ioµÄÆðʼÎïÀíµØÖ·
rsrc_len×ֶΣºhost-controller memory/ioµÄ³¤¶È
regs×ֶΣºhost-controller memory/ioÓ³ÉäµÄÄÚºËÐéÄâµØÖ·¡£
->ohci_hcd_init(struct ohci_hcd *ohci); (dev/ohci/ohci-mem.c)
->usb_add_hcd(struct usb_hcd *hcd,unsigned int irqnum, unsigned long irqflags) (/core/hcd.h)
Íê³Éstruct usb_hcdÊ£ÓàµÄ³õʼ»¯¹¤×÷
->hcd_buffer_create(hcd):´´½¨dmapool
->usb_register_bus(usb_bus):×¢²áusb bus
->usb_alloc_dev(NULL, &hcd->self, 0): (core/usb.c)
´¦ÀíÖ÷¿ØÖÆÆ÷hcdÉϵĸùHub(hcd->self.root_hub),ÕâÀï×öµÄ¾ÍÊÇΪRoot HubÉêÇëÁËÒ»¸östruct usb_device½á¹¹Ìå,²¢ÇÒ³õʼ»¯, ½«·µ»ØÖµ¸³¸øÖ¸Õërhdev. Root HubµÄparentÖ¸ÕëÖ¸ÏòÁËController±¾Éí.
->ohci_omap_init£ºÍê³ÉomapÓ²¼þµÄinit¹¤×÷
->otg_get_transceiver();
->otg_set_host(ohci->transceiver, &ohci_to_hcd(ohci)->self);
Õë¶ÔOTGÌØÐÔ½øÐеijõʼ»¯£¬ºóÃæ·ÖÎö
->ohci_init(struct ohci_hcd *ohci); (host/ohci-hcd.c)
->Ϊohci->hcca·ÖÅä¿Õ¼ä
->ohci_mem_init() ´´½¨ohci->td_cacheºÍohci->ed_cacheµÄdma_pool
->request_irq(irqnum, &usb_hcd_irq, irqflags,hcd->irq_descr, hcd)
×¢²áÖжϴ¦Àíº¯Êý.ÆäÖÐÖжϺÅÊÇirqnum, ÖжϷþÎñ³ÌÐòÊÇusb_hcd_irq(struct usb_hcd *hcd) (ohci-hcd.c).
¸ù¾Ýusb2.0 spec¶¨ÒåµÄÖжÏÀàÐÍÓÐ:usb_hcd_irq()¸ù¾Ý¾ßÌåÀàÐÍÖ´ÐÐÏàÓ¦²Ù×÷,ºóÃæ·ÖÎö.
#define OHCI_INTR_SO (1 << 0) /* scheduling overrun */
#define OHCI_INTR_WDH (1 << 1) /* writeback of done_head */
#
Ïà¹ØÎĵµ£º
2007 Äê 4 ÔÂ 17 ÈÕ
Linux® ϵͳµ÷Óà ——
ÎÒÃÇÿÌì¶¼ÔÚʹÓÃËüÃÇ¡£²»¹ýÄúÇå³þϵͳµ÷ÓÃÊÇÈçºÎÔÚÓû§¿Õ¼äºÍÄÚºËÖ®¼äÖ´ÐеÄÂ𣿱¾ÎĽ«Ì½¾¿ Linux
ϵͳµ÷Óýӿڣ¨SCI£©£¬Ñ§Ï°ÈçºÎÌí¼ÓеÄϵͳµ÷Óã¨ÒÔ¼°ÊµÏÖÕâÖÖ¹¦ÄܵįäËû·½·¨£©£¬²¢½éÉÜÓë SCI ÓйصÄһЩ¹¤¾ß¡£
ϵͳµ÷ÓÃ
¾ÍÊÇÓû§¿Õ¼ä ......
VPSʹÓÃÊÖ¼Ç-LinuxÃüÁîÐлù´¡
Written by shine
on 2009, April 21, 4:09 PM. Linux
ÕâÀïÎÒ½«ÁгöʹÓÃlinux
vps
¹ý³ÌÖеij£ÓÃÃüÁî£¬ÃæÏòµÄ¶ÔÏóÊǶ®Ò»µãÃüÁîÐÐ
µÄÅóÓÑ£¬Èç¹ûÄãûÓÐÈκÎÃüÁîÐлù´¡£¬½¨ÒéÕÒ±¾LinuxµÄ»ù´¡½Ì³ÌÀ´¿´¿´¡£
ÔÚ½²¾ßÌåµÄÃüÁî֮ǰ£¬ÏȽéÉÜÒ»ÏÂLinuxÃüÁîÐеÄһЩ³£Ê¶£º
Ò»ÌõÃüÁîÒ»°ãµÄ¸ñʽÊÇÕâ ......
LinuxÇý¶¯³ÌÐòÈëÃÅ—Hello World
À´Ô´:
ChinaUnix²©¿Í ¡¡ÈÕÆÚ£º
2009.11.19 21:17¡¡(¹²ÓÐ0
ÌõÆÀÂÛ) ÎÒÒªÆÀÂÛ
1¡¢ÒýÑÔ
¼ÇµÃÔÚѧϰVC++ºÍCÓïÑÔµÄʱºò£¬Ò»¿ªÊ¼¶¼»áÒÔÒ»¸öHELLO
WORLDµÄÀý×Ó×÷ΪÑÝʾ£¬½«Ñ§ÕßÖð½¥ÒýÈëµîÌã¬Õâ¸ö¼¸ºõ³ÉÁ˼ÆËã»ú±à³ÌÓïÑÔѧϰ±Ø¾µÄÒ»¸öÈëÃÅ֮·¡£
......
µÚÒ»¸ö£º DSL Linux
Damn Small LinuxÊÇÒ»Ì×»ùÓÚÒµÎñ¿¨£¨50M×Ö½Ú£©¿ÉÆô¶¯¹âÅ̵ÄLinux·¢ÐС£¾¡¹ÜËüµÄ¸öÍ·Èç´Ë֮С£¬ËüŬÁ¦³ÉΪһ·Ý¿ÉÓò¢ÇÒÒ×ÓõÄ×ÀÃæ¡£Damn Small LinuxµÄ×ÀÃæ¼¸ºõÊÇÍêÕûµÄÒ»Ì×£¬°üÀ¨xmms£¨Ö§³Ömp3ºÍmpeg£©¡¢FTP¿Í»§¶Ë¡¢»ùÓÚlinksµÄwebä¯ÀÀÆ÷¡¢µç×ÓÖÆ±íÈí¼þ¡¢µç×ÓÓʼþ³ÌÐò¡¢ Ó¢ÓïÆ´Ð´¼ì²é¡¢×Ö´¦ÀíÆ÷¡¢Èý¸ö± ......
ÏÈÊÇÄÚºËÇý¶¯³ÌÐò£º
#include <linux/module.h>//¾ßÌåµÄÍ·ÎļþλÖÃΪ/opt/FriendlyARM/mini2440/linux-2.6.29/include/linux/*.h
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/poll.h>
#include <l ......