搜索
bottom↓
回复: 252

发一个自制的RTOS,适合学习和极简开发

  [复制链接]

出0入0汤圆

发表于 2018-3-3 01:15:22 | 显示全部楼层 |阅读模式
本帖最后由 pryprypry 于 2018-3-3 01:19 编辑

下载地址:
github.com/EDI-Systems/M5P1_MuProkaron
整个系统一个文件,源码压缩包2MB以内
仅支持邮箱和信号量,不带其他任何杂七杂八东西
2k ROM占用,128B RAM占用
带用户手册,非常适合初学者
支持Cortex-M,MSP430,MIPS,也支持Linux模拟

和其他RTOS的对比见附件图

*内核对象管理、内存分配、设备框架实际上并不实用,因为深度嵌入式应用常常静态分配它们
*互斥信号量可以用一个线程+一个计数信号量实现
*消息队列可以用一个线程+一个邮箱实现
*GUI,Shell和文件系统要用可以外加,不必作为标准实现
*不常用的架构(如正在死亡的AVR32和凌阳等)用不着支持

本系统主要适合初学者和小型单片机开发,尤其是需要短平快多于需要全功能者。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2018-3-3 01:22:10 | 显示全部楼层
拜莫,学习

出0入17汤圆

发表于 2018-3-3 08:10:05 来自手机 | 显示全部楼层
M0,stm8支持吗

出0入0汤圆

发表于 2018-3-3 08:11:41 | 显示全部楼层
已订阅。。。。。。。。。。

出0入0汤圆

发表于 2018-3-3 08:38:58 | 显示全部楼层
mark,如果能实现所说的功能的话是很不错的,在这点上支持楼主!
BUT,楼主发这个出来什么意思呢?
开源?炫耀?还是想出售却不好说?

出0入0汤圆

 楼主| 发表于 2018-3-3 08:52:37 | 显示全部楼层
墨逸、 发表于 2018-3-3 08:38
mark,如果能实现所说的功能的话是很不错的,在这点上支持楼主!
BUT,楼主发这个出来什么意思呢?
开源? ...

已经实现完了,这个是个开源贴。主贴有下载链接,前面加上http即可。

出0入0汤圆

 楼主| 发表于 2018-3-3 08:54:58 | 显示全部楼层

M0支持,STM8是8位的不支持。过会开一个贴讲下STM8的状态机操作系统实现,那个更简单些,可以在github.com/EDI-Systems/M2A1_MuSimpron找到。这个是实际上在8位机上实用的基于协程和状态机的操作系统。

出0入0汤圆

发表于 2018-3-3 09:17:01 | 显示全部楼层
本帖最后由 墨逸、 于 2018-3-3 09:19 编辑
pryprypry 发表于 2018-3-3 08:54
M0支持,STM8是8位的不支持。过会开一个贴讲下STM8的状态机操作系统实现,那个更简单些,可以在github.co ...


我为我自己的行为道歉,感谢分享

出0入4汤圆

发表于 2018-3-3 09:44:23 | 显示全部楼层
坐等讲解STM8 8位机状态机编程方法。

出0入0汤圆

发表于 2018-3-3 09:58:59 | 显示全部楼层
也想学学。谢谢楼主

出0入0汤圆

发表于 2018-3-3 09:59:07 | 显示全部楼层
followed
   

出0入0汤圆

发表于 2018-3-3 10:01:05 | 显示全部楼层
这个不错,感谢楼主分享。

出0入0汤圆

发表于 2018-3-3 10:03:43 | 显示全部楼层
看了一下M3 2.6k ROM,1.5k ram,也不小了。还不如用freertos,用的人多。而且成熟。
freertos只开信号量和邮箱开销也很小。

出0入0汤圆

发表于 2018-3-3 10:05:10 来自手机 | 显示全部楼层
谢谢分享。对8位机感兴趣。

出0入0汤圆

 楼主| 发表于 2018-3-3 10:06:35 | 显示全部楼层
zsmbj 发表于 2018-3-3 10:03
看了一下M3 2.6k ROM,1.5k ram,也不小了。还不如用freertos,用的人多。而且成熟。
freertos只开信号量和 ...

那个是典型值,不是最小配置。这个系统的最小配置的大小在250Byte左右,rom占用可以压到1k以内。整个系统对freertos等其他系统的最大优势不是其体积而是其使用上的简单性,它的工程建立和配置都非常容易,而且移植也要方便,另外配置项少不容易在配置时出错。

出0入0汤圆

发表于 2018-3-3 10:54:26 | 显示全部楼层
厉害,mark下

出0入0汤圆

发表于 2018-3-3 11:19:03 来自手机 | 显示全部楼层
卧槽,这个牛逼不得鸟了。谢谢楼主分享!!

出0入0汤圆

发表于 2018-3-3 11:53:23 | 显示全部楼层
mark一下,学习

出0入90汤圆

发表于 2018-3-3 12:02:08 | 显示全部楼层
不错。有时候想用点os。但是不熟悉的os又不敢随便用。必须要花好多时间熟悉后才敢用。楼主的这个如果使用起来简单的话还是有意义的。
就像楼主说的,短平快

出4375入62汤圆

发表于 2018-3-3 13:07:41 | 显示全部楼层
牛人!来混个眼熟

出0入0汤圆

发表于 2018-3-3 14:20:54 | 显示全部楼层
好东西啊,越来越多的开源OS出现,好福利啊

出425入0汤圆

发表于 2018-3-3 15:13:33 | 显示全部楼层
这个OS适合短平快开发。

出0入10汤圆

发表于 2018-3-3 16:52:57 | 显示全部楼层
不是有个都江堰 RTOS 么

出0入76汤圆

发表于 2018-3-3 20:14:12 | 显示全部楼层
这个看起来不错。  其实在8位,32位上,  论坛中的那个小小调度器,也是非常不错的

出0入0汤圆

 楼主| 发表于 2018-3-4 01:29:54 | 显示全部楼层
honami520 发表于 2018-3-3 12:02
不错。有时候想用点os。但是不熟悉的os又不敢随便用。必须要花好多时间熟悉后才敢用。楼主的这个如果使用起 ...

嗯,这个用起来还是挺简单的。OS本身就只有一个文件,路径只要配置一个即可。然后就可以直接使用了,没有那么多bug和配置项要学习

出0入0汤圆

 楼主| 发表于 2018-3-4 01:32:40 | 显示全部楼层
foxpro2005 发表于 2018-3-3 20:14
这个看起来不错。  其实在8位,32位上,  论坛中的那个小小调度器,也是非常不错的
...

我还有一个更简单的适合4位和8位机的OS,就是和那个调度器类似的原理,而且还可以省下一个定时器,并且利用了处理器的硬件中断优先级来实现OS中的优先级(也即一部分任务当成了中断向量来跑)。比那个小小调度器多提供了几个宏,用起来更方便些。可以在github.com/EDI-Systems/M2A1_MuSimpron找到。
这个我还是再开个帖子讲吧

出0入0汤圆

 楼主| 发表于 2018-3-4 09:59:33 | 显示全部楼层
最新的中英文版的手册刚刚更新了。

出0入0汤圆

发表于 2018-3-4 10:20:23 来自手机 | 显示全部楼层
能开发rtos的都是高手!

出0入0汤圆

发表于 2018-3-4 13:40:09 来自手机 | 显示全部楼层
下来看下,支持楼主!

出0入0汤圆

发表于 2018-3-4 13:50:49 来自手机 | 显示全部楼层
高手,支持学习!

出100入101汤圆

发表于 2018-3-4 15:04:43 | 显示全部楼层
厉害,自己写os的越来越多

出0入53汤圆

发表于 2018-3-4 15:08:10 来自手机 | 显示全部楼层
高手,支持楼主

出0入0汤圆

发表于 2018-3-4 15:29:25 | 显示全部楼层
感谢分享!支持楼主!

出0入0汤圆

发表于 2018-3-4 15:36:31 来自手机 | 显示全部楼层
拜读了“ MSimpron/kernel.c”。如果task1每次执行要花10ms,而task2需要每5ms执行一次,是否无法实现呢?

出0入76汤圆

发表于 2018-3-4 19:40:41 | 显示全部楼层
本帖最后由 foxpro2005 于 2018-3-4 19:45 编辑
pryprypry 发表于 2018-3-4 01:32
我还有一个更简单的适合4位和8位机的OS,就是和那个调度器类似的原理,而且还可以省下一个定时器,并且利 ...


看了一下,与小小调度器原理是类似的, 都是以PT为原型的

1. “并且利用了处理器的硬件中断优先级来实现OS中的优先级(也即一部分任务当成了中断向量来跑)。”
坐等大神详解,感谢!

2. “比那个小小调度器多提供了几个宏,用起来更方便些。”
眼比较拙,没看到是哪几个

是指这个吗?
  1. #define INT_TASK_BEGIN(X)    switch(X){
  2. #define INT_YIELD()          return;
  3. #define INT_TASK_END() };
复制代码



3. 正好楼上所说, 如果不用定时器, A任务执行要每10ms调度一次,B任务要每5ms调度一次, 是否要在 大while中加入 delay_ms(1)来作时间控制?

出0入0汤圆

 楼主| 发表于 2018-3-5 01:57:34 | 显示全部楼层
javenreal 发表于 2018-3-4 15:36
拜读了“ MSimpron/kernel.c”。如果task1每次执行要花10ms,而task2需要每5ms执行一次,是否无法实现呢? ...

可以实现,具体的方法就是使用一个硬件定时器更新某个变量即可,然后在task中扫描这个变量。这个定时器还可以同时用来定期扫描数码管等等(利用中断任务的方式)。这个OS不占定时器的意思是,这个OS没有定时器也可以跑,但是如果需要定时功能的话,可以千方百计和别的功能共用一个定时器,从而不需要独占定时器。另外,很多应用也的确不需要定时器,这个时候就没必要占定时器了。

出0入0汤圆

 楼主| 发表于 2018-3-5 02:14:17 | 显示全部楼层
foxpro2005 发表于 2018-3-4 19:40
看了一下,与小小调度器原理是类似的, 都是以PT为原型的

1. “并且利用了处理器的硬件中断优先级来实现 ...

我的MSimpron由于多提供了那几个宏(实际上就只多这些就可以),即实现了抢占式协程。关于如何用中断实现不同优先级的协程,请看附件中的文章。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-3-5 06:50:04 来自手机 | 显示全部楼层
学习了,下载看看

出0入0汤圆

发表于 2018-3-5 10:41:04 | 显示全部楼层
一定要试试,支持

出0入85汤圆

发表于 2018-3-5 10:42:30 | 显示全部楼层
lz不是模拟的大神,怎么也搞起编程了?

出0入0汤圆

 楼主| 发表于 2018-3-9 02:25:39 | 显示全部楼层
v0.0.6:更新了内存管理模组和其对应的测试向量文件。

出0入0汤圆

 楼主| 发表于 2018-3-11 07:22:06 | 显示全部楼层
v0.0.7:新增了对Cortex-R5的支持。

出0入0汤圆

发表于 2018-3-11 12:22:58 | 显示全部楼层
支持下,正需要短平快的开发

出0入0汤圆

发表于 2018-3-11 14:20:02 | 显示全部楼层
本帖最后由 chewy 于 2018-3-11 14:28 编辑
pryprypry 发表于 2018-3-4 01:32
我还有一个更简单的适合4位和8位机的OS,就是和那个调度器类似的原理,而且还可以省下一个定时器,并且利 ...


这个8bit的系统基本上没有内容吧,while1循环里switch?

出0入0汤圆

发表于 2018-3-11 22:54:53 来自手机 | 显示全部楼层
正在freeRTOS 学习中……

出0入0汤圆

发表于 2018-3-11 23:32:42 来自手机 | 显示全部楼层
高手,支持学习!

出0入0汤圆

 楼主| 发表于 2018-3-15 02:17:15 | 显示全部楼层
chewy 发表于 2018-3-11 14:20
这个8bit的系统基本上没有内容吧,while1循环里switch?

没错,几乎就是没有内容的。这实际上就是一个基于Switch-case的跳转式状态机。事实证明这是最实用的玩意,我在ATTiny13上用过这玩意。ATTiny13只有64Byte的RAM,用这个能跑出多任务的感觉。这个系统基本上没有任何的开销。

出0入0汤圆

 楼主| 发表于 2018-3-15 02:20:32 | 显示全部楼层
web110 发表于 2018-3-11 22:54
正在freeRTOS 学习中……


我这个比FreeRTOS简单得多,而且中文手册也介绍了RTOS的基本知识,尤其是基本原理和性能分析方面的知识。从我这个开始学的话会容易一些,当然FreeRTOS也不错,支持的架构多。我的仅仅计划支持常见架构,不再支持有些老架构了。

出0入0汤圆

 楼主| 发表于 2018-3-15 02:22:08 | 显示全部楼层
本帖最后由 pryprypry 于 2018-3-15 02:23 编辑

v0.0.8:增加了内建轻量级GUI库的支持,可以轻松在2kB RAM的MCU上做出苹果级别的界面。GUI模组和内存管理的宏不定义就不启用,如果配置文件中无相应的两个配置宏那么则不启用,而且即使启用,也仅仅消耗Flash,不会消耗额外的RAM。因此不破坏系统的轻量性。

出0入0汤圆

 楼主| 发表于 2018-3-15 10:30:55 | 显示全部楼层
本帖最后由 pryprypry 于 2018-3-15 12:12 编辑

下面三张图分别是计算器界面示例、系统提供的内建控件和4xFXAA抗锯齿细节效果展示。这些东西全都不消耗额外的RAM,并且如果相关的宏没定义也根本不会被编译,真正做到轻量级。图示界面甚至可以在STM32F030上做出,无需uCGUI、emWin等的内存占用和工程复杂性。
如果图挂了的话,可以到项目的github查看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-3-15 11:41:57 | 显示全部楼层
大牛,跟着学习

出0入0汤圆

发表于 2018-3-15 12:13:48 | 显示全部楼层
pryprypry 发表于 2018-3-15 10:30
下面三张图分别是计算器界面示例、系统提供的内建控件和4xFXAA抗锯齿细节效果展示。这些东西全都不消耗额外 ...

效果不错,要是能来个stm32f030的入门实例那就更好了,感觉自己对任务的分配和跨任务数据的调用摸不着头脑

出0入0汤圆

发表于 2018-3-15 12:25:58 来自手机 | 显示全部楼层
牛逼,跟着大神学习os

出0入0汤圆

发表于 2018-3-15 13:00:10 | 显示全部楼层
本帖最后由 lidapang 于 2018-3-15 13:12 编辑

厉害,回头再仿真器上玩一把

出0入0汤圆

发表于 2018-3-15 13:13:23 | 显示全部楼层
TonyCai 发表于 2018-3-3 16:52
不是有个都江堰 RTOS 么

已经打酱油了

出0入0汤圆

发表于 2018-3-15 14:19:22 | 显示全部楼层
厉害,试用一下

出0入0汤圆

 楼主| 发表于 2018-3-16 01:10:51 | 显示全部楼层
shower.xu 发表于 2018-3-14 23:13
效果不错,要是能来个stm32f030的入门实例那就更好了,感觉自己对任务的分配和跨任务数据的调用摸不着头 ...

STM32030的工程是基于STM32030F4P6的,就是最常见的那一款。其对应的例子可以在文件夹下找到。后期会出每个单片机的对应的教程,真正拉低编程门槛。

出0入0汤圆

 楼主| 发表于 2018-3-16 01:11:30 | 显示全部楼层

dyjos其实还是活着的。那个OS的设计很特别,也很有意思,完全是事件驱动的,在某些场合有奇效。

出0入0汤圆

发表于 2018-3-16 08:25:58 | 显示全部楼层
pryprypry 发表于 2018-3-15 10:30
下面三张图分别是计算器界面示例、系统提供的内建控件和4xFXAA抗锯齿细节效果展示。这些东西全都不消耗额外 ...

GUI 不消耗额外的RAM? 那速度怎么样?

出0入0汤圆

发表于 2018-3-16 08:35:21 | 显示全部楼层
另外能有个windows下的VS 版本就好了

出0入0汤圆

 楼主| 发表于 2018-3-16 09:01:19 | 显示全部楼层
浮华一生 发表于 2018-3-15 19:25
GUI 不消耗额外的RAM? 那速度怎么样?

速度也还好,因为毕竟是不支持窗口裁剪等复杂功能,也仅仅专注于支持扁平化设计,因此速度还是过得去的。至少用在030上面没问题,驱动EPD屏也没问题。

出0入0汤圆

发表于 2018-3-16 09:12:12 | 显示全部楼层
pryprypry 发表于 2018-3-16 09:01
速度也还好,因为毕竟是不支持窗口裁剪等复杂功能,也仅仅专注于支持扁平化设计,因此速度还是过得去的。 ...

哦 只提供绘图算法  控件信息还是用户自己保存嘛        对了, 有时间 搞个  WINDOWS 下 的  VS 版本撒     哈哈

出0入0汤圆

发表于 2018-3-16 09:35:40 | 显示全部楼层
可以模拟linux的意思是兼容linux的api吗?gui不消耗额外的ram是怎么实现的

出0入0汤圆

发表于 2018-3-16 09:40:26 | 显示全部楼层
pryprypry 发表于 2018-3-15 10:30
下面三张图分别是计算器界面示例、系统提供的内建控件和4xFXAA抗锯齿细节效果展示。这些东西全都不消耗额外 ...

牛掰了,还带有控件,这个实用啊,抽时间拜读下

出0入0汤圆

 楼主| 发表于 2018-3-16 10:02:25 | 显示全部楼层
浮华一生 发表于 2018-3-15 20:12
哦 只提供绘图算法  控件信息还是用户自己保存嘛        对了, 有时间 搞个  WINDOWS 下 的  VS 版本撒   ...

嗯,有时间的话会搞一个示例版本,主要就是展示效果。

出0入0汤圆

 楼主| 发表于 2018-3-16 10:03:33 | 显示全部楼层
sanger 发表于 2018-3-15 20:35
可以模拟linux的意思是兼容linux的api吗?gui不消耗额外的ram是怎么实现的


是指在Linux上面运行这个操作系统,把Linux当成了该系统的一种底层架构。GUI不消耗额外的RAM是因为这个GUI的端口设计全部都是RESTful的,内部不保存控件的状态。实际上这种GUI的实用度反而要好,窗口管理器实际上很少用到。

出0入0汤圆

发表于 2018-3-16 13:55:57 | 显示全部楼层
顶一下,一直接RTOS都没有学成

出0入0汤圆

 楼主| 发表于 2018-3-16 14:37:47 来自手机 | 显示全部楼层
现在有了个新网址,www.rtos.one

出0入0汤圆

发表于 2018-3-16 15:48:20 | 显示全部楼层
pryprypry 发表于 2018-3-16 14:37
现在有了个新网址,www.rtos.one

为什么M0的flash占用比MSP430和M3/M4都大呢?
另外感觉要是能出一套030的学习板子实例更好,理解肯定会更深。或者只分享学习板子资料就行了

出0入0汤圆

 楼主| 发表于 2018-3-16 23:33:30 | 显示全部楼层
shower.xu 发表于 2018-3-16 02:48
为什么M0的flash占用比MSP430和M3/M4都大呢?
另外感觉要是能出一套030的学习板子实例更好,理解肯定会更 ...

因为m0的指令集效率比较低,有一堆不支持的指令。m3和m4就好很多了。

出0入0汤圆

 楼主| 发表于 2018-3-18 02:52:21 | 显示全部楼层
目前已经完成了所有的手册更新。刚刚更新了在正点原子板子上的例程,大家可以在Project文件夹下的RVMDK-STM32F767IGT6-ALIENTEK文件夹下找到。其他的正点原子和野火开发板的例子也会逐步上传。

出5入4汤圆

发表于 2018-3-18 18:06:47 | 显示全部楼层
膜拜,膜拜,有打算起个啥名字麽

出0入0汤圆

 楼主| 发表于 2018-3-19 13:48:24 来自手机 | 显示全部楼层
名字就叫 one

出0入0汤圆

 楼主| 发表于 2018-3-19 13:49:45 来自手机 | 显示全部楼层
名字的话就叫 one os吧,一个文件的内核,一个小时可上手,一个文档做参考,唯一的一个单文件os

出0入0汤圆

发表于 2018-3-19 14:22:50 | 显示全部楼层
honami520 发表于 2018-3-3 12:02
不错。有时候想用点os。但是不熟悉的os又不敢随便用。必须要花好多时间熟悉后才敢用。楼主的这个如果使用起 ...

你这个短平快深深地伤了楼主的自尊心。

出0入90汤圆

发表于 2018-3-19 23:40:51 | 显示全部楼层
楼主的stm32f405里面的库还是老版本的库。新版的hal库的考虑支持吗

出0入0汤圆

 楼主| 发表于 2018-3-19 23:45:04 | 显示全部楼层
honami520 发表于 2018-3-19 23:40
楼主的stm32f405里面的库还是老版本的库。新版的hal库的考虑支持吗

新版的库正在更新,还有F7其实也是有点老的库了。大概今明两天更新到最新版本。

出0入0汤圆

 楼主| 发表于 2018-3-21 11:54:40 来自手机 | 显示全部楼层
honami520 发表于 2018-3-19 23:40
楼主的stm32f405里面的库还是老版本的库。新版的hal库的考虑支持吗

现在对最新hal的支持已经完成了。

出0入0汤圆

 楼主| 发表于 2018-3-21 11:56:04 来自手机 | 显示全部楼层
六七月份会发布两个重要的物联网平台技术,并且发布官方网站。敬请期待。

出0入90汤圆

发表于 2018-3-21 12:40:42 来自手机 | 显示全部楼层
pryprypry 发表于 2018-3-21 11:54
现在对最新hal的支持已经完成了。

你这速度真是神速,今晚我就试试看

出0入0汤圆

 楼主| 发表于 2018-3-22 00:06:58 | 显示全部楼层
honami520 发表于 2018-3-21 12:40
你这速度真是神速,今晚我就试试看

嗯。明天或者后天还会发布对Cortex-R4的新支持。

出0入0汤圆

 楼主| 发表于 2018-3-22 03:14:39 | 显示全部楼层
Cortex-R4的支持已经完成,被支持控制器为TMS570LS0432。

出0入0汤圆

发表于 2018-3-22 08:43:40 | 显示全部楼层
不能用在51、PIC、AVR吗?

出0入0汤圆

发表于 2018-3-22 09:30:10 | 显示全部楼层
标记学习      

出0入0汤圆

发表于 2018-3-22 15:02:27 | 显示全部楼层
自己写,这就厉害了;

出0入0汤圆

发表于 2018-3-23 13:57:43 | 显示全部楼层
网址打不开,是什么原因?

出0入0汤圆

发表于 2018-3-23 22:35:37 来自手机 | 显示全部楼层
楼主厉害,学习了

出0入0汤圆

发表于 2018-3-23 22:52:52 | 显示全部楼层
总觉得楼主在浪费时间做事情,尽管我从心底里还是佩服你做这样的事。
当然如果我话我反过来说,楼主就应该比较开心了。
如果用着其它方面,应该能挣不少钱。哈哈

出0入0汤圆

发表于 2018-3-23 23:04:43 | 显示全部楼层
厉害,mark下

出0入0汤圆

 楼主| 发表于 2018-3-24 00:01:05 | 显示全部楼层
zj2003 发表于 2018-3-23 13:57
网址打不开,是什么原因?

网址打不开的话直接用这个吧
https://github.com/EDI-Systems/M5P1_MuProkaron

出0入0汤圆

发表于 2018-3-24 10:33:31 | 显示全部楼层
谢谢分享!收藏备用。

出0入0汤圆

发表于 2018-3-27 18:07:12 | 显示全部楼层
pryprypry 发表于 2018-3-4 01:32
我还有一个更简单的适合4位和8位机的OS,就是和那个调度器类似的原理,而且还可以省下一个定时器,并且利 ...

这个有专门开贴讲下吗?没找到链接,有没有实例的应用?

出0入0汤圆

 楼主| 发表于 2018-3-28 23:08:44 | 显示全部楼层
llsenyue 发表于 2018-3-27 18:07
这个有专门开贴讲下吗?没找到链接,有没有实例的应用?

这个其实就是小小调度器的改进版本,可以在https://github.com/EDI-Systems/M2A1_MuSimpron 找到。允许使用系统的硬件优先级运行多个协程。

出140入115汤圆

发表于 2018-3-29 10:25:12 | 显示全部楼层
谢谢分享!厉害。先收藏,准备用在M0上。

出0入0汤圆

发表于 2018-3-29 22:50:12 | 显示全部楼层
第360行的void RMP_Unlock_Sched(void)函数中,如下的代码片段是否有问题?
  1.         if(RMP_Sched_Pend!=0)
  2.         {
  3.             /* Reset the count and trigger the context switch */
  4.             RMP_Sched_Pend=0;
  5.             _RMP_Yield();
  6.         }
  7.         RMP_UNMASK_INT();
复制代码

是否应该改成下面这样?
  1.         if(RMP_Sched_Pend!=0)
  2.         {
  3.             /* Reset the count and trigger the context switch */
  4.             RMP_Sched_Pend=0;
  5.             RMP_UNMASK_INT();
  6.             _RMP_Yield();
  7.         }
  8.         else
  9.         {
  10.              RMP_UNMASK_INT();
  11.         }
复制代码

否则,被调度器选中的线程是否就会在RMP_MASK_INT();的状态下执行了?

出0入0汤圆

 楼主| 发表于 2018-3-31 04:21:22 | 显示全部楼层
本帖最后由 pryprypry 于 2018-3-31 04:22 编辑
eduhf_123 发表于 2018-3-29 22:50
第360行的void RMP_Unlock_Sched(void)函数中,如下的代码片段是否有问题?

是否应该改成下面这样?


这个是没有问题的。因为RMP_Yield会触发PendSV,而此时中断是关闭的。当中断开启的时候,PendSV的响应就会开始,所以先触发PendSV之后再开启中断是完全没有问题的。这些代码都由测试文件在至少6种架构上测试过,是没有问题的。

出0入0汤圆

 楼主| 发表于 2018-3-31 04:25:47 | 显示全部楼层
最近更新了用户手册。

出0入0汤圆

发表于 2018-4-3 01:55:20 | 显示全部楼层
pryprypry 发表于 2018-3-31 04:25
最近更新了用户手册。

手上有个国产51单片机,16K的flash 512的ram,外围功能很丰富的,现在做的功能比较蛋疼 想着要有操作系统就好了,可惜ram太小 玩不转

出0入0汤圆

发表于 2018-4-3 14:26:55 | 显示全部楼层
收藏。 学习~~

出0入0汤圆

 楼主| 发表于 2018-4-6 04:13:06 | 显示全部楼层
外部的JS和Lua支持现在可用。这几个库不和系统本身打包,在另外的repo里面。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 13:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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