RTOS 入门资料 整理

1 . 周航慈有一本基于UCOS 应用的书不错,可以入门,论坛上也有,你看看吧

2 . AVRX
3 . Small RTOS51原理及应用.rar
http://www.51hei.com/f/small_rtos1.12.1.zip

4.基于Easy51RTOS亮度变化的复杂流水灯.rar

5 . C51多任务编程思想
6 . 老生常谈—一种裸奔多任务模型
7 . 基于51单片机的C语言多任务操作 完美版
8. Easy51RTOS的原理
9. 这是一本嵌入式实时操作系统Small RTOS51原理及应用
陈明计 周立功 等编著
北京航空航天大学出版社出版发行

10 . 这个OS据说有bug的,最好不要用在产品上面…
如果对实时性要求不高的话,可以考虑protothread…

11 . 如果RTX51-Tiny也算,我10年前就用了,能够跑在无扩展的AT89C52上,5-6个任务。其他的OS只能望洋兴叹

12 .
第一次用usmartX RTOS,两个实验(LED闪烁,歌曲菊花台)

(WinAVR2007+ATmega16,内部RC 8Mhz)

http://usmartx.sourceforge.net/

What is uSmartX ?

13 .
学习本论坛文章《建立一个属于自己的AVR的RTOS》,觉得是我目前看过最通俗易懂的RTOS设计讲解文章,顿时提起了我重新学习RTOS的兴趣!同时也为了方便以后记忆,于是将所学的知识进行积累,沉淀,最终汇聚成自己的宝贵财富。本文只是以图文的形式对原文内容加以阐述,并顺带自己的一些小总结,文中所使用的源码均来自于原文,并无抄袭之意。由于使用Visio编辑,排版布局欠佳,还请读者见谅。
uSmartX is a non-preemptive, multitasking, priority based RTOS. It features necessary mechanisms for inter-task communication and basic task and time control functions. uSmartX is targeted for small foot-print embedded designs. Being a non-preemptive kernel it consumes little memory and it is very simple to use. It is already being used in many designs, proving that a huge, full-preeemptive kernel is not always the best solution.

14 .
如何设计复杂的多任务程序,Easy51RTOS【转载】

15 .
感谢Lisuwei《简易多任务OS设计》一文,我也写出了我的RaysRTOS(光芒实时系统),

16 .

1 自己做个简单的RTOS,用一个定时器,不支持任务抢断,只支持静态任务数量和静态的任务.应该比较小.
2 任务中加状态机或者标志符号.主程序while(1){处理}

其实usmart基本上就是这种结构。完整的usmartx占用ram最小也有200多字节。移植51还是不行。

楼主可以把usmartx进行裁减,只保留任务调度和定时器部分。

不支持抢占就没有实时性?那么前后台系统呢?有没有抢占?实时性如何?

不支持抢占,只是任务的事实性差了些。任务的实时性差一点,并不意味着整个系统的实时性差,只要保证中断的实时性够高就行。
us级实时性有中断控制,ms级实时性由操作系统控制。
像notos,usmartx就是非抢占式操作系统。

17 .

用protothreads,很好用的。

买过Small RTOS的书,作者陈明计。但没用过。keil的tiny51倒是用过。

19
参照<建立自己的avr实时操作系统>第四篇,移植到51,实现多任务,LCD/LED,proteus仿真+keil项目

20

回想前二年初次学习uCOS-II时,学完之后,好象什么也没有看懂,没办法,找了一本陈明计的大作《SMALL RTOS51》,终于清楚的RTOS的实质。
  再回过头来看uCOS-II,轻松多了。
21
用SMALL RTOS(51) 写的俄罗斯方块和贪吃蛇。彩屏显示

https://www.amobbs.com/forum.php?mod=viewthread&tid=4240638&highlight=rtos&_dsign=7da58064

22
rtt不错的
去年用3.x做过项目 感觉稳定性还行 功能也不弱
用过ucos的很容易上手
现在的功能也越来越丰富了

23
系统介绍:
(名字还没想好)
系统小巧,占用ROM约1.1KB.
参考了"51圈圈操作系统",
任务调度机制有点像FreeRTOS:
是可剥夺型内核,既支持优先级调度算法也支持轮换调度算法
允许不同的任务使用相同的优先级,在没有更高优先级任务就
绪的情况下,同一优先级的任务共享CPU的使用时间.
在STC12C4052AD单片机上运行通过.
缺点:
功能简单,没有邮箱\信号量\删除任务等功能.
任务调度函数由C编写,可能会占用较长的时间.
可靠性有待观察.

注意:
建立任务时,高优先级的任务要先建立.
有些地方貌似需要加volatile.
工程结构及编译结果

下载了看一下,最近在用《时间触发嵌入式OS》中的思路和例子做一个实例,感觉还不错,485通讯(100k bps)+DS18B20都调通了。

24
如果大家读过黄健昌先生的《建立一个属于自己的AVR的RTOS》一文,相信一定会佩服他对OS的见解,可见水平之高。据我所知,这篇文章是黄先生在很短时间内完成的,黄先生是一位擅长Java、JavaEE和Web服务技术的顾问,目前就职于Sun中国工程研究院,任职Technical Consultant,负责Sun Java Enterprise System(JES)产品支持和Java技术咨询. 您可以通过[email protected]与他联系。另他的著作有《GlassFish——开源的 JAVA EE应用服务器》,喜欢开源的朋友可以看一下。

不管是哪家OS,,3个功能足矣,任务调度,信息和延时。
相比而言,我并不太看重内核的这些东东,
我看重的是:有没有丰富的外围框架组件,所以自打 RT-Thread 出世后,就中意上了 RT-Thread。

25

其实还是跟项目有关,我原来做电机控制,都是裸奔,自己做个简单的程序框架。
够用,但是可移植性不算太强,后来选系统。
rtt还是太繁琐了,一个usart驱动一层层嵌套,也不利于学习。
跟ST 的HAL有得一比。
rtx5貌似有人说有bug,没敢用,最后选用了freertos。
说了这么多,是想说明选用那个rtos跟你的项目有很大关系。
如果需要各种组件,比如ip,usb等,我觉得rtt是最方便的,因为它的接口标准化。
但是如果这要操作各种芯片内部的外设,还是rtx5或者freertos这种微内核比较方便。
接口标准化势必带来代码的复杂化以及初学的困难度。

那是你没还有真正的应用需求,目前的需求只是学习,点点灯、打打印也是可以的。
等你遇到真正的应用需求时,有这段前期的铺垫学习,到时自然会较快的懂的。

你可以去 RT-Thread 的官网论坛,里面有一些开源项目,就是现成的参考。
我这边都是商业项目,不能公开的,看上面说的那些也是一样。

操作系统线程之间通信使用消息队列可以降低线程之间的耦合度,方便扩展任务

https://www.osrtos.com/

2 WinAVR里介绍的RTOS

While an Operating System, or RTOS, isn’t necessary to write software for the AVR, there may be times when it is desirable. Below, are some links for free or open source operating systems / kernels for the AVR. Note that this may not be a complete list.

Femto OS
The Femto OS is a very concise portable real time - preemptive operating system (RTOS) for embedded microcontrollers with minimal ram and flash.

AvrX
AvrX is a Real-Time Multitasking Kernel.

EtherNut - Nut/OS
Ethernut is an Open Source Hardware and Software Project for building Embedded Ethernet Devices. It contains Nut/OS which is an intentionally simple RTOS for the ATmega128, which provides a minimum of services to run Nut/Net, the TCP/IP stack.

FreeRTOS
FreeRTOS is a portable, open source, mini Real Time Scheduler (or mini RTOS kernel).

TinyOS
TinyOS is a component-based runtime environment designed to provide support for deeply embedded systems which require concurrency intensive operations while constrained by minimal hardware resources.

Contiki
Contiki is an Internet-enabled operating system and desktop environment for a number of smallish systems.

XMK - eXtreme Minimal Kernel
XMK is a preemptive multitasking scheduler/kernel for 8bit microcontrollers. Its goal is to provide a bare bones RTOS with a small enough footprint (RAM+ROM) to run on 8bit microcontrollers.

pico OS
pico OS is a highly configurable and very fast real time operating system (RTOS). It targets a wide range of architectures, from very small 8 bit processors and microcontrollers up to very huge platforms. An AVR port is available.

uSmartX
uSmartX is a non-preemptive, multitasking, priority based RTOS. It features mechanisms for inter-task communication and basic task and time control functions.

Super Simple Tasker (SST)
This is an implementation of a lightweight scheduler so called “Super Simple Tasker” - SST. The idea is taken from the Robert Ward’s article - “Practical Real-Time Techniques” http://www.quantum-leaps.com/resources/Ward03.pdf. The SST allows to significantly reduce needs for precious RAM and ROM and still allows to keep a real time characteristic of the scheduler (e.g. tasks prioritization and preemption).

ChibiOS/RT
ChibiOS/RT is a compact and fast RTOS designed for embedded applications. It offers threads, mutexes, semaphores, messages, events, timers, flexible I/O with timeout capability.

3 参考了那个教程《 建立一个属于自己的AVR的RTOS》

4 small rtos51学习资料收集

small rtos51学习资料收集

虽然说small rtos51可能是最简单的操作系统,是学习操作系统最容易入门的,但是,还是有一定难度。

对于一个只学会了51单片机简单开发的工程师来说,也许会熟练应用keil调试程序,但可能没有写过操作系统这么复杂的程序。

所以,只看陈明杰的书,可能也会糊糊涂涂。

诚恳的说,陈明杰的书写作风格是模仿邵贝贝那本,完全是一种大学教材那种枯燥乏味的写法。

没有一定操作系统基础的初学者一定会大受打击。

推荐一些学习samll rtos51的参考资料:

1 电子园一个斑竹的系列文章:

基于51单片机的实时操作系统的研究

http://bbs.cepark.com/forum.php?mod=viewthread&tid=13228&highlight=

2 一个简单的51单片机操作系统的实现:虽然不是small rtos51的文章,但是这么小的操作系统实现代码,是初学者绝好的学习案例。

http://www.51hei.com/mcu/1325.html

3 建立一个属于自己的AVR的RTOS:熟悉一下avr单片机,不难读懂这篇文章。这篇文章写得通俗易懂,比陈明杰的好读多了。

http://wenku.baidu.com/view/f28e5c7da26925c52cc5bf37.html

4 51简单操作系统OS:讲得比较详细的很小的操作系统

http://wenku.baidu.com/view/7bedbfc758f5f61fb7366602.html

5 51最简操作系统演变:讲多任务实现的ppt

http://wenku.baidu.com/view/eea5b087ec3a87c24028c4ae.html

6 简单的多任务操作系统:

http://wenku.baidu.com/view/376af543a8956bec0975e390.html

7 给51 DIY超轻量级多任务操作系统:最适合初学者看

http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=1398508

8 老古写的51操作系统:

http://www.laogu.com/ssw_698.htm

9
STACK
51单片机keil提供的启动代码解析(STARTUP.A51)

10
1、大师Michael J. Pont在嵌入式领域有很深的造诣,他写的那本时间触发嵌入式系统设计模(Patterns for time-triggered embedded systems)深受读者们的喜爱。
2014年写的uCOS-III教程里面基于时间触发的合作式调度和混合式调度就是来自他的分享。

2、大师真正的将时间触发架构发扬光大,推出一款芯片,自带硬件逻辑的时间触发调度器,应用领域包括航空航天,医疗,工业,汽车,船舶,国防,卫星系统以及高端消费品。
这个时间触发调度要远比书籍中讲解的要复杂的多。

3、早期就有自己的研发团队,后来成立了公司。他们早期的网站是http://www.tte-systems.com/,从2007年到2013年,之后的2014到2018升级到新的网站。
4、他们新成立的公司,在嵌入式系统的安全可靠性方便有非常强大的功底,各种航空航天,工业,医疗,汽车,家电等方面的安全认证都搞的很溜。

2、另一本书籍是《The Engineering of Reliable Embedded Systems’ (Ed. 2)》
内容是基于第二代时间触发(TT)架构的使用,记录了一种经过行业验证的可靠嵌入式系统软件开发方法。
时间触发架构可以精确地模拟预期的系统行为。 这意味着:
(1)在开发过程中,我们可以证明所有要求都已得到满足;
(2)在运行时,我们可以很快发现问题。

最终的结果是,我们可以高度确信TT系统:
(1)按要求精确操作;
(2)如果出现问题则进入适当的状态。

上述特征意味着TT系统提供了满足各种国际安全标准要求的特别有效的手段,包括IEC 61508(工业认证),ISO 26262(汽车认证),IEC 62304(医疗认证),IEC 60730(家电认证)和DO-178C(航空航天)。

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

和其他RTOS的对比见附件图

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

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

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

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

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

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

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

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

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

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

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

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

rtx51tny在keil的安装目录下,这个还带调试器,参考资料也很全面。

8.CoOS不是开源软件。它使用一个修改过的、要求保护私有部分的BSD协议,但是并非完全Copyleft。One OS的三个许可证中包括了原版LGPLv3,所以没有这个问题。

9.One OS不支持Mutex,Queue等额外的通信方式。如果你更喜欢大量的IPC模型,那么CoOS胜出。但是,OneOS之所以不支持这些,是在系统设计时就决定的,因为这些IPC方式都不是很实用。

可以试试这个系统
https://github.com/EDI-Systems/M2A1_MuSimpron。
陈明计也有个51的RTOS,那个也是一个选项,就是实用性比较差。

请问 是那个啊 我去学习一下

再出个调度器,极小资源单片机值得一用 https://www.amobbs.com/thread-5508723-1-1.html

RTOS 入门资料 整理_第1张图片

RTOS 入门资料 整理_第2张图片

12

自己实现一个RTOS《实时操作系统揭秘》(附源码)
2,附注的源码,
是个人的一个小作品,
自己给他取了个不响亮的名字:BenOS
并且该系统在自己的Cortex-M3平台测试通过并且运行自己的应用没有问题

13

以前自己一直都是学ucos 的,公司里也是盗用这个,我也没觉的什么不妥,但是接触了作者后,发现这样子是可耻的。中国必须要有自己优秀的操作系统,最好是开源的。

raw os 的内核让我感受到了什么叫速度,什么叫api 的丰富,什么叫稳定。更可贵的是所有的模块, raw os , ucgui, uip, fatfs , 还有lwip 竟然也能融合raw os 一起在VC上模拟,我惊讶,真的很惊喜。这样方便了多少学生,方便了多少公司的开发,快速出产品。

至今我还在默默的感受raw os 的每一行代码来体会作者的心血。从代码的字里行间感觉到了力量,感觉到了作者的真正意图,进而喜悦。
废话不多说了,看代码去了。

http://bbs.21ic.com/icview-628175-1-1.html
jorya_txj:

大家好:
提供的资料还远远不能成为一本书,深怕书的时间太长会打消raw os爱好者的积极性,故此放出目前所完成的书籍资料。以后会不断地完善此书的资料,书的更新度以官网的更新时间为准。希望大家能多提出意见,共同完善此书。

此书有国内实时操作系统(raw os)作者txj编写,此书主要面向实时操作系统爱好和实践者,书中详细阐述了实时操作系统基本概念,对于基于优先级,以及时间片的调度, 临界区,同步方式,消息系统,中断管理,内存管理等等进行了详细的阐述。除了这些之外,还详细讲述了内存保护(MPU), 内核仿真等等的特性。

高效实时操作系统原理以及实践第二版 .rar

争取书早点出来,我们会率先向学生讲解RAW-os系统。书要写棒一些哦。
写书能写的像附件“轻量级线程库protothreads介绍”那样通俗易懂,我想这书想不出名都难

轻量级线程库protothreads介绍.pdf

高效实时操作系统设计.pdf
RTOS 入门资料 整理_第3张图片

https://blog.csdn.net/jorya_txj/article/details/9111111

https://github.com/jorya/raw-os/

Raw-OS源码分析之fsm(有限状态机)
https://blog.csdn.net/tortoisechan/article/details/37689783

QP/C初步入门
https://blog.csdn.net/chenbb8/article/details/52334895

14

https://www.rt-thread.org/phpBB3/

highgear老师的那个简单的 os, 写的确实不错,结构精简,思路清晰。

15

这本书难道会比《The final word of 8051》更好?

以前看了周公的C语言高级编程,果断买了纸质书,比一般国内c语言书籍强多了

正在看 数据结构C语言版 严蔚敏 的书。补一下不足之处。

周立功2017年《程序设计与数据结构》 好书就要收藏一下

http://www.zlg.cn/Index/Pub/xsfb2.html

16

RTOS 入门资料 整理_第4张图片

你可能感兴趣的:(rtos)