¡¶LinuxÉ豸É豸Çý¶¯³ÌÐò£¨µÚÈý°æ£©¡·Ñ§Ï°±Ê¼ÇÖ®Ò»£ºscullÉ豸µÄʹÓÃ
·¢ÐÅÈË: wooin (FOX), ÐÅÇø: KernelTech±ê Ìâ: ¡¶LinuxÉ豸É豸Çý¶¯³ÌÐò£¨µÚÈý°æ£©¡·Ñ§Ï°±Ê¼ÇÖ®Ò»£ºscullÉ豸µÄʹÓÃ
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Mon Oct 8 21:13:58 2007), תÐÅ
ÔÎĵØÖ·£º
[url]http://blog.csdn.net/wooin/archive/2007/08/28/1762818.aspx[/url]
¡¶LinuxÉ豸É豸Çý¶¯³ÌÐò£¨µÚÈý°æ£©¡·Ñ§Ï°±Ê¼ÇÖ®Ò»£º
scullÉ豸µÄʹÓÃ
By: ÎâÛó
Date: 2007-07-05
Email: lazy.fox.wu#gmail.com
Homepage:
[url]http://blog.csdn.net/wooin[/url]
Copyright: ¸ÃÎÄÕ°æÈ¨ÓÉÎâÛóËùÓС£¿ÉÔÚ·ÇÉÌҵĿµÄÏÂÈÎÒâ´«²¥ºÍ¸´ÖÆ¡£
¶ÔÓÚÉÌҵĿµÄ϶Ա¾ÎĵÄÈκÎÐÐΪÐè¾×÷ÕßͬÒâ¡£
ÁªÏµ·½Ê½£ºlazy.fox.wu#gmail.com
--------------------------------------------------------------------------------
1. дÔÚÇ°Ãæ£º
a.
ÔÚ½øÐÐÏÂÃæµÄ¹¤×÷֮ǰÇëÏÈÔĶÁÎÒ µÄÎÄÕ¡¶ÔÚ Linux 2.6ÄÚºËϱàÒë¿ÉÒÔ¼ÓÔØµÄÄÚºËÄ£¿é¡·£¬Åä ÖúÿɼÓÔØÄÚºËÄ£¿éµÄLinux»·¾³
b.
ÏÂÔØ¡¶LinuxÉ豸É豸Çý¶¯³ÌÐò£¨µÚÈý°æ£©¡·ÅäÌ×µÄÔ´´ú Â룬ÔÚÕâÀï¿É ÒÔÏÂÔØµ½£¬Èç¹ûÎÞ·¨ÏÂÔØµÄ»°¿ÉÒÔÁôÑÔ»òÕ߸øÎÒ·¢ÓʼþË÷È¡¡£
c.
±¾ÎĵŤ×÷»·¾³ÊÇFedora Core 5£¬Óá°uname -r¡±²é¿´Äں˰汾ÊÇ£º2.6.15-1.2054_FC5
d.
±¾ÎÄÖ÷ÒªÕë¶ÔµÄÊÇ¡¶LinuxÉ豸É豸Çý¶¯³ÌÐò£¨µÚÈý °æ£©¡·ÖеÚÈýÕ£º×Ö·ûÉ豸Çý¶¯³ÌÐò
e.
ÏÂÎĵÄÓÐЩ²Ù×÷ÐèÒªrootȨÏÞ£¬ËùÒÔÇ뾡Á¿ÓÃrootÓà »§À´Ö´ÐÐÃüÁî¡£
2. Ô´´úÂë°ü½âѹºó½øÈëscullÎļþ¼Ð£¬ÆäÖеÄÎļþÓУº
access.c
main.c
Ö÷³ÌÐò£¬scullÉ豸µÄ³õʼ»¯¡¢Ð¶ÔØ¡¢open¡¢ writeµÈʵÏÖ¶¼ÔÚÕâÀïÃæ¡£
Makefile
pipe.c µÚÁùÕ¡¶¸ß¼¶×Ö·ûÇý¶¯³ÌÐò²Ù×÷¡·»áÓõ½£¬ÓÃÀ´½²½â×èÈûÐÍÉè ±¸¡£
scull.h
Í·Îļþ
scull.init
scull_load
¼ÓÔØscullÄ£¿éµÄ½Å±¾
scull_unload
Ð¶ÔØscullÄ£¿éµÄ½Å±¾
3. Ö±½ÓÔÚscullĿ¼ÏÂÔËÐÐmakeÃüÁî¾Í¿ÉÒÔ±àÒëͨ¹ý£¬»áÉú³ÉÒ»¸ö½Ðscull.koµÄÎļþ£¬È»ºóÔËÐнű¾scull_load£¬ ûÓÐÈκÎÊä³ö¾Í·µ»ØÁË£¬scullÉ豸¾Í»á×Ô¶¯¼ÓÔØµ½Äں˵±ÖÐÈ¥ÁË£¬´Ëʱ¿ÉÒÔͨ¹ý²é¿´/proc/devicesÎļþÕÒµ½¸Õ¼ÓÔØµÄscullÄ£¿é£¬»¹ÓÐÄÚ ºËΪÆä·ÖÅäµÄÖ÷É豸ºÅ¡£
ÔÚ/dev/ÖÐÒ²Ôö¼ÓºÜ¶àÒÔscull¿ªÍ·µÄ×Ö·ûÉ豸¡£
4.
ÊÔÊÔscullÉ豸£º
ÔËÐÐÃüÁ
# ls -l > /dev/scull # ûÓÐÈκÎÊä³ö¾Í·µ»ØÁË
# cat /dev/scull # ÔÙÔËÐÐcatÃüÁî¶ÁÈ¡scullÉ豸£¬Ôò»á½«ÉÏÃæÃüÁîµÄÊä³öÐÅÏ¢¶Á³öÀ´
×Ü¼Æ 900
-rw-rw-rw- 1 baobaowu baobaowu 10845 2005-02-01 access.c
-rw-rw-r-- 1 baobaowu baobaowu 74580 06-15 16:27 access.o
-rw-rw-rw- 1 baobaowu baobaowu 16631 06-15 17:15 main.c
-rw-r--r-- 1 baobaowu baobaowu 74512 06-15 17:16 main.o
-rw-r--r-- 1 baobaowu baobaowu 752 2005-02-01 Makefile
-rw-rw-rw- 1 baobaowu baobaowu 11138 2005-02-01 pipe.c
-rw-rw-r-- 1 baobaowu baobaowu 71576 06-15 16:27 pipe.o
-rw-r--r-- 1 baobaowu baobaowu 5153 2005-02-01 scull.h
-rwxr-xr-x 1 baobaowu baobaowu 3309 2005-02-01 scull.init
-rw-r--r-- 1 baobaowu baobaowu 248556 06-15 17:16 scull.ko
-rwxr-xr-x 1 baobaowu baobaowu 1708 06-15 16:34 scull_load
-rw-rw-rw- 1 baobaowu baobaowu 1852 06-15 17:16 scull.mod.c
-rw-r--r-- 1 baobaowu baobaowu 33696 06-15 17:16 scull.mod.o
-rw-r--r-- 1 baobaowu baobaowu 216043 06-15 17:16 scull.o
-rwxr-xr-x 1 baobaowu baobaowu 335 2005-02-01 scull_unload
¹ûÈ»scullÉ豸¸úÊéÖнéÉܵÄÒ»Ñù£¬Ö»ÊÇ´æÔÚÓÚÄÚ´æÖеÄÒ»¸ö»º³åÇø¡£
5. ÔÙÔËÐÐscull_unload£¬Ò²ÊÇûÓÐÈκÎÊä³ö¾Í·µ»ØÁË£¬µ«ÊÇscullÄ£¿éÈ´ÒѾ´ÓÄÚºËÖÐɾ³ýÁË£¬/proc/devices ÎļþÖÐҲûscullÉ豸ÁË£¬/dev/ÖÐҲûÓÐÒÔscull¿ªÍ·µÄ×Ö·ûÉ豸ÁË¡£
6. ÏÂÃæÔÚscullÔö¼ÓһЩµ÷ÊÔÐÅÏ¢£º
´ò¿ªmain.cÎļþ£¬ÔÚº¯Êýscull_init_module()µÄÍ·²¿Ôö¼ÓÒ»¾ä£º
printk(KERN_ALERT "Debug by baobaowu:scull_init_module()\n");
ÔÚº¯Êýscull_read()µÄÍ·²¿Ôö¼ÓÒ»¾ä£º
printk(KERN_ALERT "Debug by baobaowu:scull_read()\n");
ÔÚº¯Êýscull_write()µÄÍ·²¿Ôö¼ÓÒ»¾ä£º
printk(KERN_ALERT "Debug by baobaowu:scull_write()\n");
±£´æºóÔËÐÐmake½øÐбàÒë¡£
7. ÖØ¸´µÚ3²½£¬½«scull¼ÓÔØ½øÄÚºËÖУ¬´ËʱÄÚºËÓ¦¸Ãµ÷ÓÃmain.cÖеÄscull_init_module()º¯Êý£¬ÊDz»Êǵ÷Óà ÁËÄØ£¿ÎÒÃÇ¿´¿´/var/log/messagesÎļþ£¬¹ûÈ»ÔÚ¸ÃÎļþ×îºóÓÐÊä³öÎÒÃǵĵ÷ÊÔÐÅÏ¢£º
Debug by baobaowu:scull_init_module()
ÄÇreadºÍwriteÔõôµ÷ÓÃÄØ£¿ÎÒÃǽô½Ó×ÅÏÂÃæ½éÉÜ¡£
8. ¿ÉÒÔÏëÏñ£¬ÏòÉ豸ÖÐдÊý¾Ý¾Í»áµ÷ÓÃscull_write()º¯Êý£¬ÎÒÃÇÖ´ÐÐÏÂÃæµÄÃüÁîÀûÓÃÊä³öÖØ¶¨ÏòÀ´Ïò/dev/scullÉ豸 дÊý¾Ý£º
# ls -l > /dev/scull
Ö´ÐÐÍêÃüÁîºóÔÙ¿´¿´/var/log/messagesÎļþ£¬¹ûÈ»ÔÚ¸ÃÎļþ×îºóÓÐÊä³öÎÒÃǵĵ÷ÊÔÐÅÏ¢£º
Debug by baobaowu:scull_write()
9. ´ÓÉ豸ÖжÁÈ¡Êý¾ÝÓ¦¸Ã¾Í»áµ÷ÓÃscull_read()º¯Êý£¬ÎÒÃÇÀûÓÃddÃüÁîÀ´¶ÁscullÉ豸£º
# dd if=/dev/scull of=temp # ´Ó/dev/scullÖжÁÈ¡Êý¾Ý£¬±£´æÔÚµ±Ç°Ä¿Â¼ÏµÄtempÎļþÖÐ
Ö´ÐÐÍêÃüÁîºóÔÙ¿´¿´/var/log/messagesÎļþ£¬¹ûÈ»ÔÚ¸ÃÎļþ×îºóÓÐÊä³öÎÒÃǵĵ÷ÊÔÐÅÏ¢£º
Debug by baobaowu:scull_read()
10. ±¾ÎĽéÉܵÄscullʹÓ÷½·¨µ÷ÊԳɹ¦ºó¶Ô¶ÁµÚÈýÕ¡¶×Ö·ûÉ豸Çý¶¯³ÌÐò¡·ºÜÓаïÖú£¬µ±Óöµ½²»¶®£¬»ò²»È·¶¨µÄµØ·½Ê±printkÒ»ÏÂ¾Í ºÃÁË^_^
--------------------------------------------------------------------------------
Trackback: [url]http://tb.blog.csdn.net/TrackBack.aspx?PostId=1762818[/url]
Ò³:
[1]