找回密码
 立即注册
查看: 564|回复: 0

STC单片机RTOS之uC/OS-II之路

[复制链接]

该用户从未签到

63

主题

703

回帖

1万

积分

荣誉版主

积分
10922
发表于 2023-5-23 15:53:19 | 显示全部楼层 |阅读模式
一、原样移植方法的道路
(1)原样移植。在uC/OS-II的RTOS系统架构中,已经专门将与移植有关(涉及移植对象硬件的指令集)的部分独立出来了,移植者只要将针对自己的单片机改写这一部分就可以实现移植了。由于在移植中保持了uC/OS-II的任务调度和其他扩展功能的C语言原程序,因此这种移植方法被称为“原样移植”。
(2)与FreeRTOS和RTT不同,如果用户将原样移植版本的uC/OS-II应用到自己的产品中的时候,则面临侵权的问题,在现在和今后的时间中,这是用户需要认真考虑的问题。下面直接引用其公司总裁的公开信来说明uC/OS-II授权问题:
uC/OS-II作者致中国用户的公开信
来源:电子产品世界 发布时间:2021-10-30 分享至微信
致Micrium 产品的使用者:
Micrium 公司产品包括μC/OS-II, μC/GUI,μC/FS,μC/TCP-IP,μC/ USB等。Micrium 公司提供嵌入式系统应用方面的产品,并对其软件拥有知识产权。我公司花费了大量的时间和财力为嵌入式领域提供高质量的软件产品。我们的所有产品都以源代码的形式提供给客户,具有极大的适用性。我们的产品不是免费软件,也不是开放源码的软件,因此,不能免费使用。
您可以通过购买我关于μC/OS-II的书而得到μC/OS-II源代码,当您从芯片厂商那里购买评估板时,您也可以获得μC/OS-II源代码,但您必须同时购买一本含有CD 的我的书。
当您用于商业目的,您必须购买使用授权,这在书中有明确规定。
我公司其它软件如μC/GUI,μC/FS,μC/TCP-IP,μC/USB 等的销售模式与μC/OS-II不同,如果您没有购买使用授权,您完全不可以拥有该源代码,也不能将源代码用于产品。
如果我们的努力工作不能得到回报,我们将不能继续设计并生产这些优秀的软件产品。因此,请不要非法使用和发布我们的软件。
如果您已经有了μC/OS-II的代码,但您并没有我的关于μC/OS-II的书,请您购买一本。
如果您正在将μC/OS-II用于您的产品,您需要购买并获得正式使用授权。
如果您有一份我公司其它产品的拷贝,您必须销毁非法拷贝并购买使用授权。
Micrium 公司系列产品和使用授权由北京麦克泰软件技术有限公司在中国独家代理.
感谢您的诚实合作和理解!
Jean Labrosse
Micrium 公司总裁
(3)显然Micrium公司非常愿意任何芯片厂商将uC/OS-II原样移植到自己的单片机上,并且推广给自己的用户,推广到教育机构和广大学生中,而且作者在其书(《嵌入式实时操作系统 uC/OS-II》北京航空航天大学出版社,2012年)中也明确说明“这里需要向读者强调一点,只要用于教育目的和非商业目的就可以免费使用uC/OS-III(以及uC/OS-II)。换言之,如果使用uC/OS-III(以及uC/OS-II)来制造旨在盈利 的商业产品,那么您必须从Micrium公司或该公司的授权经销商处购买使用许可证”。这是一种高明的送洋油灯策略。
(4)笔者个人观点:uC/OS-II是一个很好的RTOS软件平台,在中国和世界也有良好的软件生态链,但是不能进行“原样移植”,为他人作嫁衣,种韭菜。
二、改造系统核心的道路

(5)uC/OS-II的技术核心是其独特的任务优先级算法,其算法受专利保护,其余的部分是通常教科书级别的操作系统原理和一些程序设计技巧。
(6)是不是可以将任务优先级算法等少数几个核心程序换掉,其余开源部分原样保留,既避免专利争议,又保持了“源程序级别”的兼容。2003年周立功单片机公司进行了试尝,策划和推出了在8051单片机上运行的Small RTOS51嵌入式实时操作系统。(下面的介绍来自网络——喵呜百科)
SmallRTOS51简介
作者:Songyimiao
SmallRTOS51是陈明计先生参考uC/OSII和RTX51-tiny所写的。uC/OSII不适合在小RAM单片机上运行,RTX51 tiny都是用汇编写的,实在难以理解。而Small RTOS51则是糅合了两者优点,其整体架构和uC/OSII类似,而和CPU相关的处理方式参考了RTX51-tiny,比如任务切换、堆栈搬移等,使得这个系统适合在小RAM单片机上运行。
SmallRTOS51的特点:
1.  公开的源代码:只要遵循许可协议,任何人可以免费获得源代码。
2.  可移植性:作者尽量把与CPU相关部分压缩到最小,与CPU无关的代码部分用ASICC编写。
3.  可固化:Small RTOS51为嵌入式系统设计,如有固化手段,可以嵌入到产品中成为产品的一部分。
4.  占先式:Small RTOS51可以管理16个用户任务,每个任务优先级不同。Small RTOS51总是运行就绪条件下优先级最高的任务。
5.  中断管理:中断可以使正在执行的任务挂起。如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255层。如果需要,可以禁止中断嵌套管理。
6.  RAM要求小:Small RTOS51为小RAM系统设计,因而RAM需求小,相应的系统服务也少。
(7)Small RTOS51除了RTOS的核心和少数部分为自己写外,大部分源程序仍然保持了uC/OS-II的程序原样,因此连函数名称一起保留原样,实现了改造核心,保留绝大部分源程序的目标。
(8)笔者个人观点:改造了核心,避开了专利,是否就可以避开Micrium公司的授权,让使用者免费免授权地将Small RTOS51用于盈利的商业产品呢?笔者认为不行,除了专利法,还有著作权法,SmallRTOS51原样抄袭的那些源程序依然侵犯了uC/OS-II代码的版权。
因此这对于小规模的使用,也许不会被追究,但是对于STC这样的8051单片机主流芯片厂商,如果把这种只改造核心的移植版本作为自己的RTOS产品推出,那么未来会面临不可预知的风险。

三、既要自主知识产权,又要高度相似的道路
(9)uC/OS-II确实是一个很好的RTOS平台,已经具有了良好的软件生态链,值得推荐给广大的STC单片机用户使用。因此STC单片机的uC/OS-II之路应该是一条既要自主知识产权,又要高度相似的道路。
(10)首先STC应该自己开发一个RTOS系统,在核心上采用自己的技术,全部代码自己编写,拥有全部的自主知识产权。
对于这个RTOS的架构和用户接口,可以参考uC/OS-II,甚至做到虽然接口名称不同,但是功能完全相同/相似,只使用“宏替换”方法改变函数和变量的名称就可以互相对应,实现“源程序级别”的兼容,达到既要自主知识产权,又要高度相似的目的。
(10)笔者已经完成了STC8H单片机上的“天山x51实时多任务操作系统”(简称天山x51-RTOS)的基础核心部分,特点介绍和范例程序下载见下面帖子:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1402
(11)天山x51-RTOS采取不开源的方式提供给用户,目前的学习版本是免费的。采取不开源的方式的原因是其中采用了一些特殊的先进技术,在没有正式推出以前暂时不宜公开。
作为对比下图是天山x51-RTOS的单片机基础测试程序部分和编译结果:

Fig01_TSx51-RTOS.jpg
下图是使用原样移植的uC/OS-II的同样的单片机基础测试程序部分和编译结果:
Fig02_uCOSII.jpg
(12)天山x51-RTOS的第24行到第27行就是几个宏定义,将原来uC/OS-II程序中的任务B和任务C中的uC/OS-II系统接口映射为天山x51-RTOS对应的系统接口,这测试程序中的任务B和任务C就实现了源程序级别的兼容。
(13)对于任务A的第38行程序,由于uC/OS-II没有绝对时间的休眠程序,只有相对于系统Tick的休眠函数,因此就保留了天山x51-RTOS自身的接口。
(14)采用自主研发RTOS的一个优点是可以针对STC单片机的特点进行专门设计,提供比一些移植RTOS更好的特色。比如通用的单片机测试程序,天山x51-RTOS编译后的代码空间CODE=6588字节,远小于uC/OS-II原样移植的CODE=10767字节。
四、还要免费教和学,加入uC/OS生态链的道路
(15)对于一个新开发的非开源的神似uC/OS-II的RTOS产品,要想加入已有的RTOS生态链取得自己的市场地位,最重要的是赢得用户的信任。赢得信任最好的途径是将其与现有的uC/OS-II进行对比,同时用两种程序进行验证。
(16)因此STC在研发自己的RTOS的同时,也要uC/OS-II “原样移植”到自己的STC8H和STC32G/F等典型系列单片机,提供用户学习、比较和试验。

五、总 结
综上所述STC单片机的uC/OS-II之路应该是:
原样移植一个uC/OS-II的开源免费版本,用于教会大家如何移植,从中学习RTOS原理,RTOS核心技术以及RTOS编程技术。

开发一个是拥有完全自主知识产权的闭源、免费/定制的RTOS版本,用于STC单片机用户的产品开发和商用。


回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-21 09:55 , Processed in 0.066115 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表