ÕªÒª£º±¾ÎÄ´ÓÔ´´úÂë½Ç¶È·ÖÎöÁËuC/OS-IIÄں˳¬Ê±µÈ´ý»úÖÆ£¬Ö¤ÊµÔÚÒ»¶¨Çé¿öϳ¬Ê±Ê±¼ä¼ä¸ô²»×¼È·£¬ÔÚʱ¼ä¼ä¸ôµ½ÆÚµÄÇé¿öÏ£¬ÄÚºËÈÔÓпÉÄÜ·µ»Ø³É¹¦£¬Õâ²»·ûºÏÒ»°ãµÄ²Ù×÷ϵͳÔÀí¡£ÁíÍ⣬½áºÏ³¬Ê±µÈ´ý»úÖÆµÄͨÓÃÄ£ÐÍÒÔ¼°Ò»Ð©Ö÷Á÷Äں˵ÄʵÏÖ·½·¨£¬Ìá³öÁËÕâÒ»²»×ãÖ®´¦µÄ¸ÄÕý·½·¨¡£
¹Ø¼ü´Ê£º³¬Ê±µÈ´ý£»×ÊÔ´£»ÄÚºË
Abstract:Waiting-timeout of kernel is analyzed from source code in this paper.It indicates waiting-timeout of uC/OS-II is not correst in some case.The kernel can return success while it is time out.This is not correst.Based on the general type of Waiting-timeout of kernel and the other main real-time kernel ,a method is advanced to resolve this problem in the end.
Key words: waiting-timeout;resource;kernel
1 ÒýÑÔ
uC/OS-IIÊÇÖøÃûµÄÔ´Â빫¿ªµÄʵʱÄÚºË[1]£¬ÊÇרΪǶÈëʽӦÓÃÉè¼ÆµÄ£¬¿ÉÓÃÓÚ¸÷Àà8λ16λºÍ32λµ¥Æ¬»ú»òDSP¡£ÏÖÔÚÓкܶàʹÓÃÕßÕýÔÚ»òÒѾ½«ÆäÒÆÖ²µ½¸÷ÖÖÀàÐ͵ÄоƬ¡£ÒòΪԴÂ빫¿ª£¬uC/OS-IIÒ²¾³£±»×÷ΪǶÈëʽʵʱÄں˵Ľ̲ģ¬Îª×¨ÒµÈËÔ±ÌṩÁËѧϰʵʱÄں˵ÄÄѵûú»á¡£ÔÚʵ¼ÊʹÓÃÖв»¹Ü»ùÓÚºÎÖÖ²Ù×÷ϵͳƽ̨£¬Ó¦ÓóÌÐò¾³£»áµÈ´ýһЩϵͳ×ÊÔ´£¬ÈçÐźÅÁ¿£¬Ê¼þ±êÖ¾£¬ÏûÏ¢µÈ¡£µÈ´ýÀàÐ͹²ÓÐÈýÖÖ£º(1)Èç¹û²»ÄÜÂíÉÏ»ñÈ¡£¬Ðü¹ÒµÈ´ý£»(2)²»¹ÜÊÇ·ñÄÜ»ñÈ¡×ÊÔ´£¬ÂíÉÏ·µ»Ø£¬²»»áµÈ´ý£»(3) Èç¹û²»ÄÜÂíÉÏ»ñÈ¡×ÊÔ´£¬½«½øÐÐÓÐÏÞʱ¼äµÄµÈ´ý£¬¼´³¬Ê±µÈ´ý¡£
2 ³¬Ê±µÈ´ý»úÖÆµÄ»ù±¾ÔÀí
Ó¦ÓóÌÐòͨ¹ý²Ù×÷ϵͳÌṩµÄϵͳµ÷ÓýӿڻñÈ¡×ÊԴʱ£¬ÔÚϵͳµ÷ÓõÄÈë¿Ú²ÎÊýÀï¿ÉÒÔÖ¸¶¨³¬Ê±µÈ´ýµÄ×î´óʱ¼ä£¬Í¨³£ÒÔºÁÃëΪµ¥Î»£¬Äں˻ὫÆäת»¯ÎªÏµÍ³µÄʱÖÓµÎàªÊý(tick)¡£Ò»°ãÄں˶¼»áÖ´ÐÐÒÔÏÂÁ÷³Ì£º
(1)Èç¹û×ÊÔ´ÄÜÂíÉÏ»ñÈ¡£¬ÏµÍ³µ÷Óý«³É¹¦·µ»Ø¡£
(2)Èç¹û×ÊÔ´²»ÄÜÂíÉÏ»ñÈ¡£¬Äں˽«ÉèÖÃÒ»¶¨Ê±Æ÷½øÐмÆÊ±£¬°Ñµ±Ç°ÈÎÎñÐü¹ÒÔÚ¸Ã×ÊÔ´µÄµÈ´ý¶ÓÁÐÉÏ£¬¸ÃÈÎÎñ´Ó¾ÍÐ÷±íÖÐɾ³ý£¬²¢½øÐе÷¶È£¬ÈóöCPUµÄʹÓÃȨ¡£
(3)Èç¹ûÔÚÖ¸¶¨µÄʱ¼äÄÚ×ÊÔ´±äµÃ¿ÉÒÔ»ñÈ¡ÁË£¬¶¨Ê±Æ÷Ó¦ÂíÉÏÍ£Ö¹¼ÆÊ±£¬¸ÃÈÎÎñ´ÓµÈ´ý¶ÓÁÐÀïժϲ¢ÇÒÖØÐ»ص½¾ÍÐ÷±íÖеȺòµ÷¶È¡£
(4)Èç¹û¶¨Ê±Æ÷µ½Ê±£¬ÈÎÎñÓ¦¸Ã´ÓµÈ´ý¶ÓÁÐÀïժϲ¢ÇÒÖØÐ»ص½¾ÍÐ÷±íÖУ¬ÏµÍ³µ÷Ó÷µ»Ø³¬Ê±ÐÅÏ¢¡£
ÄÚºËÔÚÿһ¸ötick¶¼»á×öһϵÁеŤ×÷£¬°üÀ¨ÈÎÎñµÄÑÓ³ÙÒÔ¼°³¬Ê±µÈ´ý×ÊÔ´µÄ¶¨Ê±Æ÷µÈÏà¹ØµÄ¼ì²é²Ù×÷¡£Ò»°ãÀ´½²£¬ÔÚÖ¸¶¨µÄʱ¼ä¼ä¸ôÒÔÍâµ½´ïµÄ×ÊÔ´ºÍÐźű»ÈÏΪÊÇÎÞЧµÄ£¬ÕâÒ²ÊÇÖ¸¶¨³¬Ê±Ê±¼ä¼ä¸ôµÄÔÒâËùÔÚ£¬ÓÐЩ¶Ôʱ¼äÒªÇó¿Á¿ÌµÄ³¡ºÏ¾ÍÓÐÕâÖÖÐèÇó£¬Äں˱ØÐë´¦ÀíºÃÕâ·½ÃæµÄÎÊÌâ¡£