LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç11 ÄÚ´æÓëI/O·ÃÎÊ
typedef void (*lpFunction) ();//¶¨ÒåÒ»¸öÎÞ²ÎÊý£¬ÎÞ·µ»ØÀàÐ͵ĺ¯ÊýÖ¸ÕëÀàÐÍ
//¶¨ÒåÒ»¸öº¯ÊýÖ¸Õ룬ָÏòcpuÆô¶¯ºóËùÖ´ÐеĵÚÒ»ÌõÖ¸ÁîµÄλÖÃ
lpFunction lpReset = (lpFunction)0xF000FFF0;
lpReset();//µ÷Óú¯Êý
MMUÍ£¹©ÐéÄâµØÖ·ºÍÎïÀíµØÖ·µÄÓ³Éä¡¢ÄÚ´æ·ÃÎÊȨÏÞ±£»¤ºÍCache»º´æ¿ØÖƵÈÓ²¼þÖ§³Ö¡£²Ù×÷ϵͳÄں˽èÖúMMU£¬¿ÉÒÔÈÃÓû§¸Ð¾õµ½ºÃÏñ³ÌÐò¿ÉÒÔʹÓ÷dz£´óµÄÄÚ´æ¿Õ¼ä£¬´Ó¶øÊ¹µÃ±à³ÌÈËÔ±ÔÚд³ÌÐòʱ²»Óÿ¼ÂǼÆËã»úµÄÎïÀíÄÚ´æµÄʵ¼ÊÈÝÁ¿
Èçͼ£¬µ±ARMÒª·ÃÎÊ´æ´¢Æ÷ʱ£¬MMUÏȲéÕÒTLBÖеÄÐéÄâµØÖ·±í¡£Èç¹ûARMµÄ½á¹¹Ö§³Ö·Ö¿ªµÄÊý¾ÝTLB£¨DTLB£©ºÍÖ¸ÁîTLB£¨ITLB£©£¬Ôò³ýÈ¥Ö¸ÁîʹÓõÄITLBÍ⣬ÆäËûµÄ¶¼ÊÇÓÃDTLB
ÈôTLBÖÐûÓÐÐéÄâµØÖ·µÄÈë¿Ú£¬Ôòת»»±í±éÀúÓ²¼þ´Ó´æ·ÅÓÚÖ÷´æ´¢Æ÷ÖеÄת»»±íÖлñÈ¡µØÖ·×ª»»ÐÅÏ¢ºÍ·ÃÎÊȨÏÞ£¨¼´Ö´ÐÐTTW£©£¬Í¬Ê±½«ÕâЩÐÅÏ¢·ÅÈëTLB£¬Ëü»òÕß±»·ÅÔÚÒ»¸öûÓÐʹÓõÄÈë¿Ú»òÕßÌæ»»Ò»¸öÒѾ´æÔÚµÄÈë¿Ú¡£Ö®ºó£¬ÔÚTLBÌõÄ¿ÖпØÖÆÐÅÏ¢µÄ¿ØÖÆÏ£¬µ±·ÃÎÊȨÏÞÔÊÐíʱ£¬¶ÔÕæÊµÎïÀíµØÖ·µÄ·ÃÎʽ«ÔÚCache»òÕßÔÚÄÚ´æÖз¢Éú
Óû§¿Õ¼ä0-3GB£¬Äں˿ռä3-4GB£¬Óû§½ø³Ìͨ³£Çé¿öÏÂÖ»ÄÜ·ÃÎÊÓû§¿Õ¼äµÄÐéÄâµØÖ·£¬²»ÄÜ·ÃÎÊÄں˿ռäÐéÄâµØÖ·¡£Óû§½ø³ÌÖ»ÄÜͨ¹ýϵͳµ÷Óõȷ½Ê½²ÅÄÜ·ÃÎʵ½Äں˿ռä
ÿ¸ö½ø³ÌµÄÓû§¿Õ¼ä¶¼ÊÇÍêÈ«¶ÀÁ¢¡¢»¥²»Ïà¸ÉµÄ£¬Óû§½ø³Ì¸÷×ÔÓв»Í¬µÄÒ³±í¡£¶øÄں˿ռäÊÇÓÉÄں˸ºÔðÓ³É䣬Ëü²¢²»»á¸ú׎ø³Ì¸Ä±ä£¬Êǹ̶¨µÄ¡£ÄÚºË¿Õ¼äµØÖ·ÓÐ×Ô¼º¶ÔÓ¦µÄÒ¶±í£¬Äں˵ÄÐéÄâ¿Õ¼ä¶ÀÁ¢ÓÚÆäËû³ÌÐò
LinuxÖеÄ1GBÄں˵ØÖ·¿Õ¼äÓÖ±»»®·ÖΪÄÚ´æÓ³ÉäÇø£¬ÐéÄâÄÚ´æ·ÖÅäÇø¡¢¸ß¶ËÒ³ÃæÓ³ÉäÇø¡¢×¨ÓÃÒ³ÃæÓ³ÉäÇøºÍϵͳ±£ÁôÓ³ÉäÇø
void kmalloc(size_t size, int flags);
µÚ¶þ¸ö²ÎÊýΪ·ÖÅä±êÖ¾£¬ÓÃÓÚ¿ØÖÆkmallocµÄÐÐΪ£¬×îͨ³£ÓõķÖÅä±êÖ¾ÊÇGFP_KERNEL£¬Æäº¬ÒåÊÇÔÙÄں˿ռäµÄ½ø³ÌÖÐÉêÇëÄÚ´æ¡£KmallocµÄµ×²ãÒÀÀµ__get_free_pages()ʵÏÖ£¬GFPÕýºÃÊÇÕâ¸öº¯ÊýµÄËõд£¬Ê¹ÓÃGFP_KERNEL±êÖ¾ÉêÇëÄÚ´æÊ±£¬ÈôÔÝʱ²»ÄÜÂú×㣬Ôò½ø³Ì»á˯ÃߵȴýÒ³£¬¼´ÒýÆð×èÈû£¬Òò´Ë²»ÄÜÔÚÖжÏÉÏÏÂÎÄ»ò³ÖÓÐ×ÔÐýËøµÄʱºòʹÓô˱êÖ¾ÉêÇëÄÚ´æ
ÔÚÖжϴ¦Àíº¯Êý¡¢taskletºÍÄں˶¨Ê±Æ÷µÈ·Ç½ø³ÌÉÏÏÂÎÄÖв»ÄÜ×èÈû£¬´ËʱÇý¶¯Ó¦¸ÃʹÓÃGFP_ATOMIC±êÖ¾À´ÉêÇ룬Èô²»´æÔÚ¿ÕÏÐÒ³£¬Ö±½Ó·µ»Ø
__get_free_pages()£º
´ËϵÁк¯Êý°üÀ¨£º
get_zeroed_page(unsigned int flags)£»
·µ»ØÒ»¸öÖ¸ÏòÐÂÒ³µÄÖ¸Õë²¢ÇÒ½«¸ÃÒ³ÇåÁã
__get_free_page(unsigned int flags)
¸Ãºê·µ»ØÒ»
Ïà¹ØÎĵµ£º
Author-------Dansen-----xzd2734@163.com
wait_queue_head_t wait_q;
Ê×ÏÈ¿´¿´
wait_queue_head_tÕâ¸öµÈ´ý¶ÓÁеĽṹ
ÔÚwait.hÖж¨ÒåÁËÕâ¸ö½á¹¹
typedef struct
__wait_queue_head wait_queue_head_t;
struct __wait_queue_head {
wq_lock_t
lock;
struct list_head task_list;
};
# define wq_ ......
Ò»¡¢ÏÂÔØVMwareÈí¼þ²¢°²×°
¶þ¡¢¹âÅÌ.iso·½Ê½°²×°linux
Èý¡¢¹²ÏílinuxºÍwindowsĿ¼
ËÄ¡¢½«"±¾µØÁ¬½Ó"ÉèΪ¹²Ïí·½Ê½£¬½ûÖ¹ÆäËûÐéÄâ»úÁ¬½Ó
´ò¿ªÐéÄâ»úÔÚÐéÄâ»ú±à¼ÖÐÉèÖÃΪ'ÇŽÓ"·½Ê½;
²¢Ñ¡ÖÐDevice statusϵÄÁ½ÏֻËùÒÔÓÃÇŽӷ½Ê½²»ÓÃhost-only·½Ê½ÉÏÍøÊÇÒòΪ
ÔÚÓ÷ÓÉÆ÷ʱhost-onl ......
ʱ¼ä¼ä¸ô¶¨Ê±Æ÷
interval timer(ʱ¼ä¼ä¸ô¶¨Ê±Æ÷)ϵͳµ÷ÓÃ×Ô´Ó±»POSIX±ê×¼»¯ºó£¬Ê״γöÏÖÓÚ4.2BSD£¬Äܹ»Ìṩ±Èalarm()»¹¶àµÄ¿ØÖÆ£º
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
interval ti ......
½ñÌìÔÚÐéÄâ»úÏÂÓÖ֨װÁËlinux£¬ÏÂÃæÊÇ´ÓÍøÉÏËѵ½µÄlinuxÐéÄâ»úµÄÍøÂçÅäÖãº
1¡¢ Äã×°ºÃÐéÄâ»úºó,Äã»á·¢ÏÖ¶à³öÀ´Á½¸öÍø¿¨ ,Ò»¸ö1,Ò»¸ö8,
2¡¢ ¹²Ïí¶ÔÍâµÄÍø¿¨£º“±¾µØÁ¬½Ó—ÊôÐÔ—¸ß¼¶” Ñ¡ÖÐ
ÔÊÐíÆäËûÍøÂçÓû§Í¨¹ý´Ë¼ÆËã»úµÄInternetÁ¬½ÓÀ´Á¬½Ó
£¨Õâʱ“ÔÊÐíÆäËûÍ ......
´¦ÀíÆ÷µÄ·ÖÀ࣬ÈçÏÂͼËùʾ£º
´æ´¢Æ÷¿É·ÖΪֻ¶Á´æ´¢Æ÷£¨ROM£©¡¢ÉÁ´æ£¨Flash£©¡¢Ëæ»ú´æÈ¡´æ´¢Æ÷£¨RAM£©¡¢¹â½éÖÊ´æ´¢Æ÷ºÍ´Å½éÖÊ´æ´¢Æ÷
Nor FlashºÍcpuµÄ½Ó¿ÚÊôÓÚµäÐ͵ÄÀàSRAM½Ó¿Ú£¬²»ÐèÒªÔö¼Ó¶îÍâµÄ¿ØÖƵç·¡£Nor FlashµÄÌØµãÊÇ¿ÉоƬÄÚÖ´ÐУ¬³ÌÐò¿ÉÒÔÖ±½ÓÔÚNorÄÚÔËÐС£¶øNand FashºÍcpuµÄ½Ó¿Ú±ØÐëÓÉÏàÓ¦µÄ¿ØÖƵç·½øÐÐת»»£ ......