linuxÉ豸Çý¶¯³ÌÐò——×Ö·ûÉ豸Çý¶¯³ÌÐò
ÔÚLinux²Ù×÷ϵͳÏÂÓÐ3ÀàÖ÷ÒªµÄÉ豸ÎļþÀàÐÍ£º¿éÉ豸¡¢×Ö·ûÉ豸ºÍÍøÂçÉ豸¡£ÕâÖÖ·ÖÀà·½·¨¿ÉÒÔ½«¿ØÖÆÊäÈë/Êä³öÉ豸µÄÇý¶¯³ÌÐòÓëÆäËû²Ù×÷ϵͳÈí¼þ·ÖÀ뿪À´¡£×Ö·ûÉ豸ÊÇÖ¸´æÈ¡Ê±Ã»Óлº´æµÄÉ豸¡£µäÐ͵Ä×Ö·ûÉ豸°üÀ¨Êó±ê¡¢¼üÅÌ¡¢´®Ðпڵȡ£
×Ö·ûÉ豸Óë¿éÉ豸µÄÖ÷񻂿±ðÊÇ£ºÔÚ¶Ô×Ö·ûÉ豸·¢³ö¶Á/дÇëÇóʱ£¬Êµ¼ÊµÄÓ²¼þI/OÒ»°ã½ô½Ó×Å·¢Éú¡£¿éÉ豸Ôò²»È»£¬ËüÀûÓÃÒ»¿éϵͳÄÚ´æ×÷Ϊ»º³åÇø£¬ÈôÓû§½ø³Ì¶ÔÉ豸µÄÇëÇóÄÜÂú×ãÓû§µÄÒªÇ󣬾ͷµ»ØÇëÇóµÄÊý¾Ý£»·ñÔò£¬¾Íµ÷ÓÃÇëÇóº¯ÊýÀ´½øÐÐʵ¼ÊµÄI/O²Ù×÷¡£¿éÉ豸Ö÷ÒªÊÇÕë¶Ô´ÅÅ̵ÈÂýËÙÉ豸Éè¼ÆµÄ£¬ÒÔÃâºÄ·Ñ¹ý¶àµÄCPUʱ¼äÓÃÀ´µÈ´ý¡£ÍøÂçÉ豸¿ÉÒÔͨ¹ýBSDÌ×½Ó¿Ú·ÃÎÊÊý¾Ý¡£
Ò».Ö÷É豸ºÅºÍ´ÎÉ豸ºÅ
Ö÷É豸ºÅ±êʶÉ豸¶ÔÓ¦µÄÇý¶¯³ÌÐò£»´ÎÉ豸ºÅÓÉÄÚºËʹÓã¬ÓÃÓÚÕýÈ·È·¶¨É豸ÎļþËùÖ¸µÄÉ豸¡£ÎÒÃÇ¿ÉÒÔͨ¹ý´ÎÉ豸ºÅ»ñµÃÒ»¸öÖ¸ÏòÄÚºËÉ豸µÄÖ±½ÓÖ¸Õ룬Ҳ¿É½«´ÎÉ豸ºÅµ±×÷É豸±¾µØÊý×éµÄË÷Òý£¬²»¹ÜÓÃÄÄÖÖ·½Ê½£¬³ýÁËÖªµÀ´ÎÉ豸ºÅÓÃÀ´Ö¸ÏòÇý¶¯³ÌÐòËùʵÏÖµÄÉ豸֮Í⣬Äں˱¾Éí»ù±¾Éϲ»¹ØÐĹØÓÚ´ÎÉ豸ºÅµÄÈÎºÎÆäËûÏûÏ¢¡£
¡òÉ豸±àºÅµÄÄÚ²¿±í´ï
ÄÚºËÓÃdev_tÀàÐÍ£¨<linux/types.h>£©À´±£´æÉ豸±àºÅ£¬dev_tÊÇÒ»¸ö32λµÄÊý£¬12λ±íʾÖ÷É豸ºÅ£¬20λ±íʾ´ÎÉ豸ºÅ¡£
ÔÚʵ¼ÊʹÓÃÖУ¬ÊÇͨ¹ý<linux/kdev_t.h>Öж¨ÒåµÄºêÀ´×ª»»¸ñʽ¡£
(dev_t)-->Ö÷É豸ºÅ¡¢´ÎÉ豸ºÅ MAJOR(dev_t dev) MINOR(dev_t dev)
Ö÷É豸ºÅ¡¢´ÎÉ豸ºÅ-->(dev_t) MKDEV(int major,int minor)
¡ò·ÖÅäºÍÊÍ·ÅÉ豸±àºÅ
½¨Á¢Ò»¸ö×Ö·ûÉ豸֮ǰ£¬Çý¶¯³ÌÐòÊ×ÏÈÒª×öµÄÊÂÇé¾ÍÊÇ»ñµÃÉ豸±àºÅ¡£ÆäÕâÖ÷Òªº¯ÊýÔÚ<linux/fs.h>ÖÐÉùÃ÷£º
int register_chrdev_region(dev_t first, unsigned int count,char *name); //Ö¸¶¨É豸±àºÅ
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor,unsigned int count, char *name); //¶¯Ì¬Éú³ÉÉ豸±àºÅ
void unregister_chrdev_region(dev_t first, unsigned int count); //ÊÍ·ÅÉ豸±àºÅ
·ÖÅäÖ®É豸ºÅµÄ×î¼Ñ·½Ê½ÊÇ£ºÄ¬ÈϲÉÓö¯Ì¬·ÖÅ䣬ͬʱ±£ÁôÔÚ¼ÓÔØÉõÖÁÊDZàÒëʱָ¶¨Ö÷É豸ºÅµÄÓàµØ¡£
¡ò¶¯Ì¬·ÖÅäÖ÷É豸ºÅ
ijЩÖ÷É豸ºÅÒѾ¾²Ì¬µØ·ÖÅ䏸Á˴󲿷ֹ«ÓÃÉ豸¡£ÔÚÄÚºËÔ´ÂëÊ÷µÄDocumentation/device.txt
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
¸Õ¿ªÊ¼½Ó´¥Linux,ÄÇô¶àµÄ°æ±¾,Õæ²»ÖªµÀ¸ÃÓÃʲôÑùµÄºÃ.¿´ÁËÍøÉÏµÄÆÀÂÛ,¶¼ËµUbuntnºÃ.ÏÂÁËÒ»¸ö,ÔÚÐéÄâ»úÉÏ×°Á˼¸±é.·¢ÏÖµÚÒ»´Î°²×°µÄʱºòºÜ¿ì,ÒÔºó¾Í×Ü¿¨ÔÚAptÅäÖÃÄÇ,²»ÖªµÀÊÇΪʲô.
ºóÀ´,·¢ÏÖºìÆìLinux.µ«ÍøÉÏµÄÆÀÂÛ¸÷Òì,²»¹ýÎÒ»¹ÊÇÑ¡ÔñÁ˺ìÆì.û±ðµÄÔÒò,¾ÍÒòΪËýÊÇÖйúµÄ.
¶ÔÓÚûÓÐÒ»µãLINUX¾ÑéµÄ³õѧÕß,±¾ÈËÈÏΪ»¹Ê ......