ÒÔϵÄһЩÎÄ×ÖÖ÷ÒªÀ´Ô´ÓÚkhg£¬johnsonmµÄWrite linux device driver£¬Brennan's Guide to Inline Assembly£¬The Linux A-Z£¬»¹ÓÐÇ廪BBSÉϵÄÓйØdevice driverµÄһЩ×ÊÁÏ. ÕâЩ×ÊÁÏÓеÄÒѾ¹ýʱ£¬ÓеϹÓÐһЩ´íÎó£¬ÎÒÒÀ¾Ý×Ô¼ºµÄÊÔÑé½á¹û½øÐÐÁËÐÞÕý.
Ò»¡¢Linux device driver µÄ¸ÅÄî
ϵͳµ÷ÓÃÊDzÙ×÷ϵͳÄں˺ÍÓ¦ÓóÌÐòÖ®¼äµÄ½Ó¿Ú£¬É豸Çý¶¯³ÌÐòÊDzÙ×÷ϵͳÄں˺ͻúÆ÷Ó²¼þÖ®¼äµÄ½Ó¿Ú.É豸Çý¶¯³ÌÐòΪӦÓóÌÐòÆÁ±ÎÁËÓ²¼þµÄϸ½Ú£¬ÕâÑùÔÚÓ¦ÓóÌÐò¿´À´£¬Ó²¼þÉ豸ֻÊÇÒ»¸öÉ豸Îļþ£¬ Ó¦ÓóÌÐò¿ÉÒÔÏó²Ù×÷ÆÕͨÎļþÒ»Ñù¶ÔÓ²¼þÉ豸½øÐвÙ×÷.É豸Çý¶¯³ÌÐòÊÇÄں˵ÄÒ»²¿·Ö£¬ËüÍê³ÉÒÔÏµĹ¦ÄÜ:
1.¶ÔÉ豸³õʼ»¯ºÍÊÍ·Å.
2.°ÑÊý¾Ý´ÓÄں˴«Ë͵½Ó²¼þºÍ´ÓÓ²¼þ¶ÁÈ¡Êý¾Ý.
3.¶ÁȡӦÓóÌÐò´«Ë͸øÉ豸ÎļþµÄÊý¾ÝºÍ»ØËÍÓ¦ÓóÌÐòÇëÇóµÄÊý¾Ý.
4.¼ì²âºÍ´¦ÀíÉ豸³öÏֵĴíÎó.
ÔÚLinux²Ù×÷ϵͳÏÂÓÐÁ½ÀàÖ÷ÒªµÄÉ豸ÎļþÀàÐÍ£¬Ò»ÖÖÊÇ×Ö·ûÉ豸£¬ÁíÒ»ÖÖÊÇ¿éÉ豸.×Ö·ûÉ豸ºÍ¿éÉ豸µÄÖ÷񻂿±ðÊÇ:ÔÚ¶Ô×Ö·ûÉ豸·¢³ö¶Á/дÇëÇóʱ£¬Êµ¼ÊµÄÓ²¼þI/OÒ»°ã¾Í½ô½Ó×Å·¢ÉúÁË£¬¿éÉ豸Ôò²»È»£¬ËüÀûÓÃÒ»¿éϵͳÄÚ´æ×÷»º³åÇø£¬µ±Óû§½ø³Ì¶ÔÉ豸ÇëÇóÄÜÂú×ãÓû§µÄÒªÇ󣬾ͷµ»ØÇëÇóµÄÊý ......
Red Hat Enterprise Linux ÏÂcvs·þÎñÆ÷µÄ°²×°ÓëÅäÖÃ
°²×°ÓëÅäÖÃ
Ê×ÏȰ²×° cvs £¬Ò»°ã·þÎñÆ÷×Ô´øÁËcvs·þÎñ£¬°æ±¾ËæÒ⣬ûʲô²î±ð
[root@RHEL ~]#rpm –ivh cvs-1.11.22-5.el5.i386.rpm
È»ºó´´½¨Ò»¸öcvsÓû§×飬²¢´´½¨Ò»¸öcvsrootÓû§
[root@RHEL ~]#groupadd cvs
[root@RHEL ~]#useradd –g cvs cvsroot
ΪcvsrootÉèÖÃÃÜÂë
[root@RHEL ~]#passwd cvsroot
¸ü¸ÄcvsrootÖ÷Ŀ¼µÄÊôÐԺʹÓÊô¹ØÏµ£¬ÒÔ±ãcvsÓû§×éÄÚ³ÉÔ±Äܹ»²é¿´²¢²Ù×÷¸ÃĿ¼ÏÂ
ÃæµÄÄÚÈÝ£º
[root@RHEL ~]# chown -R cvsroot.cvs /home/cvsroot
[root@RHEL ~]# chmod -R 775 /home/cvsroot/
½ÓÏÂÀ´¼ì²écvs·þÎñÊÇ·ñΪ×Ô¶¯¿ªÆô״̬
[root@RHEL ~]# cat /etc/services | grep cvspserver
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
Èç¹ûÏÔʾÊÇÉÏÃæµÄÄÚÈÝ£¬ËµÃ÷·þÎñÒѾ°üº¬cvs·þÎñ¡£
½ÓÏÂÀ´ÐÞ¸Äcvs·þÎñµÄÅäÖÃÎļþ
[root@RHEL ~]#vim /etc/xinetd.d/cvs
¼¸¸öÐèҪ˵Ã÷µÄµØ·½£º
1>°Ñdisable¸ÄΪno ,
2>server_argsÒ»ÏîÉ趨Ϊcvs·þÎñµÄÖ÷Ŀ¼£»
......
£¨1£©exit()Óë_exit()Çø±ð£º _exit()Ö±½Óʹ½ø³ÌÍ£Ö¹ÔËÐУ¬Çå³ýÆ÷ʹÓõÄÄÚ´æ¿Õ¼ä£¬Ïú»ÙÆäÔÚÄÚºËÖеĸ÷ÖÖÊý¾Ý½á¹¹¡£
exit()º¯ÊýÔÚµ÷ÓÃexitϵͳµ÷ÓÃ֮ǰҪ¼ì²éÎļþµÄ´ò¿ªÇé¿ö£¬°ÑÎļþ»º³åÇøÖеÄÄÚÈÝд»ØÎļþ£¬ÇåÀíI/O»º³å£¨ÍƼöʹÓÃÕâ¸öº¯Êý£©
£¨2£©waitpid
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid( pid_t pid, int *status, int options );
ÆäÖУºpidȡֵ²»Í¬£¬ÒâÒ岻ͬ£º
pid > 0ʱ£¬ Ö»µÈ´ý½ø³ÌID=pidµÄ×Ó½ø³Ì£¬²»¹ÜÆäËûÒѾÓжàÉÙ×Ó½ø³ÌÔËÐнáÊøÍÆ³öÁË£¬Ö»ÒªÖ¸¶¨µÄ×Ó½ø³Ì»¹Ã»ÓнáÊø£¬waitpid¾Í»áÒ»Ö±µÈÏÂÈ¥£»
pid = -1ʱ£¬ µÈ´ýÈκÎÒ»¸ö×Ó½ø³ÌÍ˳ö£¬Ã»ÓÐÈκÎÏÞÖÆ£¬´Ëʱwaitpid ºÍwaitµÄ×÷ÓÃÒ»ÃþÒ»Ñù£»
pid = 0 ʱ£¬ µÈ´ýͬһ½ø³Ì×éÖеÄÈκÎ×Ó½ø³Ì£¬Èç¹û×Ó½ø³ÌÒѾ¼ÓÈëÁ˱ðµÄ½ø³Ì×飬waitpid²»»á¶ÔËü×öÈκÎÀí²Ç ......
linux´®¿Ú±à³Ì£¨Òªµã×ܽᣩ ÊÕ²Ø
´®¿Ú±à³Ì
²éѯӲ¼þµÄ·½Ê½£º²éѯ·½Ê½¡¢ÖжϷ½Ê½¡¢DMA·½Ê½¡£´®¿ÚºÜ¶àÊÇʹÓÃÖжϷ½Ê½£¬ÕâÖÖ·½Ê½Ò»°ãÀ´½²¶ÔCPU±È½ÏÓÐЧ¡£
UARTµÄ²Ù×÷Ö÷Òª°üÀ¨ÒÔϼ¸¸ö²¿·Ö£º
Êý¾Ý·¢ËÍ£»Êý¾Ý½ÓÊÜ£»²úÉúÖжϣ»²úÉú²¨ÌØÂÊ£»Loopbackģʽ£»ºìÍâģʽ£»×Ô¶¯Á÷¿ØÄ£Ê½£»
´®¿Ú²ÎÊýµÄÅäÖÃÖ÷Òª°üÀ¨£º²¨ÌØÂÊ¡¢Êý¾Ýλ¡¢Í£Ö¹Î»¡¢Á÷¿ØÐÒé¡£
ÔÚlinuxϲÙ×÷´®¿ÚÓë²Ù×÷ÎļþÏàͬ¡£
ÔÚʹÓô®¿Ú֮ǰ±ØÐëÉèÖÃÏà¹ØÅäÖ㬰üÀ¨£º²¨ÌØÂÊ¡¢Êý¾Ýλ¡¢Ð£Ñéλ¡¢Í£Ö¹Î»µÈ¡£´®¿ÚÉèÖÃÓÉÏÂÃæ½á¹¹ÌåʵÏÖ¡£
Struct termios{
tcflag_t c_iflag; /* input flags */
tcflag_t c_oflag; /* output flags */
tcflag_t c_cflag; /* control flags */
  ......
Ò».linuxµÄÌØµã
1£©Ãâ·ÑµÄ/¿ªÔ´µÄ
2£©Ö§³Ö¶àÏß³Ì/¶àÓû§
3£©°²È«ÐÔºÃ
4£©¶ÔÄÚ´æºÍÎļþ¹ÜÀíÓÅÔ½
¶þ.ËÔÚͦlinux
IBM/Compaq/Novell/Oracle/Sun/NEC....
Èý.linux ×îСֻҪ4MÄÚ´æ -¡·Ç¶Èëʽ¿ª·¢
ËÄ.linux µÄ¹ÊÊÂ
1973£¬unix³öÏÖ¡£´ËʱwindowsÉÐδ³öÉú
Ô´ÂëÄں˹²Ïí -¡·IBMÍÆ³öaix£¬SUNÍÆ³ösolaris£¬HPÍÆ³öHP unix£¬²®¿ËÀû·ÖУ BSD
Minix -¡·Linux(×î³õÏë·¨°ÑMinixÒ»Ö±µ½PCÉÏ£¬91µ½94³öÏÖlinux1.0) ......
/bin ´æ·Å×î³£ÓõÄÃüÁ´ËĿ¼ÏµÄÃüÁîËùÓÐÓû§¶¼ÓÐÖ´ÐеÄȨÏÞ
/boot LinuxϵͳÒýµ¼Ä¿Â¼£¬´ËĿ¼±£´æÏµÍ³Æô¶¯Ê±µÄÄÚºËÎļþºÍÄÚºËÓ³ÏñÎļþ¼°Æô¶¯Ê±ËùÐèµÄÆäËüÎļþ
/dev É豸Îļþ£¬±£´æËùÓеÄÓ²¼þÉ豸Îļþ£¬ÈçÓ²ÅÌÉ豸Îļþ£¬ÈíÇý¡¢¹âÇýÉ豸ÎļþµÈµÈ
/etc ´æ·Å¸÷ÖÖ·þÎñµÄÅäÖÃÎļþ£¬Ï൱ÓÚWindows 2000µÄwinntĿ¼
/home ¸÷ÓÃËÞÖ÷Ŀ¼£¬Ï൱ÓÚWindows 2000µÄ“ÎÒµÄÎĵµ”
/lib ¸ÃĿ¼ÓÃÀ´´æ·Åϵͳ¶¯Ì¬Á´½Ó¹²Ïí¿â£¬¼¸ºõËùÓõÄÓ¦¸Ã³ÌÐò¶¼»áÓõ½¸ÃĿ¼ÏµĹ²Ïí¿â
/mnt ¹ÒÔØÄ¿Â¼£¬ÓÃÀ´ÁÙʱ¹ÒÔØ±ðµÄÎļþϵͳ»òÕß±ðµÄÓ²¼þÉ豸£¨Èç¹âÇý¡¢ÈíÇý£©
/proc ´ËĿ¼ÐÅÏ¢ÊÇÔÚÄÚ´æÖÐÓÉϵͳ×ÔÐвúÉúµÄ£¬´æ´¢ÁËһЩµ±Ç°µÄ½ø³ÌIDºÅºÍCPU¡¢ÄÚ´æµÄÓ³ÉäµÈ
/sbin ϵͳ¹ÜÀíÔ±ÃüÁî´æ·ÅĿ¼
/usr ×î´óµÄĿ¼£¬Óû§µÄºÜ¶àÓ¦¸Ã³ÌÐòºÍÎļþ¶¼´æ·ÅÔÚ´ËĿ¼ÏÂ
/usr/X1186 X-WindowsĿ¼£¬´æ·ÅһЩX-WindowsµÄÅäÖÃÎļþ
/usr/include ϵͳͷÎļþ£¬´æ´¢Ò»Ð©CÓïÑÔµÄÍ·Îļþ
/usr/src LinuxÄÚºËÔ´´ ......