Ò»¸ö×Ö·ûÉ豸»òÕß¿éÉ豸¶¼ÓÐÒ»¸öÖ÷É豸ºÅºÍ´ÎÉ豸ºÅ¡£Ö÷É豸ºÅºÍ´ÎÉ豸ºÅͳ³ÆÎªÉ豸ºÅ¡£Ö÷É豸ºÅÓÃÀ´±íʾһ¸öÌØ¶¨µÄÇý¶¯³ÌÐò¡£´ÎÉ豸ºÅÓÃÀ´±íʾʹÓøÃÇý¶¯³ÌÐòµÄ¸÷É豸¡£ÀýÈçÒ»¸öǶÈëʽϵͳ£¬ÓÐÁ½¸öLEDָʾµÆ£¬LEDµÆÐèÒª¶ÀÁ¢µÄ´ò¿ª»òÕ߹رա£ÄÇô£¬¿ÉÒÔдһ¸öLEDµÆµÄ×Ö·ûÉ豸Çý¶¯³ÌÐò£¬¿ÉÒÔ½«ÆäÖ÷É豸ºÅ×¢²á³É5ºÅÉ豸£¬´ÎÉ豸ºÅ·Ö±ðΪ1ºÍ2¡£ÕâÀ´ÎÉ豸ºÅ¾Í·Ö±ð±íʾÁ½¸öLEDµÆ¡£
É豸Îļþͨ³£¶¼ÔÚ /dev Ŀ¼Ï¡£È磺
ÈçÉÏ£¬Ç°ÃæµÚÒ»¸ö×Ö·ûΪc µÄ±íʾ×Ö·ûÉ豸¡£ÔÚ×Ö·ûÉ豸ÀÓÐÖ÷É豸ºÅºÍ´ÎÉ豸ºÅ¡£ÈçÉÏ1£¬4£¬7 ·Ö±ðÊÇÖ÷É豸ºÅ£¬0£¬1£¬3£¬7£¬70£¬71¶¼ÊÇ´ÎÉ豸ºÅ¡£Ò»°ãµÄ£¬Ö÷É豸ºÅ±êʶ³öÓëÉ豸¹ØÁªµÄÉ豸Çý¶¯¡£Èç /dev/null ºÍ /dev/full ÓÉ 1 ºÅÇý¶¯À´¹ÜÀí£¬/dev/vcs ºÍ/dev/vcs1ÓÉ 7 ºÅÇý¶¯À´¹ÜÀí£¬/dev/ttyS6 ÓÉ 4 ºÅÇý¶¯À´¹ÜÀí¡£
ÏÖÔÚµÄ Linux ÄÚºËÔÊÐí¶à¸öÇý¶¯¹²ÏíÒ»¸öÖ÷É豸ºÅ£¬µ«¸ü¶àµÄÉ豸¶¼×ñÑÒ»¸öÇý¶¯¶ÔÒ»¸öÖ÷É豸ºÅµÄÔÔò¡£
ÄÚºËÓÉ´ÎÉ豸ºÅÈ·¶¨µ±Ç°ËùÖ¸ÏòµÄÊÇÄĸöÉ豸¡£¸ù¾ÝËù±àдµÄÇý¶¯³ÌÐò£¬¿ÉÒÔ´ÓÄÚºËÄÇÀïµÃµ½Ò»¸öÖ±½ÓÖ¸ÏòÉ豸µÄÖ¸Õ룬»òÕßʹÓôÎÉ豸ºÅ×÷Ϊһ¸öÉ豸±¾µØÊý×éµÄË÷Òý¡£µ«²»ÂÛÈçºÎ£¬ÄÚºË×ÔÉí¼¸ºõ²»ÖªµÀ´ÎÉ豸ºÅµÄʲôÊÂÇé¡£
É豸ºÅµÄÄÚ²¿±íʾ
ÔÚÄÚºËÖУ¬dev_t ÀàÐÍ( ÔÚ Í·ÎļþÓж¨Òå ) ÓÃÀ´±íʾÉ豸ºÅ£¬°üÀ¨Ö÷É豸ºÅºÍ´ÎÉ豸ºÅÁ½²¿·Ö¡£¶ÔÓÚ 2.6.x Äںˣ¬dev_t ÊǸö 32 λÁ¿£¬ÆäÖÐ 12 λÓÃÀ´±íʾÖ÷É豸ºÅ£¬20 λÓÃÀ´±íʾ´ÎÉ豸ºÅ¡£
ÔÚ linux/types.h Í·ÎļþÀﶨÒåÓÐ
typedef __kernel_dev_t dev_t;
typedef __u32 __kernel_dev_t;
Ö÷É豸ºÅºÍ´ÎÉ豸ºÅµÄ»ñÈ¡
ΪÁËд³ö¿ÉÒÆÖ²µÄÇý¶¯³ÌÐò£¬²»Äܼٶ¨Ö÷É豸ºÅºÍ´ÎÉ豸ºÅµÄλÊý¡£²»Í¬µÄ»úÐÍÖУ¬Ö÷É豸ºÅºÍ´ÎÉ豸ºÅµÄλÊý¿ÉÄÜÊDz»Í¬µÄ¡£Ó¦¸ÃʹÓÃMAJORºêµÃµ½Ö÷É豸ºÅ£¬Ê¹ÓÃMINORºêÀ´µÃµ½´ÎÉ豸ºÅ¡£ÏÂÃæÊÇÁ½¸öºêµÄ¶¨Ò壺£¨linux/kdev_t.h£©
#define MINORBITS 20 /*´ÎÉ豸ºÅ*/
#define MINORMASK ((1U << MINORBITS) - 1) /*´ÎÉ豸ºÅÑÚÂë*/
#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS)) /*devÓÒÒÆ20λµÃµ½Ö÷É豸ºÅ*/
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK)) /*Óë´ÎÉ豸ÑÚÂëÓ룬µÃµ½´ÎÉ豸ºÅ*/
MAJORºê½«dev_tÏòÓÒÒÆ¶¯20룬µÃµ½Ö÷É豸ºÅ£»MINORºê½«dev_tµÄ¸ß12λÇåÁ㣬µÃµ½´ÎÉ豸ºÅ¡£Ïà·´£¬¿ÉÒÔ½«Ö÷É豸ºÅºÍ´ÎÉ豸ºÅת»»ÎªÉ豸ºÅÀàÐÍ£¨dev_t£©£¬Ê¹ÓúêMKDEV¿ÉÒÔÍê³ÉÕâ¸ö¹¦ÄÜ¡£
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
MKDEVºê½«Ö÷É豸ºÅ£¨ma£©×óÒÆ20λ£¬È»ºóÓë´ÎÉ豸ºÅ£¨mi£©ÏàÓ룬µÃµ½É豸ºÅ
¾²Ì¬·ÖÅäÉ豸ºÅ
¾²Ì¬·ÖÅäÉ豸ºÅ£¬¾ÍÊÇÇý¶¯³ÌÐò¿ª·¢Õߣ¬¾²Ì¬µØÖ¸¶¨Ò»¸öÉ豸ºÅ¡£¶ÔÓÚÒ»²¿·Ö³£ÓõÄÉ豸£¬Äں˿ª·¢ÕßÒѾΪÆä·ÖÅäÁËÉ豸ºÅ¡£ÕâЩÉ豸ºÅ¿ÉÒÔÔÚÄÚºËÔ´Âëdocumentation/ devices.txtÎļþÖÐÕÒµ½¡£Èç¹ûÖ»Óпª·¢Õß×Ô¼ºÊ¹ÓÃÕâЩÉ豸Çý¶¯³ÌÐò£¬ÄÇôÆä¿ÉÒÔÑ¡ÔñÒ»¸öÉÐδʹÓõÄÉ豸ºÅ¡£ÔÚ²»Ìí¼ÓÐÂÓ²¼þµÄʱºò£¬ÕâÖÖ·½Ê½²»»á²úÉúÉ豸ºÅ³åÍ»¡£µ«Êǵ±Ìí¼ÓÐÂÓ²¼þʱ£¬ÔòºÜ¿ÉÄÜÔì³ÉÉ豸ºÅ³åÍ»£¬Ó°ÏìÉ豸µÄʹÓá£
¶¯Ì¬·ÖÅäÉ豸ºÅ
ÓÉÓÚ¾²Ì¬·ÖÅäÉ豸ºÅ´æÔÚ³åÍ»µÄÎÊÌ⣬ËùÒÔÄÚºËÉçÇø½¨Ò鿪·¢ÕßʹÓö¯Ì¬·ÖÅäÉ豸ºÅµÄ·½·¨¡£¶¯Ì¬·ÖÅäÉ豸ºÅµÄº¯ÊýÊÇalloc_chrdev_region()¡£