本帖最后由 杨为民 于 2023-5-21 23:55 编辑
原生的RTOS与移植的RTOS所占储存空间的比较 (1)CosyOS是原生的RTOS,FreeRTOS移植的RTOS,两者皆有STC32G的版本,下面对两者用C251编译后所占的存储空间进行比较。 下图是CosyOS V1.04版本编译后的截屏图: 下图是FreeRTOS V1.02版本编译后的截屏图: 上面编译结果为: CosyOS: data=53.3 edata=1573 xdata=1096 const=860 code=31534 FreeRTOS: data=15.3 edata=3684 xdata=0 const=255 code=14857
(2)FreeRTOS采取了XSmall模式,没有做额外的声明,全部静态变量和任务堆栈存储在EDATA空间。CosyOS也采取了XSmall模式,但其采用特殊的技术将部分静态变量和任务堆栈存储在XDATA空间。如果比较总RAM空间,二者相差不大,但是考虑到片上EDATA空间成本是XDATA空间的若干倍,因此CosyOS的RAM存储方案有很大的可取之处。 (3)比较CODE空间的大小,CosyOS是FreeRTOS的2倍还多。由于差别巨大,我比较了两者的C251优化等级,FreeRTOS是4级,CosyOS是8级,因此这个差别应该不是优化的原因。 我个人猜测这是两者技术路线上的差别,是CosyOS过分追求“至此,CosyOS又一次完成了突破,使51彻底摆脱可重入栈”造成的。 (4)将FreeRTOS移植到STC32G/F单片机上有两种技术方案(FreeRTOS本身就提供了多种选择),一种是将任务堆栈定义在EDATA空间,对于STC32G/F单片机这是一种“极速方案”,优点是不但整个RTOS程序运行速度快,而且任务切换速度极高,这就是STC主页说的“任务切换时间2.5us/24MHz”的技术原因。这种“极速方案”的缺点是EDATA空间的最多64KB,限制了所有任务的大小。 另一种是将任务堆栈定义在XDATA中的“正常方案”,由于STC32G/F的运行速度很高,任务切换时间也增加不了多少,但是不仅是换用XDATA成本正常,而且每个任务的堆栈空间都可以高达64KB,是未来STC32F8M8M的唯一可选择方案。 建议:STC应同步推出使用XDATA作为任务堆栈空间的FreeRTOS系统。
(5)FreeRTOS是一个很有价值的RTOS,作为移植的STC单片机RTOS,FreeRTOS与uC/OS-II相比有一个巨大优势是其使用授权方式。uC/OS-II的授权方法比较严格,原则上要申报审批,但是FreeRTOS不需要。下图是FreeRTOS的授权方法(其中OpenRTOS是FreeRTOS的付费版本): (6)在STC获得OpenRTOS授权之前,可以参考目前FreeRTOS的授权范围: 直接推出上面两种方案的FreeRTOS系统平台,直接命名为“STC-FRTOS”。
|