uC/OS-IIÊÇÒ»¸ö¼ò½à¡¢Ò×ÓõĻùÓÚÓÅÏȼ¶µÄǶÈëʽÇÀռʽ¶àÈÎÎñʵʱÄںˡ£¾¡¹ÜËü·Ç³£¼òµ¥£¬µ«ÊÇËüµÄÈ·Ôںܴó³Ì¶ÈÉϽâ·ÅÁËÎÒµÄǶÈëʽ¿ª·¢¹¤×÷¡£¼ÈÈ»ÊÇÒ»¸ö²Ù×÷ϵͳÄںˣ¬ÄÇôһµ©Ê¹ÓÃËü£¬¾Í»áÉæ¼°µ½ÈçºÎ»ùÓÚ²Ù×÷ϵͳÉè¼ÆÓ¦ÓÃÈí¼þµÄÎÊÌâ¡£
1. uC/OS-IIµÄÈÎÎñ¿ò¼Ü
void task_xxx(void *pArg)
{
/* ¸ÃÈÎÎñµÄ³õʼ»¯¹¤×÷ */
¡¡
/* ½øÈë¸ÃÈÎÎñµÄËÀÑ»· */
while(1)
{
¡¡
}
}
ÿ¸öÓû§µÄÈÎÎñ¶¼±ØÐë·ûºÏʼþÇý¶¯µÄ±à³ÌÄ£ÐÍ£¬¼´uC/OS-IIµÄÓ¦ÓóÌÐò¶¼±ØÐëÊÇ¡°Ê¼þÇý¶¯µÄ±à³ÌÄ£ÐÍ¡±¡£Ò»¸öÈÎÎñÊ×ÏȵȴýÒ»¸öʼþµÄ·¢Éú£¬Ê¼þ¿ÉÒÔÊÇϵͳÖжϷ¢³öµÄ£¬Ò²¿ÉÒÔÊÇÆäËüÈÎÎñ·¢³öµÄ£¬ÓÖ¿ÉÒÔÊÇÈÎÎñ×ÔÉíµÈ´ýµÄʱ¼äƬ¡£µ±Ò»¸öʼþ·¢ÉúÁË£¬ÈÎÎñÔÙ×÷ÏàÓ¦´¦Àí£¬´¦Àí½áÊøºóÓÖ¿ªÊ¼µÈ´ýÏÂÒ»¸öʼþµÄ·¢Éú¡£Èç´ËÖܶø¸´Ê¼µÄÈÎÎñ´¦ÀíÄ£Ð;ÍÊÇ¡°Ê¼þÇý¶¯µÄ±à³ÌÄ£ÐÍ¡±¡£Ê¼þÇý¶¯Ä£ÐÍÒ²º¸ÇÁËÖжÏÇý¶¯Ä£ÐÍ£¬uC/OS-IIʼþ¹é¸ù½áµ×À´×ÔÈý¸ö·½Ã棺
(1)ÖжϷþÎñº¯Êý·¢Ë͵Äʼþ
(2)ϵͳÑÓʱʱ¼äµ½ËùÒýÆðµÄ
(3)ÆäËüÈÎÎñ·¢Ë͵Äʼþ¡£
ÆäÖС°ÖжϷþÎñº¯Êý·¢Ë͵Äʼþ¡±¾ÍÊÇָÿµ±ÓÐÓ²¼þÖжϷ¢Éú£¬ÄÇôÖжϷþÎñ³ÌÐò¾Í»áÒÔʼþµÄÐÎʽ¸æËßÈÎÎñ£¬¶øµÈ´ý¸ÃʼþµÄ×î¸ßÓÅÏȼ¶ÈÎÎñ¾Í»áÂíÉϵÃÒÔÔËÐУ»¡°ÏµÍ³ÑÓʱʱ¼äµ½ËùÒýÆðµÄ¡±Ê¼þÆäʵҲÊÇÓ²¼þÖжϵ¼Öµģ¬ÄǾÍÊÇϵͳ¶¨Ê±Æ÷Öжϡ£¶ø¡°ÆäËüÈÎÎñ·¢Ë͵Äʼþ¡±ÔòÊÇÓÉÈÎÎñ´úÂë×ÔÉí¾ö¶¨µÄ£¬ÕâÊÇÍêÈ«µÄ¡°Èíʼþ¡±¡£²»¹Ü¡°Èíʼþ¡±»¹ÊÇ¡°Ó²Ê¼þ¡±£¬·´ÕýÒýÆðuC/OS-IIÈÎÎñÇл»µÄÔÒò¾ÍÊÇ¡°Ê¼þ¡±£¬ËùÒÔÓû§±àдӦÓôúÂëµÄʱºòÒ»¶¨ÒªÌåÏÖ³ö¡°Ê¼þÇý¶¯µÄ±à³ÌÄ£ÐÍ¡±¡£
2.uC/OS-IIµÄÈÎÎñÓÅÏȼ¶·ÖÅä
uC/OS-IIµÄÈÎÎñÓÅÏȼ¶·ÖÅäÐèÒª°´ÕÕ²»Í¬µÄϵͳÉè¼Æ¾ßÌå·ÖÎö¡£±ÈÈ磬¶ÔʵʱÐÔÒªÇóÔ½¸ßµÄÈÎÎñ£¬ÔòÓÅÏȼ¶ÒªÔ½¸ß¡£
3.uC/OS-IIµÄÈí¼þ²ã´Î
uC/OS-II»áÖ±½Ó²Ù×ÝÓ²¼þ£¬±ÈÈ磺ÈÎÎñÇл»´úÂë±ØȻҪ±£´æºÍ»Ö¸´CPU¼°Ð´¦ÀíÆ÷µÄ¼Ä´æÆ÷£»uC/OS-IIµÄÄÚºËʱ»ùʱÖÓ¾ÍÐèÒªÓ²¼þ¶¨Ê±Æ÷µÄÖжϡ£
BSP¾ÍÊÇ¡°°å¼«Ö§³Ö°ü¡±£¬Ëü°üÀ¨»ùÓÚuC/OS-II¶ø¿ª·¢µÄʼþÇý¶¯Ä£ÐÍ¡¢Ö§³Ö¶àÈÎÎñµÄÇý¶¯³ÌÐò£¬ÕâЩÇý¶¯³ÌÐòÖ±½Ó¿ØÖƸ÷¸öÓ²¼þÄ£¿é²¢ÀûÓÃuC/OS-IIµÄϵͳº¯ÊýÀ´ÊµÏÖ¶àÈÎÎñ¹¦ÄÜ£¬ËüÃÇÓ¦¸Ã¾¡Á¿±ÜÃâÓ¦ÓóÌÐòÖ±½Ó²Ù×ÝÓ²¼þºÍuC/OS-IIÄںˡ£BSP»¹Ó¦¸ÃΪӦÓóÌÐòÌṩ±ê×¼¡¢Í³Ò»µÄAPI£¬ÒÔ´ïµ½Èí¼þ²ã´Î·ÖÃ÷¡¢Ó¦ÓÃÈí¼þ´úÂë¿É¸´ÓõÄÄ¿µÄ¡£
Ó¦ÓóÌÐò¾ÍÊÇÓû§Îª¾ßÌåÓ¦ÓÃÐèÒª¶ø¿ª·¢µÄÈí¼þ£¬Ëü±ØÐë·ûºÏuC/OS-IIµÄ±à³ÌÄ£ÐÍ£¬¼´¡°Ê¼þÇý¶¯µÄ±à³ÌÄ£ÐÍ¡±¡£Ó¦ÓóÌÐò»¹Ó¦¸Ã¾¡Á¿±ÜÃâÖ±½Ó¿ØÖÆÓ²¼þºÍÖ±½Óµ÷ÓÃuC/OS-IIϵͳº¯Êý¡¢±äÁ¿£¬Ò»¸öÍêÉƵÄuC/OS-IIϵͳÊDz»ÐèÒªÓ¦ÓóÌÐòÀ´Õë¶Ô¾ßÌåÓ²¼þ¶øÉè¼ÆµÄ¡£Ò²¾ÍÊÇ˵£¬uC/OS-II±ØÐëÓµÓÐÍ걸µÄÉ豸Çý¶¯³ÌÐò£¬¶øÇý¶¯³ÌÐòºÍBSP¹²Í¬ÌṩÍ걸¡¢±ê×¼µÄAPI¡£
4.uC/OS-IIÖÐʹÓû¥³âÐźŶÔÏóÓ¦¸Ã×¢Òâ
»¥³âÐźŶÔÏó(Mutual Exclusion Semaphore)¼ò³ÆMutex£¬ÊÇuC/OS-IIµÄÄں˶ÔÏóÖ®Ò»£¬ÓÃÓÚ¹ÜÀíÄÇЩÐèÒª¶ÀÕ¼·ÃÎʵÄ×ÊÔ´£¬²¢Ê¹ÆäÊÊÓ¦¶àÈÎÎñ»·¾³¡£
´´½¨Ã¿Ò»¸öMutex£¬¶¼ÐèÒªÖ¸¶¨Ò»¸ö¿ÕÏеÄÓÅÏȼ¶ºÅ£¬Õâ¸öÓÅÏȼ¶ºÅµÄÓÅÏȼ¶±ØÐë±ÈËùÓпÉÄÜʹÓôËMutexµÄÈÎÎñµÄÓÅÏȼ¶¶¼¸ß£¡
uC/OS-IIµÄMutexʵÏÖÔÀí´óÖÂÈçÏ£º
µ±Ò»¸öµÍÓÅÏȼ¶µÄÈÎÎñAÉêÇë²¢µÃµ½ÁËMutex£¬ÓÚÊÇËü»ñµÃ×ÊÔ´·ÃÎÊȨ¡£Èç¹û´ËºóÓÐÒ»¸ö¸ßÓÅÏȼ¶µÄÈÎÎñB¿ªÊ¼ÔËÐÐ(´ËʱÈÎÎñAÒѾ±»°þ¶á)£¬¶øÇÒÒ²ÒªÇóµÃµ½Mutex£¬ÏµÍ³¾Í»á°ÑÈÎÎñAµÄÓÅÏȼ¶Ìá¸ßµ½MutexËùÖ¸¶¨µÄÓÅÏȼ¶¡£ÓÉÓÚ´ËÓÅÏȼ¶¸ßÓÚÈκοÉÄÜʹÓôËMutexµÄÈÎÎñµÄÓÅÏȼ¶£¬ËùÒÔÈÎÎñA»áÂíÉÏ»ñµÃCPU¿ØÖÆȨ¡£Ò»Ö±µ½ÈÎÎñAÊÍ·ÅMutex£¬ÈÎÎñA²Å»Øµ½ËüÔÓеÄÓÅÏȼ¶£¬ÕâʱÈÎÎñB¾Í¿ÉÒÔÓµÓиÃMutexÁË¡£
Ó¦¸Ã×¢ÒâµÄÊÇ£ºµ±ÈÎÎñAµÃµ½Mutexºó£¬¾Í²»ÒªÔٵȴýÆäËüÄں˶ÔÏó(ÖîÈ磺ÐźÅÁ¿¡¢ÓÊÏä¡¢¶ÓÁС¢Ê¼þ±êÖ¾µÈµÈ)ÁË£¬¶øÓ¦¸Ã¾¡Á¿¿ìËÙµÄÍê³É¹¤×÷£¬ÊÍ·ÅMutex¡£·ñÔò£¬ÕâÑùµÄMutex¾ÍʧȥÁË×÷Ó㬶øÇÒЧ¹û±ÈÖ±½ÓʹÓÃÐźÅÁ¿(Sem)¸üÔã¸â£¡
ËäÈ»ÆÕͨµÄÐźÅÁ¿(Sem)Ò²¿ÉÒÔÓÃÓÚ»¥³â·ÃÎÊij¶ÀÕ¼×ÊÔ´£¬µ«ÊÇËü¿ÉÄÜÒýÆð¡°ÓÅÏȼ¶·´×ª¡±µÄÎÊÌâ¡£¼ÙÉèÉÏÃæµÄÀý×ÓʹÓõÄÊÇSem£¬µ±ÈÎÎñAµÃµ½Semºó£¬ÄÇôÈÎÎñC(¼ÙÉèÈÎÎñCµÄÓÅÏȼ¶±ÈA¸ß£¬µ«±ÈBµÍ)¾ÍÐ÷µÄ»°½«»ñµÃCPU¿ØÖÆȨ£¬ÓÚÊÇÈÎÎñAºÍÈÎÎñB¶¼±»°þ¶áCPU¿ØÖÆȨ¡£ÈÎÎñCµÄÓÅÏȼ¶±ÈBµÍ£¬È´ÓÅÏȵõ½ÁËCPU£¡¶øÈç¹ûÈÎÎñAÊÇÓÅÏȼ¶×îµÍµÄÈÎÎñ£¬ÄÇôËü¾ÍÒªµÈµ½ËùÓбÈËüÓÅÏȼ¶¸ßµÄÈÎÎñ¶¼¹ÒÆðÖ®ºó²Å»áÓµÓÐCPU£¬ÄÇôÈÎÎñB(ÓÅÏȼ¶×î¸ßµÄÈÎÎñ)¸ú×ÅËüÒ»Æðµ¹Ã¹£¡Õâ¾ÍÊÇÓÅÏȼ¶·´×ªÎÊÌ⣬ÕâÊÇÎ¥±³¡°»ùÓÚÓÅÏȼ¶µÄÇÀռʽ¶àÈÎÎñʵʱ²Ù×÷ϵͳ¡±ÔÔòµÄ£¡
×ÛÉÏËùÊö£¬uC/OS-IIÖжà¸öÈÎÎñ·ÃÎʶÀÕ¼×ÊԴʱ£¬×îºÃʹÓÃMutex£¬µ«ÊÇMutexÊDZȽÏÏûºÄCPUʱ¼äºÍÄÚ´æµÄ¡£Èç¹ûij¸ßÓÅÏȼ¶µÄÈÎÎñҪʹÓöÀÕ¼×ÊÔ´£¬µ«ÊDz»ÔÚºõ¾ÃµÈµÄÇé¿öÏ£¬¾Í¿ÉÒÔʹÓÃSem£¬ÒòΪSemÊÇ×î¸ßЧ×îÊ¡ÄÚ´æµÄÄں˶ÔÏó¡£
5.uC/OS-IIÓ¦ÓóÌÐòµ÷ÓÃOSSchedLock()ºÍOSSchedUnlock()º¯ÊýӦעÒâ
uC/OS-IIµÄOSSchedLock()ºÍOSSchedUnlock()º¯ÊýÔÊÐíÓ¦ÓóÌÐòËø¶¨µ±Ç°ÈÎÎñ²»±»ÆäËüÈÎÎñÇÀÕ¼¡£Ê¹ÓÃʱӦµ±×¢ÒâµÄÊÇ£ºµ±Äãµ÷ÓÃÁËOSSchedLock()Ö®ºó£¬¶øÔÚµ÷ÓÃOSSchedUnlock()֮ǰ£¬Ç§Íò²»ÒªÔÙµ÷ÓÃÖîÈçOSFlagPend()¡¢OSMboxPend()¡¢OSMutexPend()¡¢OSQPend()¡¢OSSemPend()Ö®ÀàµÄʼþµÈ´ýº¯Êý£¡¶øÇÒÓ¦µ±È·±£OSSchedLock()ºÍOSSchedUnlock()º¯Êý³É¶Ô³öÏÖ£¬ÌرðÊÇÔÚÓÐЩ·ÖÖ§Ìõ¼þÓï¾äÖУ¬Òª¿¼ÂǸ÷ÖÖ·ÖÖ§Çé¿ö£¬²»ÒªÓÐÒÅ©£¡
ÐèÒªÒ»²¢ÌáÐÑÓû§µÄÊÇ£ºµ±Äúµ÷Óÿª¹ØÖжϺ¯ÊýOS_ENTER_CRITICAL()ºÍOS_EXIT_CRITICAL()ʱҲҪȷ±£³É¶Ô³öÏÖ£¬·ñÔòϵͳ½«¿ÉÄܱÀÀ££¡²»¹ý£¬ÔÚOS_ENTER_CRITICAL()ºÍOS_EXIT_CRITICAL()º¯ÊýÖ®¼äµ÷ÓÃOSFlagPend()¡¢OSMboxPend()¡¢OSMutexPend()¡¢OSQPend()¡¢OSSemPend()Ö®ÀàµÄʼþµÈ´ýº¯ÊýÊÇÔÊÐíµÄ¡£
6.uC/OS-IIÇý¶¯³ÌÐò±àд¹æ·¶£¬ÌرðÍƼö
Ê×ÏÈÓ¦¸Ã²ûÃ÷µÄÊÇ£¬ÎÒÃÇÕâÀïÌÖÂÛµÄÊÇ¡°Çý¶¯³ÌÐò¡±£¬¶ø²»ÊÇ¡°ÖжϷþÎñ³ÌÐò¡±£¬ÕâÁ½¸ö´ÊÓïÍùÍù±»Óû§»ìÏý¡£
(1)ÖжϷþÎñ³ÌÐòÖ¸ÄÇÖÖÓ²¼þÖжÏÒ»µ©·¢Éú£¬¾Í»áÁ¢¼´±»Ó²¼þÖжϿØÖÆÆ÷µ÷ÓõÄһС¶Î³ÌÐò£¬ËüµÄ²Ù×÷×·Çó¼òµ¥Ã÷ÁË£¬Ô½¿ìËÙÔ½¾«¼ò¾ÍÔ½ºÃ¡£
(2)Çý¶¯³ÌÐòÊÇÖ¸·â×°ÁËijÖÖÓ²¼þ²Ù×÷ϸ½ÚµÄº¯Êý¼¯£¬ËüÌṩ¸øÓ¦ÓóÌÐòµÄÊÇͳһ¡¢±ê×¼¡¢ÇåÎú¡¢Ò×ÓõÄAPI¡£
¶ÔÓÚÖжϷþÎñ³ÌÐòµÄ±àд£¬ÍùÍùÓëÇý¶¯³ÌÐòµÄÉè¼ÆÏà¹ØÁª¡£±ÈÈçÇý¶¯³ÌÐòÌṩÒì²½²Ù×÷µÄ¹¦ÄÜ£¬ÄÇô¾ÍÐèÒªÖжϷþÎñ³ÌÐòΪËü×¼±¸»º³åÇøºÍÒ»¸ö½á¹¹Ì壬²¢ÇÒÖжϷþÎñ³ÌÐò»áÒÀÕÕÕâ¸ö½á¹¹ÌåµÄ³ÉÔ±²ÎÊý×Ô¶¯Íê³ÉËùÒªÇóµÄ²Ù×÷¡£ÓÖÈ磬´®¿Ú(UART)ÖжϷþÎñ³ÌÐòµÄÉè¼ÆÓÐÁ½ÖÖ£º»ùÓÚÊý¾Ý°ü´«ÊäºÍ»ùÓÚµ¥×Ö½Ú´«Ê䣬ǰÕßÊÊÓÃÓÚÒÔÊý¾Ý°üΪµ¥Î»µÄͨÐųÌÐò£¬¶øºóÕßÊÊÓÃÓÚÈ糬¼¶ÖÕ¶ËÕâÑùµÄÓ¦ÓóÌÐò¡£
Èç¹ûÔÚÒ»¸öϵͳÖУ¬ÒªÇóʹÓÃͬһ¸öÓ²¼þÉ豸Íê³É¼¸ÖÖ²»Í¬µÄ²Ù×÷·½Ê½£¬¾ÍÐèÒªÉè¼ÆÒ»¸öͨÓõÄÇý¶¯³ÌÐò£¬¶ø¸ÃÇý¶¯³ÌÐò¿ÉÒÔ¸ù¾ÝÐèÒª°²×°¸÷ÖÖÕë¶ÔÐÔºÜÇ¿µÄÖжϷþÎñ³ÌÐò¡£
ÔÚÉè¼ÆÇý¶¯³ÌÐòʱ£¬ÌرðÐèҪעÒâµÄÊÇ£¬Ä³Ð©ÍâÉèµÄ²Ù×÷ÍùÍùÒÔÒ»¸öÁ¬Ðø¶øÑϸñµÄʱÐò×÷ΪÔ×Ó²Ù×÷£¬±ÈÈçÓÃI/O¶Ë¿ÚÀ´·ÃÎÊDS1302¡¢24C01¡¢LM75AµÈµÈ¡£ÔÚÕâÀàÉ豸µÄ²Ù×÷¹ý³ÌÖУ¬²»ÔÊÐíÓÐÆäËüÈÎÎñÀ´¿ØÖƶÔÓ¦µÄI/O¶Ë¿Ú£¬·ñÔò»áÒýÆðÊý¾Ý´íÎóÉõÖÁÆ÷¼þË𻵡£ËùÒÔ£¬ÕâÖÖÉ豸µÄÇý¶¯³ÌÐò¶¼Ó¦¸Ã×ÐϸÉè¼Æ¡°Ô×Ó²Ù×÷¡±£¬°Ñ±ØÐëÁ¬¹á²Ù×÷µÄʱÐò¿ØÖÆ´úÂëÓû¥³â¶ÔÏó·â×°³ÉÒ»¸ö¡°Ô×Ó²Ù×÷¡±£¬ÒÔÊÊÓ¦¶àÈÎÎñ»·¾³¡£Æäʵ£¬´ó²¿·ÖÉ豸¶¼ÊÇÕâÑù£¬ÐèҪȷ¶¨¡°Ô×Ó²Ù×÷¡±£¬ÈçLCD¡¢RTL8019AS¡¢FlashµÈµÈÒ²ÊÇÈç´Ë¡£