SMC-RTOS发布!自己写RTOS,开源分享所有源码!

2019-08-17 00:05发布

本帖最后由 smcdef 于 2017-6-27 17:43 编辑

1 SMC-RTOS由来作为一名单片机的爱好者,我想大家都沉迷于自己作为造物主的角 {MOD}。控制着各种形形 {MOD} {MOD}的传感器,实现各种各样的功能。然而,在编程的世界中,你是否还在一直使用前后台轮询的方式编程。站在自己的角度来说,我一直是。当需要很多个线程的时候,我一般采取的方法是在定时器中为每一个线程定义一个计数器和一个事件标志位。当计数器达到设定的时间就立刻置位相应的标志位。main函数中通过查询置位的标志位进行线程处理。我想,聪明的你肯定明白我在说什么。但是,每一次多以线程就要定义一个事件标志位。命名都烦,因此就萌发使用操作系统的念头。但是经过自己的思考,我觉得现有的uC/OS-II是资料最多的RTOS,因此编程方便。但是,uC/OS-II(商业软件)又感觉过于臃肿并且开源但是不免费。因为我只想有一个线程调度的功能即可。所以,就决定自己写一个RTOS,仅仅包含基本的线程调度、时间片轮转以及信号量同步等功能。当然啦,更多的功能,完全可以由你自己完成或者日后我来完成,供大家选择。2 致谢本人由于看过Linux内核、U-Boot、uC/OS-II以及RT-Thread的等工程源代码,因此在编程的过程中,或多或少的借鉴了他们优秀的代码风格以及编程思想。本人非常不喜欢uC/OS-II的代码风格以及命名规范,因此这也是我不喜欢uC/OS-II的原因之一,但是优秀的代码的思想值得借鉴。本人英语能力有限,因此在命名上为了更加符合英语的表达,因此在函数和变量的命名上部分直接采用RT-Thread的命名。在链表的使用,借鉴了Linux内核的使用方法,Linux内核对链表的操作可谓是我见到的代码之中最优秀之一。因此,在这里感谢这些优秀programmer。因此,我对于SMC-RTOS的定位是:SMC-RTOS是一款开源嵌入式实时操作系统(遵循GPL许可协议),它短小精悍,主要包含线程调度、信号量以及软件定时器。现阶段已经移植成功的平台有Cortex-M3和Cortex-M4内核的SoC。3 源码获取SMC-RTOS是完全开源的实时操作系统,为了让更多感兴趣的人使用和学习,SMC-RTOS的全部源码可以从github链接:https://github.com/smcdef/SMC-RTOS下载。感谢你的使用和支持,如果使用发现任何的bug可以发送到我的邮箱:smcdef@163.com4 目标人群SMC-RTOS功能简单,代码量不多,因此适合想使用操作系统而又只想使用RTOS的线程调度功能。由于代码量少,因此可以更简单的阅读源码掌握调度的整个过程,在系统调试的时候,可以帮助我们确定问题存在是用户代码部分还是RTOS部分。同时,也适合新手学习,麻雀虽小,可是五脏俱全啊!通过阅读源码可以让你掌握RTOS的工作原理。


如果你想一起参与进来,我们可以共同维护代码,以及添加功能。当然了,最初的想法是打造精简的RTOS。

注意:移植的F4平台的工程中使用的代码不是最新版本的RTOS,最新版本的源码可以从github地址:
https://github.com/smcdef/SMC-RTOS下载

下载方法:见图片




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
l6931639
1楼-- · 2019-08-17 22:49
 精彩回答 2  元偷偷看……
smcdef
2楼-- · 2019-08-18 00:01
l6931639 发表于 2017-6-28 21:32
你的系统正是我一直想要实现的,作为业余爱好,平时做点小设备,不需要太复杂但又需要一定实时性要求。

是的,我写的时候的想法也是基于此,所以才有了这个简易的RTOS,最新的版本在github上,昨天又添加了一个CPU使用率的计算功能
l6931639
3楼-- · 2019-08-18 02:41
最近操作的传感器对时序要求比较严格但是数据访问又有很多微秒级的延时,突然有一个想法,在系统里再增加一个接口,当需要微秒级以上延时时候能将线程挂起并申请一个高优先级的硬件定时器进行延时,把cpu释放出来运行其他线程,在定时器中断里重新让挂起的线程运行下去。由于这个线程本身的优先级是比较高的,可以在申请定时器的时候继承该线程的优先级,这样更方便。我觉得这个想法再放到你的简化系统里很不错!
smcdef
4楼-- · 2019-08-18 07:26
l6931639 发表于 2017-6-29 16:55
最近操作的传感器对时序要求比较严格但是数据访问又有很多微秒级的延时,突然有一个想法,在系统里再增加一 ...

微秒级别的延时,任务调度的话,岂不是代价很大,因为任务调度就会花费同样数量级别的时间吧!你说是吗?
l6931639
5楼-- · 2019-08-18 08:01
smcdef 发表于 2017-6-29 21:18
微秒级别的延时,任务调度的话,岂不是代价很大,因为任务调度就会花费同样数量级别的时间吧!你说是吗?

对4和7系列调度可以基本实现纳秒级了
smcdef
6楼-- · 2019-08-18 08:06
 精彩回答 2  元偷偷看……

一周热门 更多>