²Ù×÷ϵͳ¿Î³ÌÉè¼Æ±¨¸æ---Éè¼Æ×Ô¼ºµÄÇý¶¯³ÌÐò

·¢²¼Ê±¼ä : ÐÇÆÚÈÕ ÎÄÕ²Ù×÷ϵͳ¿Î³ÌÉè¼Æ±¨¸æ---Éè¼Æ×Ô¼ºµÄÇý¶¯³ÌÐò¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ

½­ËÕ´óѧ¼ÆËã»úѧԺ¿Î³ÌÉè¼Æ±¨¸æ

½­ËÕ´óѧ¼ÆËã»úѧԺ

¿Î³ÌÉè¼Æ±¨¸æ

¿Î³ÌÃû³Æ Éè¼Æ×Ô¼ºµÄÇý¶¯³ÌÐò ʵÑéѧÆÚ 2015 ÖÁ 2016ѧÄ꣬µÚ 1 ѧÆÚ Ñ§ÉúÐÕÃû

רҵ°à¼¶ ¼ÆËã»ú1301 ѧ ºÅ

Ö¸µ¼½Ìʦ ëÆôÈÝ ¿ª ¿Î ϵ ²Ù×÷ϵͳ

²Ù×÷ϵͳ¿Î³Ì×éÖÆ

½­ËÕ´óѧ¼ÆËã»úѧԺ¿Î³ÌÉè¼Æ±¨¸æ

¡¶²Ù×÷ϵͳ¡·¿Î³ÌÉè¼Æ±¨¸æ ¿Î³ÌÉè¼ÆÌâÄ¿£º Éè¼Æ×Ô¼ºµÄÇý¶¯³ÌÐò Ò»¡¢ ¿Î³ÌÉè¼ÆÄ¿µÄÓëÒªÇó Ä¿µÄ£º±àдһ¸öÄ£¿é»¯µÄ×Ö·ûÉ豸Çý¶¯³ÌÐò£¬ÊÖ¹¤¼ÓÔص½linuxÄÚºËÖУ¬²¢ÓÃcpµÈÃüÁî»ò±àдÓû§³ÌÐò¼ì²âÉ豸Çý¶¯³ÌÐò¡£ ÒªÇó£º1. ±àдһ¸ö¼òµ¥µÄ×Ö·ûÉ豸Çý¶¯³ÌÐò£¬¸Ã×Ö·ûÉ豸°üÀ¨´ò¿ª¡¢¶Á¡¢Ð´¡¢×¢²á¡¢×¢ÏúÓëÊÍ·ÅÁù¸ö»ù±¾²Ù×÷¡£ 2£® ±àдһ¸ö²âÊÔ³ÌÐò£¬²âÊÔ×Ö·ûÉ豸Çý¶¯³ÌÐòµÄÕýÈ·ÐÔ¡£ 3£® ÒªÇóÔÚʵÑ鱨¸æÖÐÁгöLinuxÄں˵İ汾ÓëÄÚºËÄ£¿é¼ÓÔعý³Ì¡£ 4.É豸µÄ°²×°:ÐèÒª½«±àдµÄÉ豸Çý¶¯³ÌÐòÒÔÄ£¿éµÄ·½Ê½¼ÓÔؽøÄںˡ£ 5.É豸µÄʵÓÃ:ͨ¹ýcp,ddµÈÃüÁî¡¢ÊäÈëÊä³öÖض¨Ïò»òÕß±àдÓû§³ÌÐòÀ´²âÊÔËùÉè¼ÆµÄÇý¶¯³ÌÐò¡£ 6£®Ê¹ÓÃC»òÕßC++±à³ÌʵÏÖ¡£ Éè¼Æʱ¼ä£º2016.01.05~2016.01.13 ¶þ¡¢ ¿Î³ÌÉè¼ÆÄÚÈÝ Éè¼ÆºÍʵÏÖÒ»¸öÐéÄâÃüÃû¹ÜµÀ(FIFO)µÄ×Ö·ûÉ豸¡£Ð´Ò»¸öÄ£¿é»¯µÄ×Ö·ûÉ豸Çý¶¯³ÌÐò Èý¡¢ ¿Î³ÌÉè¼ÆÉ豸Óë»·¾³ Linux(ÐéÄâ»ú)»·¾³ ËÄ¡¢ Éè¼ÆÕýÎÄ 1.ϵͳ·ÖÎö ½­ËÕ´óѧ¼ÆËã»úѧԺ¿Î³ÌÉè¼Æ±¨¸æ

ϵͳµ÷ÓÃÊDzÙ×÷ϵͳÄں˺ÍÓ¦ÓóÌÐòÖ®¼äµÄ½Ó¿Ú£¬É豸Çý¶¯³ÌÐòÊDzÙ×÷ϵͳÄں˺ͻúÆ÷Ó²¼þÖ®¼äµÄ½Ó¿Ú¡£É豸Çý¶¯³ÌÐòΪӦÓóÌÐòÆÁ±ÎÁËÓ²¼þµÄϸ½Ú£¬ÕâÑùÔÚÓ¦ÓóÌÐò¿´À´£¬Ó²¼þÉ豸ֻÊÇÒ»¸öÉ豸Îļþ£¬Ó¦ÓóÌÐò¿ÉÒÔÏó²Ù×÷ÆÕͨÎļþÒ»Ñù¶ÔÓ²¼þÉ豸½øÐвÙ×÷¡£É豸Çý¶¯³ÌÐòÊÇÄں˵ÄÒ»²¿·Ö£¬ËüÍê³ÉÒÔÏµĹ¦ÄÜ: ? ÐéÄâÉ豸µÄ×¢²áÓë×¢Ïú£¨Ö¸ÔÚÄں˵Ä×¢²áÓë×¢Ïú£©£» ? ÐéÄâÉ豸µÄ´ò¿ªÓëÊÍ·Å£» ? ÐéÄâÉ豸µÄ¶Áд²Ù×÷¡£ ×Ö·ûÉ豸Ìṩ¸øÓ¦ÓóÌÐòµÄÊÇÒ»¸öÁ÷¿ØÖƽӿڣ¬Ö÷Òª°üÀ¨open()¡¢release()¡¢read()¡¢write()¡£ÔÚϵͳÖÐÌí¼ÓÒ»¸ö×Ö·ûÉ豸Çý¶¯³ÌÐò£¬Êµ¼ÊÉϾÍÊǸøÉÏÊö²Ù×÷Ìí¼Ó¶ÔÓ¦µÄ´úÂë¡£¶ÔÓÚ×Ö·ûÉ豸ºÍ¿éÉ豸£¬LinuxÄں˶ÔÕâЩ²Ù×÷½øÐÐÁËͳһµÄ³éÏ󣬰ÑËüÃǶ¨ÒåÔڽṹÌåfile_operationsÖÐ 2.ϵͳÉè¼Æ 2.1Ä£¿éÉè¼Æ ´ò¿ªÉ豸 ¶Á²Ù×÷ д ²Ù ×÷ ×¢²áÉ豸 ÊÍ·ÅÉ豸 ×¢ÏúÉ豸 ×Ö·ûÉ豸Çý¶¯ 2.2Êý¾Ý½á¹¹ËµÃ÷ ×Ö·ûÉ豸Çý¶¯Ö÷ÒªÓ¦ÓÃÁËÈýÖÖÊý¾Ý½á¹¹£º ¢Ùfile_operations½á¹¹£ºFile_operations½á¹¹ÌåÖеijÉÔ±º¯ÊýÊÇ×Ö·ûÇý¶¯É豸µÄÖ÷ÌåÄÚÈÝ£¬ÕâЩº¯Êýʵ¼Ê»áÔÚÓ¦ÓóÌÐò½øÐÐlinuxµÄopen()¡¢release()¡¢read()¡¢write()µÈϵͳµ÷ÓÃʱ×îÖÕ±»µ÷Óᣠ¢Úfile½á¹¹£¬Ö÷ÒªÓÃÓÚÓëÎļþϵͳ¶ÔÓ¦µÄÉ豸Çý¶¯³ÌÐò¡£´ú±íÒ»¸ö´ò¿ªµÄÎļþ£¬ËüÓÉÄÚºËÔÚopenʱ´´½¨£¬²¢´«µÝ¸øÔÚ¸ÃÎļþÉϽøÐвÙ×÷µÄËùÓк¯Êý£¬Ö±µ½Åöµ½×îºóµÄcloseº¯Êý¡£ÔÚÎļþµÄËùÓÐʵÀý¶¼±»¹Ø±ÕÖ®ºó£¬Äں˻áÊÍ·ÅÕâ¸öÊý¾Ý½á¹¹£» ¢Ûinode½á¹¹£¬ÌṩÁ˹ØÓÚÌØÊâÉ豸Îļþ/dev/myDeviceµÄÐÅÏ¢¡£ ½­ËÕ´óѧ¼ÆËã»úѧԺ¿Î³ÌÉè¼Æ±¨¸æ

¸÷¸ö½á¹¹µÄ¶¨ÒåÈçÏ£º £¨1£©file_operations½á¹¹£º struct file_operations pStruct = { open:my_open, release:my_release, read:my_read, write:my_write, }; £¨2£©file½á¹¹£º ¶Á£ºstatic ssize_t my_read(struct file *file, char __user *user, size_t t, loff_t *f); д£ºstatic ssize_t my_write(struct file *file, const char __user *user, size_t t, loff_t *f); SeekÎļþ¶¨Î»£ºstaticloff_tmy_llseek(struct file *filp, loff_t offset, int whence) £¨3£©inode½á¹¹£º ´ò¿ª£ºstatic int my_open(struct inode *inode, struct file *file); ÊÍ·Å£ºstatic int my_release(struct inode *inode, struct file *file); /* ×¢²áÄ£¿é */ int init_module() { int ret; /* º¯ÊýÖеÚÒ»¸ö²ÎÊýÊǸæËßϵͳ£¬ÐÂ×¢²áµÄÉ豸µÄÖ÷É豸ºÅÓÉϵͳ·ÖÅ䣬 * µÚ¶þ¸ö²ÎÊýÊÇÐÂÉ豸ע²áʱµÄÉ豸Ãû×Ö£¬ * µÚÈý¸ö²ÎÊýÊÇÖ¸Ïòfile_operationsµÄÖ¸Õ룬 * µ±ÓÃÉ豸ºÅΪ0´´½¨Ê±£¬ÏµÍ³Ò»¸ö¿ÉÒÔÓõÄÉ豸ºÅ´´½¨Ä£¿é */

ÁªÏµºÏͬ·¶ÎÄ¿Í·þ£ºxxxxx#qq.com(#Ì滻Ϊ@)