LinuxÏÂUSBÉãÏñÍ·Çý¶¯¿ª·¢(ת)
http://blog.csdn.net/youta_chen/archive/2007/08/29/1763215.aspx
½ñÄêÉϰëÄêÎÒ¶ÔÊг¡³£¼ûµÄvimicro ÉãÏñÍ·ÒÆÖ²ÁËLinuxϵÄÇý¶¯ÖÁÔÚÑеÄÒ»¿îǶÈëʽ¿ª·¢°å£¬¿ª·¢»·¾³Îª£º
OS:Linux2.6.9
Compile:cross 3.3.2
CPU:Intel PXA270
Camera Type :Vimicro ZC301P +HV7131R
ʹÓõÄÇý¶¯Ô´Âë»ùÓÚ×ÔÓÉÈí¼þspca5xx¡£»ùÓÚÔ´Âë×÷ÁËЩС¸Ä¶¯¡£¼Ç¼һÏ¡£
LinuxϵÄUSBÇý¶¯¼Ü¹¹
LinuxÏÂÍêÕûµÄUSBÇý¶¯³ÌÐò±ØÐë°üÀ¨3¸öÄ£¿é£ºUSB core£¬USB Ö÷¿ØÖÆÆ÷Çý¶¯£¬USBÉ豸Çý¶¯¡£ÈýÕߵĹØÏµÈçÏ£º
ÆäÖУº
Linux Core·â×°ÁËÖ§³ÖUSBÖ÷¿ØÖÆÆ÷ºÍUSBÉ豸Çý¶¯µÄAPI£¬Í¨¹ýһϵÁеÄÊý¾Ý½á¹¹¡¢ºê¡¢º¯ÊýÀ´³éÏó»¯É豸Ӳ¼þ²¢ÑÚ±ÎÓ²¼þ¾ßÌåϸ½Ú£¬Ê¹µÃLinuxϵͳ¶ÔUSBÉ豸µÄ·ÃÎʲÉÓÃÈçͬһ°ãÎļþ·ÃÎÊÀàËÆµÄ½Ó¿Úº¯Êý£¬Èç´ËʵÏÖÁËÓ²¼þÎ޹ء£“É豸¼´ÊÇÎļþ”¡£
USB HC£¨Host Controller£©È«Ã渺ÔðÖ÷»ú¶Ë¶ÔUSBµÄÐÅÏ¢´«Êä·Ö¹¤£¬¶ÔÏÂ×¢²á¹¦ÄܺÍÏà¹ØÊý¾Ý½á¹¹£»¶ÔÉÏÌṩÁËÉ豸Çý¶¯ÓëUSB CoreÊý¾Ý´«ÊäµÄÇÅÁº¡£USBÉϵÄʵʱÁ÷Êý¾Ý´«Êäͨ³£Í¨¹ýURB£¨USB Request Block£©µÄÊý¾Ý½á¹¹ÊµÏÖ£¬Ã¿Ò»´ÎÊý¾Ý´«ÊäÖУ¬É豸Çý¶¯½¨Á¢URB£¬Ìá½»¸øUSB HC£¬USB HC¸ºÔðÍê³É´Ë´ÎÓëÉ豸¶ËµÄURB½»»¥¡£
USBÇý¶¯³ÌÐòµÄ½á¹¹
struct usb_driver spca5xx_driver
struct video_device spca50x_template
struct file_operations spca5xx_fops
Ä£¿é³õʼ»¯ÓëÐ¶ÔØ
spca5xx_init()Ä£¿é³õʼ»¯£»spca5xx_disconnect()Ä£¿éÐ¶ÔØ£»spca5xx_probe() ÎïÀíÉ豸²éÕÒ¡¢Æ¥Åä¡¢ÅäÖ㬲¢ÏòÄÚºË×¢²ávideoÉ豸¡£
ϵͳµ÷ÓýӿÚ
spca5xx_open()Íê³ÉÉ豸µÄ´ò¿ªºÍ³õʼ»¯£¬²¢³õʼ»¯½âÂëÆ÷Ä£¿é£¬spca5xx_close()Íê³ÉÉ豸µÄ¹Ø±Õ£»
spca5xx_read()Íê³ÉÊý¾ÝµÄ¶ÁÈ¡£¬ÆäÖ÷ÒªµÄ¹¤×÷¾ÍÊǽ«Êý¾ÝÓÉÄں˿ռ䴫Ë͵½½ø³ÌÓû§¿Õ¼ä£»
spca5xx_mmap()ʵÏÖ½«É豸ÄÚ´æÓ³Éäµ½Óû§½ø³ÌµÄµØÖ·¿Õ¼äµÄ¹¦ÄÜ£»
spca5xx_ioctl()ʵÏÖÎļþÐÅÏ¢µÄ»ñÈ¡¹¦ÄÜ¡£
Êý¾Ý´«Êä
spca50x_reg_write
ÉãÏñÍ·Êý¾Ý´«Êä¹ý³Ì
USB×ÜÏßÉÏÐÅÏ¢´«ÊäÀàÐͿɷֳɿØÖÆ¡¢Öжϡ¢µÈʱ¡¢³É¿éËÄÖÖ£ºÆäÖпØÖÆÐÍÖ÷ÒªÓÃÓÚÉ豸µÄ“ÅäÖÔÓë¿ØÖÆ£»ÖжÏÐÍÖ÷ÒªÓÃÓÚÖ÷»ú¶ÔUSBÉ豸µÄÖÜÆÚÐÔ²éѯ£»ÊµÊ±ÐÔʹÓÃÓëʵʱµÄÒôÊÓÆµÐźŴ«Ê䣻³É¿éÐÍÓÃÓÚÐÅÏ¢Á¿´ó£¬Ã»ÓкÜÇ¿µÄʱ¼äÒªÇ󣬵«ÒªÇó¿É¿¿´«µÝµÄÓ¦Ó᣶ÔÉãÏñÍ·¶øÑÔ£¬Í¨³£²ÉÓõÄÊÇʵʱ´«Êä¡£USBÉ豸¶ËÌṩÈô¸ÉͨÐŶ˿ڣ¨port£©£¬Ö÷»úÓë¶Ë¿Ú¼ä½¨Á¢ÆðÂß¼É
Ïà¹ØÎĵµ£º
×÷ÕߣºSam£¨Õç·å£© sam_cdoe@hotmail.com
1.´´½¨thread.
int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
²ÎÊý1£ºpthread_t *restrict t ......
LinuxÖвéÕÒÎļþµÄÃüÁîͨ³£Îª“find”ÃüÁ“find”ÃüÁîÄܰïÖúÎÒÃÇÔÚʹÓÃ, ¹ÜÀíLinuxµÄÈÕ³£ÊÂÎñÖз½±ãµÄ²éÕÒ³öÎÒÃÇÐèÒªµÄÎļþ¡£¶ÔÓÚLinuxÐÂÊÖÀ´Ëµ£¬“find” ÃüÁîÒ²ÊÇÁ˽âºÍѧϰLinuxÎļþÌØµãµÄ·½·¨¡£ÒòΪLinux·¢Ðа汾·±¶à£¬°æ±¾Éý¼¶ºÜ¿ì£¬ ÔÚLinuxÊé¼®ÉÏÍùÍùдÃ÷ij¸öÅäÖÃÎļþµÄËùÔÚλÖ㬠......
RHCEֱͨ³µ www.taobaofun.com Ìṩ×îÈ«ÃæµÄRHCE¿¼ÊÔ×ÊÁÏ
1£® ÕÆÎÕÖÁÉÙ50¸öÒÔÉϵij£ÓÃÃüÁî¡£
2£® ÊìϤGnomeKDEµÈX-windows×ÀÃæ»·¾³²Ù×÷£¬×îºÃÊÇ×Ô¼º°²×°ÏÂϵͳ£¬Ê¹ÓÃx»·¾³ÉÏÏÂÍø¡£
3£® ÕÆÎÕ.tgz¡¢.rpmµÈÈí¼þ°üµÄ³£Óð²×°·½·¨£¬±¸·Ý»¹Ôʱºò»áÓõ½µÄ
4£® Ñ§Ï°Ì ......
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
Ò²ÐíÖ»ÊÇÎÒÒ»¸öÈ˱Ƚϱ¿£¬Ã¿´ÎÅöµ½bug£¬ËäÈ»ÓÐÈ˸ø³ö²¹¶¡£¨patch£©£¬µ«ÊÇÈ´²»ÖªµÀÔõôʹÓá£Manual Page ( man patch
)Ò²Ö»¸ø³ö patch -p(num)
<patchfileÕâÑùµÄÓ÷¨£¬¾ßÌåÒ²²»ÖªµÀÔõÑùÈ·¶¨num£¬Èç¹ûÄãÒ²ÓÐÕâÑùµÄÒÉ»ó£¬Çë¼ÌÐøÔĶÁ£º
½¨Á¢patchÎļþ:
diff -Naur olddir newdir > new-patch
- or -
diff -Naur ol ......