在裸板上跑一些程序对于一些电子设计是足够的,所谓裸板上的程序就是传统的前后台系统,而我的理解它应该是一种“过程类”的程序,一个大循环(作为后台)做一些处理,中断程序(作为前台)来处理一些特殊的任务,但是当处理器处理的任务越来越多时,随然中断处理还是可以及时的处理保证及时性,但是对于大循环里面的任务来说,大循环越复杂中断愈多时 一些要求实时性比较高的处理程序就没发保质的完成甚至是“错过“重要的事情而无法完成。比如一些协议栈处理中就是灾难性的。这时前辈人就开始想着一种方法保证在处理更多更复杂的事情时如何去保证实时性的管理该方案,此时各类实时操作系统(RTOS)就开始出现,就以μC/OS这个系统为例,这类系统就是为解决前面提到的问题而被创造出来的。μC/OS是一种可剥夺型的任务管理系统,任务代码随时都可以打断正在执行的任务而去执行及时性要求更高的处理任务从而保证实时性要求更加高的任务可以被先执行。看到这里相信大家肯定也都明白了实时操作系统的任务了。他就是被人创造出来的一个用以高效率管理处理器资源的管理员,让处理器在面对更多更复杂的处理任务时可以更加的智能,接下来我将要记录我自己的μC/OS-III 游记了。

因为C语言的特点所以大部分的系统内核都采用C(很少的ASM)来编写,ASM主要是在涉及CPU的一些操作时为加快处理效率所以常用ASM语言编写,因此我认为学习μC/OS-III之前应该对C及你的CPU相关的简单ASM语句要有一定的了解,同时数据结构也是必不可少的。

μC/OS-III相关文件结构属性分类:

  • OS_cfg_app.c     系统任务配置相关
  • OS_type.h           内核对象的数据类型定义相关
  • OS_dbg.c       和调试相关的数据类型定义和相关
  • OS_flag.c            事件标志组相关
  • OS_int.c              中断延迟相关
  • OS_mem.c          内存分区相关
  • OS_msg.c           消息相关函数
  • OS_mutex.c        二值信号相关
  • OS_sem.c           多值信号量相关
  • OS_task.c           任务相关
  • OS_tmr.c             定时器相关
  • OS_var.c             变量定义相关
  • OS_time.c           时间管理相关
  • OS _stat.c           统计信息相关
  • OS_q.c                队列相关
  • OS_pend_multi.c 等待多个内核对象相关
  • OS_prio.c            优先组相关
  • OS_tick,c             时钟节拍相关
  • OS_core.c           内核底层相关
  • OS.h                    相关数据结构的定义

以上这些都是与CPU无关的文件。

  • CPU_cfg.h          定义CPU相关指令
  • lib.cfg.h               库的相关配置
  • OS_cfg.h            系统配置相关,比如内核的裁剪
  • OS_cfg_app.h    系统配置相关,比时钟节拍频率的配置

以上这些都是OS配置相关的代文件。

  • OS_cup_a.asm   CPU相关的汇编函数的定义及声明
  • OS_cpu_c.c        CPU相关的C语言函数的定义及声明
  • OS_cpu.h            CPU相关的配置及文件函数的声明
  • OS_def.h             CPU先关的宏定义
  • cpu_c.c          CPU相关的C语言配置代码
  • cpu_a.asm          CPU相关的汇编代码
  • cpu_core.c          CPU核心相关的配置函数
  • cpu_core.h          CPU核心相关的配置

以上这些都是CPU配置相关的文件。其中前三个为移植相关的配置文件。

除此之外还有些相关的库比如lib.ascii等。具体看图

对于不同的环境下相关的库还有少许差别。

一个任务他的状态是确定的共有一下9种状态保存在任务控制块里的TaskState变量中:

  1. OS_TASK_STATE_RDY                        就绪状态,优先级最高时会执行
  2. OS_TASK_STATE_DLY                                   延时状态,用延时函数将其加入延时列表延时一段时间时的状态
  3. OS_TASK_STATE_PEND                                  任务在等待信号
  4. OS_TASK_STATE_PEND_TIMEOUT             任务在等待信号,不过这里是有超时检测的
  5. OS_TASK_STATE_SUSPENDED                   任务处于挂起状态,可以理解为强行暂停一个任务
  6. OS_TASK_STATE_DLY_SUSPENDED           任务自己创建了一个延时但延时未完就被挂起了
  7. OS_TASK_STATE_PEND_SUSPENDED        等待事件过程被挂起 
  8. OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED  同上加了超时检测 
  9. OS_TASK_STATE_DEL                                        任务已被删除

μC/OS-III---I笔记1---概述的更多相关文章

  1. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  2. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  3. μCos-ii学习笔记1_概述

    一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...

  4. ng-深度学习-课程笔记-0: 概述

    课程概述 这是一个专项课程(Specialization),包含5个独立的课程,学习这门课程后做了相关的笔记记录. (1) 神经网络和深度学习 (2)  改善深层神经网络:超参数调试,正则化,优化 ( ...

  5. OS考研复习笔记——操作系统的定义、目标、作用和发展的主要动力

    计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次补充. 硬件:计算机物理设备,即各种处理机存储器.输入/输出设备 ...

  6. os模块常用方法笔记

    os模块是程序和系统文件之间的交互接口,可以实现对文件的创建.删除等功能,以下对os模块的功能做一个笔记,方便以后学习和查找. import os os.getcwd() #获取当前工作目录,即当前p ...

  7. HTTP权威指南笔记-1.概述

    1.1 通讯 Web内容是存储在服务器上的,Web服务所使用的是HTTP协议,所以经常称为HTTP服务器.通讯过程为客户端(正常我们所使用的)发出请求,服务端根据客户端的HTTP请求响应相应数据,这就 ...

  8. XML学习笔记1——概述

    我对于XML是很不够重视的,认识也是非常肤浅的,因为在之前的Web经验中,基本上都可以使用JSON来代替XML,JSON网络流量少,解析快,JS支持好等这些特点让我对自己的观点坚信不疑.然而我渐渐地改 ...

  9. 以太坊区块链Java(EthereumJ)学习笔记:概述

    本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...

  10. STM32F40G-EVAL_UC/OS III

    micrum官网下载uc/os程序包: 包含文件cotex_M4.h:

随机推荐

  1. NFS存储迁移至GlusterFS

    NFS存储迁移至GlusterFS 前提条件 为防止脑裂,建议使用最低3台节点制作3复制集的存储卷: 在进行存储迁移前,GluseterFS存储节点需先成为k8s集群中的node节点: 存储切换时请勿 ...

  2. jQuery 勾选启用输入框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. smtplib.py

    def _print_debug(self, *args): if self.debuglevel > 1: print(datetime.datetime.now().time(), *arg ...

  4. 文件系统层次结构标准 Linux 系统目录结构

    https://zh.wikipedia.org/wiki/文件系统层次结构标准 多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求. [3] [4] [5] [6] 但截至200 ...

  5. 用java实现word转pdf

    摘要:如何用java实现word文档转pdf呢 最近在网上看了很多资料,遇到了很多头疼的问题,看了各类大神写的方法,最初想要研究的是在线预览word 现在来看,不太现实,除了微软研究的一套在线预览的u ...

  6. Web漏洞扫描-AWVS

    Web漏洞扫描-AWVS 一.AWVS概述 二.功能以及特点 三.AWVS界面 四.AWVS使用 相关优质博文: CSDN:帽子不够白:WEB渗透测试之三大漏扫神器 一.AWVS概述 Acunetix ...

  7. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,

    Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...

  8. Spark练习之Transformation操作开发

    Spark练习之Transformation操作开发 一.map:将集合中的每个元素乘以2 1.1 Java 1.2 Scala 二.filter:过滤出集合中的偶数 2.1 Java 2.2 Sca ...

  9. hbase笔记---新版api之对表的操作,指定region创建,普通创建,删除,修改列族信息

    hbase 对于表的相关操作: 实现功能有:指定region创建,普通创建,删除,修改列族信息 package learm.forclass.testclass; import org.apache. ...

  10. scala的隐式转换学习总结(详细)

    一,隐式转换函数 1, 格式, implicit def 函数名(参数):返回值类型={ //函数体 //返回值 } 2,例子: //导入对应的规则类,以免出现警告 scala> import ...