zoukankan      html  css  js  c++  java
  • uCOS3空闲任务

    作者 :JCY

    QQ :1501614847

    CSDN :JCY-JCY

    来自09级安徽宿州学院电子创新实验室

    此文中对uCOS3空闲的理解,若有错误之处请指出,不胜感激!

    此文中所有内容仅是个人见解,不代表任何机构!

    原来也分析过uCOS2的源码,对uCOS2中使用的对象在uCOS2当中怎么运作从源码级进行了解析。其实在《嵌入式实时操作系统 uC/OS2》这本书中也有,这本书中提到了对象在内核当中运作流程以及对象相关操作函数的伪代码。但是鄙人对特定的某一款处理器从源码级进行了说明,例如汇编代码中是如何实现调度的,并对汇编代码的每一个语句进行了分析。有些人可能会问,既然操作系统内核提供了好多的接口函数供用户调用,那又为什么要了解内核的源码是如何实现各种管理功能的。在这里据我个人而言,我认为了解操作系统内核的源码是能让我们写应用程序做到心中有数,对某一些接口函数的参数属性为什么会是这样的做到心知肚名。更重要的是了解到了操作系统内核的内部数据结构能够有利于提高我们设计的应用程序的水平,因为在uCOS2里面使用的一些数据结构算法,其执行速度和效率是非常快的。

    以前的文章当中也写过uCOS2的调度的原理,并且也是从源码级的角度来说的。在这里就不一一说明了。说先我要将以下我看uCOS3的步骤,我个人感觉此步骤很适合阅读操作系统uCOS3的源码。

    第一、要买一个讲述uCOS3操作系统原理的书籍,该书在网络上能够下载到英文版和中文版。虽然英文版式作者的原作,当时阅读较慢。有现成的中文资源为什么不用呐!中文毕竟是我们的母语,阅读起来方便易懂,速度快。在该书中讲到了关于嵌入式的基本概念,但是最重要的是他对内核的调度原理,对象操作原理进行了说明。很多的图形数据流能够让我们内核的数据结构很快的了解。

    第二、然后就开始看源码了,曾经看uC/OS2的时候先从最深层的内核调度开始逐渐向上看的,具体的流程如下:

    内核调度源码 -> 任务操作源码 -> 空闲任务操作源码 -> 统计任务操作源码 -> 信号量源码 ->  互斥信号量源码  ->  消息源码 ->  消息队列源码 ->  事件标志源码 .

    因为看到最新的版本出现了定时器的功能,所以又看了定时器的实现源码.

    对于uCOS3的源码我反过来了

    空闲任务源码 ->  滴答任务源码 -> 延时任务源码 -> 定时器任务源码 -> 中断队列任务源码 -> 信号量源码 -> 互斥信号量源码 -> 消息队列源码 -> 任务源码 –>  内核调度源码

    这仅是我个人的源码查看流程,也许不适合所有的人,但是如果对你有帮助是我最大的荣幸。

    空闲任务是的起点,并且空闲任务在uCOS3操作系统当中是最简单的任务,它要做的工作非常少。它主要做空闲计数器循环自加和统计任务计数器循环自加(如何uCOS3的统计任务使能)。空闲任务在uCOS3操作系统中是必须有的,带指示CPU处于空闲状态不执行有效的用户代码。

    我现从统计任务的初始化开始,说明uCOS3的空闲任务的建立流程。要使用操作系统在应用程序当中的必须要调用操作系统初始化接口,该接口实现了uCOS3运行的最基本的初始化工作。该函数的接口定义原型如下:

    void  OSInit (OS_ERR  *p_err)

    在该函数当中只看与空闲任务相关的。代码如下:

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2992065.html
Copyright © 2011-2022 走看看