Ê×Ò³ | Linux »ù´¡ | ×ÊѶ¶¯Ì¬ | Linux Ó¦Óà | Linux ·þÎñÆ÷ | Linux ¿ª·¢ | Linux °²È« | רÌâ | ÁªÃËÂÛ̳
  µ±Ç°Î»ÖãºÖ÷Ò³>Linux ¿ª·¢>Linux ǶÈëʽ>ÎÄÕÂÄÚÈÝ
ǶÈëʽLinuxÒÆÖ²ÊµÊ±É豸Çý¶¯³ÌÐò·ÖÎö½²½â
À´Ô´£ºhttp://www.unix5.com ×÷Õߣºriechelr_hl ·¢²¼Ê±¼ä£º2007-07-25  

Linux±©·çÓê°ãµØÕ¼ÁìÁËǶÈëʽϵͳÊг¡¡£¸ù¾Ý¹¤Òµ·ÖÎö¼Ò·ÖÎö£¬´óÔ¼1/3µ½1/2µÄеÄ32λºÍ64λǶÈëʽϵͳÉè¼Æ²ÉÓÃÁËLinux¡£Ç¶Èëʽ Linux ÒѾ­ÔںܶàÓ¦ÓÃÁìÓòÏÔʾ³öÓÅÊÆ£¬±ÈÈçSOHO¼ÒÍ¥ÍøÂçºÍ³ÉÏñ/¶à¹¦ÄÜÍâÉè,²¢ÔÚÒÔϼ¸·½Ãæ¾ß±¸¾Þ´óµÄ¿çԽʽ·¢Õ¹Ç°¾°£º(NAS/SAN)´æ´¢£¬¼ÒÍ¥Êý×ÖÓéÀÖ(HDTV/PVR/DVR/STB)ºÍÊÖ³ÖÉ豸/ÎÞÏßÉ豸£¬ÌرðÊÇÊý×ÖÒÆ¶¯µç»°¡£

еÄǶÈëʽLinuxÓ¦Óò»»áÏóÕÆÎÕÔÚÖǻۺ͹¤ÒÕÖ®Éñ-ÂÞÉñÊÖÖÐÄÇÑù£¬»áͻȻ´Ó¿ª·¢ÕßµÄÍ·ÄÔÖб¬·¢³öÀ´¡£´óÁ¿µÄÏîÄ¿±ØÐë²ÉÓÃÊýǧÐеģ¬ÉõÖÁÊý°ÙÍòÐеĹýÈ¥µÄÏֳɴúÂë¡£³É°ÙÉÏǧµÄǶÈëʽÏîÄ¿ÒѾ­³É¹¦µØ°ÑÆäËüƽ̨µÄÏֳɴúÂëÒÆÖ²µ½LinuxÖ®ÉÏ,±ÈÈçWind River VxWorks ºÍ pSOS, VRTX, Nucleus ºÍÆäËüRTOS £¬ÕâÐ©ÒÆÖ²¹¤×÷ÏÖÔÚÈÔÈ»ÓмÛÖµºÍÏÖʵÒâÒå¡£

µ½Ä¿Ç°ÎªÖ¹£¬´ó¶àÊýµÄ¹ØÓÚÒÆÖ²¾ÉµÄRTOSÓ¦Óõ½Ç¶ÈëʽLinuxµÄÎÄÏ×£¬ÒѾ­ÔÚ¹Ø×¢RTOS ½Ó¿Ú£¨API£©£¬ÈÎÎñ£¬µ÷¶ÈģʽºÍÈçºÎ°ÑËûÃÇÓ³Éäµ½ÏàÓ¦µÄÓû§¿Õ¼äÈ¥¡£ ÔÚǶÈëʽ³ÌÐòµÄÃܼ¯I/O¿Õ¼äÖУ¬Í¬ÑùÖØÒªµÄÊÇ£¬°ÑRTOSµÄÓ¦ÓÃÓ²¼þ½Ó¿Ú´úÂëÏò¾ßÓиü¼Ó¹æ·¶»¯Ä£Ê½µÄLinuxÉ豸Æô¶¯³ÌÐòµÄÒÆÖ²¡£

±¾ÎİÑ×ÝÀÀ¼¸ÖÖ³£ÓõÄÄÚ´æÓ³ÉäI/O·½·¨,ËüÃǾ­³£³öÏÖÓھɵÄǶÈëʽӦÓÃÖС£ËüÃǺ­¸ÇµÄ·¶Î§£¬°üÀ¨´Ó¶ÔÖжϷþÎñÀý³ÌµÄÌØÊâʹÓúÍÓû§Ï̶߳ÔÓ²¼þ·ÃÎÊ£¬µ½³öÏÖÓÚÓÐЩROTSÖÐµÄ°ë¹æ·¶»¯Çý¶¯³ÌÐòÄ£ÐÍ¡£Ëü¶ÔÓÚÒÆÖ²RTOS ´úÂëµ½¹æ·¶»¯Ä£Ê½µÄLinuxÉ豸Æô¶¯³ÌÐò¾ßÓÐÆô·¢ÐÔ£¬²¢ÇÒ½éÉÜÁËһЩ·½·¨¡£ÌØ±ðµØ£¬±¾ÎÄ»áÖØµãÌÖÂۺͱȽÏRTOS´úÂëÖеÄÄÚ´æÓ³É䣬Linux»ùÓÚI/Oµ÷¶È¶ÓÁеÄÒÆÖ²£¬ºÍÖØÐ¶¨ÒåRTOS I/O£¬ÒÔ±ãÔÚ±¾µØLinux Çý¶¯³ÌÐòºÍÊØ»¤½ø³ÌÀïÓ¦Óá£

RTOS I/O ¸ÅÄî

“²»¹æ·¶”ÊÇÄܹ»ÃèÊö´ó¶àÊýÔÚ»ùÓÚRTOSϵͳÀïµÄI/OµÄ×î¼Ñ´ÊÓï¡£´ó¶àÊýRTOSÕë¶Ô½ÏÔçµÄÎÞMMUµÄCPU¶øÉè¼Æ£¬ºöÂÔÁËÄÚ´æ¹ÜÀí£¬¼´Ê¹µ±MMUÎÊÊÀÒ²ÊÇÕâÑù£¬²»Çø·ÖÎïÀíµØÖ·ºÍÂß¼­µØÖ·¡£´ó¶àÊý RTOS»¹È«²¿ÔÚÌØÈ¨Ì¬£¨ÏµÍ³Ä£Ê½£©ÔËÐУ¬±íÃæÉÏ¿´ÔöÇ¿ÁËÐÔÄÜ¡£ÏñÕâÑù£¬È«²¿µÄRTOS Ó¦ÓúÍϵͳ´úÂë¶¼Äܹ»·ÃÎÊÕû¸ö»úÆ÷µØÖ·¿Õ¼ä£¬ÄÚ´æÓ³ÉäÉ豸ºÍI/OÖ¸Áʵ¼ÊÉÏ£¬°ÑRTOSÓ¦ÓóÌÐò´úÂëͬÇý¶¯³ÌÐò´úÂëÇø·Ö¿ª·Ç³£À§ÄÑ£¬¼´Ê¹ËüÃÇÊÇÓвî±ðµÄ¡£

Õâ¸ö²»¹æ·¶µÄ½á¹¹µ¼ÖÂÁËI/OµÄÌØÊâʵÏÖ¡£ÔںܶàÇé¿öÏ£¬Íêȫȱ·¦¶ÔÒ»ÖÖÉ豸Çý¶¯³ÌÐòÄ£Ð͵ÄÈÏͬ¡£¸ù¾ÝÕâÖÖ¹¤×÷µÄƽµÈºÍûÓзֲãµÄÌØÐÔ£¬»Ø¹ËÔÚ»ùÓÚRTOSÈí¼þÖÐʹÓõÄÒ»Ð©ÖØÒª¸ÅÄîºÍʵ¼ù·Ç³£ÓÐÖ¸µ¼ÒâÒå¡£

ÔÚÏßÄÚ´æÓ³Éä·ÃÎÊ

µ±ÔÚÉϸöÊÀ¼Í°ËÊ®Äê´úÖÐÆÚÉÌÒµ»¯µÄRTOS²úÆ·¿ÉÒÔÂòµ½µÄʱºò£¬´ó¶àÊýǶÈëʽÈí¼þ°üº¬¾Þ´óµÄÖ÷Ñ­»·£¬Ö÷Ñ­»·´øÓÐÕë¶ÔÑϸñʱ¼ä²Ù×÷µÄ×¢²áI/OºÍÖжϷþÎñÀý³Ì¡£¿ª·¢ÈËÔ±°ÑRTOSºÍÖ´ÐгÌÐòÉè¼Æ½øËûÃǵÄÏîÄ¿£¬Ö÷ҪΪÁ˼ÓǿͬʱÐԺͰïÖú¶àÈÎÎñͬ²½£¬µ«ÊDZܿªÆäËüÈκÎÓГ·Á°­“µÄ¹¹Ô졣ͬÑùµØ£¬¼´Ê¹Ò»¸öRTOSÌṩÁËI/O µ÷ÓÃÐÎʽ·½·¨£¬Ç¶Èëʽ³ÌÐòÔ±¼ÌÐøÊ¹ÓÃÖ±½ÓµÄI/O²Ù×÷:

 

#define DATA_REGISTER 0xF00000F5

char getchar(void) {

return (*((char *) DATA_REGISTER)); /* read from port */
}


void putchar(char c) {

*((char *) DATA_REGISTER) = c; /* write to port */
}

¶àÊýÊܹýѵÁ·µÄ¿ª·¢Õß³£³£°ÑÕâÑùµÄÖ±½ÓI/O´úÂë´ÓÓ²¼þ´úÂë¶ÀÁ¢·ÖÀ뿪¡£µ«ÊÇÎÒ»¹ÔøÓö¼û´óÁ¿µÄÒâ´óÀûÃæÌõʽµÄI/O´¦Àí´úÂë¡£

µ±ÆÕ±éÉîÈëʹÓÃÖ±½ÓÄÚ´æÓ³ÉäI/OµÄʱºò£¬¶ÔLinux¿ªÊ¼½Ó´¥µÄǶÈëʽ¿ª·¢ÈËÔ±×ÜÊÇÃæÁÙ°ÑËùÓеÄÕâÀà´úÂëÒÆÖ²µ½Óû§¿Õ¼ä£¬°Ñ¶¨Òå¼Ä´æÆ÷µØÖ·µÄ#define Óï¾äת»»³Émmap()µ÷ÓᣠÕâÖÖ´¦Àí·½·¨¶ÔÓÚһЩÖÖÀàµÄÔ­Ðͺܺ㬵«ÊDz»ÄÜÖ§³ÖÖжϴ¦Àí£¬ÏÞÖÆÁËʵʱÏìÓ¦£¬Ìر𲻰²È«£¬²»ÊʺÏ×÷ΪÉÌÒµ·¢²¼¡£

RTOS ÖжϷþÎñÀý³Ì

ÔÚ LinuxÖÐ, ÖжϷþÎñרÊôÓÚÄں˵ķ¶Î§¡£ ÔÚÒ»¸ö RTOSÖÐ, ÖжϷþÎñÀý³Ì´úÂëÊÇ×ÔÓÉÐÎ̬¶øÇÒÓëÓ¦ÓóÌÐò´úÂëûÓÐÇø±ð£¨²»Íâºõ·µ»ØÐòÁУ©¡£ºÜ¶à RTOSÌṩϵͳµ÷ÓûòÕߺ꣬À´ÈôúÂë×Ô¼º¼ì²âËü×Ô¼ºµÄÇл»µã£¨±ÈÈç Wind River VxWorksµÄ intContext()£©¡£ÖжϷþÎñÀý³Ìͨ³£Ò²Ê¹Óñê×¼µÄ¿âº¯Êý£¬°éËæ×Å¿ÉÖØÈëÐԺͿÉÒÆÖ²ÐÔÎÊÌâ¡£´ó¶àÊýRTOSÖ§³Ö×¢²áÖжϷþÎñÀý³Ì´úÂ룬ÖжÏÖٲþä±úºÍÖжϷþÎñÀý³Ìµ÷¶È¡£Ò»Ð©·Ç³£Ô­Ê¼µÄǶÈëʽִÐгÌÐò£¬½ö½öÖ§³ÖÔÚÓ²¼þʸÁ¿±íÀï²åÈëÖжϷþÎñÀý³ÌµÄ¿ªÊ¼µØÖ·¡£¼´Ê¹ÄãÊÔͼֱ½ÓÔÚÓû§³ÌÐò¿Õ¼äÖ´ÐжÁºÍдµÄ²Ù×÷£¬Äã²»µÃ²»°ÑÄãµÄLinuxÖжϷþÎñÀý³Ì·ÅÈëÄں˳ÌÐò¿Õ¼ä¡£

RTOS I/O ×Óϵͳ

´ó¶àÊýRTOS»áÌṩһ¸ö¶¨ÖƵıê×¼CÔËÐпâ (±ÈÈç pSOS µÄpREPC),»òÕß¿ÉÒÔ´Ó¶ÀÁ¢Èí¼þ¿ª·¢É̵ıàÒëÆ÷ÖÐÑ¡Ôñ´ò²¹¶¡µÄC¿â (libc) ͬÑù¿ÉÒԵõ½glibc¡£ÕâÑù,ÔÚ×îС»¯Çé¿öÏÂ,¶àÊýµÄ RTOSÖ§³Ö±ê×¼CÀàÐÍI/OµÄÒ»¸ö×Ó¼¯(open/close/read/write/ioctl)¡£ ´ó¶àÊýÇé¿öÏÂ,ÕâЩµ÷ÓúʹÓËûÃÇÑÜÉú³öÀ´µÄµ÷ÓÿÉÒÔת»¯ÎªÎ§ÈÆ»ù±¾I/OµÄ·Ç³£±¡µÄ·â×°³ÌÐò¡£ÓÐȤµÄÊÇ,ÒòΪ´ó¶àÊýµÄ?RTOS²»Ö§³ÖÎļþϵͳ,ÕâЩƽ̨²»ÌṩÕë¶ÔflashºÍÐýתýÖʵijéÏóÎļþ´æ´¢,³£³£Ê¹ÓÃÍêÈ«²»Í¬µÄ´úÂëºÍ/»òÕß²»Í¬µÄÓ¦ÓóÌÐò½Ó¿Ú(API) (±ÈÈç pSOS µÄpHILE)¡£

Wind River VxWorks ÔÚÕâ·½Ãæ±ÈÆäËü¶àÊýRTOSƽ̨×öµÄ½ÏºÃЩ,Ìṩ¹¦ÄܷḻµÄI/O×Ó¼¯,Ö÷Òª¿Ë·þÁËÍøÂç½Ó¿Ú/¶àýÌå½Ó¿ÚÀïµÄ¼¯³ÉºÍ¹ã·º»¯Õϰ­¡£

ÑÓʱ´¦Àí

ºÜ¶àRTOSÒ²Ö§³ÖÒ»ÖֽДϰ벿 “("bottom half" )µÄ»úÖÆ,ËüÕë¶Ô¿ÉÖжϺÍ/»òÕß¿ÉÇÀÕ¼Çл»µÄI/OÑÓʱ´¦Àí·½·¨¡£ÆäËûRTOSûÓÐÕâÑùµÄ»úÖÆ,µ«ÊÇÌæ´úµØÌṩÀàËÆÖжÏǶÌ׵ĻúÖÆÀ´»ñµÃͬÑùµÄЧ¹û¡£

¹²3Ò³: ÉÏÒ»Ò³ 1 [2] [3] ÏÂÒ»Ò³
 
Èç¹ûÄú¶Ô±¾ÎÄÓÐÈκÎÒÉÎÊ»òÕß½¨Ò飬Çëµ½ÂÛ̳ÌÖÂÛÇø·¢±íÄúµÄÒâ¼û: >> ÂÛ̳Èë¿Ú
[ÊÕ²Ø] [ÍÆ¼ö] [ÆÀÂÛ(0Ìõ)] [·µ»Ø¶¥²¿] [´òÓ¡±¾Ò³] [¹Ø±Õ´°¿Ú]  
  ÈȵãÎÄÕÂ
¡¤Ç¶ÈëʽLinuxϵͳÏÂͼÐο⽲½â¼°
¡¤Qt/EmbeddedÔÚǶÈëʽLinuxÖеÄÓ¦
¡¤Ç¶ÈëʽLinux£ºuClinux²Ù×÷ÏµÍ³ÒÆ
¡¤Ç¶Èëʽϵͳ Boot Loader ¼¼ÊõÄÚ
¡¤Ç¶Èëʽ Óû§Í¼ÐνӿÚuC/GUIµÄ¼ò
¡¤»ùÓÚGTK+ºÍXµÄGUIÔÚǶÈëʽLinux
¡¤Ç¶ÈëʽLinuxϵͳϵÄMiniGUIÑо¿
¡¤Linux´®¿ÚÉÏÍøµÄ¼òµ¥ÊµÏÖ (ͼ½â)
¡¤ÔÚUbuntuÉϽ¨Á¢Arm LinuxµÄ¿ª·¢
¡¤Ç¶ÈëʽLinux²Ù×÷ϵͳÆô¶¯ÐÅÏ¢Íê
¡¤Linux 2.6 Äں˵ÄǶÈëʽϵͳӦÓÃ
¡¤Ç¶ÈëʽLinuxÔÚBlackfin´¦ÀíÆ÷ÉÏ
  Ïà¹ØÎÄÕÂ
¡¤Îĵµ·ÖÎö__ǶÈëʽLinuxÔÚÍøÂç´¦
¡¤Ç¶ÈëʽLinuxϵͳµÄµÍ¹¦ºÄ²ßÂÔÑÐ
¡¤Ò»ÖÖǶÈëʽLinuxƽ̨µÄÈíÓ²¼þÉè
¡¤Qt/EmbeddedÔÚǶÈëʽLinuxÖеÄÓ¦
¡¤Ç¶ÈëʽLinuxϵͳϵÄMiniGUIÑо¿
¡¤Ç¶ÈëʽLinuxϵͳÏÂͼÐο⽲½â¼°
¡¤Ç¶ÈëʽLinux²Ù×÷ϵͳÃû´Ê×ÊÔ´½²
¡¤Sharp Zaurus ÊÖ³ÖʽϵͳÊÇǶÈë
¡¤Linux 2.6 Äں˵ÄǶÈëʽϵͳӦÓÃ
¡¤»ùÓÚǶÈëʽLinuxµÄPMPϵͳÉè¼ÆÓë
¡¤Ç¶ÈëʽLinuxµÄDiskOnChipÉ豸Çý
¡¤Ç¶ÈëʽLinuxϵͳµÄ´¥ÃþÆÁÇý¶¯¿ª

±¾Õ¾ÐÅÏ¢Ô´ÖÁ:»¥ÁªÍøÂç,¾ùΪѧϰ,½»Á÷ËùÓÃ,ÈçÓаæÈ¨ÎÊÌâ,ÇëÁªÏµÎÒÃÇ.
Õ¾³¤QQ:397422079 E_mail:riechelr_hl@unix5.com
×ªÔØ±¾Õ¾ÄÚÈÝÇë×¢Ã÷Ô­×÷ÕßÃû.лл!