• RTOS那些你得知道的事儿(一)


    注:本文章参考朱有鹏老师单片机第四季课件

    1、RTOS的来龙去脉

    1.1、操作系统是什么?

    操作系统的出现是专业分工的体现,编程有了分层的概念,建立了一个系统,有了“指挥部”。

    1.2、为什么需要RTOS

    (1)简单单片机资源少、并行需求小,纯裸机程序即可
    (2)复杂单片机资源多、并行需求和实时需求均有,需要RTOS来帮助开发

    1.3、如何学习操作系统

    (1)学习操作系统本身的基本理论,学着去看懂简单的OS内核设计和实现
    (2)重点在于使用操作系统来工作:对接自己硬件、管理自己资源、实现自己的项目功能
    (3)不必过分关注OS内核,不必尝试自己写OS内核,但要会看、会移植、会用、会解决bug

    2、主流RTOS和我们的课程规划

    2.1、RTOS的技术特征

    (1)RTOS(实时操作系统)和linux、windows、android等(非实时操作系统)的差异
    本质区别在于任务调度的确定性

    大多数操作系统都允许多个程序同时执行,称为多任务处理。
    但实际上每个处理器在同一时刻只能处理单个执行线程,而操作系统的调度程序来选择在何时运行哪个程序,并通过在每个程序之前快速切换从而提供同时执行的假象。
    RTOS(Real-time operating system)实时操作系统和非实时操作系统主要区别就在于调度机制的不同。
    实时操作系统要旨在于确定性的执行模式。因为认为只有在可预测操作系统行为(确定)时,才能够满足实时的需求。大部分的RTOS操作系统是通过用户设定每个执行线程的优先级来实现确定性。在调度时,一定会优先执行高优先级的程序。而非实时操作系统是保证每个执行线程都不会饿死,只是尽量保证高优先级的程序较多运行,在高低优先级线程同时就绪时,调度系统仍可能会执行低优先级线程。

    作者:ZRB
    链接:https://www.zhihu.com/question/291405354/answer/535829364
    来源:知乎

    (2)RTOS的关键点:稳定性、license、开发成本、外部扩展资源、实时性、效率、市场占有率等

    2.2、主流RTOS:

    (1)ucosii Micrium(2016被Silabs收购)
    (2)ucosiii
    (3)freertos 英国Real Time Engineers Ltd,Richard Barry. 开源、免费商用,市占率最高
    (4)rtx Keil/ARM 官方支持,发展很快,将M3/M4内核性能充分发挥
    (5)rawos 国内高质量rtos,商业化原因暂停维护中
    (6)embOS Segger 高品质,没emWin火

    2.3、课程讲解规划

    (1)uCOS2配合ARM3.0开发板讲解,有空的话可以移植到PZ6806L开发板上
    (2)uCOS3配合PZ6808L开发板讲解(STM32F407)
    (3)freertos在第5季讲STM32Cube HAL库时再讲,其实和uCOS大同小异
    (4)rtx以后看需求,可以考虑以专题形式来讲
    (5)其他的暂时没考虑

    3、uC/OS全面介绍

    3.1、uC/OS介绍

    (1)micrium官网:https://www.micrium.com/ ucos网页:https://www.micrium.com/rtos/
    (2)全面介绍见 https://www.micrium.com/rtos/
    (3)kernel有2和3共两个版本,配件覆盖USB、CAN、TCPIP、FS、GUI等
    (4)被移植到各种主流MCU平台,https://www.micrium.com/downloadcenter/
    uC/OSii和uC/OSiii
    (1) https://www.micrium.com/rtos/rtos-comparison/

    4、uCOS的学习方法和要点

    4.1 学习的思路和方法

    (1)源码级学习,read the fucking source code
    (2)分层和分模块的理念
    (3)C语言功底得过硬《嵌入式linux核心课程》第4部分:C语言高级专题
    (4)大脑的复杂度得跟上
    (5)STM32本身的外设编程和标准库等基本功得过硬
    纠正并强调几个观念
    (1)在学中练,在练中学,不是会什么以后才去学而是在学中去会xx
    (2)先会看,然后会移植,最后才会创造

    5、uCOS学习前的准备工作

    5.1、开发板准备

    (1)用ARM3.0开发板+STM32F103C8T6核心板作为开发板
    (2)串口硬件改造以方便ISP下载同时串口输出监测
    (3)LED接线用作调试,后续按键等其他接线同前面课程讲解

    5.2 源码浏览工具

    (1)测试和体验源码用我提供的移植过的可以运行的源码
    (2)待移植源码用ARM3.0开发板光盘自带的uCOS2工程
    (3)源码浏览用SourceInsight
    (4)移植时SI + MDK5

  • 相关阅读:
    nginx异常重启
    Spring Boot的 jar 为何可以直接运行
    Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]
    02-风控风险分类
    【仿牛客网笔记】 Kafka,构建TB级异步消息系统——发送系统通知、显示系统通知
    cpu GEMM 之 微数据复用 寄存器优化
    干货 | 要避免的 7 个关键社交媒体营销误区
    物联网的10个初级术语
    Linux用户分类和权限详解
    【Linux03-基本工具之VIM】Linux下的强大编辑器(附软件生态与yum)
  • 原文地址:https://blog.csdn.net/qq_44034198/article/details/126329810