Linuxѧϰ±Ê¼ÇÁãÁãÈý
´æ´¢¹ÜÀí
MMUÓëÄÚºËÄÚ´æ¹ÜÀíµÄ¹Øϵ
´ÓÏßÐÔµØÖ·µ½ÎïÀíµØÖ·µÄÓ³É䣬ͨ¹ýҳĿ¼±íºÍÒ³±íÀ´ÊµÏֵġ£
ÄÚºËΪ´æ´¢¹ÜÀíά»¤ÁËÒ»Ì׸´ÔÓµÄÊý¾Ý½á¹¹£¬Ò³Ä¿Â¼±íºÍÒ³±íÊÇÖ÷ÒªµÄ½á¹¹Ö®Ò»¡£ÕâЩ±íÒ²ÊÇ´æ´¢ÔÚÎïÀíÄÚ´æÒ³ÃæÖеģ¬Òò´Ë£¬Ò²ÊÇÒÔ4KΪµ¥Î»¡£
±íÖеÄÿ¸ö±íÏ¼Ç¼ÁËÒ»¸ö32λµÄµØÖ·£¬Îª4¸ö×Ö½Ú£¬Òò´Ë£¬Ò»¸ö±íÖÐ×î¶à¿ÉÒÔÓÐ1KÏÕâÒ²ÊÇÏßÐÔµØÖ·»®·ÖµÄÒÀ¾Ý¡£
32λµÄÏßÐÔµØÖ·»®·ÖΪ3²¿·Ö¡£×î¸ß10λ´ú±íҳĿ¼±íµÄË÷Òý¡£½ô½Ó×ŵÄ10λ¶ÔÓ¦Ò³±íµÄË÷Òý¡£×îºó12λ¶ÔÓ¦Ò³ÄÚµÄÆ«ÒƵØÖ·¡£
MMUÓëÄÚºËÄÚ´æ¹ÜÀíµÄ·Ö¹¤ºÍÐ×÷£º
MMU´ÓÓ²¼þÉÏʵÏÖÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄÓ³Éä¡£Äں˵ÄÄÚ´æ¹ÜÀíʵÏÖ¶ÔһϵÁÐÊý¾Ý½á¹¹µÄά»¤ºÍ¹ÜÀí¡£
ÔÚϵͳÆô¶¯Ê±£¬ÄÚºËΪÿһ¸ö4KµÄÎïÀíÄÚ´æÒ³Ãæά³ÖÒ»¸ö½ÐpageµÄÊý¾Ý½á¹¹£¬Õâ¸öÊý¾Ý½á¹¹ÊÇÿһ¸öÎïÀíÄÚ´æÒ³ÃæµÄID¡£ÄÚºËά³ÖÁËÒ»¸ö½ÐMem_pageµÄ½á¹¹ÌåÊý×飬¼Ç¼ÁËËùÓеÄpage¡£²¢ÒýÈëÁ˹ÜÀíÇøµÄ¸ÅÄ¶ÔDMA¡¢¸ßµØÖ·ÇøºÍÕý³£Çø½øÐÐÁË·ÖÀà¡£
ÔÚÆô¶¯½ø³Ìʱ£¬ÄÚºËΪ½ø³ÌµÄÓû§¿Õ¼ä×öÁ˳õʼ»¯£¬ÕâЩ³õʼ»¯¹¤×÷°üÀ¨¶ÑÕ»Çø¡¢¾²Ì¬Êý¾ÝÇø¡¢È«¾ÖÊý¾ÝÇø¡¢´úÂëÇø¡£²¢³õʼ»¯ÁËÒ»Ì׽ṹÀ´Î¬³ÖÕâЩ״̬£¬Í¨¹ý»®·ÖÐéÄâÇø¼äÀ´¼Ç¼¡£
´ËÍ⣬Äں˻¹¹¹½¨ÁËҳĿ¼±í¡¢Ò³±íµÈ½á¹¹£¬²¢½«Ò³Ä¿Â¼±íµÄµØÖ··ÅÈëÌض¨µÄ¼Ä´æÆ÷¡£
µ±Äں˳õʼ»¯Íê±Ïºó£¬¿ªÊ¼Ö´ÐÐÓû§½ø³ÌµÄ´úÂ룬MMU¿ªÊ¼µØַת»»£¬MMU´ÓÌض¨µÄ¼Ä´æÆ÷ÖÐÈ¡³öҳĿ¼±íµÄµØÖ·£¬¸ù¾ÝÏßÐÔµØÖ·£¬²éѯҳĿ¼±íºÍÒ³±í£¬×îÖÕ·ÃÎÊpage½á¹¹¡£Èç¹ûҳĿ¼±íºÍÒ³±íÖÐûÓжÔÓ¦µÄ±íÏ¾Í˵Ã÷ûÓÐÓ³ÉäºÃ¡£Èç¹ûÒ³ÄÚ´æ½á¹¹pageÖеıêʶλ±íʾËü²»ÔÚÄÚ´æÖУ¬¾ÍÐèÒª½«¶ÔÓ¦µÄÎïÀíÒ³Ãæµ¼ÈëÎïÀíÄÚ´æÒ³Ãæ¡£ÕâÁ½ÖÖÇé¿öÊÇÈçºÎ´¦ÀíµÄÄØ£¿Í¨¹ýÒì³£¡£
µ±³öÏÖÒÔÉÏÁ½ÖÖÇé¿öʱ£¬MMU»á·¢³öpage faultÒì³££¬ÓÉÄں˵ĶÔÓ¦µÄÒì³£´¦Àí³ÌÐòÀ´´¦Àí¡£
ÔÚÒì³£´¦Àí³ÌÐòÖУ¬¸ÃÓ³ÉäµÄÓ³É䣬¸Ãµ¼ÈëÄÚ´æµÄµ¼ÈëÄڴ棬´¦ÀíÍêºó£¬MMU¾Í¿ÉÒÔ¼ÌÐøµØַת»»ÁË¡£
Äں˻¹ÒªÏìÓ¦Óû§½ø³ÌÖеÄϵͳµ÷Ó㬱ÈÈç·ÖÅä¶Ñ¿Õ¼ä£¬±ÈÈçдÎļþ£¬½øÐÐIO²Ù×÷¡£ÔÚÕâЩ¹ý³ÌÖУ¬ÄÚºËÐèÒª¶ÔÏàÓ¦µÄ½á¹¹Ìå½øÐÐÐ޸ģ¬»òÕß²Ù×÷ÎïÀíÒ³Ãæ¡£
Ö÷ÒªµÄ½á¹¹ÌåÁªÏµÍ¼£º
task_struct----->mm_struct---->vm_area_struct
|---->pgd---->pte
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌṩÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
¹«Ë¾ÓиöÓÃARM940T×öµÄÊÖ³Öʽ²úÆ·£¬ÎÒÃÇÒÆÖ²ÁËÒ»¸öuClinuxÉÏÈ¥£¬ÏµÍ³»¹ÊÇÔËÐв»´íµÄ¡£
ÒòΪûÓдøÍø¿Ú£¬Ö»ÓÐUSBת´®¿Ú¿ÉÒÔʹÓã¬ËùÒÔÏëÑ°ÕÒÒ»¸öÎȶ¨µÄ´«Êä;¾¶£¬ÔÚhostºÍdeviceÖ®¼ä½»»»Îļþ¡£ÎÊÁ˺ܶàÈ˶¼²»Çå³þ£¬»¹ÊÇÒª¿¿×Ô¼ºÕÒ½â¾ö·½·¨¡£
ÔÚgoogleÉÏÕÒÁË°ëÌ죬ÖÕÓÚÕÒµ½ÁËÒ»¸ö¿ÉÒÔͨ¹ý´®¿Ú´«ËÍÎļþµÄÈí¼þ£¬Õâ¾ÍÊǹŶ¼ ......
/***********************************
*
*client.c
*
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sy ......