测试情况,我将以前用FreeRTOS做好的产品程序,用uCOS来测试,也是出于好奇,分别用uCOSii和uCOSiii试试,看看有什么不同。测试结果如下:
1、FreeRTOS测试结果:
FreeRTOS版本: V9.0.0
MyMinimumHeap used/free:5432 / 31432 used%14.74
GPRS_Task used/free:156 / 124 used%55.71
CS5463_Task used/free:58 / 70 used%45.31
LCD_DISPLAY_Task used/free:128 / 64 used%66.67
Balance_Task used/free:66 / 62 used%51.56
STACK_BOTTOM: 0x20001000
STACK_TOP: 0x20000fd0
Used_STACK_SIZE: 144
2、uCOSii测试结果:
uCOSii版本: V2.91
MyMinimumHeap used/free:0 / 5 used%0.00 使用OSMemQuery()读取OS_MEM_DATA结构数据
GPRS_Task used/free:145/135 used%51.79
CS5463_TASK used/free:56/72 used%43.75
LCD_DISPLAY_TASK used/free:124/68 used%64.58
BALANCE_TASK used/free:55/73 used%42.97
STACK_BOTTOM: 0x20006b28
STACK_TOP: 0x20006ae8
Used_STACK_SIZE: 64
CHECK_TASK used/free:111/81 used%57.81
STAT_TASK used/free:21/107 used%16.41
IDLE_TASK used/free:15/113 used%11.72
3、uCOSiii测试结果:
uCOSiii版本 : V3.03.00
MyMinimumHeap used/free:1 / 255 used%0.39 数据在OS_MEM结构中,这和uCOSii有点区别
OSIntQTask used/free:37/91 used%28.91 err:0
OSTickTask used/free:39/89 used%30.47 err:0
OSTmrTask used/free:39/89 used%30.47 err:0
OSStatTask used/free:29/99 used%22.66 err:0
OSIdleTask used/free:17/111 used%13.28 err:0
BALANCE_TASK used/free:55/73 used%42.97 err:0
LCD_DISPLAY_TASK used/free:125/131 used%48.83 err:0
CS5463_TASK used/free:56/72 used%43.75 err:0
GPRS_Task used/free:145/111 used%56.64 err:0
CHECK_TASK used/free:113/143 used%44.14 err:0
STACK_BOTTOM: 0x20008510
STACK_TOP2: 0x200034e0 这是进程堆栈指针
STACK_TOP: 0x200009b8 这是主堆栈指针,函数栈的栈顶越界
Used_STACK_SIZE: 31576
不清楚uCOSiii为什么会出现这个问题????
**************实在糟糕,uCOSiii的函数栈无法跟踪********************。
4、烧录问题
在带有IAP的程序中,在IAP烧录好后,带有FreeRTOS系统的程序,需要用J-Flash烧录APP的bin文件,而不能使用KEIL直接烧录,而uCOSii和uCOSiii均可以使用KEIL直接烧录文件,并重启运行。
5、结论
FreeRTOS有点耗内存,这是肯定的。
FreeRTOS免费,开源,这是uCOS没法比。
首选FreeRTOS,其次是uCOSii,至于uCOSiii还需要进一步完善,目前不适合用。
重点看FreeRTOS和uCOSii,uCOSii历史悠久,但不代表uCOSiii历史也悠久。uCOSii确实好,但不免费,我还是用FreeRTOS。
若有不同意见的,欢迎留言,共同进步。