μC/OS-III---I笔记1---概述
在裸板上跑一些程序对于一些电子设计是足够的,所谓裸板上的程序就是传统的前后台系统,而我的理解它应该是一种“过程类”的程序,一个大循环(作为后台)做一些处理,中断程序(作为前台)来处理一些特殊的任务,但是当处理器处理的任务越来越多时,随然中断处理还是可以及时的处理保证及时性,但是对于大循环里面的任务来说,大循环越复杂中断愈多时 一些要求实时性比较高的处理程序就没发保质的完成甚至是“错过“重要的事情而无法完成。比如一些协议栈处理中就是灾难性的。这时前辈人就开始想着一种方法保证在处理更多更复杂的事情时如何去保证实时性的管理该方案,此时各类实时操作系统(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变量中:
- OS_TASK_STATE_RDY 就绪状态,优先级最高时会执行
- OS_TASK_STATE_DLY 延时状态,用延时函数将其加入延时列表延时一段时间时的状态
- OS_TASK_STATE_PEND 任务在等待信号
- OS_TASK_STATE_PEND_TIMEOUT 任务在等待信号,不过这里是有超时检测的
- OS_TASK_STATE_SUSPENDED 任务处于挂起状态,可以理解为强行暂停一个任务
- OS_TASK_STATE_DLY_SUSPENDED 任务自己创建了一个延时但延时未完就被挂起了
- OS_TASK_STATE_PEND_SUSPENDED 等待事件过程被挂起
- OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED 同上加了超时检测
- OS_TASK_STATE_DEL 任务已被删除
μC/OS-III---I笔记1---概述的更多相关文章
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- 基于μC/OS—III的CC1120驱动程序设计
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120 嵌入式操作系统 STM32F103ZE ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...
- ng-深度学习-课程笔记-0: 概述
课程概述 这是一个专项课程(Specialization),包含5个独立的课程,学习这门课程后做了相关的笔记记录. (1) 神经网络和深度学习 (2) 改善深层神经网络:超参数调试,正则化,优化 ( ...
- OS考研复习笔记——操作系统的定义、目标、作用和发展的主要动力
计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次补充. 硬件:计算机物理设备,即各种处理机存储器.输入/输出设备 ...
- os模块常用方法笔记
os模块是程序和系统文件之间的交互接口,可以实现对文件的创建.删除等功能,以下对os模块的功能做一个笔记,方便以后学习和查找. import os os.getcwd() #获取当前工作目录,即当前p ...
- HTTP权威指南笔记-1.概述
1.1 通讯 Web内容是存储在服务器上的,Web服务所使用的是HTTP协议,所以经常称为HTTP服务器.通讯过程为客户端(正常我们所使用的)发出请求,服务端根据客户端的HTTP请求响应相应数据,这就 ...
- XML学习笔记1——概述
我对于XML是很不够重视的,认识也是非常肤浅的,因为在之前的Web经验中,基本上都可以使用JSON来代替XML,JSON网络流量少,解析快,JS支持好等这些特点让我对自己的观点坚信不疑.然而我渐渐地改 ...
- 以太坊区块链Java(EthereumJ)学习笔记:概述
本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...
- STM32F40G-EVAL_UC/OS III
micrum官网下载uc/os程序包: 包含文件cotex_M4.h:
随机推荐
- 我在华为OD的275天
目录 0 - 时间线 1 - 为什么会去华为 OD 2 - 华为 OD 的工作内容 3 - OD 与华为自有员工的对比 4 - 那,到底要不要去华为 OD? 5 - 网传的 OD 转华为正编,真的假的 ...
- apscheduler(定时任务) 基于redis持久化配置操作
apscheduler(定时任务) 基于redis持久化配置操作 安装模块 pip install apscheduler 导入模块配置 ## 配置redis模块 from apscheduler.j ...
- 转 Fiddler3 使用技巧
Fiddler3 使用技巧 文章转自:https://www.cnblogs.com/zhengna/category/1466001.html 1.Fiddler抓不到包怎么解决 (1)先确定是H ...
- Soul 网关 Nacos 数据同步源码解析
学习目标: 学习Soul 网关 Nacos 数据同步源码解析 学习内容: 环境配置 Soul 网关 Nacos 数据同步基本概念 源码分析 学习时间:2020年1月28号 早7点 学习产出: 环境配置 ...
- C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)
Twain 随着扫描仪.数码相机和其他图像采集设备的引入,用户热切地发现了将图像整合到他们的文档和其他工作中的价值.然而,支持这种光栅数据的显示和操作成本很高,应用程序开发人员需要创建用户界面并内置设 ...
- 阿里云ECS hadoop+spark+zookeeper+hive code-server 集群搭建
懒得重新排版然后发到博客了.用在线文档看吧 https://www.kdocs.cn/l/srV6o8rABW9V 用线上IDE(code-server)写scala的时候,出现BUG可以参考下面两篇 ...
- CobalStrike 4.0 生成后门几种方式 及 主机上线后基础操作
出品|MS08067实验室(www.ms08067.com) 本文作者:BlackCat(Ms08067内网安全小组成员) CobalStrike 4.0 生成后门几种方式 步骤:Attacks-〉P ...
- ASP.NET Core 5.0 MVC中的 Razor 页面 介绍
Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...
- 某商城系统(V1.3-2020-01-10)前台命令执行漏洞
漏洞文件: ./inc/module/upload_img.php 先跟进 del_file 函数: 在 del_file 函数中首先执行了unlink操作,然后接着进行了file_exists 判断 ...
- EasyUI动态显示后台数据库中的数据
最近在完成一个项目,采用SSM框架搭建完成,前端使用EasyUI搭建页面: 其中涉及到一个查询显示功能:查询数据库中的数据,动态显示在页面之中,刚开始这部分十分有疑问,所以虚心向同学学习,现总结至博客 ...