OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4981|回复: 26

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

[复制链接]

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
发表于 2017-6-27 16:55:22 | 显示全部楼层 |阅读模式
本帖最后由 smcdef 于 2017-6-27 17:43 编辑

1 SMC-RTOS由来
作为一名单片机的爱好者,我想大家都沉迷于自己作为造物主的角色。控制着各种形形色色的传感器,实现各种各样的功能。然而,在编程的世界中,你是否还在一直使用前后台轮询的方式编程。站在自己的角度来说,我一直是。当需要很多个线程的时候,我一般采取的方法是在定时器中为每一个线程定义一个计数器和一个事件标志位。当计数器达到设定的时间就立刻置位相应的标志位。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.com
4 目标人群SMC-RTOS功能简单,代码量不多,因此适合想使用操作系统而又只想使用RTOS的线程调度功能。由于代码量少,因此可以更简单的阅读源码掌握调度的整个过程,在系统调试的时候,可以帮助我们确定问题存在是用户代码部分还是RTOS部分。同时,也适合新手学习,麻雀虽小,可是五脏俱全啊!通过阅读源码可以让你掌握RTOS的工作原理。


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

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

下载方法:见图片




下载方法

下载方法

下载方法

下载方法

SMC-RTOS快速编程指南.pdf

759.91 KB, 下载次数: 589

SMC-RTOS编程指南

2.LED闪烁-延时函数的实现.zip

3.69 MB, 下载次数: 368

借用别人的工程移植SMC-RTOS的F4平台移植demo

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2017-6-27 17:13:58 | 显示全部楼层
先收藏下,下班学习下。感谢分享
我有故事,你有酒吗
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-27 17:16:55 | 显示全部楼层
注意:移植的F4平台的工程中使用的代码不是最新版本的RTOS,最新版本的源码可以从github地址:https://github.com/smcdef/SMC-RTOS下载。
回复 支持 反对

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-6-28 09:57:08 | 显示全部楼层
现在RTOS内核已经很多了,但是我发现,好像很少RTOS像linux一样对硬件驱动做管理。
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-28 09:59:38 | 显示全部楼层
shikihane 发表于 2017-6-28 09:57
现在RTOS内核已经很多了,但是我发现,好像很少RTOS像linux一样对硬件驱动做管理。

是的,比较少,rt-thread是一个
回复 支持 反对

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-6-28 10:02:47 | 显示全部楼层
有没有人想做一个统一的设备驱动模型。能像linux一样,提供统一规范的接口给用户。
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-28 20:32:51 | 显示全部楼层
shikihane 发表于 2017-6-28 10:02
有没有人想做一个统一的设备驱动模型。能像linux一样,提供统一规范的接口给用户。

好有想法 啊
回复 支持 反对

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-6-28 21:32:09 来自手机 | 显示全部楼层
你的系统正是我一直想要实现的,作为业余爱好,平时做点小设备,不需要太复杂但又需要一定实时性要求。
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-29 14:30:34 | 显示全部楼层
l6931639 发表于 2017-6-28 21:32
你的系统正是我一直想要实现的,作为业余爱好,平时做点小设备,不需要太复杂但又需要一定实时性要求。

是的,我写的时候的想法也是基于此,所以才有了这个简易的RTOS,最新的版本在github上,昨天又添加了一个CPU使用率的计算功能
回复 支持 反对

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-6-29 16:55:29 来自手机 | 显示全部楼层
最近操作的传感器对时序要求比较严格但是数据访问又有很多微秒级的延时,突然有一个想法,在系统里再增加一个接口,当需要微秒级以上延时时候能将线程挂起并申请一个高优先级的硬件定时器进行延时,把cpu释放出来运行其他线程,在定时器中断里重新让挂起的线程运行下去。由于这个线程本身的优先级是比较高的,可以在申请定时器的时候继承该线程的优先级,这样更方便。我觉得这个想法再放到你的简化系统里很不错!
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-29 21:18:05 | 显示全部楼层
l6931639 发表于 2017-6-29 16:55
最近操作的传感器对时序要求比较严格但是数据访问又有很多微秒级的延时,突然有一个想法,在系统里再增加一 ...

微秒级别的延时,任务调度的话,岂不是代价很大,因为任务调度就会花费同样数量级别的时间吧!你说是吗?
回复 支持 反对

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-6-30 09:20:13 来自手机 | 显示全部楼层
smcdef 发表于 2017-6-29 21:18
微秒级别的延时,任务调度的话,岂不是代价很大,因为任务调度就会花费同样数量级别的时间吧!你说是吗?

对4和7系列调度可以基本实现纳秒级了
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-30 12:42:12 | 显示全部楼层
l6931639 发表于 2017-6-30 09:20
对4和7系列调度可以基本实现纳秒级了

如果真是这样的话,还是有意义的
回复 支持 反对

使用道具 举报

头像被屏蔽

2

主题

164

帖子

1

精华

禁止访问

积分
1316
金钱
1316
注册时间
2012-5-13
在线时间
127 小时
发表于 2017-6-30 17:19:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-6-30 19:42:40 | 显示全部楼层
qq371833846 发表于 2017-6-30 17:19
目测可以,不懂有没有bug

我的测试暂时没有发现,如果有bug可以反馈给我,谢谢!
回复 支持 反对

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
发表于 2017-7-3 18:39:40 | 显示全部楼层
楼主用的什么编辑器啊,,配色很好看啊。。

00.png

回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-6-23
在线时间
4 小时
发表于 2017-7-3 22:28:50 | 显示全部楼层
为什么在github下的代码用记事本打开是乱码的?
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-7-4 17:56:36 | 显示全部楼层
天时地利人和 发表于 2017-7-3 18:39
楼主用的什么编辑器啊,,配色很好看啊。。

sublime3
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-7-4 18:00:11 | 显示全部楼层
pmwpmw 发表于 2017-7-3 22:28
为什么在github下的代码用记事本打开是乱码的?

因为我的工作涉及linux操作系统比较多,在linux系统中换行是“\n",在Windows系统中,换行是"\r\n",而我的代码的换行符都是linux下的换行符,因此,记事本打开不是乱码,而是换行问题。你下载notepad++、sublime、UE等编辑器使用吧!并且记事本的文档会在文档的头部加入一些文本格式识别信息,所以记事本不能用看来写代码,否则会出问题。。。
回复 支持 反对

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
发表于 2017-7-4 18:22:12 | 显示全部楼层

谢谢,,,,,,,
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2016-9-22
在线时间
41 小时
发表于 2017-7-7 15:29:59 | 显示全部楼层
移植了一下STM32F103的程序,可以运行,开发资料少了点,
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-7-7 20:13:21 | 显示全部楼层
MZWPP130501 发表于 2017-7-7 15:29
移植了一下STM32F103的程序,可以运行,开发资料少了点,

有一个PDF的介绍,定时器的使用在文档中有介绍,信号量当然跟其他的RTOS使用方法一致,因为都是信号量,内核短小,很容易理解,所以应该很容易的!谢谢支持
回复 支持 反对

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
发表于 2017-7-13 15:59:20 | 显示全部楼层

使用的sublime3的默认主题吗,,我的怎么和你的不一样呢
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-6-27
在线时间
15 小时
 楼主| 发表于 2017-7-15 20:24:08 | 显示全部楼层
天时地利人和 发表于 2017-7-13 15:59
使用的sublime3的默认主题吗,,我的怎么和你的不一样呢

默认主题那么丑,当然不用,都是自己主题,然后自己修改一些配色
回复 支持 反对

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
发表于 2017-7-16 09:46:11 | 显示全部楼层
smcdef 发表于 2017-7-15 20:24
默认主题那么丑,当然不用,都是自己主题,然后自己修改一些配色

哦哦, 那我也试着改改
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-1-29 18:39:15 | 显示全部楼层
谢谢分享,学习
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-3-19
在线时间
29 小时
发表于 2020-2-5 13:53:34 | 显示全部楼层
不错,谢谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 01:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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