Linux device driver 3 ±Ê¼Ç Ö® ÄÚ´æÓ³Éä
½ñÌì×Ô¼ºÑ§Ï° LinuxÉ豸Çý¶¯³ÌÐò µÚÈý°æ µÚ15Õ ÄÚ´æÓ³ÉäºÍDMA. ¸Ð¾õÓеã³ÔÁ¦¡£Ö÷ÒªÊǶÔÄÚ´æÓ³ÉäºÜ¶àÊõÓïºÍ¸ÅÄî²»ÊǺÜÇå³þ£¬Àí½âÆðÀ´Óеã·Ñ¾¢¡£
ºóÀ´½áºÏÓ¢ÎÄ԰棬¾²ÏÂÐÄÀ´×Ðϸѧϰ£¬²ÅËãÊÇÓÐÁËÒ»µã½øÕ¹¡£
ÏÖÔÚÔÚÕâÀï×öÒ»¸ö±Ê¼Ç£¬ÒÔ±¸ÒÔºó¸´Ï°Óá£
µÍ¶ËÄÚ´æºÍ¸ß¶ËÄÚ´æ
ÊéÖеÄͼ15-1ÓеãÎóµ¼ÈË¡£Í¼Öн« ÄÚºËÐéÄâµØÖ· ºÍ ÄÚºËÂß¼µØÖ· ·Ö¿ªÁË¡£ÆäʵӦ¸ÃÊDz¢ÔÚÒ»ÆðµÄ¡£
ÄÚºËÐéÄâµØÖ· ÊÇ ÄÚºËÂß¼µØÖ· µÄÒ»¸ö³¬¼¯¡£ ËùÓеÄÄÚºËÂß¼µØÖ·¶¼ÊÇÄÚºËÐéÄâµØÖ·¡£ µ«ÄÚºËÐéÄâµØÖ·²»Ò»¶¨ÊÇÄÚºËÂß¼µØÖ·¡£
ÔÚ32λϵͳÖУ¬ÓÃ32λ×î´óÄܱíʾ4GÄÚ´æ¡£Õâ4G¾ÍÐγÉÁËÐéÄâµØÖ·µÄ·¶Î§¡£Äں˽«Õâ4G×öÁËÒ»¸ö»®·Ö¡£
Ò»°ã½«3G»®¸øÓû§¿Õ¼ä£¬1G»®¸øÄں˿ռ䡣Õâ1G¾ÍÊÇËùνµÄÄں˵ØÖ·¿Õ¼ä¡£Ò²¾ÍÊÇ1GÄÚºËÐéÄâµØÖ·¡££¨×¢ÒâÇ°ÃæËµÁË£¬ÄÚºËÐéÄâµØÖ·ÊÇÄÚºËÂß¼µØÖ·µÄ³¬¼¯£©
ÄÚºËÖ»ÄÜ·ÃÎÊÕâ1GµÄÄں˵ØÖ·¿Õ¼ä¡£¶ÔËùÓÐÎïÀíÄÚ´æµÄ·ÃÎÊ£¬¶¼±ØÐëÓ³Éäµ½Õâ1GÄں˵ØÖ·¿Õ¼ä¡£
ÔÚÕâ1GÄں˵ØÖ·¿Õ¼äÖУ¬ÓÐÒ»²¿·ÖµØÖ·ÊÇÓëÎïÀíµØÖ·¾ßÓÐÒ»Ò»¶ÔÓ¦¹ØÏµµÄ£¬ËûÃÇÖ®¼äÖ»²»¹ýÊDzîÁËÒ»¸ö¹Ì¶¨µÄÆ«ÒÆÁ¿¡£
Õⲿ·ÖµØÖ·¾ÍÊÇÄÚºËÂß¼µØÖ·ÁË¡£Ò²¾ÍÊÇ˵ÄÚºËÂß¼µØÖ·ÓëÎïÀíÄÚ´æµÄÓ³ÉäÊÇÏßÐԵġ£
¶øÓëÄÚºËÂß¼µØÖ·¶ÔÓ¦µÄÎïÀíÄڴ棬»òÕß˵ͨ¹ýÄÚºËÂß¼µØÖ·Ó³Éäµ½ÎïÀíÄڴ棬¾ÍÊÇËùνµÄµÍ¶ËÄÚ´æ¡£
Ç°ÃæËµÁË£¬Äں˵ØÖ·¿Õ¼äÖ»ÓÐ1G£¬ÄÇÆäÖеÄÄÚºËÂß¼µØÖ··¶Î§Ò»¶¨»áÂÔСÓÚ1G¡£ÄÇÔÚÅäÖÃÁ˺ܴóÄÚ´æµÄϵͳÖУ¨³¬¹ý1G£©£¬Óв¿·ÖÄÚ´æ¾Í¿Ï¶¨ÎÞ·¨Í¨¹ýÄÚºËÂß¼µØÖ·À´Ö±½ÓÓ³Éä¡£
Õⲿ·ÖÎÞ·¨Í¨¹ýÄÚºËÂß¼µØÖ·À´Ö±½ÓÓ³ÉäµÄÄÚ´æ¾ÍÊÇ ¸ß¶ËÄÚ´æ¡£
ÄÚºËÖ»ÄÜͨ¹ý×Ô¼ºµÄ1GµÄÄں˵ØÖ·¿Õ¼äÀ´·ÃÎÊÄÚ´æ¡£ÄÇÒª·ÃÎÊÕâЩ¸ß¶ËÄڴ棬¾Í±ØÐë½øÐбØÒªµÄÓ³Éä¡£°Ñ¸ß¶ËÄÚ´æÓ³Éäµ½Äں˵ØÖ·¿Õ¼ä·¶Î§ÄÚ¡£
ÒýÓÃLinux device driver Ò»Êé µÚÈý°æ µÚ15Õ ÖÐ kmap() º¯ÊýµÄ½éÉÜ£º
¶ÔÓڸ߶ËÄڴ棬kmapÔÚרÓõÄÄں˵ØÖ·¿Õ¼ä´´½¨ÌØÊâµÄÓ³Éä¡£¶Ô¸ÃÖÖÓ³ÉäµÄÊýÁ¿ÊÇÓÐÏ޵ġ£
Ò²¼´ÊÇ˵£¬ÄÚºËÔÚÄں˵ØÖ·¿Õ¼ä£¨1G£©Öл®·Ö³öÒ»²¿·Ö£¬×¨ÃÅÓÃÀ´Ó³Éä¸ß¶ËÄÚ´æ¡£
µÈÓÚ˵£¬Õⲿ·ÖÄں˵ØÖ·¿Õ¼äµÄµØÖ·ÊÇËùÓи߶ËÄÚ´æ¹²ÏíµÄ¡£ÒªÓõÄʱºò£¬Í¨¹ýkmap½øÐÐÓ³É䣬ÓÃÍêÁË£¬Í¨¹ýkunmap·µ»¹¡£
ÄÚ´æÓ³Éä ºÍ page struct
Ìáµ½page£¬Ïëµ½µÄÓ¦¸ÃÊÇÎïÀíÄÚ´æ¡£¿ÉÒÔ°ÑpageÀí½â³ÉÎïÀíÄÚ´æµÄÒ»¸öµ¥Î»¡£Äں˲»ÊÇÒÔ×Ö½ÚΪµ¥Î»À´¹ÜÀíÄÚ´æµÄ£¬¶øÊÇÒÔҳΪµ¥Î»À´¹ÜÀíÄÚ´æµÄ¡£
ËùÓеÄpage£¬¶¼ÊÇÖ¸ÎïÀíÄÚ´æ¡£
ÒòΪÄں˵ØÖ·¿Õ¼äÎÞ·¨Ö±½Ó±íʾËùÓеÄÎïÀíÄڴ棬ËùÒÔ½öͨ¹ýÒ»¸öÄÚ´æµØÖ·ÎÞ·¨´ú±íÒ»¸ö
Ïà¹ØÎĵµ£º
http://blog.chinaunix.net/u/24474/showart_227121.html
Çý¶¯³ÌÐòʹÓÃtasklet»úÖÆ
ת×Ô£ºhttp://blog.chinaunix.net/u/15169/showart.php?id=82989
Çý
¶¯³ÌÐòÔÚ³õʼ»¯Ê±£¬Í¨¹ýº¯Êýtask_init½¨Á¢Ò»¸ötasklet£¬È»ºóµ÷Óú¯Êýtasklet_schedule½«Õâ¸ötasklet·ÅÔÚ
tasklet_vecÁ´±íµÄÍ·²¿£¬²¢»½ÐѺǫ́Ïß³Ìksoftirqd¡£µ±ºóÌ¨Ï ......
http://hi.baidu.com/j_fo/blog/item/55f4014f1a226937aec3ab01.html
Linux Kernel Thread µÄÌÖÂÛ
2007-05-14 11:45
kernel thread
Gearheads Written by Sreekrishnan Venkateswaran
Thursday, 15 September 2005
Threads are programming abstractions used in concurrent processing. A ke ......
7.5. Tasklets »úÖÆ
ÉÏÒ»Ò³
µÚ 7 Õ ʱ¼ä, ÑÓʱ, ºÍÑÓºó¹¤×÷
ÏÂÒ»Ò³
http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html
Linux É豸Çý¶¯ Edition 3
7.5. Tasklets »úÖÆ
ÁíÒ»¸öÓйØÓÚ¶¨Ê±ÎÊÌâµÄÄÚºËÉèÊ©ÊÇ tasklet »úÖÆ. Ëü´ó²¿·ÖÓÃÔÚÖжϹÜÀí(ÎÒÃǽ«ÔÚµÚ 10 ÕÂÔٴμûµ½). ......
´óÖÂÃüÁîÈçÏ£º
tar xvfj lichuanhua.tar.bz2
tar xvfz lichuanhua.tar.gz
tar xvfz lichuanhua.tgz
tar xvf lichuanhua.tar
unzip & ......