LinuxÄÚºËÉ豸ģÐÍ(2)
·ÒëÕߣº¹ùÉÙ±¯
2009/12/01
ÔÎÄ£ºlinux/Documentation/driver-model/binding.txt
Çý¶¯°ó¶¨
Çý¶¯°ó¶¨¾ÍÊǽ«Ò»¸öÉ豸ºÍ¿ØÖƸÃÉ豸µÄÇý¶¯¹ØÁªÔÚÒ»ÇеĹý³Ì¡£
µäÐ͵ÄÇé¿öÏ£¬×ÜÏßÇý¶¯À´´¦ÀíÇý¶¯°ó¶¨£¬ÒòΪÿ¸ö×ÜÏßÇý¶¯¶¼ÓÐ×ÜÏßÏà¹ØµÄÊý¾Ý
½á¹¹À´±íʾÉ豸ºÍÉ豸Çý¶¯¡£ÓÐÁ˱íʾÉ豸ºÍÉ豸Çý¶¯µÄͨÓÃÊý¾Ý½á¹¹£¬¾ø´ó¶àÊýµÄ°ó
¶¨¹ý³Ì¿ÉÒÔʹÓÃÕâЩͨÓôúÂë¡£
×ÜÏß
~~~
×ÜÏßÀàÐÍÊý¾Ý½á¹¹°üº¬Ò»¸ö¼Ç¼ËùÓÐÊôÓÚÕâ¸ö×ÜÏßÀàÐ͵ÄÉ豸Á´±í¡£µ±Ò»¸öÉ豸Çý¶¯µ÷ÓÃ
device_register()ʱ£¬Ëü»á±»Ìí¼Óµ½Õâ¸öÁ´±íµÄβ²¿¡£
×ÜÏßÀàÐÍÊý¾Ý½á¹¹Ò²°üº¬Ò»¸ö¼Ç¼ËùÓÐÊôÓÚÕâ¸ö×ÜÏßÀàÐ͵ÄÇý¶¯Á´±í¡£µ±Ò»¸öÉ豸Çý¶¯µ÷ÓÃ
driver_register()ʱ£¬¸ÃÇý¶¯»á±»Ìí¼Óµ½Õâ¸öÁ´±íµÄβ²¿¡£
ÕâÊÇ´¥·¢Çý¶¯°ó¶¨µÄÁ½¸öÖ÷Ҫʼþ¡£
É豸ע²á
~~~~~~~~
µ±Ò»¸öÐÂÉ豸±»Ìí¼Óºó£¬×ÜÏßµÄÇý¶¯Á´±í»á±»µü´ú£¬²éÕÒ³öÖ§³Ö¸ÃÉ豸µÄÇý¶¯¡£ÎªÁË´ïµ½
Õâ¸öÄ¿µÄ£¬ÐÂÉ豸µÄÉ豸ID±ØÐëÆ¥ÅäÇý¶¯Ö§³ÖµÄÉ豸IDÖеÄÒ»¸ö¡£É豸IDµÄ¸ñʽºÍ
Óï·¨ÊÇ×ÜÏßÏà¹ØµÄ¡£²»ÐèҪʹÓÃÒ»¸ö¸´ÔÓµÄ״̬»úºÍÆ¥ÅäËã·¨£¬¶øÊÇÓÉ×ÜÏßÇý¶¯Ìṩ
Ò»¸öcallbackº¯ÊýÀ´±È½ÏÉ豸ºÍÒ»¸öÇý¶¯ËùÖ§³ÖµÄIDÊÇ·ñÆ¥Å䣬Èç¹ûÆ¥Åä·µ»ØÖµÎª1£¬·ñÔò
·µ»ØÖµÎª0¡£
int match(struct device * dev, struct device_driver * drv);
µ±Ò»¸öÆ¥Åä±»ÕÒµ½Ê±£¬É豸µÄ'driver'Óò»á±»ÉèÖÃΪÕâ¸öÇý¶¯£¬Çý¶¯µÄprobe»Øµ÷º¯Êý»á±»µ÷Óá£
ÕâʹÇý¶¯Óлú»á¼ìÑéÊÇ·ñÕæÕýÖ§³ÖÕâ¸öÓ²¼þÉ豸,ͬʱ»á¼ìÑéÉ豸ÊÇ·ñ´¦ÓÚ¹¤×÷״̬¡£
É豸Àà±ð
~~~~~~~~~~~~
µ±probe³É¹¦Íê³Éºó£¬É豸±»×¢²áµ½ËüÊôÓÚµÄÀàÖС£É豸Çý¶¯ÊôÓÚÇÒ½öÊôÓÚÒ»¸öÀ࣬Õâ¸öÀà»áÔÚ
Çý¶¯µÄdevclassÓòÖÐÉèÖá£
devclass_add_device±»µ÷ÓÃÀ´Ã¶¾ÙºÍ×¢²áÀàÖеÄÉ豸£¬Õâ¸ö¹ý³Ì·¢ÉúÔÚÀàµÄregister_dev»Øµ÷
º¯ÊýÖС£
×¢Ò⣺É豸class½á¹¹ºÍÆäºËÐIJÙ×÷º¯Êý»¹Ã»ÓнøÈëmainlineÄںˣ¬ËùÒÔÒÔÉÏÌÖÂÛÓÐÒ»¶¨ÍÆ
²âÐÔ¡£
Çý¶¯
~~~~
µ±Ò»¸öÇý¶¯±»¹ØÁªµ½Ò»¸öÉ豸ʱ£¬Õâ¸öÉ豸±»²åÈëµ½Çý¶¯µÄÉ豸Á´±íÖС£
sysfs
~~~~~
ÔÚbusĿ¼µÄ'devices'×ÓĿ¼À´´½¨·ûºÅÁ´½Ó£¬Ö¸Ïòʵ¼ÊµÄdeviceĿ¼¡£
ÔÚdriverµÄ'devices'×ÓĿ¼À´´½¨·ûºÅÁ´½Ó£¬Ö¸Ïòʵ¼ÊµÄdeviceĿ¼¡£
ÔÚclassĿ¼ÀïΪÉ豸´´½¨×ÓĿ¼£¬ÔÚ×ÓĿ¼À´´½¨·ûºÅÁ´½Ó£¬Ö¸Ïò¸ÃÉ豸ÔÚsys
treeÀïµÄʵ¼ÊλÖá£
Ò²¿ÉÒÔÔÚÉ豸µÄʵ¼ÊĿ¼À´´½¨·ûºÅÁ´½Ó£¬Ö¸ÏòËüµÄclassĿ¼£¬»òÕßclassĿ¼µÄ¶¥²ã
Ŀ¼£»Ò²¿ÉÒÔ´´½¨·ûºÅÁ´½Ó£¬Ö¸ÏòËüµÄdriverĿ¼¡£²»¹ýĿǰ²¢Ã»ÓÐÕâÑù×
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......
1.UNIXÊÇÒ»¸öÇ¿´ó¡¢½¡×³¡¢Îȶ¨µÄ²Ù×÷ϵͳ¡£
ÌØµã£º
1.UNIXºÜ¼ò½é£¬ÏµÍ³µ÷ÓÃÊýÄ¿ÉÙ£¬ÓÐÃ÷È·µÄÉè¼ÆÄ¿µÄ¡£
2.Ò»ÇнÔÎļþ¡£
3.UNIXµÄÄں˺Íϵͳ¶¼ÊÇC¿ª·¢µÄ£¬ÀûÓÚÒÆÖ²¡£
4.ÌṩһÌ×½ø³Ì¼äͨÐŵÄÔªÓï¡£
2.UNIX·¢Õ¹³ÉΪ¶àÈÎÎñ¡¢¶àÏ̡߳¢ÐéÄâÄÚ´æ¡¢»»Ò³¡¢¶¯Ì¬Á¬½ÓºÍTCP ......