FreeRTOS¿ÉÒÔ±»ÒÆÖ²µ½ºÜ¶à²»Í¬¼Ü¹¹µÄ´¦ÀíÆ÷ºÍ±àÒëÆ÷¡£Ã¿Ò»¸öRTOSÒÆÖ²¶¼¸½´øÒ»¸öÒѾÅäÖúõÄÑÝʾÀý³Ì£¬¿ÉÒÔ·½±ã¿ìËÙÆô¶¯¿ª·¢¡£¸üºÃµÄÊÇ£¬Ã¿¸öÑÝʾÀý³Ì¶¼¸½´øÒ»¸ö˵Ã÷ÍøÒ³£¬ÌṩÈçºÎ¶¨Î»RTOSÑÝʾ¹¤³ÌÔ´´úÂë¡¢ÈçºÎ±àÒëÑÝʾÀý³Ì¡¢ÈçºÎÅäÖÃÓ²¼þƽ̨µÄÈ«²¿ÐÅÏ¢¡£
ÑÝʾÀý³Ì˵Ã÷ÍøÒ³»¹Ìṩ»ù±¾µÄRTOSÒÆֲϸ½ÚÐÅÏ¢£¬°üÀ¨ÈçºÎ±àдFreeRTOS¼æÈݵÄÖжϷþÎñÀý³Ì£¬²»Í¬¼Ü¹¹µÄÖжϴ¦Àí»áÉÔÓв»Í¬¡£
ͨ¹ýÏÂÃæµÄ¼òµ¥ËµÃ÷£¬¿ÉÒÔÔÚ¼¸·ÖÖÓÄÚÔËÐÐRTOS¡£
1.²éÕÒÏà¹ØÎĵµÒ³
FreeRTOS¾ßÓÐÏêϸµÄ¿ª·¢ËµÃ÷Îĵµ£¬¿ÉÒÔÔÚÆä¹Ù·½ÍøÕ¾Éϲ鿴¡£Ê×ÏÈ´ò¿ª¹Ù·½ÍøÕ¾£¬Ä¿Ç°µÄÍøÕ¾µØÖ·ÊÇ£ºhttp://www.freertos.org¡£ÔÚÊ×Ò³×ó²àµÄµ¼º½À¸ÖУ¬Õ¹¿ª"Supported Devices & Demos"²Ëµ¥Ïµ¥»÷"OfficiallySupported Demos"Á´½Ó£¬È¥²é¿´FreeRTOSÖ§³ÖµÄ΢¿ØÖÆÆ÷ÖÆÔìÉÌÁÐ±í¡£µ¥»÷΢¿ØÖÆÆ÷ÖÆÔìÉÌÃû³Æ£¬½øÈë¾ßÌåµÄÖÆÔìÉÌÎĵµÒ³ÃæÁÐ±í¡£
2.»ñÈ¡RTOSÔ´´úÂë
µ½FreeRTOS¹Ù·½ÍøÕ¾ÏÂÔØÔ´Â룬ÏÂÔØ°ü°üº¬RTOSÄÚºËÔ´ÂëºÍ¹Ù·½ÒÆÖ²ÑÝʾ¹¤³Ì¡£½âѹËõºó·Åµ½ºÏÊʵÄĿ¼Ï¡£
ÿһ¸öRTOSÒÆÖ²°ü¶¼¸½´øÓÐÔ¤ÏÈÅäÖúõÄÑÝʾÀý³Ì £¬ÒѾ´´½¨ºÃÁËËùÓбØÐëµÄRTOSÔ´Îļþ²¢°üº¬Á˱ØÐëµÄRTOSÍ·Îļþ¡£ÍƼöÔÚÌṩµÄÑÝʾÀý³ÌµÄ»ù´¡ÉϽøÐÐ×Ô¼ºµÄFreeRTOSÓ¦Óñà³Ì¡£
3.FreeRTOSÔ´ÂëĿ¼½á¹¹
FreeRTOSÏÂÔØ°üÖаüº¬Ã¿¸ö´¦ÀíÆ÷ÒÆÖ²ºÍÑÝʾÀý³ÌµÄÔ´Âë¡£½«ËùÓÐÒÆÖ²°ü·ÅÈëÒ»¸öÏÂÔØÎļþÖдó´ó¼ò»¯ÁË·ÖÀà´¦Àí£¬µ«ÊÇÏÂÔØ°üÖеÄÎļþÊýÁ¿Ò²¶àµÄ¾ªÈË£¡ÎÞÂÛÈçºÎ£¬Ä¿Â¼½á¹¹»¹ÊǷdz£¼òµ¥µÄ£¬²¢ÇÒFreeRTOSʵʱÄں˽ö½öÖ»ÓÐ3¸öÎļþ£¨Èç¹ûÐèÒª£¬»¹ÓÐһЩ¸½¼ÓÎļþ£¬±ÈÈçÈí¼þ¶¨Ê±Æ÷¡¢Ê¼þ×éÒÔ¼°Ð³Ì£©¡£
ÏÂÔØ°üĿ¼°üº¬Á½¸ö×ÓĿ¼£ºFreeRTOSºÍFreeRTOS-Plus¡£ÈçÏÂËùʾ£º
¡¤ FreeRTOS-Plus °üº¬FreeRTOS+×é¼þºÍÑÝʾÀý³Ì£»
¡¤ FreeRTOS °üº¬FreeRTOSʵʱÄÚºËÔ´ÎļþºÍÑÝʾÀý³Ì¡£
FreeRTOS-PlusĿ¼Ê÷°üº¬¶à¸ö×ÔÊöÎļþ£¨Readme£©¡£½ÓÏÂÀ´±¾ÎÄÖ»ÃèÊöFreeRTOSÄں˵ĺËÐÄÔ´ÎļþºÍÑÝʾÀý³Ì£¬ËüÃÇÓÖ±»·Ö³ÉÁ½¸öÖ÷ÒªµÄ×ÓĿ¼£¬ÈçÏÂËùʾ£º
2 3 | FreeRTOS |+-- Demo °üº¬ÑÝʾÀý³Ì¹¤³Ì£» |+-- Source °üº¬ÊµÊ±ÄÚºËÔ´Îļþ¡£ |
RTOS´úÂëµÄºËÐÄ°üº¬ÔÚÈý¸öÎļþÖУºtasks.c¡¢queue.c¡¢list.c¡£ÕâÈý¸öÎļþλÓÚFreeRTOS/SourceĿ¼¡£ÔÚ¸ÃĿ¼Ï»¹°üº¬Èý¸ö¿ÉÑ¡µÄÎļþ£ºtimers.c¡¢event_groups.c¡¢croutine.c£¬·Ö±ðʵÏÖÈí¼þ¶¨Ê±¡¢Ê¼þ×éºÍг̹¦ÄÜ¡£
FreeRTOS/SourceĿ¼½á¹¹ÈçÏÂËùʾ£º
2 3 4 5 6 7 | FreeRTOS | +-- Source FreeRTOSÄں˴úÂëÎļþ | |+-- include FreeRTOSÄں˴úÂëÍ·Îļþ | |+-- Portable ´¦ÀíÆ÷Ìض¨´úÂë | | |+--Compiler x Ö§³Ö±àÒëÆ÷xµÄËùÓÐÒÆÖ²°ü | | |+--Compiler y Ö§³Ö±àÒëÆ÷yµÄËùÓÐÒÆÖ²°ü | | |+--MemMang ÄÚ´æ¶ÑʵÏÖ·¶Àý |
ÿ¸öÖ§³ÖµÄ´¦ÀíÆ÷¼Ü¹¹ÐèҪһС¶ÎÓë´¦ÀíÆ÷¼Ü¹¹Ïà¹ØµÄRTOS´úÂë¡£Õâ¸öÊÇRTOSÒÆÖ²²ã£¬ËüλÓÚFreeRTOS/Source/Portable/[ÏàÓ¦±àÒëÆ÷]/[ÏàÓ¦CPU¼Ü¹¹]×ÓĿ¼¡£
¶ÔÓÚFreeRTOS£¬¶ÑÕ»Éè¼ÆÒ²ÊôÓÚÒÆÖ²²ã¡£FreeRTOS/Source/portable/MemMangĿ¼ÏÂheap_x.cÎļþ¸ø³öÁ˶àÖÖ¶ÑÕ»·½°¸£¬ºóÐøÎÄÕ½«»áÏêϸ½éÉܶÑÕ»²Ù×÷¡£
ÒÆÖ²²ãĿ¼¾ÙÀý£º
¡¤ Èç¹ûÔÚGCC±àÒëÆ÷ÏÂʹÓÃTriCore1782£ºTriCoreÌض¨Îļþ£¨port.c£©Î»ÓÚFreeRTOS/Source/Portable/GCC/TriCore_1782Ŀ¼Ï¡£FreeRTOS/Source/Portable ×ÓĿ¼ÏµÄËùÓÐÎļþ£¬³ýÁËFreeRTOS/Source/Portable/MemMangĿ¼Íⶼ¿ÉÒÔºöÂÔ»òɾ³ý¡£
¡¤ Èç¹ûÔÚIAR±àÒëÆ÷ÏÂʹÓÃRenesas RX600£ºRX600Ìض¨Îļþ£¨port.c£©Î»ÓÚFreeRTOS/Source/Portable/IAR/RX600Ŀ¼Ï¡£FreeRTOS/Source/Portable ×ÓĿ¼ÏµÄËùÓÐÎļþ£¬³ýÁËFreeRTOS/Source/Portable/MemMangĿ¼Íⶼ¿ÉÒÔºöÂÔ»òɾ³ý¡£
FreeRTOSÏÂÔØ°üÖл¹°üº¬¸÷ÖÖ´¦ÀíÆ÷¼Ü¹¹ºÍ±àÒëÆ÷µÄÑÝʾÀý³Ì¡£´ó¶àÊýµÄÑÝʾÀý³Ì´úÂë¶ÔËùÓÐÒÆÖ²¶¼ÊÇͨÓõģ¬Î»ÓÚFreeRTOS/Demo/Common/MinimalĿ¼¡£FreeRTOS/Demo/Common/FullĿ¼ÏµÄÊÇÀúÊ·ÒÅÁô´úÂ룬½öÓÃÓÚPC¡£
FreeRTOS/DemoĿ¼½á¹¹ÈçÏÂËùʾ£º
2 3 4 5 | FreeRTOS |+-- Demo | |+-- Common ËùÓÐÀý³Ì¶¼¿ÉÒÔʹÓõÄÑÝʾÀý³ÌÎļþ | |+-- Dir x ÓÃÓÚxƽ̨µÄÑÝʾÀý³Ì¹¤³ÌÎļþ | |+-- Dir y ÓÃÓÚyƽ̨µÄÑÝʾÀý³Ì¹¤³ÌÎļþ |
FreeRTOS/DemoĿ¼ÏÂÊ£ÓàµÄ×ÓĿ¼°üº¬Ô¤ÏÈÅäÖúõŤ³Ì£¬¿ÉÒÔÓÃÓÚ¹¹½¨¸öÈËÑÝʾÀý³Ì¡£×ÓĿ¼µÄÃüÃûÓëÒÆֲƽ̨ºÍ±àÒëÆ÷Ïà¹Ø¡£Ã¿Ò»¸öRTOSÒÆÖ²°ü¶¼ÓÐ×Ô¼ºµÄ˵Ã÷Îĵµ¡£
ÑÝʾÀý³ÌĿ¼¾ÙÀý£º
¡¤ Èç¹ûÒÔÓ¢·ÉÁèTriBoard¿ª·¢°åÓ²¼þ¹¹½¨TriCoreGCCÑÝʾÀý³Ì£ºTriCoreÑÝʾÀý³Ì¹¤³ÌÎļþλÓÚFreeRTOS/Demo/TriCore_TC1782_TriBoard_GCCĿ¼¡£Ä¿Â¼FreeRTOS/DemoϵÄËùÓÐ×ÓĿ¼£¨CommonĿ¼³ýÍ⣩¶¼¿ÉÒÔºöÂÔ»òɾµô¡£
¡¤ Èç¹ûÒÔRX62NÓ²¼þ¹¹½¨Renesas RX600 IARÑÝʾÀý³Ì£ºIAR¹¤³ÌÎļþλÓÚFreeRTOS/Demo/RX600_RX62N-RDK_IARĿ¼¡£Ä¿Â¼FreeRTOS/DemoϵÄËùÓÐ×ÓĿ¼£¨CommonĿ¼³ýÍ⣩¶¼¿ÉÒÔºöÂÔ»òɾµô¡£
4.±àÒ빤³Ì
¸ù¾ÝÉÏÒ»½ÚFreeRTOSÔ´ÂëĿ¼½á¹¹ËµÃ÷µÄRTOSÑÝʾ¹¤³ÌµÄËùÔÚµÄλÖ㬴ò¿ª²¢±àÒëÑÝʾ¹¤³Ì¡£
5.ÔËÐÐÑÝʾÀý³Ì
ÑÝʾÀý³Ì¸½´øµÄ˵Ã÷ÍøÒ³»á½éÉÜÈçºÎÅäÖÃÓ²¼þ¡¢ÏÂÔسÌÐòºÍÖ´ÐÐÑÝʾÀý³Ì¡£ËµÃ÷ÍøÒ³»¹»áÌṩÑÝʾÀý³ÌµÄ¹¦ÄÜÐÅÏ¢£¬ÕâÑùÄã¾Í¿ÉÒÔÅжÏÑÝʾÀý³ÌÖ´ÐÐÊÇ·ñÕýÈ·¡£